# # 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 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) CLIBFLAGS=$(CFLAGS) -c # # 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)\classes.obj \ $(OBJ_DIR)\codebloc.obj \ $(OBJ_DIR)\console.obj \ $(OBJ_DIR)\dates.obj \ $(OBJ_DIR)\descend.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)\initsymb.obj \ $(OBJ_DIR)\itemapi.obj \ $(OBJ_DIR)\math.obj \ $(OBJ_DIR)\set.obj \ $(OBJ_DIR)\strings.obj \ $(OBJ_DIR)\strcmp.obj \ $(OBJ_DIR)\tclass.obj \ $(OBJ_DIR)\transform.obj # # OBJ list for hbtools.lib. Add new ones as needed # TOOLS_LIB_OBJS = \ $(OBJ_DIR)\debug.obj \ $(OBJ_DIR)\genobj.obj \ $(OBJ_DIR)\mathx.obj \ $(OBJ_DIR)\stringsx.obj \ $(OBJ_DIR)\datesx.obj # # OBJ list for terminal.lib. Add new ones as needed # TERMINAL_LIB_OBJS = \ $(OBJ_DIR)\console.obj # # Our default target # all: $(HARBOUR_EXE) $(HARBOUR_LIB) $(TOOLS_LIB) $(TERMINAL_LIB) $(HARBOUR_EXE) : \ $(COMPILER_DIR)\y_tab.c \ $(COMPILER_DIR)\lexyy.c \ $(COMPILER_DIR)\genobj32.c \ $(COMPILER_DIR)\harbour.c $(CC) $(CFLAGS) $(COMPILER_DIR)\y_tab.c $(COMPILER_DIR)\lexyy.c $(COMPILER_DIR)\harbour.obj -o $(BIN_DIR)\harbour -del y_tab.obj -del lexyy.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)\y_tab.c : $(COMPILER_DIR)\harbour.y bison -d -v $(COMPILER_DIR)\harbour.y -o$(COMPILER_DIR)\y_tab.c $(COMPILER_DIR)\lexyy.c : $(COMPILER_DIR)\harbour.l flex -i -o$(COMPILER_DIR)\lexyy.c $(COMPILER_DIR)\harbour.l # # RTL source depencies below. Add as needed # $(OBJ_DIR)\arrays.obj : $(RTL_DIR)\arrays.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\arrays.obj : $(RTL_DIR)\arrays.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(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)\dates.obj : $(RTL_DIR)\dates.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\descend.obj : $(RTL_DIR)\descend.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\dynsym.obj : $(RTL_DIR)\dynsym.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\environ.obj : $(RTL_DIR)\environ.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\error.obj : $(RTL_DIR)\error.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\errorapi.obj : $(RTL_DIR)\errorapi.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\errorsys.obj : $(RTL_DIR)\errorsys.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\extend.obj : $(RTL_DIR)\extend.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\initsymb.obj : $(RTL_DIR)\initsymb.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)\set.obj : $(RTL_DIR)\set.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strings.obj : $(RTL_DIR)\strings.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\strcmp.obj : $(RTL_DIR)\strcmp.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\tclass.obj : $(RTL_DIR)\tclass.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\transform.obj : $(RTL_DIR)\transform.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\debug.obj : $(RTL_DIR)\debug.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\genobj.obj : $(RTL_DIR)\genobj.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\mathx.obj : $(RTL_DIR)\mathx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\stringsx.obj : $(RTL_DIR)\stringsx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\datesx.obj : $(RTL_DIR)\datesx.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\console.obj : $(RTL_DIR)\console.c $(CC) $(CLIBFLAGS) -Fo$@ $**