# # Makefile for Harbour project for Microsoft Visual C (32 bits) # # To add new files to this makefile: # # 1. Add obj name to one of the OBJ list for the appropriate # library (if adding RTL functions) # 2. Add file dependency and compile rule to end of this file # (see current one as an example) # # # Directory macros. These should never have to change. # COMPILER_DIR=source\compiler RTL_DIR=source\rtl HBPP_DIR=source\hbpp TOOLS_DIR=source\tools VM_DIR=source\vm INCLUDE_DIR=include BIN_DIR=bin LIB_DIR=libs\vc OBJ_DIR=obj # # C compiler definition and C flags. These should never have to change. # CC=cl CFLAGS=-w -I$(INCLUDE_DIR) -DHARBOUR_USE_GTAPI -DHARBOUR_USE_WIN_GTAPI CLIBFLAGS=$(CFLAGS) -c /TP CLIBFLAGSDEBUG=$(CFLAGS) -c -Zi /TP # # Macros to access our library names # HARBOUR_LIB=$(LIB_DIR)\harbour.lib TERMINAL_LIB=$(LIB_DIR)\terminal.lib TOOLS_LIB=$(LIB_DIR)\hbtools.lib HARBOUR_EXE=$(BIN_DIR)\harbour.exe # # OBJ list for harbour.lib. Add new ones as needed # HARBOUR_LIB_OBJS = \ $(OBJ_DIR)\arrays.obj \ $(OBJ_DIR)\asort.obj \ $(OBJ_DIR)\classes.obj \ $(OBJ_DIR)\codebloc.obj \ $(OBJ_DIR)\console.obj \ $(OBJ_DIR)\copyfile.obj \ $(OBJ_DIR)\dates.obj \ $(OBJ_DIR)\descend.obj \ $(OBJ_DIR)\devoutp.obj \ $(OBJ_DIR)\dir.obj \ $(OBJ_DIR)\dynsym.obj \ $(OBJ_DIR)\environ.obj \ $(OBJ_DIR)\error.obj \ $(OBJ_DIR)\errorapi.obj \ $(OBJ_DIR)\errorsys.obj \ $(OBJ_DIR)\extend.obj \ $(OBJ_DIR)\files.obj \ $(OBJ_DIR)\gtapi.obj \ $(OBJ_DIR)\hardcr.obj \ $(OBJ_DIR)\hvm.obj \ $(OBJ_DIR)\initsymb.obj \ $(OBJ_DIR)\itemapi.obj \ $(OBJ_DIR)\math.obj \ $(OBJ_DIR)\memvars.obj \ $(OBJ_DIR)\msguk.obj \ $(OBJ_DIR)\mtran.obj \ $(OBJ_DIR)\objfunc.obj \ $(OBJ_DIR)\set.obj \ $(OBJ_DIR)\setcolor.obj \ $(OBJ_DIR)\strcmp.obj \ $(OBJ_DIR)\strings.obj \ $(OBJ_DIR)\tclass.obj \ $(OBJ_DIR)\transfrm.obj # # OBJ list for hbtools.lib. Add new ones as needed # #$(OBJ_DIR)\genobj.obj \ PatrickMast TOOLS_LIB_OBJS = \ $(OBJ_DIR)\asciisum.obj \ $(OBJ_DIR)\ascpos.obj \ $(OBJ_DIR)\atdiff.obj \ $(OBJ_DIR)\chareven.obj \ $(OBJ_DIR)\charmix.obj \ $(OBJ_DIR)\charodd.obj \ $(OBJ_DIR)\chrcount.obj \ $(OBJ_DIR)\chrfirst.obj \ $(OBJ_DIR)\chrtotal.obj \ $(OBJ_DIR)\datesx.obj \ $(OBJ_DIR)\debug.obj \ $(OBJ_DIR)\hb_f.obj \ $(OBJ_DIR)\io.obj \ $(OBJ_DIR)\mathx.obj \ $(OBJ_DIR)\strasint.obj \ $(OBJ_DIR)\strcount.obj \ $(OBJ_DIR)\strcspn.obj \ $(OBJ_DIR)\strdiff.obj \ $(OBJ_DIR)\strexpan.obj \ $(OBJ_DIR)\stringp.obj \ $(OBJ_DIR)\stringsx.obj \ $(OBJ_DIR)\strleft.obj \ $(OBJ_DIR)\strpbrk.obj \ $(OBJ_DIR)\strright.obj # # OBJ list for terminal.lib. Add new ones as needed # TERMINAL_LIB_OBJS = \ $(OBJ_DIR)\console.obj \ $(OBJ_DIR)\gtxxx.obj # # Our default target # all: $(HARBOUR_EXE) $(HARBOUR_LIB) $(TOOLS_LIB) $(TERMINAL_LIB) $(HARBOUR_EXE) : \ $(COMPILER_DIR)\harboury.c \ $(COMPILER_DIR)\harbourl.c \ $(COMPILER_DIR)\genobj32.c \ $(COMPILER_DIR)\harbour.c \ $(HBPP_DIR)\hbpp.c \ $(HBPP_DIR)\hbppint.c \ $(HBPP_DIR)\table.c $(CC) $(CFLAGS) $(COMPILER_DIR)\harboury.c $(COMPILER_DIR)\harbourl.c $(COMPILER_DIR)\harbour.c $(HBPP_DIR)\hbppint.c $(HBPP_DIR)\hbpp.c $(HBPP_DIR)\table.c -o $(BIN_DIR)\harbour -del harboury.obj -del harbourl.obj -del harbour.obj -del hbppint.obj -del hbpp.obj -del table.obj # # Library depencies and build rules # $(HARBOUR_LIB) : $(HARBOUR_LIB_OBJS) lib /OUT:$(HARBOUR_LIB) $(HARBOUR_LIB_OBJS) $(TOOLS_LIB) : $(TOOLS_LIB_OBJS) lib /OUT:$(TOOLS_LIB) $(TOOLS_LIB_OBJS) $(TERMINAL_LIB) : $(TERMINAL_LIB_OBJS) lib /OUT:$(TERMINAL_LIB) $(TERMINAL_LIB_OBJS) # # Compiler source depencies and build rules # $(COMPILER_DIR)\harboury.c : $(COMPILER_DIR)\harbour.y bison -d -v $(COMPILER_DIR)\harbour.y -o$(COMPILER_DIR)\harboury.c $(COMPILER_DIR)\harbourl.c : $(COMPILER_DIR)\harbour.l flex -i -o$(COMPILER_DIR)\harbourl.c $(COMPILER_DIR)\harbour.l # # RTL source depencies below. Add as needed # $(RTL_DIR)\achoice.c : $(RTL_DIR)\achoice.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\achoice.obj : $(RTL_DIR)\achoice.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\arrays.obj : $(RTL_DIR)\arrays.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\asort.c : $(RTL_DIR)\asort.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** -n $(OBJ_DIR)\asort.obj : $(RTL_DIR)\asort.c $(CC) $(CLIBFLAGS) -Fo$@ $** #$(RTL_DIR)\classes.c : $(RTL_DIR)\classes.prg # $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\classes.obj : $(RTL_DIR)\classes.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\codebloc.obj : $(RTL_DIR)\codebloc.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\console.obj : $(RTL_DIR)\console.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\copyfile.obj : $(RTL_DIR)\copyfile.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\dates.obj : $(RTL_DIR)\dates.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\descend.obj : $(RTL_DIR)\descend.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\devoutp.c : $(RTL_DIR)\devoutp.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\devoutp.obj : $(RTL_DIR)\devoutp.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\dir.obj : $(RTL_DIR)\dir.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\environ.obj : $(RTL_DIR)\environ.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\errorapi.obj : $(RTL_DIR)\errorapi.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\errorsys.c : $(RTL_DIR)\errorsys.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** -n /iinclude $(OBJ_DIR)\errorsys.obj : $(RTL_DIR)\errorsys.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\error.c : $(RTL_DIR)\error.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\error.obj : $(RTL_DIR)\error.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\extend.obj : $(RTL_DIR)\extend.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\files.obj : $(RTL_DIR)\files.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\gtapi.obj : $(RTL_DIR)\gtapi.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\hardcr.obj : $(RTL_DIR)\hardcr.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\itemapi.obj : $(RTL_DIR)\itemapi.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\math.obj : $(RTL_DIR)\math.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\memvars.obj : $(RTL_DIR)\memvars.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\msguk.obj : $(RTL_DIR)\natmsg\msguk.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\mtran.obj : $(RTL_DIR)\mtran.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\objfunc.c : $(RTL_DIR)\objfunc.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\objfunc.obj : $(RTL_DIR)\objfunc.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\set.obj : $(RTL_DIR)\set.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\setcolor.obj : $(RTL_DIR)\setcolor.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strcmp.obj : $(RTL_DIR)\strcmp.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strings.obj : $(RTL_DIR)\strings.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(RTL_DIR)\tclass.c : $(RTL_DIR)\tclass.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** -n $(OBJ_DIR)\tclass.obj : $(RTL_DIR)\tclass.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\transfrm.obj : $(RTL_DIR)\transfrm.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\gtxxx.obj : $(RTL_DIR)\gtxxx.c $(CC) $(CLIBFLAGS) -Fo$@ $** # # VM source depencies below. Add as needed # $(OBJ_DIR)\dynsym.obj : $(VM_DIR)\dynsym.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\hvm.obj : $(VM_DIR)\hvm.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\initsymb.obj : $(VM_DIR)\initsymb.c $(CC) $(CLIBFLAGS) -Fo$@ $** # # TOOLS source depencies below. Add as needed # $(OBJ_DIR)\asciisum.obj : $(TOOLS_DIR)\asciisum.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\ascpos.obj : $(TOOLS_DIR)\ascpos.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\atdiff.obj : $(TOOLS_DIR)\atdiff.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\chareven.obj : $(TOOLS_DIR)\chareven.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\charmix.obj : $(TOOLS_DIR)\charmix.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\charodd.obj : $(TOOLS_DIR)\charodd.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\chrcount.obj : $(TOOLS_DIR)\chrcount.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\chrfirst.obj : $(TOOLS_DIR)\chrfirst.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\chrtotal.obj : $(TOOLS_DIR)\chrtotal.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\dates2.obj : $(TOOLS_DIR)\dates2.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\datesx.obj : $(TOOLS_DIR)\datesx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\debug.obj : $(TOOLS_DIR)\debug.c $(CC) $(CLIBFLAGS) -Fo$@ $** #$(OBJ_DIR)\genobj.obj : $(TOOLS_DIR)\genobj.c # $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\hb_f.obj : $(TOOLS_DIR)\hb_f.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\io.obj : $(TOOLS_DIR)\io.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\mathx.obj : $(TOOLS_DIR)\mathx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strasint.obj : $(TOOLS_DIR)\strasint.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strcount.obj : $(TOOLS_DIR)\strcount.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strcspn.obj : $(TOOLS_DIR)\strcspn.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strdiff.obj : $(TOOLS_DIR)\strdiff.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strexpan.obj : $(TOOLS_DIR)\strexpan.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(TOOLS_DIR)\stringp.c : $(TOOLS_DIR)\stringp.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(**D) $** $(OBJ_DIR)\stringp.obj : $(TOOLS_DIR)\stringp.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\stringsx.obj : $(TOOLS_DIR)\stringsx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strleft.obj : $(TOOLS_DIR)\strleft.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strpbrk.obj : $(TOOLS_DIR)\strpbrk.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strright.obj : $(TOOLS_DIR)\strright.c $(CC) $(CLIBFLAGS) -Fo$@ $**