From febe3fbeba450a8916338e4bd7abdfe8f2e346f6 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sun, 5 Mar 2000 01:14:19 +0000 Subject: [PATCH] A first check of FT2's Make system. Many smaller and larger bugs have been fixed: . Removing unused variables. . detect.mk files now must provide $(CONFIG_FILE) and not $(CONFIG_RULE). . ansi.mk will now be really used as a fallback if the detect mechanism fails. . ANSIFLAGS will now be really used (fixing a typo). . `make clean' now works (again two typos). . Detection of gcc on Unix has been fixed (using the `-v' option instead of `--version'). . `make devel' now works (on Unix). . Fixing *again* a bug in demos/graph/x11/rules.mk to allow multiple use of `-L' compiler options. . $(BASE_H) now contains a few more header files. As usual, a lot of formatting (not finished yet). --- Makefile | 139 ++++++++------- config/ansi/ansi.mk | 148 ++++++++-------- config/detect.mk | 167 +++++++++--------- config/dos/detect.mk | 140 +++++++-------- config/dos/dos-gcc.mk | 143 ++++++++-------- config/freetype.mk | 161 +++++++++--------- config/modules.mk | 82 ++++----- config/os2/detect.mk | 90 +++++----- config/unix/detect.mk | 94 +++++----- config/unix/unix-gcc.mk | 144 ++++++++-------- config/win32/detect.mk | 148 ++++++++-------- demos/Makefile | 359 +++++++++++++++++++-------------------- demos/graph/x11/rules.mk | 89 +++++----- src/base/ftstream.h | 2 +- src/base/rules.mk | 116 +++++-------- src/psnames/module.mk | 3 +- src/psnames/rules.mk | 131 +++++++------- src/sfnt/module.mk | 3 +- src/sfnt/rules.mk | 213 ++++++++--------------- src/shared/rules.mk | 40 ++--- src/truetype/module.mk | 3 +- src/truetype/rules.mk | 129 +++----------- src/type1z/module.mk | 3 +- src/type1z/rules.mk | 124 +++----------- 24 files changed, 1217 insertions(+), 1454 deletions(-) diff --git a/Makefile b/Makefile index 12ffc97d8..f5aa8a6bf 100644 --- a/Makefile +++ b/Makefile @@ -1,108 +1,103 @@ -#****************************************************************************** -#* -#* FreeType build system - top-level Makefile -#* -#* This file is designed for GNU Make, do not use it with another Make tool. -#* It works as follows : -#* -#* - when invoked for the first time, this Makefile will include -#* the rules found in `freetype/config/detect.mk'. They are in charge -#* of detecting the current platform. -#* -#* A summary of the detection will be displayed, and the file `config.mk' -#* will be created in the current directory -#* -#* -#* - when invoked later, this Makefile will include the rules found in -#* `config.mk'. This sub-Makefile will define some system-specific -#* variables (like compiler, compilation flags, object suffix, etc..), -#* then include the rules found in `freetype/config/freetype.mk', -#* used to build the library. -#* -#* See the comments in `config/detect.mk' and `config/freetype.mk' for -#* more details on host platform detection and library builds.. -#* -#****************************************************************************** +# +# FreeType 2 build system -- top-level Makefile +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This file is designed for GNU Make, do not use it with another Make tool! +# +# It works as follows: +# +# - When invoked for the first time, this Makefile will include the rules +# found in `freetype/config/detect.mk'. They are in charge of detecting +# the current platform. +# +# A summary of the detection will be displayed, and the file `config.mk' +# will be created in the current directory. +# +# - When invoked later, this Makefile will include the rules found in +# `config.mk'. This sub-Makefile will define some system-specific +# variables (like compiler, compilation flags, object suffix, etc.), then +# include the rules found in `freetype/config/freetype.mk', used to build +# the library. +# +# See the comments in `config/detect.mk' and `config/freetype.mk' for more +# details on host platform detection and library builds. + .PHONY: setup -# # The variable TOP holds the path to the topmost directory in the FreeType -# engine source hierarchy. If it is not defined, default it to '.' +# engine source hierarchy. If it is not defined, default it to `.'. # ifndef TOP -TOP := . + TOP := . endif CONFIG_MK := config.mk -############################################################################# -# -# If no configuration sub-makefile is present, or if "setup" is the target -# to be built, run the auto-detection rules to figure out which configuration -# rules file to use.. +# If no configuration sub-makefile is present, or if `setup' is the target +# to be built, run the auto-detection rules to figure out which +# configuration rules file to use. # # Note that the configuration file is put in the current directory, which is -# not necessarily TOP. -# +# not necessarily $(TOP). -# if `config.mk' is not present, set "check_platform" and "first_time" +# If `config.mk' is not present, set `check_platform'. # ifeq ($(wildcard $(CONFIG_MK)),) -check_platform := 1 -first_time := 1 + check_platform := 1 endif -# if `setup' is one of the targets requested, set "check_platform" +# If `setup' is one of the targets requested, set `check_platform'. # ifneq ($(findstring setup,$(MAKECMDGOALS)),) -check_platform := 1 + check_platform := 1 endif - -######################################################################### -# -# include the automatic host platform detection rules when we need to +# Include the automatic host platform detection rules when we need to # check the platform. # -# ifdef check_platform -all: setup + all: setup + # If the module list $(FT_MODULE_LIST) file is not present, generate it. + # + modules: make_module_list setup -# if the module list $(FT_MODULE_LIST) file is not present, -# generate it -# -modules: make_module_list setup - -include $(TOP)/config/detect.mk -include $(TOP)/config/modules.mk - -ifeq ($(wildcard $(FT_MODULE_LIST)),) -setup: make_module_list -endif - - -# "setup" must be defined by the host platform detection rules -# to create the 'config.mk' file in the current directory. -# + include $(TOP)/config/detect.mk + include $(TOP)/config/modules.mk + ifeq ($(wildcard $(FT_MODULE_LIST)),) + setup: make_module_list + endif + # IMPORTANT: + # + # `setup' must be defined by the host platform detection rules to create + # the `config.mk' file in the current directory. else -######################################################################## -# -# A configuration sub-Makefile is present, simply run it.. -# -# -all: build_freetype + # A configuration sub-Makefile is present -- simply run it. + # + all: build_freetype -modules: make_module_list + modules: make_module_list -BUILD_FREETYPE := yes -include $(CONFIG_MK) + BUILD_FREETYPE := yes + include $(CONFIG_MK) -endif #test check_platform +endif # test check_platform +# EOF diff --git a/config/ansi/ansi.mk b/config/ansi/ansi.mk index dedac264a..8e7bf38d3 100644 --- a/config/ansi/ansi.mk +++ b/config/ansi/ansi.mk @@ -1,23 +1,20 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for a `normal' ANSI compiler -#* -#* Copyright 1996-2000 by -#* David Turner, Robert Wilhelm, and Werner Lemberg. -#* -#* This file is part of the FreeType project, and may only be used -#* modified and distributed under the terms of the FreeType project -#* license, LICENSE.TXT. By continuing to use, modify, or distribute -#* this file you indicate that you have read the license and -#* understand and accept it fully. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for a `normal' ANSI compiler +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + ifndef TOP -TOP := . + TOP := . endif DELETE := rm -f @@ -26,109 +23,110 @@ HOSTSEP := $(SEP) BUILD := $(TOP)/config/ansi PLATFORM := ansi -# the directory where all object files are placed +# The directory where all object files are placed. # -# 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 +# 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 +# The directory where all library files are placed # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # D := -D -# Target flag - beware, there is a space after the 'o' !! -# -# -T := -o - - -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # L := -l +# Target flag. +# +T := -o # Don't remove this comment line! We need the space after `-o'. + + # C flags # -# These should concern : debug output, optimization & warnings +# These should concern: debug output, optimization & warnings. # -# Use the ANSIFLAGS variable to define the compiler flags used -# to enfore ANSI compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c + 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: Put there the flags used to make your compiler ANSI-compliant. # 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 +ifdef BUILD_FREETYPE -# Librarian to use to build the static library -# -FT_LIBRARIAN := $(AR) -r + # 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 + + # The cleanup targets. + # + clean_freetype: clean_freetype_std + distclean_freetype: distclean_freetype_std + + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# 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 : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) + # 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: + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) +endif + +# EOF diff --git a/config/detect.mk b/config/detect.mk index bef99420c..6303ee236 100644 --- a/config/detect.mk +++ b/config/detect.mk @@ -1,127 +1,130 @@ -#**************************************************************************** -#* * -#* FreeType host platform detection rules * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#* * -#* This sub-Makefile is in charge of detecting the current platform * -#* It sets some variables accordingly. Namely : * -#* * -#* PLATFORM The detected platform. This will default to "ansi" if * -#* auto-detection fails. * -#* * -#* BUILD The configuration and system-specific directory. Usually * -#* 'freetype/config/$(PLATFORM)' but can be different when * -#* a specific compiler has been requested on the * -#* command line.. * -#* * -#* CONFIG_RULES The Makefile to use. This usually depends on the compiler * -#* defined in the 'CC' environment variable. * -#* * -#* DELETE The shell command used to remove a given file * -#* COPY The shell command used to copy one file * -#* * -#* You need to set the following variable(s) before calling it: * -#* * -#* TOP The top-most directory in the FreeType library source * -#* hierarchy. If not defined, it will default to '.' * -#* * -#**************************************************************************** +# +# FreeType 2 host platform detection rules +# -# If TOP is not defined, default it to '.' + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This sub-Makefile is in charge of detecting the current platform. It sets +# the following variables: +# +# BUILD The configuration and system-specific directory. Usually +# `freetype/config/$(PLATFORM)' but can be different if a +# specific compiler has been requested on the command line. +# +# The following variables must be defined in system specific `detect.mk' +# files: +# +# PLATFORM The detected platform. This will default to `ansi' if +# auto-detection fails. +# CONFIG_FILE The Makefile to use. This usually depends on the compiler +# defined in the `CC' environment variable. +# DELETE The shell command used to remove a given file. +# COPY The shell command used to copy one file. +# SEP The platform-specific directory separator. +# CC The compiler to use. +# +# You need to set the following variable(s) before calling it: +# +# TOP The top-most directory in the FreeType library source +# hierarchy. If not defined, it will default to `.'. + +# If TOP is not defined, default it to `.' # ifndef TOP TOP := . endif +# Set auto-detection default to `ansi'. +# Note that we delay the evaluation of $(CONFIG_), $(BUILD), and +# $(CONFIG_RULES). # -# set auto-detection default to ANSI. -# Note that we delay the valuation of BUILD and RULES -# -PLATFORM := ansi -CONFIG = $(TOP)$(SEP)config -DELETE := $(RM) -COPY := cp -SEP := / +PLATFORM := ansi +DELETE := $(RM) +COPY := cp +SEP := / -BUILD = $(CONFIG)$(SEP)$(PLATFORM) -CONFIG_FILE = $(BUILD)/Makefile +CONFIG_ = $(TOP)$(SEP)config$(SEP) +BUILD = $(CONFIG_)$(PLATFORM) +CONFIG_RULES = $(BUILD)$(SEP)$(CONFIG_FILE) - -########################################################################### -# -# Now, include each detection rules file found in a `config/' -# directory.. -# -# - -# we define the BACKSLASH variable to hold a single back-slash character +# We define the BACKSLASH variable to hold a single back-slash character. # This is needed because a line like # -# SEP := \ +# SEP := \ # -# does not work with GNU Make (the back-slash is interpreted as a line -# continuation). While a line like : +# does not work with GNU Make (the backslash is interpreted as a line +# continuation). While a line like # -# SEP := \\ +# SEP := \\ # -# really define $(SEP) as "\" on Unix, and "\\" on Dos and Windows !! +# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! # BACKSLASH := $(strip \ ) -include $(wildcard $(CONFIG)/*/detect.mk) +# Now, include all detection rule files found in the `config/' +# directories. Note that the calling order of the various `detect.mk' files +# isn't predictable. +# +include $(wildcard $(CONFIG_)*/detect.mk) +# In case no detection rule file was successful, use the default. +# +ifndef CONFIG_FILE + CONFIG_FILE := ansi.mk + setup: std_setup +endif # The following targets are equivalent, with the exception that they use -# slightly different syntaxes for the `echo' command. This is due to +# slightly different syntaxes for the `echo' command. # -# std_setup: is defined for most platforms -# dos_setup: is defined for Dos-ish platforms like Dos, Windows & OS/2 +# std_setup: defined for most platforms +# dos_setup: defined for Dos-ish platforms like Dos, Windows & OS/2 # - -.PHONY: std_setup dos_setup +.PHONY: std_setup dos_setup std_setup: @echo "" - @echo "FreeType build system - automatic system detection" + @echo "FreeType build system -- automatic system detection" @echo "" - @echo "The following settings were detected :" + @echo "The following settings are used:" @echo "" - @echo " platform : $(PLATFORM)" - @echo " compiler : $(CC)" - @echo " configuration directory : $(BUILD)" - @echo " configuration rules : $(CONFIG_RULES)" + @echo " platform $(PLATFORM)" + @echo " compiler $(CC)" + @echo " configuration directory $(BUILD)" + @echo " configuration rules $(CONFIG_RULES)" @echo "" @echo "If this does not correspond to your system or settings please remove the file" @echo "\`$(CONFIG_MK)' from this directory then read the INSTALL file for help." @echo "" - @echo "Otherwise, simple type \`make' again to build the library" + @echo "Otherwise, simply type \`make' again to build the library." @echo "" @$(COPY) $(CONFIG_RULES) $(CONFIG_MK) dos_setup: @echo ˙ - @echo FreeType build system - automatic system detection + @echo FreeType build system -- automatic system detection @echo ˙ - @echo The following settings were detected : + @echo The following settings are used: @echo ˙ - @echo ˙˙platform˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙: $(PLATFORM) - @echo ˙˙compiler˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙: $(CC) - @echo ˙˙configuration directory˙˙: $(BUILD) - @echo ˙˙configuration rules˙˙˙˙˙˙: $(CONFIG_RULES) + @echo ˙˙platform˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙$(PLATFORM) + @echo ˙˙compiler˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙$(CC) + @echo ˙˙configuration directory˙˙˙˙˙˙$(BUILD) + @echo ˙˙configuration rules˙˙˙˙˙˙˙˙˙˙$(CONFIG_RULES) @echo ˙ @echo If this does not correspond to your system or settings please remove the file @echo '$(CONFIG_MK)' from this directory then read the INSTALL file for help. @echo ˙ - @echo Otherwise, simple type 'make' again to build the library + @echo Otherwise, simply type 'make' again to build the library. @echo ˙ @$(COPY) $(subst /,\,$(CONFIG_RULES) $(CONFIG_MK)) > nul +# EOF diff --git a/config/dos/detect.mk b/config/dos/detect.mk index 5f1cdff88..32694387a 100644 --- a/config/dos/detect.mk +++ b/config/dos/detect.mk @@ -1,87 +1,91 @@ # -# This file is used to detect a DOS host platform. +# FreeType 2 configuration file to detect a DOS host platform. # + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + # This configuration file to be used depends on the value of the CC -# environment variable. -# -# +# environment variable which is set below according to the compiler name +# given as a parameter to make. -# We test for the COMSPEC environment variable, then run the 'ver' -# command-line program to see if its output contains the word "Dos" -# -# If this is true, we're running a Dos-ish platform (or an emulation) -# +# We test for the COMSPEC environment variable, then run the `ver' +# command-line program to see if its output contains the word `Dos'. +# +# If this is true, we are running a Dos-ish platform (or an emulation). +# ifeq ($(PLATFORM),ansi) -ifdef COMSPEC + ifdef COMSPEC -is_dos := $(findstring Dos,$(shell ver)) + is_dos := $(findstring Dos,$(shell ver)) -# We try to recognize a Dos session under OS/2. The "ver" command -# returns 'Operating System/2 ...' there, so 'is_dos' should be empty -# there. -# -# To recognize a Dos session under OS/2, we check COMSPEC for the -# substring "MDOS\COMMAND" -# -ifeq ($(is_dos),) -is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) -endif + # We try to recognize a Dos session under OS/2. The `ver' command + # returns `Operating System/2 ...' there, so `is_dos' should be empty + # there. + # + # To recognize a Dos session under OS/2, we check COMSPEC for the + # substring `MDOS\COMMAND' + # + ifeq ($(is_dos),) + is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) + endif -ifneq ($(is_dos),) + ifneq ($(is_dos),) -PLATFORM := dos -DELETE := del -COPY := copy + PLATFORM := dos + DELETE := del + COPY := copy -##################################################################### -# -# Use gcc, i.e. DJGPP by default. Aren't we biased ;-) -# -# -CONFIG_FILE := dos-gcc.mk -SEP := / -ifndef CC -CC := gcc -endif + # Use DJGPP (i.e. gcc) by default. + # + CONFIG_FILE := dos-gcc.mk + SEP := / + ifndef CC + CC := gcc + endif + ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C + CONFIG_FILE := dos-tcc.mk + SEP := $(BACKSLASH) + CC := tcc + .PHONY: turboc + endif -ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C -CONFIG_FILE := dos-tcc.mk -SEP := $(BACKSLASH) -CC := tcc -.PHONY: turboc -endif + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := dos-wat.mk + SEP := $(BACKSLASH) + CC := wcc386 + .PHONY: watcom + endif -ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ -CONFIG_FILE := dos-wat.mk -SEP := $(BACKSLASH) -CC := wcc386 -.PHONY: watcom -endif + ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16 bits + CONFIG_FILE := dos-bcc.mk + SEP := $(BACKSLASH) + CC := bcc + .PHONY: borlandc16 + endif -ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16 bits -CONFIG_FILE := dos-bcc.mk -SEP := $(BACKSLASH) -CC := bcc -.PHONY: borlandc16 -endif + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32 bits + CONFIG_FILE := dos-bcc.mk + SEP := $(BACKSLASH) + CC := bcc32 + .PHONY: borlandc + endif -ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32 bits -CONFIG_FILE := dos-bcc.mk -SEP := $(BACKSLASH) -CC := bcc32 -.PHONY: borlandc -endif + setup: dos_setup -CONFIG_RULES := $(TOP)\config\dos\$(CONFIG_FILE) - -# use the Dos version of the "setup dump" -# -setup: dos_setup - -endif # test Dos -endif # test COMSPEC -endif # test PLATFORM + endif # test Dos + endif # test COMSPEC +endif # test PLATFORM +# EOF diff --git a/config/dos/dos-gcc.mk b/config/dos/dos-gcc.mk index 1cee0c33a..c7b4ce13d 100644 --- a/config/dos/dos-gcc.mk +++ b/config/dos/dos-gcc.mk @@ -1,23 +1,20 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for Dos + GCC -#* -#* Copyright 1996-2000 by -#* David Turner, Robert Wilhelm, and Werner Lemberg. -#* -#* This file is part of the FreeType project, and may only be used -#* modified and distributed under the terms of the FreeType project -#* license, LICENSE.TXT. By continuing to use, modify, or distribute -#* this file you indicate that you have read the license and -#* understand and accept it fully. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for the DJGPP compiler +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + ifndef TOP -TOP := . + TOP := . endif DELETE := rm -f @@ -26,106 +23,110 @@ HOSTSEP := $(strip \ ) BUILD := $(TOP)/config/dos PLATFORM := dos -# the directory where all object files are placed +# The directory where all object files are placed. # -# 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 +# 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 +# The directory where all library files are placed # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. -# -L := -l - - -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # D := -D -# Target flag - beware, there is a space after the 'o' !! +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # +L := -l + + +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O6 -Wall + 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: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # 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_dos -distclean_freetype: distclean_freetype_dos + # The cleanup targets. + # + clean_freetype: clean_freetype_dos + distclean_freetype: distclean_freetype_dos + + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r -# 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 : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(AR) -r $@ $(OBJECTS_LIST) + # 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: + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif + +# EOF diff --git a/config/freetype.mk b/config/freetype.mk index ed5ebce62..84f0e7775 100644 --- a/config/freetype.mk +++ b/config/freetype.mk @@ -1,57 +1,51 @@ -#**************************************************************************** -#* * -#* FreeType library sub-Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#* * -#* * -#* DO NOT INVOKE THIS MAKEFILE DIRECTLY. IT IS MEANT TO BE INCLUDED BY * -#* OTHER MAKEFILES. * -#* * -#**************************************************************************** - - -# include the 'modules' rules file # -include $(TOP)/config/modules.mk +# FreeType 2 library sub-Makefile +# -# The targets `objects', `library' are defined at the end of -# this Makefile when all rules have been included.. + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# The targets `objects' and `library' are defined at the end of this +# Makefile when all rules have been included. # .PHONY: build_freetype objects library -# default target - build objects and library +# default target -- build objects and library # build_freetype: objects library -# `multi' target - build multiple objects and library +# `multi' target -- build multiple objects and library # multi: objects library -# The FreeType sources directory. +# The FreeType source directory. # SRC := $(TOP)$(SEP)src -# The directory where the base layer components are placed. -# By default, this is 'freetype/src/base' +# The directory where the base layer components are placed. By default, +# this is `freetype/src/base'. # BASE_DIR := $(SRC)$(SEP)base -# A Few short-cuts in order to avoid typing $(SEP) all the time for -# the directory separator +# A few short-cuts in order to avoid typing $(SEP) all the time for the +# directory separator. # -# For example: SRC_ equals to './src/' where '.' is $(TOP) +# For example: SRC_ equals to `./src/' where `.' is $(TOP). # # SRC_ := $(SRC)$(SEP) @@ -61,6 +55,7 @@ LIB_ := $(LIB_DIR)$(SEP) PUBLIC_ := $(TOP)$(SEP)include$(SEP) CONFIG_ := $(TOP)$(SEP)config$(SEP) + # The name of the final library file. # FT_LIBRARY := $(LIB_)$(LIBRARY).$A @@ -69,10 +64,10 @@ FT_LIBRARY := $(LIB_)$(LIBRARY).$A # include paths # # IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed -# in front of the include list. Porters are then able to put -# their own version of some of the FreeType components in -# the 'freetype/config/' directory, as these files -# will override the default sources. +# in front of the include list. Porters are then able to +# put their own version of some of the FreeType components +# in the `freetype/config/' directory, as these +# files will override the default sources. # INCLUDES := $(BUILD) $(TOP)$(SEP)config $(TOP)$(SEP)include $(INCLUDES) @@ -80,34 +75,37 @@ INCLUDE_FLAGS = $(INCLUDES:%=$I%) # C flags used for the compilation of an object file. This must include at -# least the paths for the 'base' and 'config/' directories, +# least the paths for the `base' and `config/' directories, # debug/optimization/warning flags + ansi compliance if needed. # FT_CFLAGS = $(CFLAGS) $(INCLUDE_FLAGS) FT_CC = $(CC) $(FT_CFLAGS) -FT_COMPILE = $(CC) $(ANSI_FLAGS) $(FT_CFLAGS) +FT_COMPILE = $(CC) $(ANSIFLAGS) $(FT_CFLAGS) +# include the `modules' rules file # -# Free the lists of driver objects +include $(CONFIG_)modules.mk + + +# Free the lists of driver objects. # COMPONENTS_LIST := DRIVERS_LIST := OBJECTS_LIST := -# System-specific component - this must be defined in this Makefile -# for easy updates. The default Ansi ftsystem.c is located in -# 'freetype/config/ftsystem.c'. However, some system-specific -# configuration might define FTSYS_SRC to fetch it in other places, -# like 'freetype/config//ftsystem.c' +# System-specific component -- this must be defined in this Makefile for +# easy updates. The default ANSI ftsystem.c is located in +# `freetype/config/ftsystem.c'. However, some system-specific configuration +# might define $(FTSYS_SRC) to fetch it in other places, like +# `freetype/config//ftsystem.c'. # -# BASE_H is defined in src/base/rules.mk and contains the list of all +# $(BASE_H) is defined in `src/base/rules.mk' and contains the list of all # base layer header files. # ifndef FTSYS_SRC -FTSYS_SRC = $(BASE_)ftsystem.c + FTSYS_SRC = $(BASE_)ftsystem.c endif - FTSYS_OBJ = $(OBJ_)ftsystem.$O OBJECTS_LIST += $(FTSYS_OBJ) @@ -118,10 +116,9 @@ $(FTSYS_OBJ): $(FTSYS_SRC) $(BASE_H) # ftdebug component # -# FTDebug contains code used to print traces and errors. It is -# normally empty for a release build (see ftoption.h) +# FTDebug contains code used to print traces and errors. It is normally +# empty for a release build (see ftoption.h). # - FTDEBUG_SRC = $(BASE_)ftdebug.c FTDEBUG_OBJ = $(OBJ_)ftdebug.$O @@ -131,28 +128,27 @@ $(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(BASE_H) $(FT_COMPILE) $T$@ $< - -# Define PUBLIC_H as the list of all public header files located in -# `$(TOP)/include' +# Define $(PUBLIC_H) as the list of all public header files located in +# `$(TOP)/include'. # PUBLIC_H := $(wildcard $(PUBLIC_)*.h) -# Include all rule files from FreeType components -# +# Include all rule files from FreeType components. # include $(wildcard $(SRC)/*/rules.mk) -# FTInit file: + +# FTInit file # -# The C source 'ftinit.c' contains the FreeType initialisation routines. +# The C source `ftinit.c' contains the FreeType initialization routines. # It is able to automatically register one or more drivers when the API # function FT_Init_FreeType() is called. # # The set of initial drivers is determined by the driver Makefiles # includes above. Each driver Makefile updates the FTINIT_xxxx lists # which contain additional include paths and macros used to compile the -# single 'ftinit.c' source. +# single `ftinit.c' source. # FTINIT_SRC := $(BASE_)ftinit.c FTINIT_OBJ := $(OBJ_)ftinit.$O @@ -166,26 +162,25 @@ $(FTINIT_OBJ): $(FTINIT_SRC) $(BASE_H) $(FT_MODULE_LIST) # All FreeType library objects # # By default, we include the base layer extensions. These could be -# ommitted on builds which do not want them. +# omitted on builds which do not want them. # OBJ_M = $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) - OBJ_S = $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) -# the target 'multi' on the Make command line indicates that we want -# to compile each source file independently.. -# -# Otherwise, each module/driver is compiled in a single object file -# through source file inclusion (see 'src/base/ftbase.c' or -# 'src/truetype/truetype.c' for examples) -# +# The target `multi' on the Make command line indicates that we want to +# compile each source file independently. +# +# Otherwise, each module/driver is compiled in a single object file through +# source file inclusion (see `src/base/ftbase.c' or +# `src/truetype/truetype.c' for examples). +# BASE_OBJECTS := $(OBJECTS_LIST) ifneq ($(findstring multi,$(MAKECMDGOALS)),) -OBJECTS_LIST += $(OBJ_M) + OBJECTS_LIST += $(OBJ_M) else -OBJECTS_LIST += $(OBJ_S) + OBJECTS_LIST += $(OBJ_S) endif objects: $(OBJECTS_LIST) @@ -196,36 +191,36 @@ library: $(FT_LIBRARY) $(FT_COMPILE) $T$@ $< -# Standard cleaning and distclean rules. These are not accepted -# on all systems though.. +# Standard cleaning and distclean rules. These are not accepted +# on all systems though. # clean_freetype_std: - -$(DELETE) $(BASE_OBJECTS) $(OBJS_M) $(OBJS_S) + -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) distclean_freetype_std: clean_freetype_std -$(DELETE) $(FT_LIBRARY) -$(DELETE) *.orig *~ core *.core -# The Dos command shell does not support very long list of arguments -# so we're stuck with wildcards +# The Dos command shell does not support very long list of arguments, so +# we are stuck with wildcards. # - clean_freetype_dos: - -del $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O 2> nul + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O 2> nul distclean_freetype_dos: clean_freetype_dos - -del $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul + -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul -# remove configuration file (used for distclean) +# Remove configuration file (used for distclean). # remove_config_mk: -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(CONFIG_MK)) -# 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.. + +# The `config.mk' file 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 -# END +# EOF diff --git a/config/modules.mk b/config/modules.mk index 8c834bb03..897834273 100644 --- a/config/modules.mk +++ b/config/modules.mk @@ -1,69 +1,73 @@ -#**************************************************************************** -#* * -#* FreeType modules sub-Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#* * -#* * -#* DO NOT INVOKE THIS MAKEFILE DIRECTLY. IT IS MEANT TO BE INCLUDED BY * -#* OTHER MAKEFILES. * -#* * -#* This file is in charge of handling the generation of the modules list * -#* file, normally located in `config/ftmodule.h' * -#* * -#**************************************************************************** +# +# FreeType 2 modules sub-Makefile +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# This file is in charge of handling the generation of the modules list +# file, normally located in `config/ftmodule.h'. .PHONY: make_module_list clean_module_list remake_module_list -# MODULE_LIST, as it name suggests, indicate where the modules list -# reside. For now, it is in $(BUILD)/ftmodule.h +# MODULE_LIST, as its name suggests, indicates where the modules list +# resides. For now, it is in `config/ftmodule.h'. # ifndef FT_MODULE_LIST -FT_MODULE_LIST := $(TOP)$(SEP)config$(SEP)ftmodule.h + FT_MODULE_LIST := $(CONFIG_)ftmodule.h endif -# To build the modules list, we invoke the `make_module_list' target +# To build the modules list, we invoke the `make_module_list' target. # #$(FT_MODULE_LIST): make_module_list -# Before the modules list file can be generated, we must remove the -# file in order to `clean' the list +# Before the modules list file can be generated, we must remove the file in +# order to `clean' the list. # clean_module_list: @-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_MODULE_LIST)) - @-echo Regenerating the font drivers list in $(FT_MODULE_LIST) + @-echo Regenerating the font drivers list in $(FT_MODULE_LIST)... make_module_list: clean_module_list - @echo -- done -- + @echo done. + +# Trailing spaces are protected with a `#' sign to avoid accidental +# removing. +# ifneq ($(findstring $(PLATFORM),dos win32 win16 os2),) -OPEN_MODULE := @echo -CLOSE_MODULE := >> $(FT_MODULE_LIST) + OPEN_MODULE := @echo # + CLOSE_MODULE := >> $(FT_MODULE_LIST) else -OPEN_MODULE := @echo " -CLOSE_MODULE := " >> $(FT_MODULE_LIST) + OPEN_MODULE := @echo " + CLOSE_MODULE := " >> $(FT_MODULE_LIST) endif -# OPEN_DRIVER & CLOSE_DRIVER are used to specify a given font driver -# in the `module.mk' rules file +# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver +# in the `module.mk' rules file. # OPEN_DRIVER := $(OPEN_MODULE)FT_DRIVER( CLOSE_DRIVER := )$(CLOSE_MODULE) -ECHO_DRIVER := @echo "* driver: +ECHO_DRIVER := @echo "* driver: # ECHO_DRIVER_DESC := ( ECHO_DRIVER_DONE := )" -# each `module.mk' in the `src' sub-dirs is used to add one rule to -# the target `make_module_list'. +# Each `module.mk' in the `src' sub-dirs is used to add one rule to the +# target `make_module_list'. # include $(wildcard $(TOP)/src/*/module.mk) +# EOF diff --git a/config/os2/detect.mk b/config/os2/detect.mk index 7bd02c79a..f16c8011b 100644 --- a/config/os2/detect.mk +++ b/config/os2/detect.mk @@ -1,54 +1,64 @@ # -# This file is used to detect an OS/2 host, and set the build variables -# accordingly.. -# -# which Makefile to use based on the value of the CC environment variable. -# -# OS/2 +# FreeType 2 configuration file to detect an OS/2 host platform. # + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. # +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This configuration file to be used depends on the value of the CC +# environment variable which is set below according to the compiler name +# given as a parameter to make. + ifeq ($(PLATFORM),ansi) -ifdef OS2_SHELL + ifdef OS2_SHELL -PLATFORM := os2 -COPY := copy -DELETE := del + PLATFORM := os2 + COPY := copy + DELETE := del -CONFIG_FILE := os2-gcc.mk # gcc-emx by default -SEP := / + CONFIG_FILE := os2-gcc.mk # gcc-emx by default + SEP := / -ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ -CONFIG_FILE := os2-icc.mk -SEP := $(BACKSLASH) -CC := icc -.PHONY: visualage -endif + ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ + CONFIG_FILE := os2-icc.mk + SEP := $(BACKSLASH) + CC := icc + .PHONY: visualage + endif -ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ -CONFIG_FILE := os2-wat.mk -SEP := $(BACKSLASH) -CC := wcc386 -.PHONY: watcom -endif + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := os2-wat.mk + SEP := $(BACKSLASH) + CC := wcc386 + .PHONY: watcom + endif -ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32 bits -CONFIG_FILE := os2-bcc.mk -SEP := $(BACKSLASH) -CC := bcc32 -.PHONY: borlandc -endif + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32 bits + CONFIG_FILE := os2-bcc.mk + SEP := $(BACKSLASH) + CC := bcc32 + .PHONY: borlandc + endif -ifneq ($(findstring devel,$(MAKECMDGOALS)),) -CONFIG_FILE := os2-dev.mk -CC := gcc -SEP := / -devel: setup -endif + ifneq ($(findstring devel,$(MAKECMDGOALS)),) + CONFIG_FILE := os2-dev.mk + CC := gcc + SEP := / + devel: setup + endif -CONFIG_RULES := $(TOP)\config\os2\$(CONFIG_FILE) + setup: dos_setup -setup: dos_setup + endif # test OS2_SHELL +endif # test PLATFORM -endif #test OS2_SHELL -endif #test PLATFORM +#EOF diff --git a/config/unix/detect.mk b/config/unix/detect.mk index 40ed2bee9..72b3b86e5 100644 --- a/config/unix/detect.mk +++ b/config/unix/detect.mk @@ -1,58 +1,62 @@ # -# This file is used to detect which Makefile to use based on the -# value of the CC environment variable. +# FreeType 2 configuration file to detect a UNIX host platform. # -# Unix -# -# -# This will _much_ probably change in the future if we're going to use -# Automake/Autoconf.. + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. # +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This will probably change a lost in the future if we are going to use +# Automake/Autoconf... + ifeq ($(PLATFORM),ansi) -has_inittab := $(strip $(wildcard /etc/inittab)) -ifneq ($(has_inittab),) + has_inittab := $(strip $(wildcard /etc/inittab)) -PLATFORM := unix -COPY := cp -DELETE := rm -f + ifneq ($(has_inittab),) -# if `devel' is the requested target, use the development Makefile -# -ifneq ($(findstring devel,$(MAKECMDGOALS)),) -CONFIG_RULES := $(BUILD)$(SEP)unix-dev.mk -devel: setup; -endif - -# test wether we're using gcc ? If it is, we selected the -# 'unix-gcc.mk' configuration file. Otherwise, the standard -# 'unix.mk' which simply calls "cc -c" with no extra arguments -# -# Feel free to add support for other platform specific compilers -# in this directory (e.g. solaris.mk + changes here to detect the -# platform) -# -ifeq ($(CC),gcc) -is_gcc := 1 -else -ifneq ($(findstring gcc,$(shell $(CC) --version)),) -is_gcc := 1 -endif -endif - -ifdef is_gcc -CONFIG_RULES := $(BUILD)$(SEP)unix-gcc.mk -else -CONFIG_RULES := $(BUILD)$(SEP)unix.mk -endif - -setup: std_setup - -endif # test Unix -endif # test PLATFORM + PLATFORM := unix + COPY := cp + DELETE := rm -f + # Test whether we're using gcc. If so, we select the `unix-gcc.mk' + # configuration file. Otherwise, the standard `unix.mk' is used which + # simply calls `cc -c' with no extra arguments. + # + # Feel free to add support for other platform specific compilers in this + # directory (e.g. solaris.mk + changes here to detect the platform). + # + ifeq ($(CC),gcc) + is_gcc := 1 + else + ifneq ($(findstring gcc,$(shell $(CC) -v 2>&1)),) + is_gcc := 1 + endif + endif + ifdef is_gcc + CONFIG_FILE := unix-gcc.mk + else + CONFIG_FILE := unix.mk + endif + # If `devel' is the requested target, use the development Makefile. + # + ifneq ($(findstring devel,$(MAKECMDGOALS)),) + CONFIG_FILE := unix-dev.mk + devel: setup + endif + setup: std_setup + endif # test Unix +endif # test PLATFORM +# EOF diff --git a/config/unix/unix-gcc.mk b/config/unix/unix-gcc.mk index 8b17923cf..eee2eb1c9 100644 --- a/config/unix/unix-gcc.mk +++ b/config/unix/unix-gcc.mk @@ -1,23 +1,20 @@ -#******************************************************************* -#* -#* FreeType 2 Configuration rules for a standard Unix compiler -#* -#* Copyright 1996-2000 by -#* David Turner, Robert Wilhelm, and Werner Lemberg. -#* -#* This file is part of the FreeType project, and may only be used -#* modified and distributed under the terms of the FreeType project -#* license, LICENSE.TXT. By continuing to use, modify, or distribute -#* this file you indicate that you have read the license and -#* understand and accept it fully. -#* -#* Please read the file "freetype/docs/config.txt" to understand -#* what this file does.. -#* -#******************************************************************* +# +# FreeType 2 configuration rules for the gcc compiler under UNIX +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + ifndef TOP -TOP := . + TOP := . endif DELETE := rm -f @@ -26,105 +23,110 @@ HOSTSEP := $(SEP) BUILD := $(TOP)/config/unix PLATFORM := unix -# the directory where all object files are placed +# The directory where all object files are placed. # -# 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 +# 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 +# The directory where all library files are placed # -# by default, this is the same as OBJ_DIR, however, this can be -# changed to suit particular needs.. +# By default, this is the same as $(OBJ_DIR), however, this can be changed +# to suit particular needs. # LIB_DIR := $(OBJ_DIR) -# the object file extension, this can be .o, .tco, .obj, etc.. -# depending on the platform +# The object file extension. This can be .o, .tco, .obj, etc., depending on +# the platform. # O := o -# the library file extension, this can be .a, .lib, etc.. -# depending on the platform +# The library file extension. This can be .a, .lib, etc., depending on the +# platform. # A := a -# The name of the final library file. -# Note that the DOS-specific Makefile uses a shorter (8.3) name +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. # LIBRARY := libfreetype -# path inclusion flag. -# -# Some compilers use a different flag than '-I' to specify an -# additional include path. Examples are "/i=" or "-J", etc... +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. # I := -I -# The link flag used to specify a given library file on link. -# Note that this is only used to compile the demo programs, not -# the library itself. -# -L := -l - - -# C flag used to define a macro before the compilation of a given -# source object. Usually is '-D' like in "-DDEBUG" +# C flag used to define a macro before the compilation of a given source +# object. Usually is `-D' like in `-DDEBUG'. # D := -D -# Target flag - beware, there is a space after the 'o' !! +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. # +L := -l + + +# Target flag. # -T := -o +T := -o # Don't remove this comment line! We need the space after `-o'. + # C flags # -# These should concern : +# These should concern: debug output, optimization & warnings. # -# - debug output -# - optimization -# - warnings -# - ansi compliance.. +# Use the ANSIFLAGS variable to define the compiler flags used to enfore +# ANSI compliance. # ifndef CFLAGS -CFLAGS := -c -g -O6 -Wall + 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: Put there the flags used to make your compiler ANSI-compliant. # ANSIFLAGS := -ansi -pedantic + ifdef BUILD_FREETYPE -include $(TOP)/config/freetype.mk + # 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: distclean_freetype_std + # The cleanup targets. + # + 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 -# all librarians accept a simple syntax like : -# -# librarian library_file {list of object files} -# -$(FT_LIBRARY): $(OBJECTS_LIST) - -$(DELETE) $@ - $(AR) -r $@ $(OBJECTS_LIST) + # Librarian to use to build the static library + # + FT_LIBRARIAN := $(AR) -r + + + # 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: + # + # librarian library_file {list of object files} + # + $(FT_LIBRARY): $(OBJECTS_LIST) + -$(DELETE) $@ + $(FT_LIBRARIAN) $@ $(OBJECTS_LIST) endif + +# EOF diff --git a/config/win32/detect.mk b/config/win32/detect.mk index 1ce25f650..ea9583c56 100644 --- a/config/win32/detect.mk +++ b/config/win32/detect.mk @@ -1,93 +1,93 @@ # -# This file is used to detect a Win32 host platform. +# FreeType 2 configuration file to detect a Win32 host platform. # + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + # This configuration file to be used depends on the value of the CC -# environment variable. -# -# +# environment variable which is set below according to the compiler name +# given as a parameter to make. ifeq ($(PLATFORM),ansi) -################################################################### -# -# Detecting Windows NT or Windows 9x -# + # Detecting Windows NT is easy, as the OS variable must be defined and + # contains `Windows_NT'. Untested with Windows 2K, but I guess it should + # work... + # + ifeq ($(OS),Windows_NT) + is_windows := 1 -# Detecting Windows NT is easy, as the OS variable must be defined -# and contains "Windows_NT". Untested with Windows 2K, but I guess -# it should work ... -# -ifeq ($(OS),Windows_NT) -is_windows := 1 + # We test for the COMSPEC environment variable, then run the `ver' + # command-line program to see if its output contains the word `Windows'. + # + # If this is true, we're running a win32 platform (or an emulation). + # + else + ifdef COMSPEC + is_windows := $(findstring Windows,$(strip $(shell ver))) + endif + endif #test NT -# We test for the COMSPEC environment variable, then run the 'ver' -# command-line program to see if its output contains the word "Windows" -# -# If this is true, we're running a win32 platform (or an emulation) -# -else -ifdef COMSPEC -is_windows := $(findstring Windows,$(strip $(shell ver))) -endif -endif #test NT + ifdef is_windows -#################################################################### -# -# Rules for Win32 -# + PLATFORM := win32 + DELETE := del + COPY := copy -ifdef is_windows + CONFIG_FILE := w32-gcc.mk # gcc Makefile by default + SEP := / + ifeq ($(CC),cc) + CC := gcc + endif -PLATFORM := win32 -DELETE := del -COPY := copy + ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ + CONFIG_FILE := w32-vcc.mk + SEP := $(BACKSLASH) + CC := cl + visualc: setup + endif -CONFIG_FILE := w32-gcc.mk # gcc Makefile by default - aren't we biased ;-) -SEP := / -ifeq ($(CC),cc) -CC := gcc -endif + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := w32-wat.mk + SEP := $(BACKSLASH) + CC := wcc386 + watcom: setup + endif -ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ -CONFIG_FILE := w32-vcc.mk -SEP := $(BACKSLASH) -CC := cl -visualc: setup -endif + ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ + CONFIG_FILE := w32-icc.mk + SEP := $(BACKSLASH) + CC := icc + visualage: setup + endif -ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ -CONFIG_FILE := w32-wat.mk -SEP := $(BACKSLASH) -CC := wcc386 -watcom: setup -endif + ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 + CONFIG_FILE := w32-lcc.mk + SEP := $(BACKSLASH) + CC := lcc + lcc: setup + endif -ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ -CONFIG_FILE := w32-icc.mk -SEP := $(BACKSLASH) -CC := icc -visualage: setup -endif + ifneq ($(findstring devel,$(MAKECMDGOALS)),) + CONFIG_FILE := w32-dev.mk + CC := gcc + SEP := / + devel: setup + endif -ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 -CONFIG_FILE := w32-lcc.mk -SEP := $(BACKSLASH) -CC := lcc -lcc: setup -endif + setup: dos_setup -ifneq ($(findstring devel,$(MAKECMDGOALS)),) -CONFIG_FILE := w32-dev.mk -CC := gcc -SEP := / -devel: setup -endif - -CONFIG_RULES := $(TOP)\config\win32\$(CONFIG_FILE) - -setup: dos_setup - -endif #test is_windows -endif #test PLATFORM + endif # test is_windows +endif # test PLATFORM +# EOF diff --git a/demos/Makefile b/demos/Makefile index c705ffaee..c4aed7a78 100644 --- a/demos/Makefile +++ b/demos/Makefile @@ -10,11 +10,11 @@ all: exes # ifndef TOP -TOP := .. + TOP := .. endif ifndef TOP2 -TOP2 := $(TOP)/demos + TOP2 := $(TOP)/demos endif ###################################################################### @@ -23,7 +23,7 @@ endif # defined by default as $(TOP)/config.mk # ifndef CONFIG_MK -CONFIG_MK := $(TOP)/config.mk + CONFIG_MK := $(TOP)/config.mk endif #################################################################### @@ -32,228 +32,223 @@ endif # If not, issue a warning message, then stop there.. # ifeq ($(wildcard $(CONFIG_MK)),) -no_config_mk := 1 + no_config_mk := 1 endif ifdef no_config_mk -exes: - @echo Please compile the library before the demo programs! -clean distclean: - @echo "I need \`$(TOP)/config.mk' to do that!" + exes: + @echo Please compile the library before the demo programs! + clean distclean: + @echo "I need \`$(TOP)/config.mk' to do that!" 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) - -#################################################################### -# -# 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 := graph - -ifeq ($(TOP),..) -SRC_DIR := src -else -SRC_DIR := $(TOP2_)src -endif - -SRC_DIR_ := $(SRC_DIR)$(SEP) - -FT_INCLUDES := $(BUILD) $(TOP_)config $(TOP_)include $(SRC_)base $(SRC_DIR) -TT_INCLUDES := $(SRC_)shared $(SRC_)truetype -T1_INCLUDES := $(SRC_)shared $(SRC_)type1 - -COMPILE = $(CC) $(CFLAGS) $(INCLUDES:%=$I%) -LINK := $(CC) -FTLIB := $(TOP_)$(LIB_DIR)$(SEP)$(LIBRARY).$A - -# the default commands used to link the executables. These can -# be re-defined for platform-specific stuff.. -# -LINK = $(CC) $T$@ $< $(FTLIB) $(EFENCE) -COMMON_LINK = $(LINK) $(COMMON_OBJ) -GRAPH_LINK = $(COMMON_LINK) $(GRAPH_LIB) + #################################################################### + # + # 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) -.PHONY: exes clean distclean + #################################################################### + # + # Define a few important variables now + # + TOP_ := $(TOP)$(SEP) + TOP2_ := $(TOP2)$(SEP) + SRC_ := $(TOP)$(SEP)src$(SEP) -################################################################### -# -# Include the rules needed to compile the graphics sub-system. -# This will also select which graphics driver to compile to the -# sub-system.. -# -include $(GRAPH_DIR)/rules.mk + BIN_ := bin$(SEP) + OBJ_ := obj$(SEP) -#################################################################### -# -# Detect DOS-like platforms, currently DOS, Win 3.1, Win32 & OS/2 -# -# -ifneq ($(findstring $(PLATFORM),os2 win16 win32 dos),) -DOSLIKE := 1 -endif + GRAPH_DIR := graph + + ifeq ($(TOP),..) + SRC_DIR := src + else + SRC_DIR := $(TOP2_)src + endif + + SRC_DIR_ := $(SRC_DIR)$(SEP) + + FT_INCLUDES := $(BUILD) $(TOP_)config $(TOP_)include $(SRC_)base $(SRC_DIR) + TT_INCLUDES := $(SRC_)shared $(SRC_)truetype + T1_INCLUDES := $(SRC_)shared $(SRC_)type1 + + COMPILE = $(CC) $(CFLAGS) $(INCLUDES:%=$I%) + LINK := $(CC) + FTLIB := $(TOP_)$(LIB_DIR)$(SEP)$(LIBRARY).$A + + # the default commands used to link the executables. These can + # be re-defined for platform-specific stuff.. + # + LINK = $(CC) $T$@ $< $(FTLIB) $(EFENCE) + COMMON_LINK = $(LINK) $(COMMON_OBJ) + GRAPH_LINK = $(COMMON_LINK) $(GRAPH_LIB) + + .PHONY: exes clean distclean + + ################################################################### + # + # Include the rules needed to compile the graphics sub-system. + # This will also select which graphics driver to compile to the + # sub-system.. + # + include $(GRAPH_DIR)/rules.mk + + #################################################################### + # + # Detect DOS-like platforms, currently DOS, Win 3.1, Win32 & OS/2 + # + ifneq ($(findstring $(PLATFORM),os2 win16 win32 dos),) + DOSLIKE := 1 + endif -################################################################### -# -# Clean-up rules. Because the `del' command on DOS-like platforms -# cannot take a long list of arguments, we simply erase the directory -# contents.. -# + ################################################################### + # + # Clean-up rules. Because the `del' command on DOS-like platforms + # cannot take a long list of arguments, we simply erase the directory + # contents. + # + ifdef DOSLIKE -ifdef DOSLIKE -clean_demo: - -del obj\*.$O 2> nul - -del $(subst /,\,$(TOP2))\src\*.bak 2> nul + clean_demo: + -del obj\*.$O 2> nul + -del $(subst /,\,$(TOP2))\src\*.bak 2> nul -distclean_demo: clean_demo - -del obj\*.lib 2> nul - -del bin\*.exe 2> nul -else + distclean_demo: clean_demo + -del obj\*.lib 2> nul + -del bin\*.exe 2> nul -clean_demo: - -$(DELETE) $(OBJ_)*.$O - -$(DELETE) $(SRC_)*.bak graph$(SEP)*.bak - -$(DELETE) $(SRC_)*~ graph$(SEP)*~ + else -distclean_demo: clean_demo - -$(DELETE) $(EXES:%=$(BIN_)%$E) - -$(DELETE) $(GRAPH_LIB) -endif + clean_demo: + -$(DELETE) $(OBJ_)*.$O + -$(DELETE) $(SRC_)*.bak graph$(SEP)*.bak + -$(DELETE) $(SRC_)*~ graph$(SEP)*~ -clean: clean_demo -distclean: distclean_demo + distclean_demo: clean_demo + -$(DELETE) $(EXES:%=$(BIN_)%$E) + -$(DELETE) $(GRAPH_LIB) -#################################################################### -# -# Compute the executable suffix to use, and put it in `E'. -# It is ".exe" on DOS-ish platforms, and nothing otherwise -# -ifdef DOSLIKE -E := .exe -else -E := -endif + endif -################################################################### -# -# The list of demonstration programs to build. -# -EXES := ftlint ftview fttimer + clean: clean_demo + distclean: distclean_demo -ifneq ($(findstring $(PLATFORM),os2 unix),) -EXES += ttdebug -endif + #################################################################### + # + # Compute the executable suffix to use, and put it in `E'. + # It is ".exe" on DOS-ish platforms, and nothing otherwise. + # + ifdef DOSLIKE + E := .exe + else + E := + endif -exes: $(EXES:%=$(BIN_)%$E) + ################################################################### + # + # The list of demonstration programs to build. + # + EXES := ftlint ftview fttimer + + ifneq ($(findstring $(PLATFORM),os2 unix),) + EXES += ttdebug + endif + + exes: $(EXES:%=$(BIN_)%$E) -INCLUDES := $(FT_INCLUDES) + INCLUDES := $(FT_INCLUDES) -#################################################################### -# -# Rules for compiling object files for text-only demos -# - -COMMON_OBJ := $(OBJ_)common.$O -$(COMMON_OBJ): $(SRC_DIR_)common.c -ifdef DOSLIKE - $(COMPILE) $T$@ $< $DEXPAND_WILDCARDS -else - $(COMPILE) $T$@ $< -endif + #################################################################### + # + # Rules for compiling object files for text-only demos + # + COMMON_OBJ := $(OBJ_)common.$O + $(COMMON_OBJ): $(SRC_DIR_)common.c + ifdef DOSLIKE + $(COMPILE) $T$@ $< $DEXPAND_WILDCARDS + else + $(COMPILE) $T$@ $< + endif -$(OBJ_)%.$O: $(SRC_DIR_)%.c $(FTLIB) - $(COMPILE) $T$@ $< + $(OBJ_)%.$O: $(SRC_DIR_)%.c $(FTLIB) + $(COMPILE) $T$@ $< -$(OBJ_)ftlint.$O: $(SRC_DIR_)ftlint.c - $(COMPILE) $T$@ $< + $(OBJ_)ftlint.$O: $(SRC_DIR_)ftlint.c + $(COMPILE) $T$@ $< -$(OBJ_)fttry.$O: $(SRC_DIR_)fttry.c - $(COMPILE) $T$@ $< + $(OBJ_)fttry.$O: $(SRC_DIR_)fttry.c + $(COMPILE) $T$@ $< -$(OBJ_)ftview.$O: $(SRC_DIR_)ftview.c $(GRAPH_LIB) - $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< + $(OBJ_)ftview.$O: $(SRC_DIR_)ftview.c $(GRAPH_LIB) + $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< -$(OBJ_)fttimer.$O: $(SRC_DIR_)fttimer.c $(GRAPH_LIB) - $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< + $(OBJ_)fttimer.$O: $(SRC_DIR_)fttimer.c $(GRAPH_LIB) + $(COMPILE) $(GRAPH_INCLUDES:%=$I%) $T$@ $< -#$(OBJ_)ftsbit.$O: $(SRC_DIR)/ftsbit.c $(GRAPH_LIB) -# $(COMPILE) $T$@ $< +# $(OBJ_)ftsbit.$O: $(SRC_DIR)/ftsbit.c $(GRAPH_LIB) +# $(COMPILE) $T$@ $< -#################################################################### -# -# Special rule to compile the `t1dump' program as it includes -# the Type1 source path -# -$(OBJ_)t1dump.$O: $(SRC_DIR)/t1dump.c - $(COMPILE) $(T1_INCLUDES:%=$I%) $T$@ $< + #################################################################### + # + # Special rule to compile the `t1dump' program as it includes + # the Type1 source path + # + $(OBJ_)t1dump.$O: $(SRC_DIR)/t1dump.c + $(COMPILE) $(T1_INCLUDES:%=$I%) $T$@ $< -#################################################################### -# -# Special rule to compile the `ttdebug' program as it includes -# the TrueType source path and needs extra flags for correct keyboard -# handling on Unix -# + #################################################################### + # + # Special rule to compile the `ttdebug' program as it includes + # the TrueType source path and needs extra flags for correct keyboard + # handling on Unix -# POSIX TERMIOS: Do not define if you use OLD U*ix like 4.2BSD. -# -# detect a Unix system -ifeq ($(PLATFORM),unix) -EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS -endif + # POSIX TERMIOS: Do not define if you use OLD U*ix like 4.2BSD. + # + # detect a Unix system + ifeq ($(PLATFORM),unix) + EXTRAFLAGS = $DUNIX $DHAVE_POSIX_TERMIOS + endif -$(OBJ_)ttdebug.$O: $(SRC_DIR)/ttdebug.c - $(COMPILE) $(TT_INCLUDES:%=$I%) $T$@ $< $(EXTRAFLAGS) + $(OBJ_)ttdebug.$O: $(SRC_DIR)/ttdebug.c + $(COMPILE) $(TT_INCLUDES:%=$I%) $T$@ $< $(EXTRAFLAGS) -#################################################################### -# -# Rules used to link the executables. Note that they could be -# over-ridden by system-specific things.. -# + #################################################################### + # + # Rules used to link the executables. Note that they could be + # over-ridden by system-specific things.. + # + $(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) $(COMMON_OBJ) + $(COMMON_LINK) -$(BIN_)ftlint$E: $(OBJ_)ftlint.$O $(FTLIB) $(COMMON_OBJ) - $(COMMON_LINK) + $(BIN_)fttry$E: $(OBJ_)fttry.$O $(FTLIB) + $(LINK) + + $(BIN_)ftsbit$E: $(OBJ_)ftsbit.$O $(FTLIB) + $(LINK) + + $(BIN_)t1dump$E: $(OBJ_)t1dump.$O $(FTLIB) + $(LINK) + + $(BIN_)ttdebug$E: $(OBJ_)ttdebug.$O $(FTLIB) + $(LINK) -$(BIN_)fttry$E: $(OBJ_)fttry.$O $(FTLIB) - $(LINK) + $(BIN_)ftview$E: $(OBJ_)ftview.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) + $(GRAPH_LINK) - -$(BIN_)ftsbit$E: $(OBJ_)ftsbit.$O $(FTLIB) - $(LINK) - - -$(BIN_)t1dump$E: $(OBJ_)t1dump.$O $(FTLIB) - $(LINK) - -$(BIN_)ttdebug$E: $(OBJ_)ttdebug.$O $(FTLIB) - $(LINK) - - -$(BIN_)ftview$E: $(OBJ_)ftview.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) - $(GRAPH_LINK) - -$(BIN_)fttimer$E: $(OBJ_)fttimer.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) - $(GRAPH_LINK) + $(BIN_)fttimer$E: $(OBJ_)fttimer.$O $(FTLIB) $(GRAPH_LIB) $(COMMON_OBJ) + $(GRAPH_LINK) endif +# EOF diff --git a/demos/graph/x11/rules.mk b/demos/graph/x11/rules.mk index ada27c77c..a1641fd17 100644 --- a/demos/graph/x11/rules.mk +++ b/demos/graph/x11/rules.mk @@ -13,23 +13,21 @@ # the current path. # ifneq ($(findstring X11R6$(SEP)bin,$(PATH)),) -xversion := X11R6 + xversion := X11R6 else - -ifneq ($(findstring X11R5$(SEP)bin,$(PATH)),) -xversion := X11R5 -else - -ifneq ($(findstring X11$(SEP)bin,$(PATH)),) -xversion := X11 -endif -endif + ifneq ($(findstring X11R5$(SEP)bin,$(PATH)),) + xversion := X11R5 + else + ifneq ($(findstring X11$(SEP)bin,$(PATH)),) + xversion := X11 + endif + endif endif ifdef xversion -X11_PATH := $(subst ;, ,$(PATH)) $(subst :, ,$(PATH)) -X11_PATH := $(filter %$(xversion)$(SEP)bin,$(X11_PATH)) -X11_PATH := $(X11_PATH:%$(SEP)bin=%) + X11_PATH := $(subst ;, ,$(PATH)) $(subst :, ,$(PATH)) + X11_PATH := $(filter %$(xversion)$(SEP)bin,$(X11_PATH)) + X11_PATH := $(X11_PATH:%$(SEP)bin=%) endif ########################################################################## @@ -41,41 +39,38 @@ endif # ifneq ($(X11_PATH),) -X11_INCLUDE := $(X11_PATH:%=%$(SEP)include) -X11_LIB := $(X11_PATH:%=%$(SEP)lib) + X11_INCLUDE := $(X11_PATH:%=%$(SEP)include) + X11_LIB := $(X11_PATH:%=%$(SEP)lib) -# the GRAPH_LINK variable is expanded each time an executable is linked against -# the graphics library.. -# -GRAPH_LINK += -L$(X11_LIB) -lX11 + # the GRAPH_LINK variable is expanded each time an executable is linked + # against the graphics library. + # + GRAPH_LINK += $(X11_LIB:%=-L%) -lX11 -# Solaris needs a -lsocket in GRAPH_LINK .. -# -UNAME := $(shell uname) -ifneq ($(findstring $(UNAME),SunOS Solaris),) -GRAPH_LINK += -lsocket + # Solaris needs a -lsocket in GRAPH_LINK .. + # + UNAME := $(shell uname) + ifneq ($(findstring $(UNAME),SunOS Solaris),) + GRAPH_LINK += -lsocket + endif + + + # add the X11 driver object file to the graphics library + # + GRAPH_OBJS += $(OBJ_)grx11.$O + + + GR_X11 := $(GRAPH_)x11 + GR_X11_ := $(GR_X11)$(SEP) + + DEVICES += X11 + DEVICE_INCLUDES += $(GR_X11) + + # the rule used to compile the X11 driver + # + $(OBJ_)grx11.$O: $(GR_X11_)grx11.c $(GR_X11_)grx11.h + $(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) $I$(GR_X11) \ + $(X11_INCLUDE:%=$I%) $T$@ $< endif - -# add the X11 driver object file to the graphics library -# -GRAPH_OBJS += $(OBJ_)grx11.$O - - - -GR_X11 := $(GRAPH_)x11 -GR_X11_ := $(GR_X11)$(SEP) - -DEVICES += X11 -DEVICE_INCLUDES += $(GR_X11) - -# the rule used to compile the X11 driver -# -$(OBJ_)grx11.$O: $(GR_X11_)grx11.c $(GR_X11_)grx11.h - $(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) $I$(GR_X11) \ - $(X11_INCLUDE:%=$I%) $T$@ $< -endif - - - - +# EOF diff --git a/src/base/ftstream.h b/src/base/ftstream.h index 58cafaa9a..7f183cddb 100644 --- a/src/base/ftstream.h +++ b/src/base/ftstream.h @@ -44,7 +44,7 @@ typedef enum FT_Frame_Op_ ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ), ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ), ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ), - ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ), + ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ) } FT_Frame_Op; diff --git a/src/base/rules.mk b/src/base/rules.mk index 9d42f300b..580cb7858 100644 --- a/src/base/rules.mk +++ b/src/base/rules.mk @@ -1,98 +1,61 @@ -#**************************************************************************** -#* * -#* Base layer Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#**************************************************************************** +# +# FreeType 2 base layer configuration rules +# -#**************************************************************************** -#* * -#* IMPORTANT NOTE: This Makefile is intended for GNU Make! * -#* If you provide Makefiles for other make utilities, * -#* please place them in `freetype/lib/arch/.' * -#* * -#* * -#* This file is to be included by the root FreeType sub-Makefile, usually * -#* named `freetype/lib/Makefile.lib.' Here is the list of the variables * -#* that must be defined to use it: * -#* * -#* BASE_DIR: The location of the base layer's directory. This is * -#* usually `freetype/lib/base.' * -#* * -#* ARCH_DIR: The location of the architecture-dependent directory. * -#* This is usually `freetype/lib/arch/.' * -#* * -#* OBJ_DIR: The location where the compiled object(s) file will be * -#* placed. * -#* * -#* FT_CFLAGS: A set of flags used for compilation of object files. * -#* This contains at least the include paths of the `arch' * -#* and `base' directories + optimization + warnings + * -#* ANSI compliance. * -#* * -#* FT_IFLAGS: The flag used to specify an include path on the compiler * -#* command line. For example, with GCC, this is `-I', while * -#* some other compilers use `/i=' or `-J', etc. * -#* * -#* FT_OBJ: The suffix of an object file for the platform. Can be * -#* `o', `obj', `coff', `tco', etc. * -#* * -#* FT_CC: The C compiler to use. * -#* * -#* * -#* It sets the following variables, which are used by the parent Makefile * -#* after the call: * -#* * -#* BASE_H: The list of base layer header files on which the rest * -#* of the library (i.e., drivers) rely. * -#* * -#* BASE_OBJ_S: The single-object base layer. * -#* BASE_OBJ_M: A list of all objects for a multiple-objects build. * -#* BASE_EXT_OBJ: A list of base layer extensions, i.e., components * -#* found in `freetype/lib/base' which are not compiled * -#* within the base layer proper. * -#* * -#**************************************************************************** +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# It sets the following variables, which are used by the master Makefile +# after the call: +# +# BASE_H: The list of base layer header files on which the rest +# of the library (i.e., drivers) rely. +# +# BASE_OBJ_S: The single-object base layer. +# BASE_OBJ_M: A list of all objects for a multiple-objects build. +# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found +# in `freetype/lib/base' which are not compiled within the +# base layer proper. INCLUDES += $(SRC_)base # Base layer sources # -BASE_SRC := $(BASE_)ftstream.c \ - $(BASE_)ftcalc.c \ - $(BASE_)ftobjs.c \ +BASE_SRC := $(BASE_)ftcalc.c \ $(BASE_)ftextend.c \ - $(BASE_)ftlist.c + $(BASE_)ftlist.c \ + $(BASE_)ftobjs.c \ + $(BASE_)ftstream.c # Base layer headers # BASE_H := $(BASE_)ftcalc.h \ - $(BASE_)ftobjs.h \ + $(BASE_)ftdebug.h \ $(BASE_)ftdriver.h \ $(BASE_)ftextend.h \ - $(BASE_)ftlist.h + $(BASE_)ftlist.h \ + $(BASE_)ftobjs.h \ + $(BASE_)ftstream.h # Base layer `extensions' sources # # An extension is added to the library file (.a or .lib) as a separate -# object. It will then be linked to the final executable only if one of -# its symbols is used by the application. +# object. It will then be linked to the final executable only if one of its +# symbols is used by the application. # BASE_EXT_SRC := $(BASE_)ftbbox.c \ $(BASE_)ftraster.c \ $(BASE_)ftoutln.c - # Base layer extensions headers # BASE_EXT_H := $(BASE_EXT_SRC:%c=%h) @@ -100,11 +63,11 @@ BASE_EXT_H := $(BASE_EXT_SRC:%c=%h) # Base layer object(s) # -# BASE_OBJ_M is used during `multi' builds (each base source file -# compiles to a single object file). +# BASE_OBJ_M is used during `multi' builds (each base source file compiles +# to a single object file). # -# BASE_OBJ_S is used during `single' builds (the whole base layer -# is compiled as a single object file using ftbase.c). +# BASE_OBJ_S is used during `single' builds (the whole base layer is +# compiled as a single object file using ftbase.c). # BASE_OBJ_M := $(BASE_SRC:$(BASE_)%.c=$(OBJ_)%.$O) BASE_OBJ_S := $(OBJ_)ftbase.$O @@ -132,5 +95,4 @@ $(OBJ_)ft%.$O: $(BASE_)ft%.c $(PUBLIC_H) $(BASE_H) $(BASE_OBJ_S): $(PUBLIC_H) $(BASE_H) $(BASE_SRC_S) $(BASE_SRC) $(FT_COMPILE) $T$@ $(BASE_SRC_S) - -# END +# EOF diff --git a/src/psnames/module.mk b/src/psnames/module.mk index 37dd74c3b..cb23e8e76 100644 --- a/src/psnames/module.mk +++ b/src/psnames/module.mk @@ -2,5 +2,6 @@ make_module_list: add_psnames_driver add_psnames_driver: $(OPEN_DRIVER)psnames_driver_interface$(CLOSE_DRIVER) - $(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC) Postscript & Unicode Glyph name handling $(ECHO_DRIVER_DONE) + $(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE) +# EOF diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk index 027c7e043..25a1f1909 100644 --- a/src/psnames/rules.mk +++ b/src/psnames/rules.mk @@ -1,89 +1,90 @@ -#**************************************************************************** -#* * -#* PSNames driver Makefile * -#* * -#* Copyright 1996-2000 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#**************************************************************************** +# +# FreeType 2 PSNames driver configuration rules +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. ifndef PSNAMES_INCLUDE -PSNAMES_INCLUDED := 1 + PSNAMES_INCLUDED := 1 -include $(SRC_)shared/rules.mk + include $(SRC_)shared/rules.mk -# PSNAMES driver directory -# -PSNAMES_DIR := $(SRC_)psnames -PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP) + # PSNAMES driver directory + # + PSNAMES_DIR := $(SRC_)psnames + PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP) -# additional include flags used when compiling the driver -# -PSNAMES_INCLUDE := $(SHARED) $(PSNAMES_DIR) + # additional include flags used when compiling the driver + # + PSNAMES_INCLUDE := $(SHARED) $(PSNAMES_DIR) -# compilation flags for the driver -# -PSNAMES_CFLAGS := $(PSNAMES_INCLUDE:%=$I%) -PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) + # compilation flags for the driver + # + PSNAMES_CFLAGS := $(PSNAMES_INCLUDE:%=$I%) + PSNAMES_COMPILE := $(FT_COMPILE) $(PSNAMES_CFLAGS) -# TrueType driver sources (i.e., C files) -# -PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c + # driver sources (i.e., C files) + # + PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c -# TrueType driver headers -# -PSNAMES_DRV_H := $(SHARED_H) \ - $(PSNAMES_DIR_)psdriver.h \ - $(PSNAMES_DIR_)pstables.h + # driver headers + # + PSNAMES_DRV_H := $(SHARED_H) \ + $(PSNAMES_DIR_)psdriver.h \ + $(PSNAMES_DIR_)pstables.h -# driver object(s) -# -# PSNAMES_DRV_OBJ_M is used during `debug' builds -# PSNAMES_DRV_OBJ_S is used during `release' builds -# -PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O) -PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O + # driver object(s) + # + # PSNAMES_DRV_OBJ_M is used during `debug' builds + # PSNAMES_DRV_OBJ_S is used during `release' builds + # + PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O) + PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O -# driver root source file(s) -# -PSNAMES_DRV_SRC_M := $(PSNAMES_DRV_SRC) -PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psdriver.c + # driver source file(s) + # + PSNAMES_DRV_SRC_M := $(PSNAMES_DRV_SRC) + PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psdriver.c -# driver - single object -# -# the driver is recompiled if any of the header or source files is changed -# as well as any of the shared source files found in `shared/sfnt' -# -$(PSNAMES_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) $(PSNAMES_DRV_SRC) $(PSNAMES_DRV_SRC_S) - $(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S) + # driver - single object + # + # the driver is recompiled if any of the header or source files is + # changed as well as any of the shared source files found in + # `shared' + # + $(PSNAMES_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) \ + $(PSNAMES_DRV_SRC) $(PSNAMES_DRV_SRC_S) + $(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S) - -# driver - multiple objects -# -# All objects are recompiled if any of the header files is changed -# -$(OBJ_)ps%.$O: $(PSNAMES_DIR_)ps%.c $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) - $(PSNAMES_COMPILE) $T$@ $< + # driver - multiple objects + # + # All objects are recompiled if any of the header files is changed. + # + $(OBJ_)ps%.$O: $(PSNAMES_DIR_)ps%.c $(BASE_H) $(SHARED_H) $(PSNAMES_DRV_H) + $(PSNAMES_COMPILE) $T$@ $< -# update main driver object lists -# -DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S) -DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M) + # update main driver object lists + # + DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S) + DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M) endif -# END + +# EOF diff --git a/src/sfnt/module.mk b/src/sfnt/module.mk index 66ae7d22e..f98860e30 100644 --- a/src/sfnt/module.mk +++ b/src/sfnt/module.mk @@ -2,5 +2,6 @@ make_module_list: add_sfnt_driver add_sfnt_driver: $(OPEN_DRIVER)sfnt_driver_interface$(CLOSE_DRIVER) - $(ECHO_DRIVER)sfnt $(ECHO_DRIVER_DESC) pseudo-driver for TrueType & OpenType formats $(ECHO_DRIVER_DONE) + $(ECHO_DRIVER)sfnt $(ECHO_DRIVER_DESC)pseudo-driver for TrueType & OpenType formats$(ECHO_DRIVER_DONE) +# EOF diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk index ea0866887..0880dc260 100644 --- a/src/sfnt/rules.mk +++ b/src/sfnt/rules.mk @@ -1,165 +1,100 @@ -#**************************************************************************** -#* * -#* SFNT driver Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#**************************************************************************** +# +# FreeType 2 DFNT driver configuration rules +# -#**************************************************************************** -#* * -#* IMPORTANT NOTE: This Makefile is intended for GNU Make! * -#* If you provide Makefiles for other make utilities, * -#* please place them in `freetype/lib/arch/'. * -#* * -#* * -#* This file is to be included by the FreeType Makefile.lib, located in * -#* the `freetype/lib' directory. Here is the list of the variables that * -#* must be defined to use it: * -#* * -#* * -#* BASE_DIR: The location of the base layer's directory. This is * -#* usually `freetype/lib/base'. * -#* * -#* ARCH_DIR: The location of the architecture-dependent directory. * -#* This is usually `freetype/lib/arch/'. * -#* * -#* DRIVERS_DIR: The location of the font driver sub-dirs, usually * -#* `freetype/lib/drivers'. * -#* * -#* OBJ_DIR: The location where the compiled object(s) file will be * -#* placed. * -#* * -#* BASE_H: A list of pathnames to the base layer's header files on * -#* which the driver depends. * -#* * -#* FT_CFLAGS: A set of flags used for compilation of object files. * -#* This contains at least the include paths of the arch * -#* and base directories + optimization + warnings + ANSI * -#* compliance. * -#* * -#* FT_IFLAG: The flag used to specify an include path on the * -#* compiler command line. For example, with GCC, this is * -#* `-I', while some other compilers use `/i=' or `-J', * -#* etc. * -#* * -#* FT_OBJ: The suffix of an object file for the platform; can be * -#* `o', `obj', `coff', `tco', etc. depending on the * -#* platform. * -#* * -#* * -#* It also updates the following variables defined and used in the main * -#* Makefile: * -#* * -#* DRV_OBJ_S: The list of driver object files in * -#* single-object mode. * -#* * -#* DRV_OBJ_M: The list of driver object files in * -#* multiple-objects mode. * -#* * -#* FTINIT_DRIVER_PATHS: The list of include paths used to compile the * -#* `ftinit' component which registers all font * -#* drivers in the FT_Init_FreeType() function. * -#* * -#* FTINIT_DRIVER_H: The list of header dependencies used to * -#* compile the `ftinit' component. * -#* * -#* FTINIT_DRIVER_MACROS: The list of macros to be defined when * -#* compiling the `ftinit' component. * -#* * -#* `Single-object compilation' means that each font driver is compiled * -#* into a single object file. This is useful to get rid of all * -#* driver-specific entries. * -#* * -#**************************************************************************** +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + ifndef SFNT_INCLUDE -SFNT_INCLUDED := 1 + SFNT_INCLUDED := 1 -include $(SRC_)shared/rules.mk + include $(SRC_)shared/rules.mk -# SFNT driver directory -# -SFNT_DIR := $(SRC_)sfnt -SFNT_DIR_ := $(SFNT_DIR)$(SEP) + # SFNT driver directory + # + SFNT_DIR := $(SRC_)sfnt + SFNT_DIR_ := $(SFNT_DIR)$(SEP) -# additional include flags used when compiling the driver -# -SFNT_INCLUDE := $(SHARED) $(SFNT_DIR) + # additional include flags used when compiling the driver + # + SFNT_INCLUDE := $(SHARED) $(SFNT_DIR) -# compilation flags for the driver -# -SFNT_CFLAGS := $(SFNT_INCLUDE:%=$I%) -SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) + # compilation flags for the driver + # + SFNT_CFLAGS := $(SFNT_INCLUDE:%=$I%) + SFNT_COMPILE := $(FT_COMPILE) $(SFNT_CFLAGS) -# TrueType driver sources (i.e., C files) -# -SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c \ - $(SFNT_DIR_)ttcmap.c \ - $(SFNT_DIR_)ttsbit.c \ - $(SFNT_DIR_)ttpost.c \ - $(SFNT_DIR_)sfdriver.c \ + # driver sources (i.e., C files) + # + SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c \ + $(SFNT_DIR_)ttcmap.c \ + $(SFNT_DIR_)ttsbit.c \ + $(SFNT_DIR_)ttpost.c \ + $(SFNT_DIR_)sfdriver.c -# TrueType driver headers -# -SFNT_DRV_H := $(SHARED_H) \ - $(SFNT_DIR_)sfconfig.h \ - $(SFNT_DIR_)ttload.h \ - $(SFNT_DIR_)ttsbit.h \ - $(SFNT_DIR_)ttcmap.h \ - $(SFNT_DIR_)ttpost.h + # driver headers + # + SFNT_DRV_H := $(SHARED_H) \ + $(SFNT_DIR_)sfconfig.h \ + $(SFNT_DIR_)ttload.h \ + $(SFNT_DIR_)ttsbit.h \ + $(SFNT_DIR_)ttcmap.h \ + $(SFNT_DIR_)ttpost.h -# driver object(s) -# -# SFNT_DRV_OBJ_M is used during `debug' builds -# SFNT_DRV_OBJ_S is used during `release' builds -# -SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O) -SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O + # driver object(s) + # + # SFNT_DRV_OBJ_M is used during `debug' builds + # SFNT_DRV_OBJ_S is used during `release' builds + # + SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O) + SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O -# driver root source file(s) -# -SFNT_DRV_SRC_M := $(SFNT_DRV_SRC) -SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c + # driver source file(s) + # + SFNT_DRV_SRC_M := $(SFNT_DRV_SRC) + SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c -# driver - single object -# -# the driver is recompiled if any of the header or source files is changed -# as well as any of the shared source files found in `shared/sfnt' -# -$(SFNT_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) $(SFNT_DRV_SRC) $(SFNT_DRV_SRC_S) - $(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S) + # driver - single object + # + # the driver is recompiled if any of the header or source files is + # changed as well as any of the shared source files found in + # `shared' + # + $(SFNT_DRV_OBJ_S): $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) \ + $(SFNT_DRV_SRC) $(SFNT_DRV_SRC_S) + $(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S) + # driver - multiple objects + # + # All objects are recompiled if any of the header files is changed + # + $(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) + $(SFNT_COMPILE) $T$@ $< -# driver - multiple objects -# -# All objects are recompiled if any of the header files is changed -# -$(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$@ $< + $(OBJ_)sf%.$O: $(SFNT_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) + $(SFNT_COMPILE) $T$@ $< -$(OBJ_)sf%.$O: $(SFNT_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$@ $< -# update main driver object lists -# -DRV_OBJS_S += $(SFNT_DRV_OBJ_S) -DRV_OBJS_M += $(SFNT_DRV_OBJ_M) + # update main driver object lists + # + DRV_OBJS_S += $(SFNT_DRV_OBJ_S) + DRV_OBJS_M += $(SFNT_DRV_OBJ_M) endif -# END + +# EOF diff --git a/src/shared/rules.mk b/src/shared/rules.mk index 9ca390205..6fc1d58ee 100644 --- a/src/shared/rules.mk +++ b/src/shared/rules.mk @@ -1,27 +1,27 @@ -#**************************************************************************** -#* * -#* shared files Makefile * -#* * -#* Copyright 1996-2000 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#**************************************************************************** +# +# FreeType 2 shared files configuration rules +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + ifndef SHARED_RULES -SHARED_RULES := 1 + SHARED_RULES := 1 -SHARED := $(SRC_)shared -SHARED_ := $(SHARED)$(SEP) + SHARED := $(SRC_)shared + SHARED_ := $(SHARED)$(SEP) -SHARED_H := $(wildcard $(SHARED_)*.h) -SHARED_SRC := $(wildcard $(SHARED_)*.c) + SHARED_H := $(wildcard $(SHARED_)*.h) + SHARED_SRC := $(wildcard $(SHARED_)*.c) endif -# END +# EOF diff --git a/src/truetype/module.mk b/src/truetype/module.mk index 1c9152631..0a2d6b1ca 100644 --- a/src/truetype/module.mk +++ b/src/truetype/module.mk @@ -2,5 +2,6 @@ make_module_list: add_truetype_driver add_truetype_driver: $(OPEN_DRIVER)tt_driver_interface$(CLOSE_DRIVER) - $(ECHO_DRIVER)truetype $(ECHO_DRIVER_DESC) Windows/Mac font files with extension *.ttf or *.ttc $(ECHO_DRIVER_DONE) + $(ECHO_DRIVER)truetype $(ECHO_DRIVER_DESC)Windows/Mac font files with extension *.ttf or *.ttc$(ECHO_DRIVER_DONE) +# EOF diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk index 01319132d..94678b732 100644 --- a/src/truetype/rules.mk +++ b/src/truetype/rules.mk @@ -1,88 +1,20 @@ -#**************************************************************************** -#* * -#* TrueType driver Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * -#**************************************************************************** +# +# FreeType 2 PSNames driver configuration rules +# -#**************************************************************************** -#* * -#* IMPORTANT NOTE: This Makefile is intended for GNU Make! * -#* If you provide Makefiles for other make utilities, * -#* please place them in `freetype/lib/arch/'. * -#* * -#* * -#* This file is to be included by the FreeType Makefile.lib, located in * -#* the `freetype/lib' directory. Here is the list of the variables that * -#* must be defined to use it: * -#* * -#* * -#* BASE_DIR: The location of the base layer's directory. This is * -#* usually `freetype/lib/base'. * -#* * -#* ARCH_DIR: The location of the architecture-dependent directory. * -#* This is usually `freetype/lib/arch/'. * -#* * -#* DRIVERS_DIR: The location of the font driver sub-dirs, usually * -#* `freetype/lib/drivers'. * -#* * -#* OBJ_DIR: The location where the compiled object(s) file will be * -#* placed. * -#* * -#* BASE_H: A list of pathnames to the base layer's header files on * -#* which the driver depends. * -#* * -#* FT_CFLAGS: A set of flags used for compilation of object files. * -#* This contains at least the include paths of the arch * -#* and base directories + optimization + warnings + ANSI * -#* compliance. * -#* * -#* FT_IFLAG: The flag used to specify an include path on the * -#* compiler command line. For example, with GCC, this is * -#* `-I', while some other compilers use `/i=' or `-J', * -#* etc. * -#* * -#* FT_OBJ: The suffix of an object file for the platform; can be * -#* `o', `obj', `coff', `tco', etc. depending on the * -#* platform. * -#* * -#* * -#* It also updates the following variables defined and used in the main * -#* Makefile: * -#* * -#* DRV_OBJ_S: The list of driver object files in * -#* single-object mode. * -#* * -#* DRV_OBJ_M: The list of driver object files in * -#* multiple-objects mode. * -#* * -#* FTINIT_DRIVER_PATHS: The list of include paths used to compile the * -#* `ftinit' component which registers all font * -#* drivers in the FT_Init_FreeType() function. * -#* * -#* FTINIT_DRIVER_H: The list of header dependencies used to * -#* compile the `ftinit' component. * -#* * -#* FTINIT_DRIVER_MACROS: The list of macros to be defined when * -#* compiling the `ftinit' component. * -#* * -#* `Single-object compilation' means that each font driver is compiled * -#* into a single object file. This is useful to get rid of all * -#* driver-specific entries. * -#* * -#**************************************************************************** +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. -# include the rules defined for the SFNT driver, which is heavily used -# by the TrueType one.. + +# Include the rules defined for the SFNT driver, which is heavily used +# by the TrueType one. # include $(SRC_)sfnt/rules.mk @@ -109,23 +41,22 @@ TT_CFLAGS := $(TT_INCLUDE:%=$I%) TT_COMPILE := $(FT_COMPILE) $(TT_CFLAGS) -# TrueType driver sources (i.e., C files) +# driver sources (i.e., C files) # -TT_DRV_SRC := $(TT_DIR_)ttobjs.c \ - $(TT_DIR_)ttpload.c \ - $(TT_DIR_)ttgload.c \ - $(TT_DIR_)ttinterp.c \ +TT_DRV_SRC := $(TT_DIR_)ttobjs.c \ + $(TT_DIR_)ttpload.c \ + $(TT_DIR_)ttgload.c \ + $(TT_DIR_)ttinterp.c \ $(TT_DIR_)ttdriver.c - -# TrueType driver headers +# driver headers # -TT_DRV_H := $(SFNT_H) \ - $(TT_DIR_)ttconfig.h \ +TT_DRV_H := $(SFNT_H) \ + $(TT_DIR_)ttconfig.h \ $(TT_DRV_SRC:%.c=%.h) -# default TrueType extensions sources +# default extensions sources # TT_EXT_SRC := $(TT_EXT_DIR_)ttxkern.c \ $(TT_EXT_DIR_)ttxgasp.c \ @@ -133,8 +64,7 @@ TT_EXT_SRC := $(TT_EXT_DIR_)ttxkern.c \ $(TT_EXT_DIR_)ttxcmap.c \ $(TT_EXT_DIR_)ttxwidth.c - -# default TrueType extensions headers +# default extensions headers # TT_EXT_H := $(TT_EXT_SRC:.c=.h) @@ -153,8 +83,7 @@ TT_DRV_OBJ_S := $(OBJ_)truetype.$O TT_EXT_OBJ := $(TT_EXT_SRC:$(TT_EXT_DIR_)%.c=$(OBJ_)%.$O) - -# driver root source file(s) +# driver source file(s) # TT_DRV_SRC_M := $(TT_DRV_SRC) $(SFNT_SRC) TT_DRV_SRC_S := $(TT_DIR_)truetype.c @@ -184,15 +113,9 @@ $(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SFNT_H) $(TT_COMPILE) $T$@ $< -# treat `ttpload' as a special case, as it includes C files -# -$(OBJ_)ttpload.$O: $(TT_DIR_)ttpload.c $(BASE_H) $(SFNT_SRC) $(TT_DRV_H) - $(TT_COMPILE) $T$@ $< - - # update main driver object lists # DRV_OBJS_S += $(TT_DRV_OBJ_S) DRV_OBJS_M += $(TT_DRV_OBJ_M) -# END +# EOF diff --git a/src/type1z/module.mk b/src/type1z/module.mk index 659cd3f00..66dba41d0 100644 --- a/src/type1z/module.mk +++ b/src/type1z/module.mk @@ -2,5 +2,6 @@ make_module_list: add_type1z_driver add_type1z_driver: $(OPEN_DRIVER)t1z_driver_interface$(CLOSE_DRIVER) - $(ECHO_DRIVER)type1z $(ECHO_DRIVER_DESC) Postscript font files with extension *.pfa or *.pfb $(ECHO_DRIVER_DONE) + $(ECHO_DRIVER)type1z $(ECHO_DRIVER_DESC)Postscript font files with extension *.pfa or *.pfb$(ECHO_DRIVER_DONE) +# EOF diff --git a/src/type1z/rules.mk b/src/type1z/rules.mk index da2036c3a..a73a306f8 100644 --- a/src/type1z/rules.mk +++ b/src/type1z/rules.mk @@ -1,96 +1,31 @@ +# +# FreeType 2 driver configuration rules +# + + +# Copyright 1996-2000 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used modified +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + #**************************************************************************** #* * -#* Type1z driver Makefile * -#* * -#* Copyright 1996-1999 by * -#* David Turner, Robert Wilhelm, and Werner Lemberg. * -#* * -#* This file is part of the FreeType project, and may only be used * -#* modified and distributed under the terms of the FreeType project * -#* license, LICENSE.TXT. By continuing to use, modify, or distribute * -#* this file you indicate that you have read the license and * -#* understand and accept it fully. * -#* * #* The "Type1z" driver is an experimental replacement for the current * -#* Type 1 driver. It features a very different loading mechanism that * -#* is much faster than the one used by the "normal" driver, and also * -#* deals nicely with nearly broken Type 1 font files.. It is also * -#* much smaller.. * +#* Type 1 driver. It features a very different loading mechanism that * +#* is much faster than the one used by the `normal' driver, and also * +#* deals nicely with nearly broken Type 1 font files. It is also * +#* much smaller... * #* * #* Note that it may become a permanent replacement of the current * #* "src/type1" driver in the future.. * #* * #**************************************************************************** - -#**************************************************************************** -#* * -#* IMPORTANT NOTE: This Makefile is intended for GNU Make! * -#* If you provide Makefiles for other make utilities, * -#* please place them in `freetype/lib/arch/'. * -#* * -#* * -#* This file is to be included by the FreeType Makefile.lib, located in * -#* the `freetype/lib' directory. Here is the list of the variables that * -#* must be defined to use it: * -#* * -#* * -#* BASE_DIR: The location of the base layer's directory. This is * -#* usually `freetype/lib/base'. * -#* * -#* ARCH_DIR: The location of the architecture-dependent directory. * -#* This is usually `freetype/lib/arch/'. * -#* * -#* DRIVERS_DIR: The location of the font driver sub-dirs, usually * -#* `freetype/lib/drivers'. * -#* * -#* OBJ_DIR: The location where the compiled object(s) file will be * -#* placed. * -#* * -#* BASE_H: A list of pathnames to the base layer's header files on * -#* which the driver depends. * -#* * -#* FT_CFLAGS: A set of flags used for compilation of object files. * -#* This contains at least the include paths of the arch * -#* and base directories + optimization + warnings + ANSI * -#* compliance. * -#* * -#* FT_IFLAG: The flag used to specify an include path on the * -#* compiler command line. For example, with GCC, this is * -#* `-I', while some other compilers use `/i=' or `-J', * -#* etc. * -#* * -#* FT_OBJ: The suffix of an object file for the platform; can be * -#* `o', `obj', `coff', `tco', etc. depending on the * -#* platform. * -#* * -#* * -#* It also updates the following variables defined and used in the main * -#* Makefile: * -#* * -#* DRV_OBJ_S: The list of driver object files in * -#* single-object mode. * -#* * -#* DRV_OBJ_M: The list of driver object files in * -#* multiple-objects mode. * -#* * -#* FTINIT_DRIVER_PATHS: The list of include paths used to compile the * -#* `ftinit' component which registers all font * -#* drivers in the FT_Init_FreeType() function. * -#* * -#* FTINIT_DRIVER_H: The list of header dependencies used to * -#* compile the `ftinit' component. * -#* * -#* FTINIT_DRIVER_MACROS: The list of macros to be defined when * -#* compiling the `ftinit' component. * -#* * -#* `Single-object compilation' means that each font driver is compiled * -#* into a single object file. This is useful to get rid of all * -#* driver-specific entries. * -#* * -#**************************************************************************** - - # Type1z driver directory # T1Z_DIR := $(SRC_)type1z @@ -105,18 +40,17 @@ T1Z_COMPILE := $(FT_COMPILE) $(T1Z_INCLUDE:%=$I%) # Type1 driver sources (i.e., C files) # -T1Z_DRV_SRC := $(T1Z_DIR_)t1parse.c \ - $(T1Z_DIR_)t1load.c \ - $(T1Z_DIR_)t1driver.c \ - $(T1Z_DIR_)t1afm.c \ +T1Z_DRV_SRC := $(T1Z_DIR_)t1parse.c \ + $(T1Z_DIR_)t1load.c \ + $(T1Z_DIR_)t1driver.c \ + $(T1Z_DIR_)t1afm.c \ $(T1Z_DIR_)t1gload.c - # Type1 driver headers # -T1Z_DRV_H := $(T1Z_DIR_)t1errors.h \ - $(T1Z_DIR_)t1config.h \ - $(T1SHARED_H) \ +T1Z_DRV_H := $(T1Z_DIR_)t1errors.h \ + $(T1Z_DIR_)t1config.h \ + $(T1SHARED_H) \ $(T1Z_DRV_SRC:%.c=%.h) @@ -130,8 +64,7 @@ T1Z_DRV_OBJ_M := $(T1Z_DRV_SRC:$(T1Z_DIR_)%.c=$(OBJ_)%.$O) \ T1Z_DRV_OBJ_S := $(OBJ_)type1z.$O - -# driver root source file(s) +# driver source file(s) # T1Z_DRV_SRC_M := $(T1Z_DRV_SRC) $(T1SHARED_SRC) T1Z_DRV_SRC_S := $(T1Z_DIR_)type1z.c @@ -145,7 +78,6 @@ $(T1Z_DRV_OBJ_S): $(BASE_H) $(T1Z_DRV_H) $(T1Z_DRV_SRC) $(T1Z_DRV_SRC_S) $(T1Z_COMPILE) $T$@ $(T1Z_DRV_SRC_S) - # driver - multiple objects # # All objects are recompiled if any of the header files is changed @@ -162,4 +94,4 @@ $(OBJ_)t1%.$O: $(T1SHARED_DIR_)t1%.c $(BASE_H) $(T1SHARED_H) DRV_OBJS_S += $(T1Z_DRV_OBJ_S) DRV_OBJS_M += $(T1Z_DRV_OBJ_M) -# END +# EOF