boilerplate.mk 2.96 KB
Newer Older
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
#################################################################################
#
#			    mk/boilerplate.mk
#
#		The Glorious fptools Boilerplate Makefile
#
# This one file should be included (directly or indirectly) by all Makefiles 
# in the fptools hierarchy.
#
#################################################################################

# We want to disable all the built-in rules that make uses; having them
# just slows things down, and we write all the rules ourselves.
# Setting .SUFFIXES to empty disables them all.
MAKEFLAGS += --no-builtin-rules

# FPTOOLS_TOP is the *relative* path to the fptools toplevel directory from the
# location where a project Makefile was invoked. It is set by looking at the
# current value of TOP.
#
FPTOOLS_TOP := $(TOP)


# This rule makes sure that "all" is the default target, regardless of where it appears
#		THIS RULE MUST REMAIN FIRST!
default: all


29
30
31
# -----------------------------------------------------------------------------
# 	make sure the autoconf stuff is up to date...

32
33
34
35
36
$(TOP)/configure : $(TOP)/configure.ac $(TOP)/aclocal.m4
	@echo "Running autoreconf in $(FPTOOLS_TOP)  ..."
	@( cd $(FPTOOLS_TOP) && autoreconf )

$(TOP)/config.status : $(TOP)/configure
37
38
39
40
	@if test ! -f $(FPTOOLS_TOP)/config.status; then \
		echo "You haven't run $(FPTOOLS_TOP)/configure yet."; \
		exit 1; \
	fi
41
42
43
	echo "configure changed, reconfiguring with same settings..."; \
	( cd $(FPTOOLS_TOP) && ./config.status --recheck ); \

44
$(TOP)/mk/config.mk : $(TOP)/mk/config.mk.in $(TOP)/mk/config.h.in $(TOP)/configure
45
	@echo "Running $(FPTOOLS_TOP)/config.status to update configuration info...";
46
47
	@( cd $(FPTOOLS_TOP) && ./config.status )

48
49
50
51
52
53
54
55
56
57
58
59
# -----------------------------------------------------------------------------
# Misc bits

# If $(way) is set then we define $(way_) and $(_way) from it in the
# obvious fashion.  This must be done before suffix.mk is included,
# because the pattern rules in that file depend on these variables.

ifneq "$(way)" ""
  way_ := $(way)_
  _way := _$(way)
endif

reid's avatar
reid committed
60
61
62
63
64
65

# When using $(patsubst ...) and friends, you can't use a literal comma
# freely - so we use ${comma} instead.  (See PACKAGE_CPP_OPTS in package.mk
# for an example usage.)
comma=,

66
67
68
# -----------------------------------------------------------------------------
# 	Now follow the pieces of boilerplate
#	The "-" signs tell make not to complain if they don't exist
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

include $(TOP)/mk/config.mk
# All configuration information
#	(generated by "configure" from config.mk.in)
#


include $(TOP)/mk/paths.mk
# Variables that say where things belong (e.g install directories)
# and where we are right now
# Also defines variables for standard files (SRCS, LIBS etc)


include $(TOP)/mk/opts.mk
# Variables that control the option flags for all the
# language processors

86
87
88
89
ifeq "$(BootingFromHc)" "YES"
include $(TOP)/mk/bootstrap.mk
endif

90
91
92
93
-include $(TOP)/mk/build.mk
# (Optional) build-specific configuration
#

94
ifndef FAST
95
-include .depend
96
endif
97
# The dependencies file from the current directory