Commit 14954e6bc2186ae7ad03766006fcfe058b3b752d

David Turner 2000-01-17T10:56:16

Some major improvements were required to the Makefile to: - compile the demonstration programs in any directory, by using the "TOP" and "CONFIG_MK" environment variables - the graphics drivers have moved from "demos/config/*" to "demos/graph/*" - brain-dead compilers like LCC-Win32 required some changes in the way executables are linked

diff --git a/demos/Makefile b/demos/Makefile
index 8c5f526..8d5f172 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)
+
+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
+
+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
+