blob: f05ca0dadf1d2b63cc22c10ed5b135fc56a0d558 [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 #
100 distclean:
Werner Lembergbd547dc2000-09-22 21:23:29 +0000101 $(RM) builds/unix/config.cache
102 $(RM) builds/unix/config.log
103 $(RM) builds/unix/config.status
104 $(RM) builds/unix/unix-def.mk
105 $(RM) builds/unix/unix-cc.mk
Werner Lemberg594f0c92000-12-20 22:09:41 +0000106 $(RM) nul
David Turner046f7a02000-09-15 22:42:06 +0000107
108 # IMPORTANT:
109 #
110 # `setup' must be defined by the host platform detection rules to create
111 # the `config.mk' file in the current directory.
112
113else
114
115 # A configuration sub-Makefile is present -- simply run it.
116 #
117 all: single
118
Werner Lembergbd547dc2000-09-22 21:23:29 +0000119 ifdef USE_MODULES
120 modules: make_module_list
121 endif
David Turner046f7a02000-09-15 22:42:06 +0000122
123 BUILD_PROJECT := yes
124 include $(CONFIG_MK)
125
126endif # test check_platform
127
128# EOF