• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# FreeType 2 host platform detection rules
3#
4
5
6# Copyright 1996-2018 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.
14
15
16# This sub-Makefile is in charge of detecting the current platform.  It sets
17# the following variables:
18#
19#   BUILD_DIR    The configuration and system-specific directory.  Usually
20#                `builds/$(PLATFORM)' but can be different for custom builds
21#                of the library.
22#
23# The following variables must be defined in system specific `detect.mk'
24# files:
25#
26#   PLATFORM     The detected platform.  This will default to `ansi' if
27#                auto-detection fails.
28#   CONFIG_FILE  The configuration sub-makefile to use.  This usually depends
29#                on the compiler defined in the `CC' environment variable.
30#   DELETE       The shell command used to remove a given file.
31#   COPY         The shell command used to copy one file.
32#   SEP          The platform-specific directory separator.
33#   COMPILER_SEP The separator used in arguments of the compilation tools.
34#   CC           The compiler to use.
35#
36# You need to set the following variable(s) before calling it:
37#
38#   TOP_DIR      The top-most directory in the FreeType library source
39#                hierarchy.  If not defined, it will default to `.'.
40
41# Set auto-detection default to `ansi' resp. UNIX-like operating systems.
42#
43PLATFORM     := ansi
44DELETE       := $(RM)
45COPY         := cp
46CAT          := cat
47SEP          := /
48
49BUILD_CONFIG := $(TOP_DIR)/builds
50
51# These two assignments must be delayed.
52BUILD_DIR    = $(BUILD_CONFIG)/$(PLATFORM)
53CONFIG_RULES = $(BUILD_DIR)/$(CONFIG_FILE)
54
55# We define the BACKSLASH variable to hold a single back-slash character.
56# This is needed because a line like
57#
58#   SEP := \
59#
60# does not work with GNU Make (the backslash is interpreted as a line
61# continuation).  While a line like
62#
63#   SEP := \\
64#
65# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows!
66#
67BACKSLASH := $(strip \ )
68
69# Find all auto-detectable platforms.
70#
71PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk)))
72.PHONY: $(PLATFORMS) ansi
73
74# Filter out platform specified as setup target.
75#
76PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS)))
77
78# If no setup target platform was specified, enable auto-detection/
79# default platform.
80#
81ifeq ($(PLATFORM),)
82  PLATFORM := ansi
83endif
84
85# If the user has explicitly asked for `ansi' on the command line,
86# disable auto-detection.
87#
88ifeq ($(findstring ansi,$(MAKECMDGOALS)),)
89  # Now, include all detection rule files found in the `builds/<system>'
90  # directories.  Note that the calling order of the various `detect.mk'
91  # files isn't predictable.
92  #
93  include $(wildcard $(BUILD_CONFIG)/*/detect.mk)
94endif
95
96# In case no detection rule file was successful, use the default.
97#
98ifndef CONFIG_FILE
99  CONFIG_FILE := ansi.mk
100  setup: std_setup
101  .PHONY: setup
102endif
103
104# Flash out and copy rules.
105#
106.PHONY: std_setup
107
108std_setup:
109	$(info )
110	$(info $(PROJECT_TITLE) build system -- automatic system detection)
111	$(info )
112	$(info The following settings are used:)
113	$(info )
114	$(info $(empty)  platform                    $(PLATFORM))
115	$(info $(empty)  compiler                    $(CC))
116	$(info $(empty)  configuration directory     $(subst /,$(SEP),$(BUILD_DIR)))
117	$(info $(empty)  configuration rules         $(subst /,$(SEP),$(CONFIG_RULES)))
118	$(info )
119	$(info If this does not correspond to your system or settings please remove the file)
120	$(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.)
121	$(info )
122	$(info Otherwise, simply type `$(MAKE)' again to build the library,)
123	$(info or `$(MAKE) refdoc' to build the API reference (this needs python >= 2.6).)
124	$(info )
125	@$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK))
126
127
128# EOF
129