# # $Id$ # # # Makefile for Harbour Project for Microsoft Visual C (32 bits) # # # NOTE: You can use these envvars to configure the make process: # (note that these are all optional) # # CFLAGS - Extra C compiler options for libraries and for # executables # C_USR - Extra C compiler options for libraries and for # executables (GNU make compatible envvar) # CLIBFLAGS - Extra C compiler options for the libraries # HARBOURFLAGS - Extra Harbour compiler options # PRG_USR - Extra Harbour compiler options # (GNU make compatible envvar) # # # Notes about this makefile: # # 1. To add new files to a dependancy list, add an obj name to one of the # OBJ lists for the appropriate library. # NOTE: put .prg related obj's last in the lib list. # # 2. This is a recursive script. If you change the name of this file, # be sure to change MK_FILE (a few lines down) to the new name as well. # # 3. Recurrsion rules are quite simple: # If you specifiy /a on the command line, files in the obj\vc dir # will be deleted, and when nmake recurses, it's without the /a flag # # If a .prg.obj rule is fired, nmake will execute this script with # a specific target as a parameter immediatley after compiling a given # set of prg files. # ie: Harbour $< # nmake /fmakefile.vc obj\vc\rtl.lib2 # which will simply get make to re-evaluate the dependancy list for the # lib, and as a result, it will execute the C compiler using the .c.obj # rule below to create the obj's for the prg's that were created just # prior to the recurrsive call. Once the obj's are created, the # recurrsion is complete. # See additional notes under RTL.LIB below. # MK_FILE = makefile.vc MK_FLAGS = $(MAKEFLAGS: =) OBJ_DIR = ..\..\obj\vc LIB_DIR = ..\..\lib\vc BIN_DIR = ..\..\bin # # Directory macros. These should never have to change. # INCLUDE_DIR = ..\..\include TOOLS_DIR = . # # C compiler definition and C flags. These should never have to change. # AS = masm CFLAGS = -I$(INCLUDE_DIR) -TP -W3 -nologo $(C_USR) $(CFLAGS) CLIBFLAGS = -c $(CFLAGS) $(CLIBFLAGS) CLIBFLAGSDEBUG = -Zi $(CLIBFLAGS) HARBOURFLAGS = -i$(INCLUDE_DIR) -n -q0 -w2 -es2 -gc0 $(PRG_USR) $(HARBOURFLAGS) LDFLAGS = $(LDFLAGS) # # Macros to access our library names # TOOLS_LIB = $(LIB_DIR)\libct.lib HARBOUR_EXE = $(BIN_DIR)\harbour.exe # # Rules # .SUFFIXES: .prg .lib .c .obj .asm # override builtin .c.obj:: $(CC) $(CLIBFLAGS) -Fo$(OBJ_DIR)\ $< # # # LIBLIST = \ $(TOOLS_LIB) # # TOOLS.LIB rules # {$(TOOLS_DIR)}.c{$(OBJ_DIR)}.obj:: $(CC) $(CLIBFLAGS) -Fo$(OBJ_DIR)\ $< {$(TOOLS_DIR)}.prg{$(OBJ_DIR)}.obj:: $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $< $(MAKE) -nologo /$(MK_FLAGS) /f$(MK_FILE) $(TOOLS_LIB)2 TOOLS_LIB_OBJS = \ $(OBJ_DIR)\addascii.obj \ $(OBJ_DIR)\asciisum.obj \ $(OBJ_DIR)\ascpos.obj \ $(OBJ_DIR)\atadjust.obj \ $(OBJ_DIR)\atnum.obj \ $(OBJ_DIR)\atrepl.obj \ $(OBJ_DIR)\bitnum.obj \ $(OBJ_DIR)\charevod.obj \ $(OBJ_DIR)\charlist.obj \ $(OBJ_DIR)\charmirr.obj \ $(OBJ_DIR)\charmix.obj \ $(OBJ_DIR)\charone.obj \ $(OBJ_DIR)\charonly.obj \ $(OBJ_DIR)\charop.obj \ $(OBJ_DIR)\charrepl.obj \ $(OBJ_DIR)\charsort.obj \ $(OBJ_DIR)\charsprd.obj \ $(OBJ_DIR)\charswap.obj \ $(OBJ_DIR)\color.obj \ $(OBJ_DIR)\count.obj \ $(OBJ_DIR)\ctc.obj \ $(OBJ_DIR)\ctchksum.obj \ $(OBJ_DIR)\ctcrypt.obj \ $(OBJ_DIR)\ctmath.obj \ $(OBJ_DIR)\ctmath2.obj \ $(OBJ_DIR)\ctnet.obj \ $(OBJ_DIR)\ctpad.obj \ $(OBJ_DIR)\ctset.obj \ $(OBJ_DIR)\ctstr.obj \ $(OBJ_DIR)\ctstrfil.obj \ $(OBJ_DIR)\ctwfunc.obj \ $(OBJ_DIR)\ctwin.obj \ $(OBJ_DIR)\cursor.obj \ $(OBJ_DIR)\datetime.obj \ $(OBJ_DIR)\dattime2.obj \ $(OBJ_DIR)\dattime3.obj \ $(OBJ_DIR)\dbftools.obj \ $(OBJ_DIR)\disk.obj \ $(OBJ_DIR)\expand.obj \ $(OBJ_DIR)\exponent.obj \ $(OBJ_DIR)\files.obj \ $(OBJ_DIR)\finan.obj \ $(OBJ_DIR)\ftoc.obj \ $(OBJ_DIR)\justify.obj \ $(OBJ_DIR)\keyset.obj \ $(OBJ_DIR)\like.obj \ $(OBJ_DIR)\lton.obj \ $(OBJ_DIR)\maxline.obj \ $(OBJ_DIR)\misc1.obj \ $(OBJ_DIR)\misc2.obj \ $(OBJ_DIR)\misc3.obj \ $(OBJ_DIR)\num1.obj \ $(OBJ_DIR)\numat.obj \ $(OBJ_DIR)\numcount.obj \ $(OBJ_DIR)\numline.obj \ $(OBJ_DIR)\pack.obj \ $(OBJ_DIR)\pos1.obj \ $(OBJ_DIR)\pos2.obj \ $(OBJ_DIR)\posdiff.obj \ $(OBJ_DIR)\print.obj \ $(OBJ_DIR)\range.obj \ $(OBJ_DIR)\relation.obj \ $(OBJ_DIR)\remove.obj \ $(OBJ_DIR)\replace.obj \ $(OBJ_DIR)\screen1.obj \ $(OBJ_DIR)\screen2.obj \ $(OBJ_DIR)\setlast.obj \ $(OBJ_DIR)\strdiff.obj \ $(OBJ_DIR)\strswap.obj \ $(OBJ_DIR)\tab.obj \ $(OBJ_DIR)\token1.obj \ $(OBJ_DIR)\token2.obj \ $(OBJ_DIR)\trig.obj \ $(OBJ_DIR)\video.obj \ $(OBJ_DIR)\wordrepl.obj \ $(OBJ_DIR)\wordtoch.obj \ \ $(OBJ_DIR)\blank.obj \ $(OBJ_DIR)\ct.obj \ $(OBJ_DIR)\ctmisc.obj \ $(OBJ_DIR)\cttime.obj \ $(OBJ_DIR)\fcopy.obj \ $(OBJ_DIR)\getinfo.obj \ $(OBJ_DIR)\getinput.obj \ $(OBJ_DIR)\getsecrt.obj \ $(OBJ_DIR)\keysave.obj \ $(OBJ_DIR)\keysec.obj \ $(OBJ_DIR)\keytime.obj \ $(OBJ_DIR)\numconv.obj \ $(OBJ_DIR)\screen3.obj \ $(OBJ_DIR)\scrmark.obj \ $(OBJ_DIR)\showtime.obj \ # # Our default target # all: \ $(TOOLS_LIB) CLEAN: -@if exist $(OBJ_DIR)\addascii.* del $(OBJ_DIR)\addascii.* -@if exist $(OBJ_DIR)\asciisum.* del $(OBJ_DIR)\asciisum.* -@if exist $(OBJ_DIR)\ascpos.* del $(OBJ_DIR)\ascpos.* -@if exist $(OBJ_DIR)\atadjust.* del $(OBJ_DIR)\atadjust.* -@if exist $(OBJ_DIR)\atnum.* del $(OBJ_DIR)\atnum.* -@if exist $(OBJ_DIR)\atrepl.* del $(OBJ_DIR)\atrepl.* -@if exist $(OBJ_DIR)\bitnum.* del $(OBJ_DIR)\bitnum.* -@if exist $(OBJ_DIR)\charevod.* del $(OBJ_DIR)\charevod.* -@if exist $(OBJ_DIR)\charlist.* del $(OBJ_DIR)\charlist.* -@if exist $(OBJ_DIR)\charmirr.* del $(OBJ_DIR)\charmirr.* -@if exist $(OBJ_DIR)\charmix.* del $(OBJ_DIR)\charmix.* -@if exist $(OBJ_DIR)\charone.* del $(OBJ_DIR)\charone.* -@if exist $(OBJ_DIR)\charonly.* del $(OBJ_DIR)\charonly.* -@if exist $(OBJ_DIR)\charop.* del $(OBJ_DIR)\charop.* -@if exist $(OBJ_DIR)\charrepl.* del $(OBJ_DIR)\charrepl.* -@if exist $(OBJ_DIR)\charsort.* del $(OBJ_DIR)\charsort.* -@if exist $(OBJ_DIR)\charsprd.* del $(OBJ_DIR)\charsprd.* -@if exist $(OBJ_DIR)\charswap.* del $(OBJ_DIR)\charswap.* -@if exist $(OBJ_DIR)\color.* del $(OBJ_DIR)\color.* -@if exist $(OBJ_DIR)\count.* del $(OBJ_DIR)\count.* -@if exist $(OBJ_DIR)\ctc.* del $(OBJ_DIR)\ctc.* -@if exist $(OBJ_DIR)\ctchksum.* del $(OBJ_DIR)\ctchksum.* -@if exist $(OBJ_DIR)\ctcrypt.* del $(OBJ_DIR)\ctcrypt.* -@if exist $(OBJ_DIR)\ctmath.* del $(OBJ_DIR)\ctmath.* -@if exist $(OBJ_DIR)\ctmath2.* del $(OBJ_DIR)\ctmath2.* -@if exist $(OBJ_DIR)\ctnet.* del $(OBJ_DIR)\ctnet.* -@if exist $(OBJ_DIR)\ctpad.* del $(OBJ_DIR)\ctpad.* -@if exist $(OBJ_DIR)\ctset.* del $(OBJ_DIR)\ctset.* -@if exist $(OBJ_DIR)\ctstr.* del $(OBJ_DIR)\ctstr.* -@if exist $(OBJ_DIR)\ctstrfil.* del $(OBJ_DIR)\ctstrfil.* -@if exist $(OBJ_DIR)\ctwfunc.* del $(OBJ_DIR)\ctwfunc.* -@if exist $(OBJ_DIR)\ctwin.* del $(OBJ_DIR)\ctwin.* -@if exist $(OBJ_DIR)\cursor.* del $(OBJ_DIR)\cursor.* -@if exist $(OBJ_DIR)\datetime.* del $(OBJ_DIR)\datetime.* -@if exist $(OBJ_DIR)\dattime2.* del $(OBJ_DIR)\dattime2.* -@if exist $(OBJ_DIR)\dattime3.* del $(OBJ_DIR)\dattime3.* -@if exist $(OBJ_DIR)\dbftools.* del $(OBJ_DIR)\dbftools.* -@if exist $(OBJ_DIR)\disk.* del $(OBJ_DIR)\disk.* -@if exist $(OBJ_DIR)\expand.* del $(OBJ_DIR)\expand.* -@if exist $(OBJ_DIR)\exponent.* del $(OBJ_DIR)\exponent.* -@if exist $(OBJ_DIR)\files.* del $(OBJ_DIR)\files.* -@if exist $(OBJ_DIR)\finan.* del $(OBJ_DIR)\finan.* -@if exist $(OBJ_DIR)\ftoc.* del $(OBJ_DIR)\ftoc.* -@if exist $(OBJ_DIR)\justify.* del $(OBJ_DIR)\justify.* -@if exist $(OBJ_DIR)\keyset.* del $(OBJ_DIR)\keyset.* -@if exist $(OBJ_DIR)\like.* del $(OBJ_DIR)\like.* -@if exist $(OBJ_DIR)\lton.* del $(OBJ_DIR)\lton.* -@if exist $(OBJ_DIR)\maxline.* del $(OBJ_DIR)\maxline.* -@if exist $(OBJ_DIR)\misc1.* del $(OBJ_DIR)\misc1.* -@if exist $(OBJ_DIR)\misc2.* del $(OBJ_DIR)\misc2.* -@if exist $(OBJ_DIR)\misc3.* del $(OBJ_DIR)\misc3.* -@if exist $(OBJ_DIR)\num1.* del $(OBJ_DIR)\num1.* -@if exist $(OBJ_DIR)\numat.* del $(OBJ_DIR)\numat.* -@if exist $(OBJ_DIR)\numcount.* del $(OBJ_DIR)\numcount.* -@if exist $(OBJ_DIR)\numline.* del $(OBJ_DIR)\numline.* -@if exist $(OBJ_DIR)\pack.* del $(OBJ_DIR)\pack.* -@if exist $(OBJ_DIR)\pos1.* del $(OBJ_DIR)\pos1.* -@if exist $(OBJ_DIR)\pos2.* del $(OBJ_DIR)\pos2.* -@if exist $(OBJ_DIR)\posdiff.* del $(OBJ_DIR)\posdiff.* -@if exist $(OBJ_DIR)\print.* del $(OBJ_DIR)\print.* -@if exist $(OBJ_DIR)\range.* del $(OBJ_DIR)\range.* -@if exist $(OBJ_DIR)\relation.* del $(OBJ_DIR)\relation.* -@if exist $(OBJ_DIR)\remove.* del $(OBJ_DIR)\remove.* -@if exist $(OBJ_DIR)\replace.* del $(OBJ_DIR)\replace.* -@if exist $(OBJ_DIR)\screen1.* del $(OBJ_DIR)\screen1.* -@if exist $(OBJ_DIR)\screen2.* del $(OBJ_DIR)\screen2.* -@if exist $(OBJ_DIR)\setlast.* del $(OBJ_DIR)\setlast.* -@if exist $(OBJ_DIR)\strdiff.* del $(OBJ_DIR)\strdiff.* -@if exist $(OBJ_DIR)\strswap.* del $(OBJ_DIR)\strswap.* -@if exist $(OBJ_DIR)\tab.* del $(OBJ_DIR)\tab.* -@if exist $(OBJ_DIR)\token1.* del $(OBJ_DIR)\token1.* -@if exist $(OBJ_DIR)\token2.* del $(OBJ_DIR)\token2.* -@if exist $(OBJ_DIR)\trig.* del $(OBJ_DIR)\trig.* -@if exist $(OBJ_DIR)\video.* del $(OBJ_DIR)\video.* -@if exist $(OBJ_DIR)\wordrepl.* del $(OBJ_DIR)\wordrepl.* -@if exist $(OBJ_DIR)\wordtoch.* del $(OBJ_DIR)\wordtoch.* -@if exist $(OBJ_DIR)\blank.* del $(OBJ_DIR)\blank.* -@if exist $(OBJ_DIR)\ct.* del $(OBJ_DIR)\ct.* -@if exist $(OBJ_DIR)\ctmisc.* del $(OBJ_DIR)\ctmisc.* -@if exist $(OBJ_DIR)\cttime.* del $(OBJ_DIR)\cttime.* -@if exist $(OBJ_DIR)\fcopy.* del $(OBJ_DIR)\fcopy.* -@if exist $(OBJ_DIR)\getinfo.* del $(OBJ_DIR)\getinfo.* -@if exist $(OBJ_DIR)\getinput.* del $(OBJ_DIR)\getinput.* -@if exist $(OBJ_DIR)\getsecrt.* del $(OBJ_DIR)\getsecrt.* -@if exist $(OBJ_DIR)\keysave.* del $(OBJ_DIR)\keysave.* -@if exist $(OBJ_DIR)\keysec.* del $(OBJ_DIR)\keysec.* -@if exist $(OBJ_DIR)\keytime.* del $(OBJ_DIR)\keytime.* -@if exist $(OBJ_DIR)\numconv.* del $(OBJ_DIR)\numconv.* -@if exist $(OBJ_DIR)\screen3.* del $(OBJ_DIR)\screen3.* -@if exist $(OBJ_DIR)\scrmark.* del $(OBJ_DIR)\scrmark.* -@if exist $(OBJ_DIR)\showtime.* del $(OBJ_DIR)\showtime.* -@if exist $(TOOLS_LIB) del $(TOOLS_LIB) # # Library dependencies and build rules # $(TOOLS_LIB) : $(TOOLS_LIB_OBJS) lib /out:$@ $** # dummy targets used for prg to c creation $(TOOLS_LIB)2 : $(TOOLS_LIB_OBJS)