diff --git a/demos/Makefile b/demos/Makefile index 8c5f52626..8d5f17292 100644 --- a/demos/Makefile +++ b/demos/Makefile @@ -5,9 +5,25 @@ all: exes # TOP is the directory where the main FreeType source is found, # as well as the 'config.mk' file # +# TOP2 is the directory is the top of the demonstration +# programs directory +# ifndef TOP -TOP := .. +TOP := .. +endif + +ifndef TOP2 +TOP2 := $(TOP)/demos +endif + +###################################################################### +# +# MY_CONFIG_MK points to the current "config.mk" to use. It is +# defined by default as $(TOP)/config.mk +# +ifndef CONFIG_MK +CONFIG_MK := $(TOP)/config.mk endif #################################################################### @@ -15,15 +31,15 @@ endif # Check that we have a working `config.mk' in the above directory. # If not, issue a warning message, then stop there.. # -ifeq ($(wildcard $(TOP)/config.mk),) +ifeq ($wildcard $(CONFIG_MK),) no_config_mk := 1 endif ifdef no_config_mk exes: @echo Please compile the library before the demo programs! -clean distclean: - @echo "I need \`../config.mk' to do that!" + @echo I need "$(TOP)/config.mk" to do that !! + else #################################################################### @@ -31,7 +47,7 @@ else # Good, now include the `config.mk' in order to know how to build # object files from sources, as well as other things (compiler flags) # -include ../config.mk +include $(CONFIG_MK) #################################################################### # @@ -79,35 +95,55 @@ endif ifdef DOSLIKE clean_demo: - -del obj\*.$O - -del src\*.bak + -del obj\*.$O 2> nul + -del $(subst /,\,$(TOP2))\src\*.bak 2> nul distclean_demo: clean_demo - -del obj\*.* - -del bin\*.exe + -del obj\*.lib 2> nul + -del bin\*.exe 2> nul else + clean_demo: -$(DELETE) $(OBJ_)*.$O -$(DELETE) $(SRC_)*.bak graph$(SEP)*.bak -$(DELETE) $(SRC_)*~ graph$(SEP)*~ + distclean_demo: clean_demo - -$(DELETE) $(EXES:%=$(BIN_)%) + -$(DELETE) $(EXES:%=$(BIN_)%$E) -$(DELETE) $(GRAPH_LIB) endif clean: clean_demo distclean: distclean_demo +#################################################################### +# +# Define a few important variables now +# +# +TOP_ := $(TOP)$(SEP) +TOP2_ := $(TOP2)$(SEP) +SRC_ := $(TOP)$(SEP)src$(SEP) -FT_INCLUDES := $(BUILD) $(TOP_)include $(SRC_)base +BIN_ := bin$(SEP) +OBJ_ := obj$(SEP) + +GRAPH_DIR := $(TOP2_)graph + +SRC_DIR := $(TOP2_)src +SRC_DIR_ := $(SRC_DIR)$(SEP) + + +FT_INCLUDES := $(BUILD) $(TOP_)include $(SRC_)base $(SRC_DIR) TT_INCLUDES := $(SRC_)shared $(SRC_)truetype T1_INCLUDES := $(SRC_)shared $(SRC_)type1 -CFLAGS = -c -O0 -g $(INCLUDES:%=$I%) -Wall -W -ansi -CC := $(CC) -LINK := $(CC) -FTLIB := $(LIB_DIR)$(SEP)$(LIBRARY).$A +COMPILE = $(CC) $(CFLAGS) $(INCLUDES:%=$I%) +LINK := $(CC) +FTLIB := $(TOP_)$(LIB_DIR)$(SEP)$(LIBRARY).$A +LINK = $(CC) $(LINKT)$@ $< $(FTLIB) $(EFENCE) +COMMON_LINK = $(COMMON_OBJ) #################################################################### # @@ -140,28 +176,33 @@ INCLUDES := $(FT_INCLUDES) # Rules for compiling object files for text-only demos # -COMMON_OBJ := $(OBJ_)common.o +COMMON_OBJ := $(OBJ_)common.$O $(COMMON_OBJ): $(SRC_DIR_)common.c - $(CC) $(CFLAGS) $T$@ $< +ifdef DOSLIKE + $(COMPILE) $T$@ $< $DEXPAND_WILDCARDS +else + $(COMPILE) $T$@ $< +endif + $(OBJ_)%.$O: $(SRC_DIR_)%.c $(FTLIB) - $(CC) $(CFLAGS) $T$@ $< + $(COMPILE) $T$@ $< $(OBJ_)ftlint.$O: $(SRC_DIR_)ftlint.c - $(CC) $(CFLAGS) $T$@ $< + $(COMPILE) $T$@ $< $(OBJ_)fttry.$O: $(SRC_DIR_)fttry.c - $(CC) $(CFLAGS) $T$@ $< + $(COMPILE) $T$@ $< $(OBJ_)ftview.$O: $(SRC_DIR_)ftview.c $(GRAPH_LIB) - $(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) $T$@ $< + $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< $(OBJ_)fttimer.$O: $(SRC_DIR_)fttimer.c $(GRAPH_LIB) - $(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) $T$@ $< + $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< #$(OBJ_)ftsbit.$O: $(SRC_DIR)/ftsbit.c $(GRAPH_LIB) -# $(CC) $(CFLAGS) $T$@ $< +# $(COMPILE) $T$@ $< #################################################################### @@ -170,7 +211,7 @@ $(OBJ_)fttimer.$O: $(SRC_DIR_)fttimer.c $(GRAPH_LIB) # the Type1 source path # $(OBJ_)t1dump.$O: $(SRC_DIR)/t1dump.c - $(CC) $(CFLAGS) $(T1_INCLUDES:%=$I%) $T$@ $< + $(COMPILE) $(T1_INCLUDES:%=$I%) $T$@ $< #################################################################### @@ -188,7 +229,7 @@ EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS endif $(OBJ_)ttdebug.$O: $(SRC_DIR)/ttdebug.c - $(CC) $(CFLAGS) $(TT_INCLUDES:%=$I%) $T$@ $< $(EXTRAFLAGS) + $(COMPILE) $(TT_INCLUDES:%=$I%) $T$@ $< $(EXTRAFLAGS) #################################################################### @@ -197,29 +238,30 @@ $(OBJ_)ttdebug.$O: $(SRC_DIR)/ttdebug.c # over-ridden by system-specific things.. # -$(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) +$(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) $(COMMON_OBJ) + $(COMMON_LINK) $(BIN_)fttry$E: $(OBJ_)fttry.$O $(FTLIB) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) + $(LINK) $(BIN_)ftsbit$E: $(OBJ_)ftsbit.$O $(FTLIB) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) + $(LINK) $(BIN_)t1dump$E: $(OBJ_)t1dump.$O $(FTLIB) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) + $(LINK) $(BIN_)ttdebug$E: $(OBJ_)ttdebug.$O $(FTLIB) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) + $(LINK) $(BIN_)ftview$E: $(OBJ_)ftview.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(GRAPH_LINK) $(COMMON_OBJ) $(EFENCE) + $(GRAPH_LINK) $(BIN_)fttimer$E: $(OBJ_)fttimer.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) - $(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(GRAPH_LINK) $(EFENCE) + $(GRAPH_LINK) endif +