blob: 27a7af707302ffaf30c632a9e419c8519d4ac169 [file] [log] [blame]
David Turner046f7a02000-09-15 22:42:06 +00001#
2# FreeType build system -- top-level sub-Makefile
3#
4
Werner Lemberg47a5f412000-10-17 03:38:43 +00005
6# Copyright 1996-2000 by
7# David Turner, Robert Wilhelm, and Werner Lemberg.
8#
9# This file is part of the FreeType project, and may only be used, modified,
10# and distributed under the terms of the FreeType project license,
11# LICENSE.TXT. By continuing to use, modify, or distribute this file you
12# indicate that you have read the license and understand and accept it
13# fully.
David Turner046f7a02000-09-15 22:42:06 +000014
15
16# This file is designed for GNU Make, do not use it with another Make tool!
17#
18# It works as follows:
19#
20# - When invoked for the first time, this Makefile will include the rules
21# found in `PROJECT/builds/detect.mk'. They are in charge of detecting
22# the current platform.
23#
24# A summary of the detection will be displayed, and the file `config.mk'
25# will be created in the current directory.
26#
27# - When invoked later, this Makefile will include the rules found in
28# `config.mk'. This sub-Makefile will define some system-specific
29# variables (like compiler, compilation flags, object suffix, etc.), then
30# include the rules found in `PROJECT/builds/PROJECT.mk', used to build
31# the library.
32#
33# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more
34# details on host platform detection and library builds.
35
36
Werner Lemberg594f0c92000-12-20 22:09:41 +000037.PHONY: all setup distclean modules
David Turner046f7a02000-09-15 22:42:06 +000038
Werner Lemberg91481f82000-11-04 23:41:02 +000039# The `space' variable is used to avoid trailing spaces in defining the
40# `T' variable later.
41#
42empty :=
43space := $(empty) $(empty)
44
45
David Turnerbeece1b2000-09-19 18:33:20 +000046ifndef CONFIG_MK
Werner Lemberg4b92cf82000-10-10 03:58:32 +000047 CONFIG_MK := config.mk
David Turnerbeece1b2000-09-19 18:33:20 +000048endif
David Turner046f7a02000-09-15 22:42:06 +000049
50# If no configuration sub-makefile is present, or if `setup' is the target
51# to be built, run the auto-detection rules to figure out which
52# configuration rules file to use.
53#
54# Note that the configuration file is put in the current directory, which is
55# not necessarily $(TOP).
56
57# If `config.mk' is not present, set `check_platform'.
58#
59ifeq ($(wildcard $(CONFIG_MK)),)
60 check_platform := 1
61endif
62
63# If `setup' is one of the targets requested, set `check_platform'.
64#
65ifneq ($(findstring setup,$(MAKECMDGOALS)),)
66 check_platform := 1
67endif
68
69# Include the automatic host platform detection rules when we need to
70# check the platform.
71#
72ifdef check_platform
73
Werner Lemberg594f0c92000-12-20 22:09:41 +000074 # This is the first rule `make' sees.
75 #
David Turner046f7a02000-09-15 22:42:06 +000076 all: setup
77
Werner Lemberge4b32a52000-10-31 20:42:18 +000078 ifdef USE_MODULES
Werner Lembergbd547dc2000-09-22 21:23:29 +000079 # If the module list $(MODULE_LIST) file is not present, generate it.
80 #
81 #modules: make_module_list setup
82 endif
David Turner046f7a02000-09-15 22:42:06 +000083
84 include $(TOP)/builds/detect.mk
85
Werner Lemberge4b32a52000-10-31 20:42:18 +000086 ifdef USE_MODULES
Werner Lembergbd547dc2000-09-22 21:23:29 +000087 include $(TOP)/builds/modules.mk
David Turner046f7a02000-09-15 22:42:06 +000088
Werner Lembergbd547dc2000-09-22 21:23:29 +000089 ifeq ($(wildcard $(MODULE_LIST)),)
90 setup: make_module_list
91 endif
David Turner046f7a02000-09-15 22:42:06 +000092 endif
David Turner046f7a02000-09-15 22:42:06 +000093
94 # This rule makes sense for Unix only to remove files created by a run
95 # of the configure script which hasn't been successful (so that no
96 # `config.mk' has been created). It uses the built-in $(RM) command of
Werner Lemberg594f0c92000-12-20 22:09:41 +000097 # GNU make. Similarly, `nul' is created if e.g. `make setup win32' has
98 # been erroneously used.
David Turner046f7a02000-09-15 22:42:06 +000099 #
Werner Lemberga64c55b2001-05-12 06:40:50 +0000100 # note: This test is duplicated in "builds/toplevel.mk".
101 #
Werner Lemberg38364152001-06-20 08:06:50 +0000102 is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth))
David Turnerebe85f52001-05-11 14:25:57 +0000103 ifneq ($(is_unix),)
104
David Turnerebe85f52001-05-11 14:25:57 +0000105 distclean:
Werner Lembergbd547dc2000-09-22 21:23:29 +0000106 $(RM) builds/unix/config.cache
107 $(RM) builds/unix/config.log
108 $(RM) builds/unix/config.status
109 $(RM) builds/unix/unix-def.mk
110 $(RM) builds/unix/unix-cc.mk
Werner Lemberg594f0c92000-12-20 22:09:41 +0000111 $(RM) nul
David Turner046f7a02000-09-15 22:42:06 +0000112
David Turnerebe85f52001-05-11 14:25:57 +0000113 endif # test is_unix
114
David Turner046f7a02000-09-15 22:42:06 +0000115 # IMPORTANT:
116 #
117 # `setup' must be defined by the host platform detection rules to create
118 # the `config.mk' file in the current directory.
119
120else
121
122 # A configuration sub-Makefile is present -- simply run it.
123 #
124 all: single
125
Werner Lembergbd547dc2000-09-22 21:23:29 +0000126 ifdef USE_MODULES
127 modules: make_module_list
128 endif
David Turner046f7a02000-09-15 22:42:06 +0000129
130 BUILD_PROJECT := yes
131 include $(CONFIG_MK)
132
133endif # test check_platform
134
135# EOF