ref: 281f9f6a134476ff7de3e506124b80463db5de56
parent: 5ce5884d59c276f6a62d27ae1a003801fb456674
author: David Turner <[email protected]>
date: Mon Jan 17 06:20:26 EST 2000
Important changes were performed to clean up the makefiles, these will be detailed later in a document (the work is not completely finished).
--- a/config/ansi/Makefile
+++ b/config/ansi/Makefile
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,12 +85,23 @@
DELETE := rm -f
SEP := /
+HOSTSEP := $(SEP)
BUILD := $(TOP)/config/ansi
PLATFORM := ansi
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -155,11 +169,18 @@
CFLAGS := -c
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS :=
+
# Now include the main sub-makefile. It contains all the rules used
# to build the library with the previous variables defined
#
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_std
+distclean_freetype: clean_freetype_library_std
# Librarian to use to build the static library
#
--- a/config/detect.mk
+++ b/config/detect.mk
@@ -123,5 +123,5 @@
@echo @echo Otherwise, simple type 'make' again to build the library
@echo - @$(COPY) $(CONFIG_RULES) $(CONFIG_MK) > nul
+ @$(COPY) $(subst /,\,$(CONFIG_RULES) $(CONFIG_MK)) > nul
--- a/config/dos/MAKEFILE.GCC
+++ b/config/dos/MAKEFILE.GCC
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,12 +85,23 @@
DELETE := rm -f
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/dos
PLATFORM := dos
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -154,9 +168,17 @@
CFLAGS := -c -g -O6 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
# This final rule is used to link all object files into a single
--- a/config/freetype.mk
+++ b/config/freetype.mk
@@ -84,7 +84,7 @@
#
FT_CFLAGS = $(CFLAGS) $(INCLUDE_FLAGS)
FT_CC = $(CC) $(FT_CFLAGS)
-FT_COMPILE = $(FT_CC)
+FT_COMPILE = $(CC) $(ANSI_FLAGS) $(FT_CFLAGS)
#
@@ -160,10 +160,10 @@
# ommitted on builds which do not want them.
#
OBJ_M = $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) \
- $(FTSYS_OBJ) $(FTINIT_OBJ) $(FTDEBUG_OBJ)
+ $(FTINIT_OBJ)
OBJ_S = $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) \
- $(FTSYS_OBJ) $(FTINIT_OBJ) $(FTDEBUG_OBJ)
+ $(FTINIT_OBJ)
ifneq ($(findstring multi,$(MAKECMDGOALS)),)
OBJECTS_LIST += $(OBJ_M)
@@ -179,17 +179,34 @@
$(FT_COMPILE) $T$@ $<
-clean_freetype:
- -$(DELETE) $(OBJ_S:/=$(SEP)) $(OBJ_M:/=$(SEP))
+# Standard cleaning and distclean rules. These are not accepted
+# on all systems though..
+#
+clean_freetype_std:
+ -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(OBJ_S) $(OBJ_M))
-
-distclean_freetype: clean_freetype
- -$(DELETE) $(FT_LIBRARY:/=$(SEP))
+distclean_freetype_std: clean_freetype_std
+ -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY))
-$(DELETE) *.orig *~ core *.core
+# The Dos command shell does not support very long list of arguments
+# so we're stuck with wildcards
+#
+#SYSOBJ_ := $(subst $(SEP),\,$(OBJ_))
+
+clean_freetype_dos:
+ -del $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O 2> nul
+
+distclean_freetype_dos: clean_freetype_dos
+ -del $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
+
remove_config_mk:
- -$(DELETE) $(CONFIG_MK:/=$(SEP))
+ -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(CONFIG_MK)) 2> nul
+# the "config.mk" must define 'clean_freetype' and 'distclean_freetype'
+# implementations may use to relay these to either the 'std' or 'dos'
+# versions, or simply provide their own implementation..
+#
clean: clean_freetype
distclean: distclean_freetype remove_config_mk
--- a/config/modules.mk
+++ b/config/modules.mk
@@ -36,8 +36,8 @@
# file in order to `clean' the list
#
clean_module_list:
- @$(DELETE) $(FT_MODULE_LIST)
- @echo Regenerating the font drivers list in '$(FT_MODULE_LIST)'
+ @-$(DELETE) $(FT_MODULE_LIST)
+ @-echo Regenerating the font drivers list in $(FT_MODULE_LIST)
make_module_list: clean_module_list
@echo -- done --
--- a/config/os2/Makefile.emx
+++ b/config/os2/Makefile.emx
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,6 +85,7 @@
DELETE := del
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/os2
PLATFORM := os2
CC := gcc
@@ -88,7 +92,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -155,11 +169,18 @@
CFLAGS := -c -g -O6 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
# Librarian to use to build the static library
#
--- a/config/os2/makefile.devel
+++ b/config/os2/makefile.devel
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -78,6 +81,7 @@
DELETE := del
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/os2
PLATFORM := os2
CC := gcc
@@ -84,7 +88,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -151,11 +165,18 @@
CFLAGS := -c -g -O0 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
# Librarian to use to build the static library
#
--- a/config/os2/makefile.gcc
+++ b/config/os2/makefile.gcc
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -78,6 +81,7 @@
DELETE := del
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/os2
PLATFORM := os2
CC := gcc
@@ -84,7 +88,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -151,26 +165,18 @@
CFLAGS := -c -g -O0 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
-# A rule used to clean all objects from OBJ_DIR
-#
-# The OS/2 command shell does not support very long list of arguments
-# so we're stuck with wildcards
-#
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
-DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
-
-clean_freetype_objects:
- -del $(DIR8OBJ)\*.$O
-
-clean_freetype_lib:
- -del $(FT_LIBRARY)
-
-clean: clean_freetype_objects
# Librarian to use to build the static library
#
--- a/config/unix/Makefile
+++ b/config/unix/Makefile
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,12 +85,23 @@
DELETE := rm -f
SEP := /
+HOSTSEP := $(SEP)
BUILD := $(TOP)/config/unix
PLATFORM := unix
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -154,10 +168,17 @@
CFLAGS := -c -g -O6 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_std
+distclean_freetype: clean_freetype_library_std
# This final rule is used to link all object files into a single
# library. It is part of the system-specific sub-Makefile because not
--- a/config/unix/Makefile.devel
+++ b/config/unix/Makefile.devel
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,12 +85,23 @@
DELETE := rm -f
SEP := /
+HOSTSEP := $(SEP)
BUILD := $(TOP)/config/unix
PLATFORM := unix
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -154,10 +168,17 @@
CFLAGS := -c -g -O0 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_std
+distclean_freetype: distclean_freetype_std
# This final rule is used to link all object files into a single
# library. It is part of the system-specific sub-Makefile because not
--- a/config/win32/Makefile.gcc
+++ b/config/win32/Makefile.gcc
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,6 +85,7 @@
DELETE := del
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/win32
PLATFORM := win32
CC := gcc
@@ -88,7 +92,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)/obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -155,11 +169,18 @@
CFLAGS := -c -g -O6 -Wall
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
# Librarian to use to build the static library
#
FT_LIBRARIAN := $(AR) -r
@@ -172,7 +193,7 @@
# librarian library_file {list of object files}
#
$(FT_LIBRARY): $(OBJECTS_LIST)
- -$(DELETE) $@
+ -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
endif
--- a/config/win32/Makefile.lcc
+++ b/config/win32/Makefile.lcc
@@ -30,9 +30,12 @@
#* BUILD Pathname to the platform-specific files used
#* for the build. Usually `$(TOP)/config/<system>'
#*
-#* SEP Directory separator for the current platform.
-#* Either / or \ (maybe : on Macs)
-#*
+#* SEP Directory separator used during compilation.
+#* (usually "/" or "\"). Note that on Win32, both gcc
+#* and Visual C++ use "/" as a directory separator !!
+#*
+#* HOSTSEP Directory separator for $(COPY) and $(DELETE)
+#*
#* DELETE The forced remove/delete command to erase one or more
#* files
#*
@@ -82,6 +85,7 @@
DELETE := del
SEP := /
+HOSTSEP := \\
BUILD := $(TOP)$(SEP)config$(SEP)win32
PLATFORM := win32
CC := lcc
@@ -88,7 +92,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)$(SEP)obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -156,9 +170,17 @@
CFLAGS := -c -g2 -O
endif
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSIFLAGS :=
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
# This final rule is used to link all object files into a single
# library. It is part of the system-specific sub-Makefile because not
--- a/config/win32/Makefile.vcc
+++ b/config/win32/Makefile.vcc
@@ -78,6 +78,7 @@
DELETE := del
SEP := /
+HOSTSEP := $(strip \ )
BUILD := $(TOP)$(SEP)config$(SEP)win32
PLATFORM := win32
CC := cl
@@ -84,7 +85,17 @@
# the directory where all object files are placed
#
-OBJ_DIR := $(TOP)$(SEP)obj
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+# set TOP=....../path/to/freetype2/top/dir...
+# mkdir obj
+# make -f %TOP%/Makefile setup [options]
+# make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
# the directory where all library files are placed
@@ -147,13 +158,21 @@
# - ansi compliance..
#
ifndef CFLAGS
-CFLAGS := /nologo /c /Ox /G5 /Za /W3 /WX
+CFLAGS := /nologo /c /Ox /G5 /W3 /WX
endif
+# ANSI_FLAGS : put there the flags used to make your compiler ANSI-compliant
+# nothing (if it already is by default like LCC).
+#
+ANSI_FLAGS := /Za
+
ifdef BUILD_FREETYPE
include $(TOP)/config/freetype.mk
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
# This final rule is used to link all object files into a single
# library. It is part of the system-specific sub-Makefile because not
# all librarians accept a simple syntax like :
@@ -160,14 +179,8 @@
#
# librarian library_file {list of object files}
#
-# The LCC-Win32 Librarian, called LCCLIB needs all object files in the current
-# directory. That _is_ stupid, but we'll have to deal with it..
-#
-
-DIR_OBJ := $(subst /,\\,$(OBJ_DIR))
-
$(FT_LIBRARY): $(OBJECTS_LIST)
- lib /out:$@ $(OBJECTS_LIST)
+ lib /nologo /out:$@ $(OBJECTS_LIST)
endif