PBMake 2.16 for Clipper, Xbase++, C and ASM

Supported Languages:

Using PBMake for compilers other than Clipper.
For Xbase++ compiler.
For C compiler.
For Assembler.
My compiler doesn't create files with the .OBJ extension.
******************************* Examples ***********************************
A make script that made this Norton Guide!
A make script for a large Clipper executable.
The make file for PBMake
Using Clipper, C and LIB.EXE to create a library
The lib script used with LIB.EXE in the above example (PRBFUNC5.RSP)


Using PBMake for compilers other than Clipper.

PBMake includes an option to override the default compiler, the source extension and the object extension, if the defaults are not correct for the compiler you need a make engine for. If you do not use these three added directives, they default to: COMPILER=CLIPPER SRCEXT=.PRG OBJEXT=.OBJ You may also override the COMPILER=, SRCEXT=, OBJEXT=, OBJDIR= and SRCDIR= which are active across all sections with individual directives for each section. So, you can do this: FLAG= /N /M /A /V /W /ES2 INCLUDE= MASTER.CH COMM.CH SRCEXT=.PRG (this is a default, anyway) OBJEXT=.OBJ (this one too) PROG1= HELP MAIN MENU FLAG2= /M PROG2= OLDSTUFF FLAG4= COMPILER4=MASM SRCEXT4=.ASM INCLUDE5= myheader.h FLAG5= COMPILER5=CL /c /AL /Zl /W2 /FPa /Gs SRCEXT5=.C FLAG6= -E -= -MC -^^2 COMPILER6=FOOBAR SRCEXT6=.FOO OBJEXT6=.BAR OBJDIR6= OUTPUT%\DATA\FOO\BAR Note: When you specify an OBJDIR, and the compiler is not CLIPPER for that area, the output directory will not be verified. This is done so that you may use whatever compiler directive that is necessary to cause the output to be placed in some other directory, without regard for making the OBJDIR??= directive look like a findable directory to DOS. For example, in the example above, there is no way to validate OUTPUT%\DATA\FOO\BAR with a DOS path validation.

For Xbase++ compiler.

For the Xbase++ compiler, you would add the directives: COMPILER=XPP

For C compiler.

For the C compiler, you would add the directives: SRCEXT=.C COMPILER=CL

For Assembler.

For Assembler, you would add the directives: SRCEXT=.ASM COMPILER=MASM (or TASM, etc.)

My compiler doesn't create files with the .OBJ extension.

If your compiler does not produce files with an .OBJ extension, you can change the object extension with the directive: OBJEXT=.??? (replace ??? with the appropriate extension) You can use a different object extension for each section, like: SRCEXT=.PRG OBJEXT=.OBJ SRCEXT3=.C OBJEXT3=.OBJ SRCEXT4=.FOO OBJEXT4=.BAR

******************************* Examples ***********************************


A make script that made this Norton Guide!

****************************************************************************** * PBMake 2.16 for Clipper, Xbase++, C and ASM * * Copyright (C) 1998 Phil Barnett, All Rights Reserved Worldwide * * See PBMAKE.NG for help. * ****************************************************************************** TARGET=PBMAKE.NG LINKER=NGML LINKER_SEP= LINKFILE=PBMAKE.LNK COMPILER1=NGC SRCEXT1=.DOC OBJEXT1=.NGO PROG1=INTRO FEATURES STARTUP BLANKTMP EXAMPLE PROBLEMS PROG1=RUNNING MAKEBAT LANGUAGE SUPPORT COPYRITE REGISTER CHANGES SUCCESS=CALL MOVEM.BAT NONEED=ECHO No files to move

A make script for a large Clipper executable.

****************************************************************************** * PBMake 2.16 for Clipper, Xbase++, C and ASM * * Copyright (C) 1998 Phil Barnett, All Rights Reserved Worldwide * * See PBMAKE.NG for help. * ****************************************************************************** TARGET=INORDER.EXE LINKER=BLINKER LINKFILE=POS.LNK INCLUDE=PRINTER.CH PUBLICS.CH FLD_MAST.CH OBJDIR=OBJ\ FLAG1= /W /M /N /Q /ES2 PROG1=HELP DBF_OPEN PRINTER WHERPRNT P_PAYMNT J_BILL POST_850 EDITSALE PROG1=ERROR52 INVCOST GOODNTX ADDQUEUE VENEDIT VENADD PO PACK PROG1=EDTQUEUE FBROWSE DEPTADD PDOTADD ORDRFILL CLEAREM TMPREAD TMPMAKE PROG1=TEADD UOSADD CODEADD SAYINGS TMPKILL CLEARORD ORDRPOST TEST_DBV PROG1=ALTSALE ALTRECV PAYADD PICKSORT ORD_BUSI ORD_810 INV_SPOT INDXMAIN PROG1=PROGRESS P_GETID BARPROCS TABLES COM_OUT INV_XREF GETBALAN STATEMNT PROG1=EMPLDATA GETFLDS PRB_PASS INORDER POP_AT TAXTABLE WHOLCOST YTDCLEAR PROG1=INVDEL SETARCH SETSUMM RECEIVE YTDPRNT EDI_PO AVER3X10 CONT8X11 PROG1=PRB_CALC FIXINV PRB_DATE GETSYS52 RECMENU RUNANEXE DISKPRNT UNSERIAL PROG1=INDXHIST LIST_ANY ORDERENT INDXDEFI PICKLIST ORDR_ADJ ORD_MOVE ORDDEFLT PROG1=TITLEBOX GETTAX TAXFIG TRANSFER ACCT_PAY ORDSTAT ORDUNFIL FLAG2= /M /Q /ES2 PROG2=WELCOME USER OPENDRAW UTILITY PAYINV INDXWIND INDXBUS DNRRPT PROG2=POSTSALE INVMAIN INVLIST SUMM INDXDEL INDXEDIT INDXREPL ACCBAL PROG2=QUICK PARTPROF INDXADD INDXPRNT PRNTFORM MAILMERG IS_VEND PAIDOUTS PROG2=DATECHG VENMAIN VENDIR VENPAY MERGE NEWXPND WIDEPRNT INDXPROP PROG2=P_OPEN INDXPDOT P_SALES BILLING RETURNS TICKSET CHANACCT TAXREFIG PROG2=P_DOMORE P_RECEPT ARCHIVE CNSGNRPT TAXKILL CODECHAN BALANCE TRANSACT PROG2=P_POST INVWIND BUILDPRT RECREPT MERGBASE MERGEDIT MERGPRNT OMCCROSS PROG2=VENWIND INVADD PARTHIST PAYABLE PRN_OUT CHKWRITE HISTRNDX YTDMENU PROG2=INVLEVEL INDXVEN TOTFORM MODSETUP SAY_POP XFEREDIT XFERMAIN XFERMOVE PROG2=SUMMARY REPRINT VENDEL VENPRNT POP_PICK GET_SALE SKU_LIST SKU_FILL PROG2=YAMCROSS RJE

The make file for PBMake

****************************************************************************** * PBMake 2.16 for Clipper, Xbase++, C and ASM * * Copyright (C) 1998 Phil Barnett, All Rights Reserved Worldwide * * See PBMAKE.NG for help. * ****************************************************************************** LINKER=BLINKER PROG1=PBMAKE BUFFREAD #IFDEF DEMO TARGET=DEMO\PBMAKE.EXE LINKFILE=DEMO.LNK OBJDIR=DEMO\OBJ\ FLAG1= /M /N /W /Q /ES2 /DDEMO SUCCESS=PKLITE DEMO\PBMAKE -E -A #ELSE TARGET=REG\PBMAKE.EXE LINKFILE=REG.LNK OBJDIR=REG\OBJ\ FLAG1= /M /N /W /Q /ES2 SUCCESS=PKLITE REG\PBMAKE -E -A #ENDIF NONEED=ECHO PKLite not Necessary

Using Clipper, C and LIB.EXE to create a library

****************************************************************************** * PBMake 2.16 for Clipper, Xbase++, C and ASM * * Copyright (C) 1998 Phil Barnett, All Rights Reserved Worldwide * * See PBMAKE.NG for help. * ****************************************************************************** TARGET=PRBFUNC5.LIB LINKFILE=PRBFUNC5.RSP LINKER=LIB PRBFUNC5 PRELINKCMD=DEL PRBFUNC5.LIB FLAG1= /M /N /A /V /W /ES2 INCLUDE=PRBFUNC5.CH PROG1=PRB_FLDS PRB_ABRT PRB_ALIN PRB_ALKY PRB_ALL PRB_AMPM PRB_APND PRB_ASK PROG1=PRB_ATTN PRB_BACK PRB_BLET PRB_BLNK PRB_BNUM PRB_CALC PRB_CLOK PRB_CLS PROG1=PRB_COPR PRB_COPY PRB_D2C PRB_D2DT PRB_DATE PRB_DBF PRB_DOTY PRB_DRBX PROG1=PRB_EJCT PRB_FEEL PRB_FLAT PRB_FLSH PRB_FPIK PRB_FULL PRB_GATH PRB_GETF PROG1=PRB_HOTP PRB_INT PRB_ISDP PRB_KEYS PRB_KILL PRB_LOCK PRB_MEMB PRB_MEN2 PROG1=PRB_MMDD PRB_MONY PRB_MSG PRB_MVER PRB_PACK PRB_PASS PRB_PICK PRB_POP PROG1=PRB_PPOP PRB_PRNT PRB_PROG PRB_PROP PRB_PROT PRB_QERY PRB_QNTX PRB_RAND PROG1=PRB_RCOL PRB_REPL PRB_RJZF PRB_ROOT PRB_S2A PRB_SCAT PRB_SCOL PRB_SETS PROG1=PRB_SHOW PRB_SKEY PRB_SLEJ PRB_STAK PRB_STIF PRB_STOP PRB_STRM PRB_TBOX PROG1=PRB_TEMP PRB_TRAN PRB_VERI PRB_WSLK FLAG2= INCLUDE2= SRCEXT2=.C COMPILER2=F:\C51\BIN\CL /c /AL /Zl /W2 /FPa /Gs PROG2=CHECKEXE CRCOUNT PRB_JUL SHADE_IT TOUCH

The lib script used with LIB.EXE in the above example (PRBFUNC5.RSP)

+PRB_ABRT & +PRB_ALIN & +PRB_ALKY & +PRB_ALL & +PRB_AMPM & +PRB_APND & +PRB_ASK & +PRB_ATTN & +PRB_BACK & +PRB_BLET & +PRB_BLNK & +PRB_BNUM & +PRB_CALC & +PRB_CLOK & +PRB_CLS & +PRB_COPR & +PRB_COPY & +PRB_D2C & +PRB_D2DT & +PRB_DATE & +PRB_DBF & +PRB_DOTY & +PRB_DRBX & +PRB_EJCT & +PRB_FEEL & +PRB_FLAT & +PRB_FLDS & +PRB_FLSH & +PRB_FPIK & +PRB_FULL & +PRB_GATH & +PRB_GETF & +PRB_HOTP & +PRB_INT & +PRB_ISDP & +PRB_KEYS & +PRB_KILL & +PRB_LOCK & +PRB_MEMB & +PRB_MEN2 & +PRB_MMDD & +PRB_MONY & +PRB_MSG & +PRB_MVER & +PRB_PACK & +PRB_PASS & +PRB_PICK & +PRB_POP & +PRB_PPOP & +PRB_PRNT & +PRB_PROG & +PRB_PROP & +PRB_PROT & +PRB_QERY & +PRB_QNTX & +PRB_RAND & +PRB_RCOL & +PRB_REPL & +PRB_RJZF & +PRB_ROOT & +PRB_S2A & +PRB_SCAT & +PRB_SCOL & +PRB_SETS & +PRB_SHOW & +PRB_SKEY & +PRB_SLEJ & +PRB_STAK & +PRB_STIF & +PRB_STOP & +PRB_STRM & +PRB_TBOX & +PRB_TEMP & +PRB_TRAN & +PRB_VERI & +PRB_WSLK & +CHECKEXE & +CRCOUNT & +PRB_JUL & +SHADE_IT & +TOUCH PRBFUNC5.MAP PRBFUNC5.LIB