A complete revision of FreeType 2's GNU makefiles (of the library):

Tons of unnecessary stuff have been removed; only the essential rules
  have been retained.

  The source files now depend on all header files in include/freetype,
  include/freetype/config, and include/freetype/internal.  This is not
  optimal, I know, and I'll try to improve this, but it is better than
  before (namely no dependencies on `internal').

  FTDEBUG_SRC has been added (similar to FTSYS_SRC) -- I don't know
  exactly whether this is really useful, but it doesn't harm.

  There is now more documentation in the makefiles itself.

io-frames.html: Use of <th>, <code>, and <var> for better tagging.

Reactivating of FT_DEBUG_LEVEL_xxx macros.

Added a lot of #include directives to make `multi' builds possible -- note
that currently the modules cid, t1, and t1z have clashing structures and
functions which means that you can only use one of these three modules for a
multi build.

Added some missing function declarations to (local) header files.

Renamed some T1_Open_Face() to CID_Open_Face() in the cid module -- a lot
of other functions should be renamed also...

Replaced many FT_xxx stuff with T1_xxx in t1z driver -- this isn't finished
yet...

Fixed FT_Free() to allow a NULL pointer without an assertion (this has
always been a valid assumption in FreeType, at least in FT 1.x).

A lot of other, minor fixes (mostly documentation).
This commit is contained in:
Werner Lemberg 2000-06-11 03:46:57 +00:00
parent cb9109fc40
commit e35cac66c6
47 changed files with 1027 additions and 1149 deletions

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -91,7 +91,7 @@ else
# A configuration sub-Makefile is present -- simply run it.
#
all: build_freetype
all: single
modules: make_module_list

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -36,7 +36,7 @@ PLATFORM := ansi
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.
@ -121,7 +121,7 @@ ifdef BUILD_FREETYPE
# 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}
# librarian library_file {list of object files}
#
$(FT_LIBRARY): $(OBJECTS_LIST)
-$(DELETE) $@

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -40,17 +40,17 @@
# If TOP is not defined, default it to `.'
#
ifndef TOP
TOP := .
TOP := .
endif
# Set auto-detection default to `ansi'.
# Set auto-detection default to `ansi' resp. UNIX-like operating systems.
# Note that we delay the evaluation of $(BUILD_CONFIG_), $(BUILD), and
# $(CONFIG_RULES).
#
PLATFORM := ansi
DELETE := $(RM)
COPY := cp
SEP := /
PLATFORM := ansi
DELETE := $(RM)
COPY := cp
SEP := /
BUILD_CONFIG_ = $(TOP)$(SEP)config$(SEP)
BUILD = $(BUILD_CONFIG_)$(PLATFORM)
@ -84,7 +84,7 @@ ifndef CONFIG_FILE
endif
# The following targets are equivalent, with the exception that they use
# slightly different syntaxes for the `echo' command.
# a slightly different syntax for the `echo' command.
#
# std_setup: defined for most (i.e. Unix-like) platforms
# dos_setup: defined for Dos-ish platforms like Dos, Windows & OS/2

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -25,8 +25,7 @@ ifeq ($(PLATFORM),ansi)
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.
# returns `Operating System/2 ...' there, so `is_dos' should be empty.
#
# To recognize a Dos session under OS/2, we check COMSPEC for the
# substring `MDOS\COMMAND'
@ -49,6 +48,8 @@ ifeq ($(PLATFORM),ansi)
CC := gcc
endif
# additionally, we provide hooks for various other compilers
#
ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C
CONFIG_FILE := dos-tcc.mk
SEP := $(BACKSLASH)
@ -63,14 +64,14 @@ ifeq ($(PLATFORM),ansi)
.PHONY: watcom
endif
ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16 bits
ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit
CONFIG_FILE := dos-bcc.mk
SEP := $(BACKSLASH)
CC := bcc
.PHONY: borlandc16
endif
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32 bits
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit
CONFIG_FILE := dos-bcc.mk
SEP := $(BACKSLASH)
CC := bcc32

View File

@ -6,7 +6,7 @@
# 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
# 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

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -17,27 +17,72 @@
# OTHER MAKEFILES.
# The targets `objects' and `library' are defined at the end of this
# Makefile when all rules have been included.
# The following variables (set by other Makefile components, in the
# environment, or on the command line) are used:
#
.PHONY: build_freetype objects library
# BUILD The architecture dependent directory,
# e.g. `$(TOP)/config/unix'.
#
# OBJ_DIR The directory in which object files are created.
#
# LIB_DIR The directory in which the library is created.
#
# INCLUDES A list of directories to be included additionally.
# Usually empty.
#
# CFLAGS Compilation flags. This overrides the default settings
# in the platform-specific configuration files.
#
# FTSYS_SRC If set, its value is used as the name of a replacement
# file for `src/base/ftsystem.c'.
#
# FTDEBUG_SRC If set, its value is used as the name of a replacement
# file for `src/base/ftdebug.c'. [For a normal build, this
# file does nothing.]
#
# FT_MODULE_LIST The file which contains the list of modules for the
# current build. Usually, this is automatically created by
# `modules.mk'.
#
# BASE_OBJ_S
# BASE_OBJ_M A list of base objects (for single object and multiple
# object builds, respectively). Set up in
# `src/base/rules.mk'.
#
# BASE_EXT_OBJ A list of base extension objects. Set up in
# `src/base/rules.mk'.
#
# DRV_OBJ_S
# DRV_OBJ_M A list of driver objects (for single object and multiple
# object builds, respectively). Set up cumulatively in
# `src/<driver>/rules.mk'.
#
# TOP, SEP,
# LIBRARY, CC,
# A, I, O, T Check `config.mk' for details.
# default target -- build objects and library
# The targets `objects' and `library' are defined at the end of this
# Makefile after all other rules have been included.
#
build_freetype: objects library
.PHONY: single objects library
# default target -- build single objects and library
#
single: objects library
# `multi' target -- build multiple objects and library
#
multi: objects library
# The FreeType source directory.
# The FreeType source directory, usually `./src'.
#
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, usually
# `./src/base'.
#
BASE_DIR := $(SRC)$(SEP)base
@ -45,7 +90,7 @@ BASE_DIR := $(SRC)$(SEP)base
# 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)
@ -57,7 +102,7 @@ INTERNAL_ := $(PUBLIC_)internal$(SEP)
CONFIG_ := $(PUBLIC_)config$(SEP)
# The name of the final library file.
# The final name of the library file.
#
FT_LIBRARY := $(LIB_)$(LIBRARY).$A
@ -76,7 +121,7 @@ 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/<system>' directories,
# least the paths for the `base' and `config/<system>' directories;
# debug/optimization/warning flags + ansi compliance if needed.
#
FT_CFLAGS = $(CFLAGS) $(INCLUDE_FLAGS)
@ -84,72 +129,71 @@ FT_CC = $(CC) $(FT_CFLAGS)
FT_COMPILE = $(CC) $(ANSIFLAGS) $(FT_CFLAGS)
# include the `modules' rules file
# Include the `modules' rules file.
#
include $(TOP)/config/modules.mk
# Free the lists of driver objects.
# Initialize the list of objects.
#
COMPONENTS_LIST :=
DRIVERS_LIST :=
OBJECTS_LIST :=
OBJECTS_LIST :=
# Define $(PUBLIC_H) as the list of all public header files located in
# `$(TOP)/include'.
# `$(TOP)/include/freetype'. $(BASE_H) and $(CONFIG_H) are defined
# similarly.
#
PUBLIC_H := $(wildcard $(PUBLIC_)*.h)
BASE_H := $(wildcard $(INTERNAL_)*.h)
# This is used to simplify the dependency rules -- if one of these files
# changes, the whole library is recompiled.
#
PUBLIC_H := $(wildcard $(PUBLIC_)*.h)
BASE_H := $(wildcard $(INTERNAL_)*.h)
CONFIG_H := $(wildcard $(CONFIG_)*.h)
# 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/<system>/ftsystem.c'.
#
# $(BASE_H) is defined in `src/base/rules.mk' and contains the list of all
# base layer header files.
FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H)
# ftsystem component
#
ifndef FTSYS_SRC
FTSYS_SRC = $(BASE_)ftsystem.c
endif
FTSYS_OBJ = $(OBJ_)ftsystem.$O
OBJECTS_LIST += $(FTSYS_OBJ)
$(FTSYS_OBJ): $(FTSYS_SRC) $(BASE_H)
$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H)
$(FT_COMPILE) $T$@ $<
# ftdebug component
#
# 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
ifndef FTDEBUG_SRC
FTDEBUG_SRC = $(BASE_)ftdebug.c
endif
FTDEBUG_OBJ = $(OBJ_)ftdebug.$O
OBJECTS_LIST += $(FTDEBUG_OBJ)
$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(BASE_H)
$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H)
$(FT_COMPILE) $T$@ $<
# Include all rule files from FreeType components.
#
include $(wildcard $(SRC)/*/rules.mk)
# FTInit file
# ftinit component
#
# 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
# includes above. Each driver Makefile updates the FTINIT_xxx lists
# which contain additional include paths and macros used to compile the
# single `ftinit.c' source.
#
@ -158,7 +202,7 @@ FTINIT_OBJ := $(OBJ_)ftinit.$O
OBJECTS_LIST += $(FTINIT_OBJ)
$(FTINIT_OBJ): $(FTINIT_SRC) $(PUBLIC_H) $(FT_MODULE_LIST)
$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) $(FT_MODULE_LIST)
$(FT_COMPILE) $T$@ $<
@ -221,11 +265,10 @@ remove_config_mk:
# 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.
# the `std' or `dos' versions from above, or simply provide their own
# implementation.
#
clean: clean_freetype
distclean: distclean_freetype remove_config_mk
# EOF

View File

@ -5,7 +5,7 @@
# 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
# 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
@ -17,12 +17,12 @@
# This file is in charge of handling the generation of the modules list
# file, normally located in `config/ftmodule.h'.
# file.
.PHONY: make_module_list clean_module_list remake_module_list
# MODULE_LIST, as its name suggests, indicates where the modules list
# resides. For now, it is in `config/ftmodule.h'.
# resides. For now, it is in `include/freetype/config/ftmodule.h'.
#
ifndef FT_MODULE_LIST
FT_MODULE_LIST := $(TOP)$(SEP)include$(SEP)freetype$(SEP)config$(SEP)ftmodule.h
@ -30,6 +30,9 @@ endif
# To build the modules list, we invoke the `make_module_list' target.
#
# This rule is commented out by default since FreeType comes already with
# a ftmodule.h file.
#
#$(FT_MODULE_LIST): make_module_list
# Before the modules list file can be generated, we must remove the file in

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -14,6 +14,7 @@
ifeq ($(PLATFORM),ansi)
ifdef OS2_SHELL
PLATFORM := os2
@ -23,6 +24,8 @@ ifeq ($(PLATFORM),ansi)
CONFIG_FILE := os2-gcc.mk # gcc-emx by default
SEP := /
# additionally, we provide hooks for various other compilers
#
ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++
CONFIG_FILE := os2-icc.mk
SEP := $(BACKSLASH)
@ -37,14 +40,14 @@ ifeq ($(PLATFORM),ansi)
.PHONY: watcom
endif
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32 bits
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit
CONFIG_FILE := os2-bcc.mk
SEP := $(BACKSLASH)
CC := bcc32
.PHONY: borlandc
endif
ifneq ($(findstring devel,$(MAKECMDGOALS)),)
ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target
CONFIG_FILE := os2-dev.mk
CC := gcc
SEP := /

View File

@ -1,24 +1,22 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for OS/2 + gcc
#* THIS VERSION TURNS OFF OPTIMIZATIONS FOR DEBUGGING !!
#*
#* 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 OS/2 + gcc
#
# Development version without optimizations.
#
# 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 := del
@ -28,129 +26,110 @@ BUILD := $(TOP)/config/os2
PLATFORM := os2
CC := gcc
# 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 -O0 -Wall
CFLAGS := -c -g -O0 -Wall
endif
# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
# nothing (if it already is by default like LCC).
# ANSIFLAGS: 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) $@
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
# Cleaning rules
#
DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
clean_freetype_objects:
-del $(DIR_OBJ)\*.$O
clean_freetype_lib:
-del $(subst $(SEP),\,$(FT_LIBRARY))
clean: clean_freetype_objects
# 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

View File

@ -1,23 +1,20 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for OS/2 + 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 OS/2 + 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.
ifndef TOP
TOP := .
TOP := .
endif
DELETE := del
@ -27,129 +24,110 @@ BUILD := $(TOP)/config/os2
PLATFORM := os2
CC := gcc
# 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) $@
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
# Cleaning rules
#
DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
clean_freetype_objects:
-del $(DIR_OBJ)\*.$O
clean_freetype_lib:
-del $(subst $(SEP),\,$(FT_LIBRARY))
clean: clean_freetype_objects
# 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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
endif
# EOF

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -19,10 +19,6 @@
ifeq ($(PLATFORM),ansi)
# Some Unix systems like *BSD do not have a /etc/inittab so we commented
# the line.. (thanks to Yamano-uchi, Hidetoshi for pointing this out)..
#
# has_inittab := $(strip $(wildcard /etc/inittab))
has_init := $(strip $(wildcard /sbin/init))
ifneq ($(has_init),)
@ -30,14 +26,14 @@ ifeq ($(PLATFORM),ansi)
COPY := cp
DELETE := rm -f
# Test whether we're using gcc. If so, we select the `unix-gcc.mk'
# Test whether we are 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)
ifeq ($(firstword $(CC)),gcc)
is_gcc := 1
else
ifneq ($(findstring gcc,$(shell $(CC) -v 2>&1)),)

View File

@ -1,24 +1,22 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for a standard Unix + GCC
#* NOTE: THIS VERSION TURNS OFF ALL OPTIMIZATIONS FOR DEBUGGING !!
#*
#* 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
#
# Development version without optimizations.
#
# 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
@ -27,105 +25,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 -O0 -Wall
CFLAGS := -c -g -O0 -Wall
endif
# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
# nothing (if it already is by default like LCC).
# ANSIFLAGS: 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

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -36,7 +36,7 @@ PLATFORM := unix
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.
@ -117,11 +117,11 @@ ifdef BUILD_FREETYPE
FT_LIBRARIAN := $(AR) -r
# This final rule is used to link all object files into a single library.
# 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}
# librarian library_file {list of object files}
#
$(FT_LIBRARY): $(OBJECTS_LIST)
-$(DELETE) $@

View File

@ -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 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.
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
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 :=
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

View File

@ -6,7 +6,7 @@
# 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
# 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
@ -25,13 +25,13 @@ ifeq ($(PLATFORM),ansi)
# 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).
# If this is true, we are running a win32 platform (or an emulation).
#
else
ifdef COMSPEC
is_windows := $(findstring Windows,$(strip $(shell ver)))
endif
endif #test NT
endif # test NT
ifdef is_windows
@ -41,10 +41,12 @@ ifeq ($(PLATFORM),ansi)
CONFIG_FILE := w32-gcc.mk # gcc Makefile by default
SEP := /
ifeq ($(CC),cc)
ifeq ($(firstword $(CC)),cc)
CC := gcc
endif
# additionally, we provide hooks for various other compilers
#
ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++
CONFIG_FILE := w32-vcc.mk
SEP := $(BACKSLASH)
@ -73,7 +75,7 @@ ifeq ($(PLATFORM),ansi)
lcc: setup
endif
ifneq ($(findstring devel,$(MAKECMDGOALS)),)
ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target
CONFIG_FILE := w32-dev.mk
CC := gcc
SEP := /

View File

@ -1,28 +1,25 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for Win32 + GCC
#* THIS VERSION DISABLES OPTIMIZATIONS FOR DEBUGGING !!
#*
#* 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..
#*
#*
#* NOTE : This version requires that GNU Make be invoked from the
#* Windows Shell (_not_ Cygwin BASH !!)
#*
#*******************************************************************
#
# FreeType 2 Configuration rules for Win32 + GCC
#
# Development version without optimizations.
#
# 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.
#
# NOTE: This version requires that GNU Make be invoked from the Windows
# Shell (_not_ Cygwin BASH)!
#
ifndef TOP
TOP := .
TOP := .
endif
DELETE := del
@ -32,111 +29,110 @@ BUILD := $(TOP)/config/win32
PLATFORM := win32
CC := gcc
# 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 -O0 -Wall
CFLAGS := -c -g -O0 -Wall
endif
# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
# nothing (if it already is by default like LCC).
# ANSIFLAGS: 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
# 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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
endif
# EOF

View File

@ -1,27 +1,23 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for Win32 + 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..
#*
#*
#* NOTE : This version requires that GNU Make be invoked from the
#* Windows Shell (_not_ Cygwin BASH !!)
#*
#*******************************************************************
#
# FreeType 2 Configuration rules for Win32 + 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.
#
# NOTE: This version requires that GNU Make be invoked from the Windows
# Shell (_not_ Cygwin BASH)!
#
ifndef TOP
TOP := .
TOP := .
endif
DELETE := del
@ -31,111 +27,110 @@ BUILD := $(TOP)/config/win32
PLATFORM := win32
CC := gcc
# 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
# 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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(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) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
endif
# EOF

View File

@ -1,135 +1,127 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for Win32 + LCC
#*
#* 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 Win32 + LCC
#
# 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 := del
SEP := /
HOSTSEP := \\
BUILD := $(TOP)$(SEP)config$(SEP)win32
HOSTSEP := $(strip \ )
BUILD := $(TOP)/config/win32
PLATFORM := win32
CC := lcc
# 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 := obj
# 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 := lib
# 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 := freetype
# 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 - LCC uses "-Fo" instead of "-o ", what a broken compiler
#
#
T := -Fo
# 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 := -Fl
# Target flag.
#
T := -Fo
# 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 -g2 -O
CFLAGS := -c -g2 -O
endif
# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
# nothing (if it already is by default like LCC).
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant.
#
ANSIFLAGS :=
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
# 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}
#
DIR_OBJ := $(subst /,\\,$(OBJ_DIR))
$(FT_LIBRARY): $(OBJECTS_LIST)
lcclnk -o $(subst /,\\,$@) $(subst /,\\,$(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)
lcclnk -o $(subst $(SEP),$(HOSTSEP),$@) \
$(subst $(SEP),$(HOSTSEP),$(OBJECTS_LIST))
endif
# EOF

View File

@ -1,127 +1,126 @@
#*******************************************************************
#*
#* FreeType 2 Configuration rules for Win32 + Visual C++
#*
#* 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 Win32 + LCC
#
# 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 := .
endif
DELETE := del
SEP := /
HOSTSEP := $(strip \ )
BUILD := $(TOP)$(SEP)config$(SEP)win32
BUILD := $(TOP)/config/win32
PLATFORM := win32
CC := cl
# 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 := obj
# 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 := lib
# 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 := freetype
# 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.
# C flag used to define a macro before the compilation of a given source
# object. Usually is `-D' like in `-DDEBUG'.
#
D := /D
# 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 := /Fl
# 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 - LCC uses "-Fo" instead of "-o ", what a broken compiler
#
# Target flag.
#
T := /Fo
# 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 := /nologo /c /Ox /G5 /W3 /WX
CFLAGS := /nologo /c /Ox /G5 /W3 /WX
endif
# ANSI_FLAGS : put there the flags used to make your compiler ANSI-compliant
# nothing (if it already is by default like LCC).
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant.
#
ANSI_FLAGS := /Za
ANSIFLAGS := /Za
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
# 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)
lib /nologo /out:$@ $(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)
lib /nologo /out:$@ $(OBJECTS_LIST)
endif
# EOF

View File

@ -49,8 +49,8 @@
</h2>
<p>Simply speaking, a frame is an array of bytes in a font file that is
"preloaded" into memory in order to be rapidly parsed. Frames are useful
to ensure that every "load" is checked against end-of-file overruns, and
`preloaded' into memory in order to be rapidly parsed. Frames are useful
to ensure that every `load' is checked against end-of-file overruns, and
provides nice functions to extract data in a variety of distinct
formats.</p>
@ -83,7 +83,7 @@
FT_Forget_Frame( stream );</pre>
</font>
<p>Here, the call to <tt>FT_Access_Frame()</tt> will</p>
<p>Here, the call to <code>FT_Access_Frame()</code> will</p>
<ul>
<li>
@ -91,20 +91,20 @@
stream.</p>
</li>
<li>
<p>"Preload" (for disk-based streams) 10&nbsp;bytes from the current
<p>`Preload' (for disk-based streams) 10&nbsp;bytes from the current
stream position.</p>
</li>
<li>
<p>Set the frame "cursor" to the first byte in the frame.</p>
<p>Set the frame `cursor' to the first byte in the frame.</p>
</li>
</ul>
<p>Each <tt>FT_Get_Short()</tt> or <tt>FT_Get_ULong()</tt> call will read
a big-endian integer from the stream (2&nbsp;bytes for
<tt>FT_Get_Short()</tt>, 4&nbsp;bytes for <tt>FT_Get_ULong</tt>) and
advance the frame cursor accordingly.</p>
<p>Each <code>FT_Get_Short()</code> or <code>FT_Get_ULong()</code> call
will read a big-endian integer from the stream (2&nbsp;bytes for
<code>FT_Get_Short()</code>, 4&nbsp;bytes for <code>FT_Get_ULong</code>)
and advance the frame cursor accordingly.</p>
<p><tt>FT_Forget_Frame()</tt> "releases" the frame from memory.</p>
<p><code>FT_Forget_Frame()</code> `releases' the frame from memory.</p>
<p>There are several advantages to using frames:</p>
@ -126,54 +126,55 @@
</h2>
<p>By convention in the FreeType source code, macros are able to use two
implicit variables named <tt>error</tt> and <tt>stream</tt>. This is
implicit variables named <var>error</var> and <var>stream</var>. This is
useful because these two variables are extremely often used in the
library, and doing this only reduces our typing requirements and make the
source code much clearer.</p>
<p>Note that <tt>error</tt> must be a local variable of type
<tt>FT_Error</tt>, while <tt>stream</tt> must be a local variable or
argument of type <tt>FT_Stream</tt>.</p>
<p>Note that <var>error</var> must be a local variable of type
<code>FT_Error</code>, while <var>stream</var> must be a local variable or
argument of type <code>FT_Stream</code>.</p>
<p>The macro used to access a frame is <font
color="purple"><tt><b>ACCESS_Frame(_size_)</b></tt></font>, it will
color="purple"><code><b>ACCESS_Frame(_size_)</b></code></font>, it will
translate to</p>
<font color="blue">
<pre>
( error = FT_Access_Frame( stream, _size_ ) )
!= FT_Err_Ok</tt></pre>
!= FT_Err_Ok</pre>
</font>
<p>Similarly, the macro <font
color="purple"><b><tt>FORGET_Frame()</tt></b></font> translates to</p>
color="purple"><b><code>FORGET_Frame()</code></b></font> translates to</p>
<font color="blue">
<pre>
<tt>FT_Forget_Frame( stream )</tt></pre>
FT_Forget_Frame( stream )</pre>
</font>
<p>Extracting integers can be performed with the <tt>GET_xxx()</tt>
<p>Extracting integers can be performed with the <code>GET_xxx()</code>
macros, like</p>
<table align=center>
<table align=center
cellpadding=5>
<tr valign="top">
<td>
<b>Macro name</b>
</td>
<td>
<th>
Macro name
</th>
<th>
Translation
</td>
<td>
</th>
<th>
Description
</td>
</th>
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_Byte()</b></tt></font>
<font color="purple"><code><b>GET_Byte()</b></code></font>
</td>
<td>
<font color="blue"><tt>FT_Get_Byte(stream)</tt></font>
<font color="blue"><code>FT_Get_Byte(stream)</code></font>
</td>
<td>
<p>Reads an 8-bit unsigned byte.</p>
@ -181,11 +182,11 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_Char()</b></tt></font>
<font color="purple"><code><b>GET_Char()</b></code></font>
</td>
<td>
<font color="blue"><tt>(FT_Char)<br>
FT_Get_Byte(stream)</tt></font>
<font color="blue"><code>(FT_Char)<br>
FT_Get_Byte(stream)</code></font>
</td>
<td>
<p>Reads an 8-bit <em>signed</em> byte.</p>
@ -193,10 +194,10 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_Short()</b></tt></font>
<font color="purple"><code><b>GET_Short()</b></code></font>
</td>
<td>
<font color="blue"><tt>FT_Get_Short(stream)</tt></font>
<font color="blue"><code>FT_Get_Short(stream)</code></font>
</td>
<td>
Reads a 16-bit signed big-endian integer.
@ -204,11 +205,11 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_UShort()</b></tt></font>
<font color="purple"><code><b>GET_UShort()</b></code></font>
</td>
<td>
<font color="blue"><tt>(FT_UShort)<br>
FT_Get_Short(stream)</tt></font>
<font color="blue"><code>(FT_UShort)<br>
FT_Get_Short(stream)</code></font>
</td>
<td>
Reads a 16-bit unsigned big-endian integer.
@ -216,10 +217,10 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_Offset()</b></tt></font>
<font color="purple"><code><b>GET_Offset()</b></code></font>
</td>
<td>
<font color="blue"><tt>FT_Get_Offset(stream)</tt></font>
<font color="blue"><code>FT_Get_Offset(stream)</code></font>
</td>
<td>
Reads a 24-bit signed big-endian integer.
@ -227,11 +228,11 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_UOffset()</b></tt></font>
<font color="purple"><code><b>GET_UOffset()</b></code></font>
</td>
<td>
<font color="blue"><tt>(FT_UOffset)<br>
FT_Get_Offset(stream)</tt></font>
<font color="blue"><code>(FT_UOffset)<br>
FT_Get_Offset(stream)</code></font>
</td>
<td>
Reads a 24-bit unsigned big-endian integer.
@ -239,10 +240,10 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_Long()</b></tt></font>
<font color="purple"><code><b>GET_Long()</b></code></font>
</td>
<td>
<font color="blue"><tt>FT_Get_Long(stream)</tt></font>
<font color="blue"><code>FT_Get_Long(stream)</code></font>
</td>
<td>
Reads a 32-bit signed big-endian integer.
@ -250,11 +251,11 @@
</tr>
<tr valign="top">
<td>
<font color="purple"><tt><b>GET_ULong()</b></tt></font>
<font color="purple"><code><b>GET_ULong()</b></code></font>
</td>
<td>
<font color="blue"><tt>(FT_ULong)<br>
FT_Get_Long(stream)</tt></font>
<font color="blue"><code>(FT_ULong)<br>
FT_Get_Long(stream)</code></font>
</td>
<td>
Reads a 32-bit unsigned big-endian integer.
@ -292,7 +293,7 @@
FORGET_Frame();</pre>
</font>
<p>Which is clearer. Notice that <tt>error</tt> and <tt>stream</tt>
<p>Which is clearer. Notice that <var>error</var> and <var>stream</var>
must be defined locally though for this code to work!</p>
<hr>
@ -304,18 +305,18 @@
<p>It is sometimes useful to read small integers from a font file without
using a frame. Some functions have been introduced in FreeType&nbsp;2 to
do just that, and they are of the form <font
color="blue"><tt>FT_Read_xxxx</tt></font>.</p>
color="blue"><code>FT_Read_xxxx</code></font>.</p>
<p>For example, <font color="blue"><tt>FT_Read_Short(stream,
&error)</tt></font> reads and returns a 2-byte big-endian integer from a
<tt>stream</tt>, and places an error code in the <tt>error</tt>
<p>For example, <font color="blue"><code>FT_Read_Short(stream,
&error)</code></font> reads and returns a 2-byte big-endian integer from a
<var>stream</var>, and places an error code in the <var>error</var>
variable.</p>
<p>Thus, reading a single big-endian integer is shorter than using a frame
for it.</p>
<p>Note that there are also macros <font
color="purple"><tt>READ_xxx()</tt></font> which translate to</p>
color="purple"><code>READ_xxx()</code></font> which translate to</p>
<font color="blue">
<pre>
@ -331,7 +332,8 @@
goto Fail;</pre>
</font>
<p>if <tt>error</tt> and <tt>stream</tt> are already defined locally.</p>
<p>if <var>error</var> and <var>stream</var> are already defined
locally.</p>
</td></tr>
</table>

View File

@ -206,8 +206,8 @@
/* */
/* Don't define any of these macros to compile in `release' mode. */
/* */
#undef FT_DEBUG_LEVEL_ERROR
#undef FT_DEBUG_LEVEL_TRACE
#define FT_DEBUG_LEVEL_ERROR
#define FT_DEBUG_LEVEL_TRACE
/*************************************************************************/

View File

@ -20,6 +20,7 @@
#define SFNT_H
#include <freetype/freetype.h>
#include <freetype/internal/ftdriver.h>
#include <freetype/internal/tttypes.h>

View File

@ -26,6 +26,7 @@
#include <freetype/internal/ftextend.h>
#include <freetype/internal/ftdebug.h>
/*************************************************************************/

View File

@ -192,9 +192,7 @@
FT_TRACE7(( " Freeing block 0x%08p, ref 0x%08p\n",
P, P ? *P : (void*)0 ));
FT_Assert( P != 0 );
if ( *P )
if ( P && *P )
{
memory->free( memory, *P );
*P = 0;

View File

@ -13,39 +13,31 @@
# fully.
# It sets the following variables, which are used by the master Makefile
# 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/src/base' which are not compiled within the
# base layer proper.
#
# 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.
# BASE_H is defined in freetype.mk to simplify the dependency rules.
BASE_COMPILE := $(FT_COMPILE) $I$(SRC_)base
# Base layer sources
#
BASE_SRC := $(BASE_)ftcalc.c \
$(BASE_)ftextend.c \
$(BASE_)ftlist.c \
$(BASE_)ftobjs.c \
$(BASE_)ftstream.c \
$(BASE_)ftoutln.c
# Base layer headers
# ftsystem, ftinit, and ftdebug are handled by freetype.mk
#
BASE_H := $(INTERNAL_)ftcalc.h \
$(INTERNAL_)ftdebug.h \
$(INTERNAL_)ftdriver.h \
$(INTERNAL_)ftextend.h \
$(INTERNAL_)ftlist.h \
$(INTERNAL_)ftobjs.h \
$(INTERNAL_)ftstream.h
BASE_SRC := $(BASE_)ftcalc.c \
$(BASE_)ftextend.c \
$(BASE_)ftlist.c \
$(BASE_)ftobjs.c \
$(BASE_)ftstream.c \
$(BASE_)ftoutln.c
# Base layer `extensions' sources
#
@ -58,10 +50,6 @@ BASE_EXT_SRC := $(BASE_)ftraster.c \
$(BASE_)ftmm.c \
$(BASE_)ftgrays.c
# Base layer extensions headers
#
BASE_EXT_H := $(BASE_EXT_SRC:%c=%h)
# Default extensions objects
#
BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_)%.c=$(OBJ_)%.$O)
@ -78,21 +66,20 @@ BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_)%.c=$(OBJ_)%.$O)
BASE_OBJ_M := $(BASE_SRC:$(BASE_)%.c=$(OBJ_)%.$O)
BASE_OBJ_S := $(OBJ_)ftbase.$O
# Base layer root source file(s)
# Base layer root source file for single build
#
BASE_SRC_M := $(BASE_SRC)
BASE_SRC_S := $(BASE_)ftbase.c
# Multiple objects build + extensions
#
$(OBJ_)ft%.$O: $(BASE_)ft%.c $(PUBLIC_H) $(BASE_H)
$(BASE_COMPILE) $T$@ $<
# Base layer - single object build
#
$(BASE_OBJ_S): $(PUBLIC_H) $(BASE_H) $(BASE_SRC_S) $(BASE_SRC)
$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H)
$(BASE_COMPILE) $T$@ $(BASE_SRC_S)
# Multiple objects build + extensions
#
$(OBJ_)%.$O: $(BASE_)%.c $(FREETYPE_H)
$(BASE_COMPILE) $T$@ $<
# EOF

View File

@ -6,34 +6,22 @@
# 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
# 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 $(SRC_)sfnt/rules.mk
# OpenType driver directory
#
T2_DIR := $(SRC_)cff
T2_DIR_ := $(T2_DIR)$(SEP)
# location of all extensions to the driver, if any
#
T2_EXT_DIR := $(T2_DIR_)extend
T2_EXT_DIR_ := $(T2_EXT_DIR)$(SEP)
# additional include flags used when compiling the driver
#
T2_INCLUDE := $(SFNT_INCLUDE) $(T2_DIR) $(T2_EXT_DIR)
T2_INCLUDE := $(T2_DIR)
# compilation flags for the driver
#
@ -41,7 +29,7 @@ T2_CFLAGS := $(T2_INCLUDE:%=$I%)
T2_COMPILE := $(FT_COMPILE) $(T2_CFLAGS)
# driver sources (i.e., C files)
# T2 driver sources (i.e., C files)
#
T2_DRV_SRC := $(T2_DIR_)t2objs.c \
$(T2_DIR_)t2load.c \
@ -49,58 +37,34 @@ T2_DRV_SRC := $(T2_DIR_)t2objs.c \
$(T2_DIR_)t2parse.c \
$(T2_DIR_)t2driver.c
# driver headers
# T2 driver headers
#
T2_DRV_H := $(SFNT_H) \
$(T2_DRV_SRC:%.c=%.h)
T2_DRV_H := $(T2_DRV_SRC:%.c=%.h) \
$(T2_DIR_)t2tokens.h
# default extensions headers
# T2 driver object(s)
#
T2_EXT_H := $(T2_EXT_SRC:.c=.h)
# driver object(s)
#
# T2_DRV_OBJ_M is used during `debug' builds
# T2_DRV_OBJ_S is used during `release' builds
# T2_DRV_OBJ_M is used during `multi' builds
# T2_DRV_OBJ_S is used during `single' builds
#
T2_DRV_OBJ_M := $(T2_DRV_SRC:$(T2_DIR_)%.c=$(OBJ_)%.$O)
T2_DRV_OBJ_S := $(OBJ_)cff.$O
# default extensions objects
# T2 driver source file for single build
#
T2_EXT_OBJ := $(T2_EXT_SRC:$(T2_EXT_DIR_)%.c=$(OBJ_)%.$O)
# driver source file(s)
#
T2_DRV_SRC_M := $(T2_DRV_SRC) $(SFNT_SRC)
T2_DRV_SRC_S := $(T2_DIR_)cff.c
# driver - single object
# T2 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'
#
$(T2_DRV_OBJ_S): $(BASE_H) $(T2_DRV_H) $(T2_DRV_SRC) $(T2_DRV_SRC_S)
$(T2_DRV_OBJ_S): $(T2_DRV_SRC_S) $(T2_DRV_SRC) $(FREETYPE_H) $(T2_DRV_H)
$(T2_COMPILE) $T$@ $(T2_DRV_SRC_S)
# driver - multiple objects
# T2 driver - multiple objects
#
# All objects are recompiled if any of the header files is changed
#
$(OBJ_)t2%.$O: $(T2_DIR_)t2%.c $(BASE_H) $(T2_DRV_H)
$(T2_COMPILE) $T$@ $<
$(OBJ_)t2x%.$O: $(T2_EXT_DIR_)t2x%.c $(BASE_H) $(SFNT_H) $(T2_EXT_H)
$(T2_COMPILE) $T$@ $<
$(OBJ_)t2%.$O: $(SFNT_DIR_)t2%.c $(BASE_H) $(SFNT_H)
$(OBJ_)%.$O: $(T2_DIR_)%.c $(FREETYPE_H) $(T2_DRV_H)
$(T2_COMPILE) $T$@ $<

View File

@ -25,6 +25,7 @@
#undef FT_COMPONENT
#define FT_COMPONENT trace_t1gload
#include <t2load.h>
#include <t2gload.h>
typedef enum T2_Operator_

View File

@ -1,6 +1,6 @@
/***************************************************************************/
/* */
/* t2load.h */
/* t2load.c */
/* */
/* TrueType glyph data/program tables loader (body). */
/* */

View File

@ -46,6 +46,14 @@
void T2_Forget_Element( CFF_Index* index,
FT_Byte* *pbytes );
LOCAL_FUNC
FT_Error T2_Load_CFF_Font( FT_Stream stream,
FT_Int face_index,
CFF_Font* font );
LOCAL_FUNC
void T2_Done_CFF_Font( CFF_Font* font );
#ifdef __cplusplus
}

View File

@ -15,6 +15,8 @@
*
******************************************************************/
#include <cidload.h>
#include <cidgload.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/ftstream.h>

View File

@ -477,7 +477,7 @@
}
LOCAL_FUNC
FT_Error T1_Open_Face( CID_Face face )
FT_Error CID_Open_Face( CID_Face face )
{
CID_Loader loader;
CID_Parser* parser;

View File

@ -42,7 +42,7 @@
FT_UShort seed );
LOCAL_DEF
FT_Error T1_Open_Face( CID_Face face );
FT_Error CID_Open_Face( CID_Face face );
#ifdef __cplusplus
}

View File

@ -228,7 +228,7 @@
if ( FILE_Seek(0) )
goto Exit;
error = T1_Open_Face( face );
error = CID_Open_Face( face );
if (error) goto Exit;
/* if we just wanted to check the format, leave successfully now */

View File

@ -1,32 +1,19 @@
#
# FreeType 2 driver configuration rules
# FreeType 2 CID 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
# 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... *
#* *
#* Note that it may become a permanent replacement of the current *
#* "src/type1" driver in the future.. *
#* *
#****************************************************************************
# Type1z driver directory
# CID driver directory
#
CID_DIR := $(SRC_)cid
CID_DIR_ := $(CID_DIR)$(SEP)
@ -34,57 +21,51 @@ CID_DIR_ := $(CID_DIR)$(SEP)
# additional include flags used when compiling the driver
#
CID_INCLUDE := $(SHARED) $(CID_DIR)
CID_COMPILE := $(FT_COMPILE) $(CID_INCLUDE:%=$I%)
CID_INCLUDE := $(CID_DIR)
# compilation flags for the driver
#
CID_CFLAGS := $(CID_INCLUDE:%=$I%)
CID_COMPILE := $(FT_COMPILE) $(CID_CFLAGS)
# Type1 driver sources (i.e., C files)
# CID driver sources (i.e., C files)
#
CID_DRV_SRC := $(CID_DIR_)cidparse.c \
$(CID_DIR_)cidload.c \
$(CID_DIR_)cidriver.c \
$(CID_DIR_)cidgload.c \
$(CID_DIR_)cidafm.c
$(CID_DIR_)cidafm.c \
$(CID_DIR_)cidobjs.c
# Type1 driver headers
# CID driver headers
#
CID_DRV_H := $(CID_DIR_)cidtokens.h \
$(T1SHARED_H) \
$(CID_DRV_SRC:%.c=%.h)
CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \
$(CID_DIR_)cidtokens.h
# driver object(s)
# CID driver object(s)
#
# CID_DRV_OBJ_M is used during `debug' builds
# CID_DRV_OBJ_S is used during `release' builds
# CID_DRV_OBJ_M is used during `multi' builds
# CID_DRV_OBJ_S is used during `single' builds
#
CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR_)%.c=$(OBJ_)%.$O) \
$(T1SHARED:$(T1SHARED_DIR_)%.c=$(OBJ_)%.$O)
CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR_)%.c=$(OBJ_)%.$O)
CID_DRV_OBJ_S := $(OBJ_)type1cid.$O
# driver source file(s)
# CID driver source file for single build
#
CID_DRV_SRC_M := $(CID_DRV_SRC) $(T1SHARED_SRC)
CID_DRV_SRC_S := $(CID_DIR_)type1cid.c
# driver - single object
# CID driver - single object
#
# the driver is recompiled if any of the header or source files is changed
#
$(CID_DRV_OBJ_S): $(BASE_H) $(CID_DRV_H) $(CID_DRV_SRC) $(CID_DRV_SRC_S)
$(CID_DRV_OBJ_S): $(CID_DRV_SRC_S) $(CID_DRV_SRC) $(FREETYPE_H) $(CID_DRV_H)
$(CID_COMPILE) $T$@ $(CID_DRV_SRC_S)
# driver - multiple objects
# CID driver - multiple objects
#
# All objects are recompiled if any of the header files is changed
#
$(OBJ_)t1%.$O: $(CID_DIR_)t1%.c $(BASE_H) $(CID_DRV_H)
$(CID_COMPILE) $T$@ $<
$(OBJ_)t1%.$O: $(T1SHARED_DIR_)t1%.c $(BASE_H) $(T1SHARED_H)
$(OBJ_)%.$O: $(CID_DIR_)%.c $(FREETYPE_H) $(CID_DRV_H)
$(CID_COMPILE) $T$@ $<

View File

@ -6,81 +6,70 @@
# 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
# 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 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 := $(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)
# driver sources (i.e., C files)
#
PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c
# PSNames driver sources (i.e., C files)
#
PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psdriver.c
# driver headers
#
PSNAMES_DRV_H := $(BASE_H) \
$(PSNAMES_DIR_)psdriver.h \
$(PSNAMES_DIR_)pstables.h
# PSNames driver headers
#
PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.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
# PSNames driver object(s)
#
# PSNAMES_DRV_OBJ_M is used during `multi' builds
# PSNAMES_DRV_OBJ_S is used during `single' builds
#
PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O)
PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O
# PSNames driver source file for single build
#
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
# PSNames driver - single object
#
$(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \
$(FREETYPE_H) $(PSNAMES_DRV_H)
$(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)
# PSNames driver - multiple objects
#
$(OBJ_)%.$O: $(PSNAMES_DIR_)%.c $(FREETYPE_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
# EOF

View File

@ -13,84 +13,66 @@
# fully.
ifndef SFNT_INCLUDE
# 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 := $(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)
# 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_)sfobjs.c \
$(SFNT_DIR_)sfdriver.c
# SFNT 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_)sfobjs.c \
$(SFNT_DIR_)sfdriver.c
# driver headers
#
SFNT_DRV_H := $(BASE_H) \
$(SFNT_DIR_)sfobjs.h \
$(SFNT_DIR_)ttload.h \
$(SFNT_DIR_)ttsbit.h \
$(SFNT_DIR_)ttcmap.h \
$(SFNT_DIR_)ttpost.h
# SFNT driver headers
#
SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%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
# SFNT driver object(s)
#
# SFNT_DRV_OBJ_M is used during `multi' builds.
# SFNT_DRV_OBJ_S is used during `single' builds.
#
SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O)
SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O
# SFNT driver source file for single build
#
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
# SFNT driver - single object
#
$(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \
$(FREETYPE_H) $(SFNT_DRV_H)
$(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)
# SFNT driver - multiple objects
#
$(OBJ_)%.$O: $(SFNT_DIR_)%.c $(FREETYPE_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$@ $<
# update main driver object lists
#
DRV_OBJS_S += $(SFNT_DRV_OBJ_S)
DRV_OBJS_M += $(SFNT_DRV_OBJ_M)
$(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)
endif
# EOF

View File

@ -16,6 +16,7 @@
/***************************************************************************/
#include <freetype/internal/ftobjs.h>
#include <freetype/internal/sfnt.h>
#include <freetype/internal/psnames.h>
#include <freetype/ttnameid.h>

View File

@ -453,16 +453,14 @@
/* check against the last segment */
seg4 = cmap4->last_segment;
/* the following is equivalent to performing two tests, as in : */
/* */
/* if ( charCode >= seg4->startCount && charCode <= seg4->endCount */
/* */
/* Yes, that's a bit strange, but it's faster, and the idea behind */
/* the cache is to significantly speed up charcode to glyph index */
/* conversion.. */
/* */
/* Sorry if it isn't clear to your eyes.. */
/* */
/* the following is equivalent to performing two tests, as in */
/* */
/* if ( charCode >= seg4->startCount && charCode <= seg4->endCount ) */
/* */
/* Yes, that's a bit strange, but it's faster, and the idea behind */
/* the cache is to significantly speed up charcode to glyph index */
/* conversion. */
if ( (TT_ULong)(charCode - seg4->startCount) <
(TT_ULong)(seg4->endCount - seg4->startCount) )
goto Found;
@ -471,6 +469,7 @@
{
/* the ranges are sorted in increasing order. If we are out of */
/* the range here, the char code isn't in the charmap, so exit. */
if ( charCode > seg4->endCount )
continue;

View File

@ -6,34 +6,22 @@
# 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
# 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 are heavily used
# by the TrueType one.
#
include $(SRC_)sfnt/rules.mk
# TrueType driver directory
#
TT_DIR := $(SRC_)truetype
TT_DIR_ := $(TT_DIR)$(SEP)
# location of all extensions to the driver, if any
#
TT_EXT_DIR := $(TT_DIR_)extend
TT_EXT_DIR_ := $(TT_EXT_DIR)$(SEP)
# additional include flags used when compiling the driver
#
TT_INCLUDE := $(SFNT_INCLUDE) $(TT_DIR) $(TT_EXT_DIR)
TT_INCLUDE := $(TT_DIR)
# compilation flags for the driver
#
@ -41,7 +29,7 @@ TT_CFLAGS := $(TT_INCLUDE:%=$I%)
TT_COMPILE := $(FT_COMPILE) $(TT_CFLAGS)
# driver sources (i.e., C files)
# TrueType driver sources (i.e., C files)
#
TT_DRV_SRC := $(TT_DIR_)ttobjs.c \
$(TT_DIR_)ttpload.c \
@ -49,65 +37,33 @@ TT_DRV_SRC := $(TT_DIR_)ttobjs.c \
$(TT_DIR_)ttinterp.c \
$(TT_DIR_)ttdriver.c
# driver headers
# TrueType driver headers
#
TT_DRV_H := $(SFNT_H) \
$(TT_DRV_SRC:%.c=%.h)
TT_DRV_H := $(TT_DRV_SRC:%.c=%.h)
# default extensions sources
# TrueType driver object(s)
#
TT_EXT_SRC := $(TT_EXT_DIR_)ttxkern.c \
$(TT_EXT_DIR_)ttxgasp.c \
$(TT_EXT_DIR_)ttxpost.c \
$(TT_EXT_DIR_)ttxcmap.c \
$(TT_EXT_DIR_)ttxwidth.c
# default extensions headers
#
TT_EXT_H := $(TT_EXT_SRC:.c=.h)
# driver object(s)
#
# TT_DRV_OBJ_M is used during `debug' builds
# TT_DRV_OBJ_S is used during `release' builds
# TT_DRV_OBJ_M is used during `multi' builds
# TT_DRV_OBJ_S is used during `single' builds
#
TT_DRV_OBJ_M := $(TT_DRV_SRC:$(TT_DIR_)%.c=$(OBJ_)%.$O)
TT_DRV_OBJ_S := $(OBJ_)truetype.$O
# default extensions objects
# TrueType driver source file for single build
#
TT_EXT_OBJ := $(TT_EXT_SRC:$(TT_EXT_DIR_)%.c=$(OBJ_)%.$O)
# driver source file(s)
#
TT_DRV_SRC_M := $(TT_DRV_SRC) $(SFNT_SRC)
TT_DRV_SRC_S := $(TT_DIR_)truetype.c
# driver - single object
# TrueType 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'
#
$(TT_DRV_OBJ_S): $(BASE_H) $(TT_DRV_H) $(TT_DRV_SRC) $(TT_DRV_SRC_S)
$(TT_DRV_OBJ_S): $(TT_DRV_SRC_S) $(TT_DRV_SRC) $(FREETYPE_H) $(TT_DRV_H)
$(TT_COMPILE) $T$@ $(TT_DRV_SRC_S)
# driver - multiple objects
#
# All objects are recompiled if any of the header files is changed
#
$(OBJ_)tt%.$O: $(TT_DIR_)tt%.c $(BASE_H) $(TT_DRV_H)
$(TT_COMPILE) $T$@ $<
$(OBJ_)ttx%.$O: $(TT_EXT_DIR_)ttx%.c $(BASE_H) $(SFNT_H) $(TT_EXT_H)
$(TT_COMPILE) $T$@ $<
$(OBJ_)tt%.$O: $(SFNT_DIR_)tt%.c $(BASE_H) $(SFNT_H)
$(OBJ_)%.$O: $(TT_DIR_)%.c $(FREETYPE_H) $(TT_DRV_H)
$(TT_COMPILE) $T$@ $<

View File

@ -115,10 +115,10 @@
/* parse an AFM file - for now, only read the kerning pairs */
LOCAL_FUNC
FT_Error T1_Read_AFM( FT_Face t1_face,
T1_Error T1_Read_AFM( FT_Face t1_face,
FT_Stream stream )
{
FT_Error error;
T1_Error error;
FT_Memory memory = stream->memory;
FT_Byte* start;
FT_Byte* limit;

View File

@ -8,40 +8,43 @@
#ifndef T1AFM_H
#define T1AFM_H
#include <freetype/internal/ftstream.h>
#include <freetype/internal/ftobjs.h>
#include <freetype/internal/t1types.h>
#include <freetype/internal/t1errors.h>
/* In this version, we only read the kerning table from the */
/* AFM file. We may add support for ligatures a bit later.. */
typedef struct T1_Kern_Pair_
{
FT_UInt glyph1;
FT_UInt glyph2;
FT_Vector kerning;
T1_UInt glyph1;
T1_UInt glyph2;
T1_Vector kerning;
} T1_Kern_Pair;
typedef struct T1_AFM_
{
FT_Int num_pairs;
T1_Int num_pairs;
T1_Kern_Pair* kern_pairs;
} T1_AFM;
LOCAL_DEF
FT_Error T1_Read_AFM( FT_Face face,
FT_Stream stream );
T1_Error T1_Read_AFM( FT_Face face,
FT_Stream stream );
LOCAL_DEF
void T1_Done_AFM( FT_Memory memory,
T1_AFM* afm );
void T1_Done_AFM( FT_Memory memory,
T1_AFM* afm );
LOCAL_DEF
void T1_Get_Kerning( T1_AFM* afm,
FT_UInt glyph1,
FT_UInt glyph2,
FT_Vector* kerning );
T1_UInt glyph1,
T1_UInt glyph2,
T1_Vector* kerning );
#endif /* T1AFM_H */

View File

@ -17,6 +17,7 @@
#include <t1driver.h>
#include <t1gload.h>
#include <t1load.h>
#include <t1afm.h>
#include <freetype/internal/ftdebug.h>
@ -435,7 +436,7 @@
EXPORT_FUNC(FT_DriverInterface*) getDriverInterface( void )
{
return &t1_driver_interface;
return &t1z_driver_interface;
}
#endif /* FT_CONFIG_OPTION_DYNAMIC_DRIVERS */

View File

@ -148,14 +148,14 @@
goto Exit;
}
LOCAL_FUNC FT_Error T1_Get_Multi_Master( T1_Face face,
LOCAL_FUNC T1_Error T1_Get_Multi_Master( T1_Face face,
FT_Multi_Master* master )
{
T1_Blend* blend = face->blend;
T1_UInt n;
FT_Error error;
T1_Error error;
error = FT_Err_Invalid_Argument;
error = T1_Err_Invalid_Argument;
if (blend)
{
master->num_axis = blend->num_axis;
@ -175,15 +175,15 @@
}
LOCAL_FUNC FT_Error T1_Set_MM_Blend( T1_Face face,
LOCAL_FUNC T1_Error T1_Set_MM_Blend( T1_Face face,
T1_UInt num_coords,
T1_Fixed* coords )
{
T1_Blend* blend = face->blend;
FT_Error error;
T1_Error error;
T1_UInt n, m;
error = FT_Err_Invalid_Argument;
error = T1_Err_Invalid_Argument;
if (blend && blend->num_axis == num_coords)
{
/* recompute the weight vector from the blend coordinates */
@ -213,15 +213,15 @@
}
LOCAL_FUNC FT_Error T1_Set_MM_Design( T1_Face face,
LOCAL_FUNC T1_Error T1_Set_MM_Design( T1_Face face,
T1_UInt num_coords,
T1_Long* coords )
{
T1_Blend* blend = face->blend;
FT_Error error;
T1_Error error;
T1_UInt n, p;
error = FT_Err_Invalid_Argument;
error = T1_Err_Invalid_Argument;
if (blend && blend->num_axis == num_coords)
{
/* compute the blend coordinates through the blend design map */
@ -328,7 +328,7 @@
{
T1_Token_Rec axis_tokens[ T1_MAX_MM_AXIS ];
T1_Int n, num_axis;
FT_Error error = 0;
T1_Error error = 0;
T1_Blend* blend;
FT_Memory memory;
@ -338,7 +338,7 @@
{
FT_ERROR(( "T1.parse_blend_axis_types: incorrect number of axis: %d\n",
num_axis ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -363,7 +363,7 @@
len = token->limit - token->start;
if (len <= 0)
{
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -387,7 +387,7 @@
T1_Int num_axis;
T1_Parser* parser = &loader->parser;
FT_Error error = 0;
T1_Error error = 0;
T1_Blend* blend;
/* get the array of design tokens - compute number of designs */
@ -396,7 +396,7 @@
{
FT_ERROR(( "T1.design positions: incorrect number of designs: %d\n",
num_designs ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -428,7 +428,7 @@
else if (n_axis != num_axis)
{
FT_ERROR(( "T1.design_positions: incorrect table\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -452,7 +452,7 @@
static void parse_blend_design_map( T1_Face face, T1_Loader* loader )
{
FT_Error error = 0;
T1_Error error = 0;
T1_Parser* parser = &loader->parser;
T1_Blend* blend;
T1_Token_Rec axis_tokens[ T1_MAX_MM_AXIS ];
@ -466,7 +466,7 @@
{
FT_ERROR(( "T1.design map: incorrect number of axis: %d\n",
num_axis ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
old_cursor = parser->cursor;
@ -500,7 +500,7 @@
if (num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS)
{
FT_ERROR(( "T1.design map: incorrect table\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -525,7 +525,7 @@
static void parse_weight_vector( T1_Face face, T1_Loader* loader )
{
FT_Error error = 0;
T1_Error error = 0;
T1_Parser* parser = &loader->parser;
T1_Blend* blend = face->blend;
T1_Token_Rec master;
@ -536,7 +536,7 @@
if (!blend || blend->num_designs == 0)
{
FT_ERROR(( "t1.weight_vector: too early !!\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -544,7 +544,7 @@
if (master.type != t1_token_array)
{
FT_ERROR(( "t1.weight_vector: incorrect format !!\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
@ -839,7 +839,7 @@
}
FT_ERROR(( "type1.read_binary_data: invalid size field\n" ));
parser->error = FT_Err_Invalid_File_Format;
parser->error = T1_Err_Invalid_File_Format;
return 0;
}
@ -852,7 +852,7 @@
void parse_font_name( T1_Face face, T1_Loader* loader )
{
T1_Parser* parser = &loader->parser;
FT_Error error;
T1_Error error;
FT_Memory memory = parser->memory;
T1_Int len;
T1_Byte* cur;
@ -926,7 +926,7 @@
if (cur >= limit)
{
FT_ERROR(( "type1.parse_encoding: out of bounds !!\n" ));
parser->error = FT_Err_Invalid_File_Format;
parser->error = T1_Err_Invalid_File_Format;
return;
}
}
@ -939,7 +939,7 @@
T1_Int count, n;
T1_Table* char_table = &loader->encoding_table;
FT_Memory memory = parser->memory;
FT_Error error;
T1_Error error;
/* read the number of entries in the encoding, should be 256 */
count = T1_ToInt( parser );
@ -1042,7 +1042,7 @@
else
{
FT_ERROR(( "type1.parse_encoding: invalid token !!\n" ));
parser->error = FT_Err_Invalid_File_Format;
parser->error = T1_Err_Invalid_File_Format;
}
}
}
@ -1054,7 +1054,7 @@
T1_Parser* parser = &loader->parser;
T1_Table* table = &loader->subrs;
FT_Memory memory = parser->memory;
FT_Error error;
T1_Error error;
T1_Int n;
loader->num_subrs = T1_ToInt( parser );
@ -1100,7 +1100,7 @@
T1_Table* code_table = &loader->charstrings;
T1_Table* name_table = &loader->glyph_names;
FT_Memory memory = parser->memory;
FT_Error error;
T1_Error error;
T1_Byte* cur;
T1_Byte* limit = parser->limit;
@ -1352,7 +1352,7 @@
T1_Loader loader;
T1_Parser* parser;
T1_Font* type1 = &face->type1;
FT_Error error;
T1_Error error;
t1_init_loader( &loader, face );
@ -1379,13 +1379,13 @@
if ( !loader.subrs.init )
{
FT_ERROR(( "T1.Open_Face: no subrs array in face !!\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
}
if ( !loader.charstrings.init )
{
FT_ERROR(( "T1.Open_Face: no charstrings array in face !!\n" ));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
}
loader.subrs.init = 0;

View File

@ -19,6 +19,8 @@
#define T1LOAD_H
#include <freetype/internal/ftstream.h>
#include <freetype/internal/t1types.h>
#include <freetype/ftmm.h>
#include <t1parse.h>
#ifdef __cplusplus
@ -48,19 +50,21 @@
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
LOCAL_DEF
FT_Error T1_Get_Multi_Master( T1_Face face,
FT_Multi_Master* master );
LOCAL_DEF FT_Error T1_Set_MM_Blend( T1_Face face,
T1_UInt num_coords,
T1_Fixed* coords );
LOCAL_DEF FT_Error T1_Set_MM_Design( T1_Face face,
T1_UInt num_coords,
T1_Long* coords );
T1_Error T1_Get_Multi_Master( T1_Face face,
FT_Multi_Master* master );
LOCAL_DEF
void T1_Done_Blend( T1_Face face );
T1_Error T1_Set_MM_Blend( T1_Face face,
T1_UInt num_coords,
T1_Fixed* coords );
LOCAL_DEF
T1_Error T1_Set_MM_Design( T1_Face face,
T1_UInt num_coords,
T1_Long* coords );
LOCAL_DEF
void T1_Done_Blend( T1_Face face );
#endif
#ifdef __cplusplus

View File

@ -106,7 +106,7 @@
FT_Size_Metrics* metrics = &size->root.metrics;
if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 )
return FT_Err_Invalid_Argument;
return T1_Err_Invalid_Argument;
/* Compute root ascender, descender, test height, and max_advance */
metrics->ascender = ( FT_MulFix( face->root.ascender,

View File

@ -629,7 +629,7 @@
T1_Int len = 0;
T1_Int count;
T1_String* result;
FT_Error error;
T1_Error error;
/* XXX : some stupid fonts have a "Notice" or "Copyright" string */
/* that simply doesn't begin with an opening parenthesis, even */
@ -913,9 +913,9 @@
static
FT_Error read_pfb_tag( FT_Stream stream, T1_UShort *tag, T1_Long* size )
T1_Error read_pfb_tag( FT_Stream stream, T1_UShort *tag, T1_Long* size )
{
FT_Error error;
T1_Error error;
if (READ_UShort(*tag)) goto Exit;
if (*tag == 0x8001 || *tag == 0x8002)
@ -942,7 +942,7 @@
FT_Stream stream,
FT_Memory memory )
{
FT_Error error;
T1_Error error;
T1_UShort tag;
T1_Long size;
@ -1095,7 +1095,7 @@
{
FT_Stream stream = parser->stream;
FT_Memory memory = parser->memory;
FT_Error error = 0;
T1_Error error = 0;
T1_Long size;
if (parser->in_pfb)
@ -1182,7 +1182,7 @@
if (cur >= limit)
{
FT_ERROR(("T1.Open_Private: could not find 'eexec' keyword\n"));
error = FT_Err_Invalid_File_Format;
error = T1_Err_Invalid_File_Format;
goto Exit;
}
}

View File

@ -300,6 +300,12 @@
void T1_ToToken( T1_Parser* parser,
T1_Token_Rec* token );
LOCAL_FUNC
void T1_ToTokenArray( T1_Parser* parser,
T1_Token_Rec* tokens,
T1_UInt max_tokens,
T1_Int* pnum_tokens );
LOCAL_DEF
T1_Error T1_Load_Field( T1_Parser* parser,
const T1_Field_Rec* field,