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
This commit is contained in:
David Turner 2000-01-17 10:56:16 +00:00
parent 7dff772e59
commit 14954e6bc2
1 changed files with 75 additions and 33 deletions

View File

@ -5,9 +5,25 @@ all: exes
# TOP is the directory where the main FreeType source is found, # TOP is the directory where the main FreeType source is found,
# as well as the 'config.mk' file # as well as the 'config.mk' file
# #
# TOP2 is the directory is the top of the demonstration
# programs directory
#
ifndef TOP 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 endif
#################################################################### ####################################################################
@ -15,15 +31,15 @@ endif
# Check that we have a working `config.mk' in the above directory. # Check that we have a working `config.mk' in the above directory.
# If not, issue a warning message, then stop there.. # If not, issue a warning message, then stop there..
# #
ifeq ($(wildcard $(TOP)/config.mk),) ifeq ($wildcard $(CONFIG_MK),)
no_config_mk := 1 no_config_mk := 1
endif endif
ifdef no_config_mk ifdef no_config_mk
exes: exes:
@echo Please compile the library before the demo programs! @echo Please compile the library before the demo programs!
clean distclean: @echo I need "$(TOP)/config.mk" to do that !!
@echo "I need \`../config.mk' to do that!"
else else
#################################################################### ####################################################################
@ -31,7 +47,7 @@ else
# Good, now include the `config.mk' in order to know how to build # Good, now include the `config.mk' in order to know how to build
# object files from sources, as well as other things (compiler flags) # object files from sources, as well as other things (compiler flags)
# #
include ../config.mk include $(CONFIG_MK)
#################################################################### ####################################################################
# #
@ -79,35 +95,55 @@ endif
ifdef DOSLIKE ifdef DOSLIKE
clean_demo: clean_demo:
-del obj\*.$O -del obj\*.$O 2> nul
-del src\*.bak -del $(subst /,\,$(TOP2))\src\*.bak 2> nul
distclean_demo: clean_demo distclean_demo: clean_demo
-del obj\*.* -del obj\*.lib 2> nul
-del bin\*.exe -del bin\*.exe 2> nul
else else
clean_demo: clean_demo:
-$(DELETE) $(OBJ_)*.$O -$(DELETE) $(OBJ_)*.$O
-$(DELETE) $(SRC_)*.bak graph$(SEP)*.bak -$(DELETE) $(SRC_)*.bak graph$(SEP)*.bak
-$(DELETE) $(SRC_)*~ graph$(SEP)*~ -$(DELETE) $(SRC_)*~ graph$(SEP)*~
distclean_demo: clean_demo distclean_demo: clean_demo
-$(DELETE) $(EXES:%=$(BIN_)%) -$(DELETE) $(EXES:%=$(BIN_)%$E)
-$(DELETE) $(GRAPH_LIB) -$(DELETE) $(GRAPH_LIB)
endif endif
clean: clean_demo clean: clean_demo
distclean: distclean_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 TT_INCLUDES := $(SRC_)shared $(SRC_)truetype
T1_INCLUDES := $(SRC_)shared $(SRC_)type1 T1_INCLUDES := $(SRC_)shared $(SRC_)type1
CFLAGS = -c -O0 -g $(INCLUDES:%=$I%) -Wall -W -ansi COMPILE = $(CC) $(CFLAGS) $(INCLUDES:%=$I%)
CC := $(CC) LINK := $(CC)
LINK := $(CC) FTLIB := $(TOP_)$(LIB_DIR)$(SEP)$(LIBRARY).$A
FTLIB := $(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 # 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 $(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) $(OBJ_)%.$O: $(SRC_DIR_)%.c $(FTLIB)
$(CC) $(CFLAGS) $T$@ $< $(COMPILE) $T$@ $<
$(OBJ_)ftlint.$O: $(SRC_DIR_)ftlint.c $(OBJ_)ftlint.$O: $(SRC_DIR_)ftlint.c
$(CC) $(CFLAGS) $T$@ $< $(COMPILE) $T$@ $<
$(OBJ_)fttry.$O: $(SRC_DIR_)fttry.c $(OBJ_)fttry.$O: $(SRC_DIR_)fttry.c
$(CC) $(CFLAGS) $T$@ $< $(COMPILE) $T$@ $<
$(OBJ_)ftview.$O: $(SRC_DIR_)ftview.c $(GRAPH_LIB) $(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) $(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) #$(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 # the Type1 source path
# #
$(OBJ_)t1dump.$O: $(SRC_DIR)/t1dump.c $(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 endif
$(OBJ_)ttdebug.$O: $(SRC_DIR)/ttdebug.c $(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.. # over-ridden by system-specific things..
# #
$(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) $(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) $(COMMON_OBJ)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) $(COMMON_LINK)
$(BIN_)fttry$E: $(OBJ_)fttry.$O $(FTLIB) $(BIN_)fttry$E: $(OBJ_)fttry.$O $(FTLIB)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) $(LINK)
$(BIN_)ftsbit$E: $(OBJ_)ftsbit.$O $(FTLIB) $(BIN_)ftsbit$E: $(OBJ_)ftsbit.$O $(FTLIB)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) $(LINK)
$(BIN_)t1dump$E: $(OBJ_)t1dump.$O $(FTLIB) $(BIN_)t1dump$E: $(OBJ_)t1dump.$O $(FTLIB)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) $(LINK)
$(BIN_)ttdebug$E: $(OBJ_)ttdebug.$O $(FTLIB) $(BIN_)ttdebug$E: $(OBJ_)ttdebug.$O $(FTLIB)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(EFENCE) $(LINK)
$(BIN_)ftview$E: $(OBJ_)ftview.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) $(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) $(BIN_)fttimer$E: $(OBJ_)fttimer.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ)
$(LINK) $(LFLAGS) $T$@ $< $(FTLIB) $(GRAPH_LINK) $(EFENCE) $(GRAPH_LINK)
endif endif