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>
* 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
# files will override the default sources.
#
INCLUDES := $(BUILD) $(TOP)$(SEP)include
INCLUDES := $(OBJ_DIR) $(BUILD) $(TOP)$(SEP)include
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.
#
# This file is part of the FreeType project, and may only be used, modified,
@ -72,8 +72,15 @@ ifeq ($(PLATFORM),unix)
setup: std_setup
unix-def.mk: $(TOP)/builds/unix/unix-def.in
cd builds/unix; ./configure $(CFG)
have_mk := $(strip $(wildcard $(OBJ_DIR)/Makefile))
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

View File

@ -36,7 +36,7 @@ install: $(PROJECT_LIBRARY)
$(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/cache ; \
done
$(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

View File

@ -3,7 +3,9 @@
CC := @CC@
LIBTOOL := $(BUILD)/libtool
ifndef LIBTOOL
LIBTOOL := $(BUILD)/libtool
endif
# 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.
#
# This file is part of the FreeType project, and may only be used, modified,
@ -18,12 +18,17 @@ ifndef TOP
endif
TOP := $(shell cd $(TOP); pwd)
DELETE := @RMF@
DELDIR := @RMDIR@
SEP := /
HOSTSEP := $(SEP)
BUILD := $(TOP)/builds/unix
PLATFORM := unix
DELETE := @RMF@
DELDIR := @RMDIR@
SEP := /
HOSTSEP := $(SEP)
BUILD := $(TOP)/builds/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
#
@ -35,14 +40,15 @@ INSTALL_PROGRAM := @INSTALL_PROGRAM@
INSTALL_SCRIPT := @INSTALL_SCRIPT@
MKINSTALLDIRS := $(BUILD)/mkinstalldirs
DISTCLEAN += $(BUILD)/config.cache \
$(BUILD)/config.log \
$(BUILD)/config.status \
$(BUILD)/unix-def.mk \
$(BUILD)/unix-cc.mk \
$(BUILD)/ftconfig.h \
$(BUILD)/freetype-config \
$(LIBTOOL)
DISTCLEAN += $(OBJ_BUILD)/config.cache \
$(OBJ_BUILD)/config.log \
$(OBJ_BUILD)/config.status \
$(OBJ_BUILD)/unix-def.mk \
$(OBJ_BUILD)/unix-cc.mk \
$(OBJ_BUILD)/ftconfig.h \
$(OBJ_BUILD)/freetype-config \
$(LIBTOOL) \
$(OBJ_BUILD)/Makefile
# 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.
#
# 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
# fully.
include $(TOP)/builds/unix/unix-def.mk
include $(TOP)/builds/unix/unix-cc.mk
have_mk := $(strip $(wildcard $(TOP)/builds/unix/unix-def.mk))
ifneq ($(have_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

42
configure vendored
View File

@ -9,14 +9,52 @@
# install
#
if [ "x$GNUMAKE" = x ]; then
if test "x$GNUMAKE" = x; then
GNUMAKE=make
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 "Please try \`GNUMAKE=<GNU make command name> $0'." >&2
exit 1
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
# 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).
1. Building FT2 with "Jam"
--------------------------
@ -60,7 +59,6 @@ II. From the command line
should become automatic on Unix systems.
2. Building FT2 with "GNU Make"
-------------------------------
@ -119,8 +117,24 @@ II. From the command line
- 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
path when compiling the library.