FreeType 2 can now be built in an external directory with the

configure script also.

* builds/freetype.mk (INCLUDES): Add `OBJ_DIR'.

* builds/unix/detect.mk (have_mk): New variable to test for
external build.
(unix-def.mk): Defined according to value of `have_mk'.
* builds/unix/unix.mk (have_mk): New variable to test for
external build.
Select include paths for unix-def.mk and unix-cc.mk according
to value of `have_mk'.
* builds/unix/unix-def.in (OBJ_BUILD): New variable.
(DISTCLEAN): Use it.
* builds/unix/unix-cc.in (LIBTOOL): Define default value only
if not yet defined.
* builds/unix/install.mk (install): Use `OBJ_BUILD' for installing
freetype-config.

* configure: Don't depend on bash features.
(ft2_dir, abs_curr_dir, abs_ft2_dir): New variables (code
partially taken from Autoconf).
Build a dummy Makefile if not building in source tree.

* docs/INSTALL: Document it.
This commit is contained in:
Werner Lemberg 2002-05-05 10:57:06 +00:00
parent 26aca0244d
commit f83ded0174
9 changed files with 132 additions and 31 deletions

View File

@ -1,3 +1,31 @@
2002-05-05 Werner Lemberg <wl@gnu.org>
FreeType 2 can now be built in an external directory with the
configure script also.
* builds/freetype.mk (INCLUDES): Add `OBJ_DIR'.
* builds/unix/detect.mk (have_mk): New variable to test for
external build.
(unix-def.mk): Defined according to value of `have_mk'.
* builds/unix/unix.mk (have_mk): New variable to test for
external build.
Select include paths for unix-def.mk and unix-cc.mk according
to value of `have_mk'.
* builds/unix/unix-def.in (OBJ_BUILD): New variable.
(DISTCLEAN): Use it.
* builds/unix/unix-cc.in (LIBTOOL): Define default value only
if not yet defined.
* builds/unix/install.mk (install): Use `OBJ_BUILD' for installing
freetype-config.
* configure: Don't depend on bash features.
(ft2_dir, abs_curr_dir, abs_ft2_dir): New variables (code
partially taken from Autoconf).
Build a dummy Makefile if not building in source tree.
* docs/INSTALL: Document it.
2002-05-04 David Turner <david@freetype.org> 2002-05-04 David Turner <david@freetype.org>
* src/truetype/ttgload.c (TT_Load_Glyph): Finally fixing the last * src/truetype/ttgload.c (TT_Load_Glyph): Finally fixing the last

View File

@ -130,7 +130,7 @@ PROJECT_LIBRARY := $(LIB_)$(LIBRARY).$A
# in the `freetype/builds/<system>' directory, as these # in the `freetype/builds/<system>' directory, as these
# files will override the default sources. # files will override the default sources.
# #
INCLUDES := $(BUILD) $(TOP)$(SEP)include INCLUDES := $(OBJ_DIR) $(BUILD) $(TOP)$(SEP)include
INCLUDE_FLAGS = $(INCLUDES:%=$I%) INCLUDE_FLAGS = $(INCLUDES:%=$I%)

View File

@ -3,7 +3,7 @@
# #
# Copyright 1996-2000 by # Copyright 1996-2000, 2002 by
# David Turner, Robert Wilhelm, and Werner Lemberg. # 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,
@ -72,8 +72,15 @@ ifeq ($(PLATFORM),unix)
setup: std_setup setup: std_setup
unix-def.mk: $(TOP)/builds/unix/unix-def.in have_mk := $(strip $(wildcard $(OBJ_DIR)/Makefile))
cd builds/unix; ./configure $(CFG) ifneq ($(have_mk),)
# we are building FT2 not in the src tree
unix-def.mk: $(TOP)/builds/unix/unix-def.in
$(TOP)/builds/unix/configure $(CFG)
else
unix-def.mk: $(TOP)/builds/unix/unix-def.in
cd builds/unix; ./configure $(CFG)
endif
endif # test PLATFORM unix endif # test PLATFORM unix

View File

@ -36,7 +36,7 @@ install: $(PROJECT_LIBRARY)
$(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/cache ; \ $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/cache ; \
done done
$(INSTALL_DATA) $(BUILD)/ft2unix.h $(includedir)/ft2build.h $(INSTALL_DATA) $(BUILD)/ft2unix.h $(includedir)/ft2build.h
$(INSTALL_SCRIPT) -m 755 $(BUILD)/freetype-config \ $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \
$(bindir)/freetype-config $(bindir)/freetype-config

View File

@ -3,7 +3,9 @@
CC := @CC@ CC := @CC@
LIBTOOL := $(BUILD)/libtool ifndef LIBTOOL
LIBTOOL := $(BUILD)/libtool
endif
# The object file extension (for standard and static libraries). This can be # The object file extension (for standard and static libraries). This can be

View File

@ -3,7 +3,7 @@
# #
# Copyright 1996-2000 by # Copyright 1996-2000, 2002 by
# David Turner, Robert Wilhelm, and Werner Lemberg. # 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,
@ -18,12 +18,17 @@ ifndef TOP
endif endif
TOP := $(shell cd $(TOP); pwd) TOP := $(shell cd $(TOP); pwd)
DELETE := @RMF@ DELETE := @RMF@
DELDIR := @RMDIR@ DELDIR := @RMDIR@
SEP := / SEP := /
HOSTSEP := $(SEP) HOSTSEP := $(SEP)
BUILD := $(TOP)/builds/unix BUILD := $(TOP)/builds/unix
PLATFORM := unix PLATFORM := unix
# this is used for `make distclean' and `make install'
ifndef OBJ_BUILD
OBJ_BUILD := $(BUILD)
endif
# don't use `:=' here since the path stuff will be included after this file # don't use `:=' here since the path stuff will be included after this file
# #
@ -35,14 +40,15 @@ INSTALL_PROGRAM := @INSTALL_PROGRAM@
INSTALL_SCRIPT := @INSTALL_SCRIPT@ INSTALL_SCRIPT := @INSTALL_SCRIPT@
MKINSTALLDIRS := $(BUILD)/mkinstalldirs MKINSTALLDIRS := $(BUILD)/mkinstalldirs
DISTCLEAN += $(BUILD)/config.cache \ DISTCLEAN += $(OBJ_BUILD)/config.cache \
$(BUILD)/config.log \ $(OBJ_BUILD)/config.log \
$(BUILD)/config.status \ $(OBJ_BUILD)/config.status \
$(BUILD)/unix-def.mk \ $(OBJ_BUILD)/unix-def.mk \
$(BUILD)/unix-cc.mk \ $(OBJ_BUILD)/unix-cc.mk \
$(BUILD)/ftconfig.h \ $(OBJ_BUILD)/ftconfig.h \
$(BUILD)/freetype-config \ $(OBJ_BUILD)/freetype-config \
$(LIBTOOL) $(LIBTOOL) \
$(OBJ_BUILD)/Makefile
# Standard installation variables. # Standard installation variables.

View File

@ -3,7 +3,7 @@
# #
# Copyright 1996-2000 by # Copyright 1996-2000, 2002 by
# David Turner, Robert Wilhelm, and Werner Lemberg. # 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,
@ -12,9 +12,15 @@
# indicate that you have read the license and understand and accept it # indicate that you have read the license and understand and accept it
# fully. # fully.
have_mk := $(strip $(wildcard $(TOP)/builds/unix/unix-def.mk))
include $(TOP)/builds/unix/unix-def.mk ifneq ($(have_mk),)
include $(TOP)/builds/unix/unix-cc.mk include $(TOP)/builds/unix/unix-def.mk
include $(TOP)/builds/unix/unix-cc.mk
else
# we are building FT2 not in the src tree
include $(OBJ_DIR)/unix-def.mk
include $(OBJ_DIR)/unix-cc.mk
endif
ifdef BUILD_PROJECT ifdef BUILD_PROJECT

42
configure vendored
View File

@ -9,14 +9,52 @@
# install # install
# #
if [ "x$GNUMAKE" = x ]; then if test "x$GNUMAKE" = x; then
GNUMAKE=make GNUMAKE=make
fi fi
if [ `$GNUMAKE -v 2>/dev/null|grep -ic gnu` -eq 0 ]; then if test -z "`$GNUMAKE -v 2>/dev/null | grep GNU`"; then
echo "Sorry, GNU make is required to build FreeType2." >&2 echo "Sorry, GNU make is required to build FreeType2." >&2
echo "Please try \`GNUMAKE=<GNU make command name> $0'." >&2 echo "Please try \`GNUMAKE=<GNU make command name> $0'." >&2
exit 1 exit 1
fi fi
# Uh, oh. This is taken from autoconf. They know what they are doing...
if expr a : '\(a\)' >/dev/null 2>&1; then
ft_expr=expr
else
ft_expr=false
fi
ft2_dir=`(dirname "$0") 2>/dev/null ||
$ft_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$0" : 'X\(//\)[^/]' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$0" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
abs_curr_dir=`pwd`
abs_ft2_dir=`cd "$ft2_dir" && pwd`
# build a dummy Makefile if we are not building in the source tree
if test "$abs_curr_dir" != "$abs_ft2_dir"; then
echo "OBJ_DIR=$abs_curr_dir" > Makefile
echo "TOP=$abs_ft2_dir" >> Makefile
echo "OBJ_BUILD=$abs_curr_dir" >> Makefile
echo "LIBTOOL=$abs_curr_dir/libtool" >> Makefile
echo "include $abs_ft2_dir/Makefile" >> Makefile
fi
# call make
CFG="$@" $GNUMAKE setup unix CFG="$@" $GNUMAKE setup unix
# eof

View File

@ -35,7 +35,6 @@ II. From the command line
The second one is to use "GNU Make" (and NO OTHER MAKE TOOL). The second one is to use "GNU Make" (and NO OTHER MAKE TOOL).
1. Building FT2 with "Jam" 1. Building FT2 with "Jam"
-------------------------- --------------------------
@ -60,7 +59,6 @@ II. From the command line
should become automatic on Unix systems. should become automatic on Unix systems.
2. Building FT2 with "GNU Make" 2. Building FT2 with "GNU Make"
------------------------------- -------------------------------
@ -119,8 +117,24 @@ II. From the command line
- make setup lcc -> Win32-LCC - make setup lcc -> Win32-LCC
II. In your own environment (IDE) If you want to build FreeType 2 in another directory, you must set
--------------------------------- two environment variables, `OJB_DIR' and `TOP'. The former gives
the directory where the object files and the library should be
created (this directory must exist), the latter the top directory of
the FreeType 2 source tree. Example:
OBJ_DIR=~/freetype2.compiled TOP=~/freetype2 \
make -f$TOP/Makefile setup ansi
OBJ_DIR=~/freetype2.compiled TOP=~/freetype2 \
make -f$TOP/Makefile
On Unix boxes, calling `configure' from the build directory is
sufficient; it will build a small Makefile which calls the
FreeType 2 Makefile with the necessary parameters.
III. In your own environment (IDE)
----------------------------------
You need to add the directories "freetype2/include" to your include You need to add the directories "freetype2/include" to your include
path when compiling the library. path when compiling the library.