summaryrefslogtreecommitdiff
path: root/builds/toplevel.mk
blob: 27a7af707302ffaf30c632a9e419c8519d4ac169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#
# FreeType build system -- top-level sub-Makefile
#


# Copyright 1996-2000 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
# and distributed under the terms of the FreeType project license,
# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.


# This file is designed for GNU Make, do not use it with another Make tool!
#
# It works as follows:
#
# - When invoked for the first time, this Makefile will include the rules
#   found in `PROJECT/builds/detect.mk'.  They are in charge of detecting
#   the current platform.
#
#   A summary of the detection will be displayed, and the file `config.mk'
#   will be created in the current directory.
#
# - When invoked later, this Makefile will include the rules found in
#   `config.mk'.  This sub-Makefile will define some system-specific
#   variables (like compiler, compilation flags, object suffix, etc.), then
#   include the rules found in `PROJECT/builds/PROJECT.mk', used to build
#   the library.
#
# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more
# details on host platform detection and library builds.


.PHONY: all setup distclean modules

# The `space' variable is used to avoid trailing spaces in defining the
# `T' variable later.
#
empty :=
space := $(empty) $(empty)


ifndef CONFIG_MK
  CONFIG_MK := config.mk
endif

# If no configuration sub-makefile is present, or if `setup' is the target
# to be built, run the auto-detection rules to figure out which
# configuration rules file to use.
#
# Note that the configuration file is put in the current directory, which is
# not necessarily $(TOP).

# If `config.mk' is not present, set `check_platform'.
#
ifeq ($(wildcard $(CONFIG_MK)),)
  check_platform := 1
endif

# If `setup' is one of the targets requested, set `check_platform'.
#
ifneq ($(findstring setup,$(MAKECMDGOALS)),)
  check_platform := 1
endif

# Include the automatic host platform detection rules when we need to
# check the platform.
#
ifdef check_platform

  # This is the first rule `make' sees.
  #
  all: setup

  ifdef USE_MODULES
    # If the module list $(MODULE_LIST) file is not present, generate it.
    #
    #modules: make_module_list setup
  endif

  include $(TOP)/builds/detect.mk

  ifdef USE_MODULES
    include $(TOP)/builds/modules.mk

    ifeq ($(wildcard $(MODULE_LIST)),)
      setup: make_module_list
    endif
  endif

  # This rule makes sense for Unix only to remove files created by a run
  # of the configure script which hasn't been successful (so that no
  # `config.mk' has been created).  It uses the built-in $(RM) command of
  # GNU make.  Similarly, `nul' is created if e.g. `make setup win32' has
  # been erroneously used.
  #
  # note: This test is duplicated in "builds/toplevel.mk".
  #
  is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth))
  ifneq ($(is_unix),)

    distclean:
	  $(RM) builds/unix/config.cache
	  $(RM) builds/unix/config.log
	  $(RM) builds/unix/config.status
	  $(RM) builds/unix/unix-def.mk
	  $(RM) builds/unix/unix-cc.mk
	  $(RM) nul

  endif # test is_unix

  # IMPORTANT:
  #
  # `setup' must be defined by the host platform detection rules to create
  # the `config.mk' file in the current directory.

else

  # A configuration sub-Makefile is present -- simply run it.
  #
  all: single

  ifdef USE_MODULES
    modules: make_module_list
  endif

  BUILD_PROJECT := yes
  include $(CONFIG_MK)

endif # test check_platform

# EOF