blob: fe1af48f156f3bb0ab78ff189d4bca14891de305 [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 Lemberg4c80f0c2000-12-01 17:25:58 +000037.PHONY: setup distclean
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
74 all: setup
75
Werner Lemberge4b32a52000-10-31 20:42:18 +000076 ifdef USE_MODULES
Werner Lembergbd547dc2000-09-22 21:23:29 +000077 # If the module list $(MODULE_LIST) file is not present, generate it.
78 #
79 #modules: make_module_list setup
80 endif
David Turner046f7a02000-09-15 22:42:06 +000081
82 include $(TOP)/builds/detect.mk
83
Werner Lemberge4b32a52000-10-31 20:42:18 +000084 ifdef USE_MODULES
Werner Lembergbd547dc2000-09-22 21:23:29 +000085 include $(TOP)/builds/modules.mk
David Turner046f7a02000-09-15 22:42:06 +000086
Werner Lembergbd547dc2000-09-22 21:23:29 +000087 ifeq ($(wildcard $(MODULE_LIST)),)
88 setup: make_module_list
89 endif
David Turner046f7a02000-09-15 22:42:06 +000090 endif
David Turner046f7a02000-09-15 22:42:06 +000091
92 # This rule makes sense for Unix only to remove files created by a run
93 # of the configure script which hasn't been successful (so that no
94 # `config.mk' has been created). It uses the built-in $(RM) command of
95 # GNU make.
96 #
97 distclean:
Werner Lembergbd547dc2000-09-22 21:23:29 +000098 $(RM) builds/unix/config.cache
99 $(RM) builds/unix/config.log
100 $(RM) builds/unix/config.status
101 $(RM) builds/unix/unix-def.mk
102 $(RM) builds/unix/unix-cc.mk
David Turner046f7a02000-09-15 22:42:06 +0000103
104 # IMPORTANT:
105 #
106 # `setup' must be defined by the host platform detection rules to create
107 # the `config.mk' file in the current directory.
108
109else
110
111 # A configuration sub-Makefile is present -- simply run it.
112 #
113 all: single
114
Werner Lembergbd547dc2000-09-22 21:23:29 +0000115 ifdef USE_MODULES
116 modules: make_module_list
117 endif
David Turner046f7a02000-09-15 22:42:06 +0000118
119 BUILD_PROJECT := yes
120 include $(CONFIG_MK)
121
122endif # test check_platform
123
124# EOF