# # $Id$ # # How to run yacc. YACC = bison YACC_FLAGS := -d $(YACC_FLAGS) # How to run lex. LEX = flex LEX_FLAGS := -i -8 $(LEX_FLAGS) # # How to run Harbour. # HB := $(notdir $(HB_BIN_COMPILE)) ifneq ($(HB),) # there is no slash at the end HB := $(HB_BIN_COMPILE)/ endif HB := $(HB)harbour$(EXE_EXT) HB_FLAGS = -n -q0 -w -es2 -gc0 -I$(TOP) -I$(HB_INC_COMPILE) # The rule to link an executable. ifeq ($(LD_RULE),) # Use default rule if architecture/compiler specific rule is not defined LD_RULE = $(LD) $(CFLAGS) $(LD_OUT)$@ $^ $(LDFLAGS) $(L_USR) $(LINKLIBS) endif # Eliminate these rules. %.c : %.y %.c : %.l # Location of source C files # Some DOS compilers doesn't like '/' in filenames - however the MAKE system # requires '/' in filenames - this trick allows to solve this conflict SOURCE_DIR := $($(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP) ifeq ($(SOURCE_DIR),) SOURCE_DIR = $(GRANDP) endif # BCC (at least version 3.1) requires that the output file be listed ahead of the input file ifeq ($(CC),bcc) # Rule to generate an object file from a C source file in the parent. %$(OBJ_EXT) : $(SOURCE_DIR)%.c $(CC) $(CPPFLAGS) $(CFLAGS) $(C_USR) $(CC_OUT)$(subst .c,$(OBJ_EXT),$(subst $(SOURCE_DIR),,$?)) $(CC_IN) $? # Rule to generate an object file from a C source file. %$(OBJ_EXT) : %.c $(CC) $(CPPFLAGS) $(CFLAGS) $(C_USR) $(CC_OUT)$(?:.c=$(OBJ_EXT)) $(CC_IN) $? else # Rule to generate an object file from a C source file in the parent. %$(OBJ_EXT) : $(SOURCE_DIR)%.c $(CC) $(CPPFLAGS) $(CFLAGS) $(C_USR) $(CC_IN) $? $(CC_OUT)$(subst .c,$(OBJ_EXT),$(subst $(SOURCE_DIR),,$?)) # Rule to generate an object file from a C source file. %$(OBJ_EXT) : %.c $(CC) $(CPPFLAGS) $(CFLAGS) $(C_USR) $(CC_IN) $? $(CC_OUT)$(?:.c=$(OBJ_EXT)) endif # Rule to generate an executable file from an object file. %$(EXE_EXT) : %$(OBJ_EXT) $(LD_RULE) # Rule to generate a C file from a PRG file. %.c : $(GRANDP)%.prg $(HB) $? $(PRG_USR) $(HB_FLAGS) ifeq ($(SHLVL),) # COMMAND.COM # Do nothing. the $(hb_architecture)/global.cf will handle clean up. else # Generic rule to clean up. clean:: -$(RM) *.bak *.obj core *.core *~ *.o *.ppo endif