blob: 07a769f05cf063f1c8696d6e1a149d39ee008f77 [file] [log] [blame]
Brian Anderson6e654562011-10-02 03:12:081# An explanation of how the build is structured:
2#
3# There are multiple build stages (0-3) needed to verify that the
4# compiler is properly self-hosting. Each stage is divided between
5# 'host' artifacts and 'target' artifacts, where the stageN host
6# compiler builds artifacts for 1 or more stageN target architectures.
7# Once the stageN target compiler has been built for the host
8# architecture it is promoted (copied) to a stageN+1 host artifact.
9#
10# The stage3 host compiler is a compiler that successfully builds
11# itself and should (in theory) be bitwise identical to the stage2
12# host compiler. The process is bootstrapped using a stage0 host
13# compiler downloaded from a previous snapshot.
14#
15# At no time should stageN artifacts be interacting with artifacts
16# from other stages. For consistency, we use the 'promotion' logic
17# for all artifacts, even those that don't make sense on non-host
18# architectures.
19#
20# The directory layout for a stage is intended to match the layout
21# of the installed compiler, and looks like the following:
22#
23# stageN - this is the system root, corresponding to, e.g. /usr
24# bin - binaries compiled for the host
25# lib - libraries used by the host compiler
26# rustc - rustc's own place to organize libraries
27# $(target) - target-specific artifacts
28# bin - binaries for target architectures
29# lib - libraries for target architectures
30#
31# A note about host libraries:
32#
33# The only libraries that get promoted to stageN/lib are those needed
34# by rustc. In general, rustc programs, even those compiled for the
35# host architecture will use libraries from the target
36# directories. This gives rust some freedom to experiment with how
37# libraries are managed and versioned without polluting the common
38# areas of the filesystem.
39#
40# General rust binaries may stil live in the host bin directory; they
41# will just link against the libraries in the target lib directory.
42#
43# Admittedly this is a little convoluted.
44
Graydon Hoare9c6e7e62011-03-16 16:17:3245######################################################################
46# Residual auto-configuration
47######################################################################
48
49include config.mk
Brian Anderson47090382011-10-06 00:41:0150OUR_MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk)
513RDPARTY_MKFILES := $(CFG_SRC_DIR)/src/rt/libuv/Makefile \
52 $(wildcard $(CFG_SRC_DIR)/src/rt/libuv/*.mk)
Niko Matsakis20946e62011-10-14 00:11:2853GEN_MKFILES := $(wildcard $(CFG_SRC_DIR)/mk/libuv/*/*/*) \
Brian Anderson47090382011-10-06 00:41:0154 $(wildcard $(CFG_SRC_DIR)/mk/libuv/mac/src/rt/libuv/*) \
55 $(wildcard $(CFG_SRC_DIR)/mk/libuv/mac/src/rt/libuv/*) \
56 $(wildcard $(CFG_SRC_DIR)/mk/libuv/mac/src/rt/libuv/*)
57
58MKFILES := $(OUR_MKFILES) $(3RDPARTY_MKFILES) $(GEN_MKFILES)
Graydon Hoare9c6e7e62011-03-16 16:17:3259
60ifneq ($(MAKE_RESTARTS),)
61CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS))
62endif
63
Graydon Hoare13215802011-09-21 18:24:5964CFG_INFO := $(info cfg: shell host triple $(CFG_HOST_TRIPLE))
65CFG_INFO := $(info cfg: llvm host triple $(CFG_LLVM_TRIPLE))
Niko Matsakisd0887992011-10-14 21:08:0466CFG_INFO := $(info cfg: llvm target triples $(CFG_TARGET_TRIPLES))
Graydon Hoare9c6e7e62011-03-16 16:17:3267
Graydon Hoarecae703c2011-04-08 22:44:4168ifdef CFG_DISABLE_OPTIMIZE
Graydon Hoare19ebc0f2011-04-08 23:29:1969 $(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
Patrick Waltonc52fb522011-04-29 17:23:0770 CFG_RUSTC_FLAGS :=
Graydon Hoarecae703c2011-04-08 22:44:4171else
Patrick Waltonc52fb522011-04-29 17:23:0772 CFG_RUSTC_FLAGS := -O
Graydon Hoarecae703c2011-04-08 22:44:4173endif
Graydon Hoare4c2245d2011-03-18 06:51:4574
Patrick Walton3f77e7d2011-04-25 21:20:2875ifdef SAVE_TEMPS
Marijn Haverbeke6b11f6c2011-04-26 18:32:0876 CFG_RUSTC_FLAGS += --save-temps
Patrick Walton3f77e7d2011-04-25 21:20:2877endif
Patrick Walton648c4ae2011-04-29 18:55:3278ifdef TIME_PASSES
79 CFG_RUSTC_FLAGS += --time-passes
80endif
Brian Anderson27522842011-06-19 00:26:4181ifdef TIME_LLVM_PASSES
82 CFG_RUSTC_FLAGS += --time-llvm-passes
83endif
Patrick Walton9aeb6792011-04-29 19:16:1484ifdef NO_TYPESTATE
85 CFG_RUSTC_FLAGS += --no-typestate
86endif
Patrick Walton404db4d2011-05-11 00:48:4987ifdef DEBUG
88 CFG_RUSTC_FLAGS += -g
89endif
Patrick Walton3f77e7d2011-04-25 21:20:2890
Graydon Hoare40624e32011-05-01 20:18:5291# platform-specific auto-configuration
92include $(CFG_SRC_DIR)/mk/platform.mk
Graydon Hoare4c2245d2011-03-18 06:51:4593
Brian Andersoncad8c732011-05-14 03:20:3494# Run the stage1/2 compilers under valgrind
95ifdef VALGRIND_COMPILE
96 CFG_VALGRIND_COMPILE :=$(CFG_VALGRIND)
97else
98 CFG_VALGRIND_COMPILE :=
99endif
100
Graydon Hoare4c2245d2011-03-18 06:51:45101CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
Graydon Hoare7ac885e2011-03-22 06:06:42102CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
Haitao Lid1cc00f2011-10-30 14:04:32103CFG_STDLIB :=$(call CFG_LIB_NAME,ruststd)
Brian Anderson5fb9cad2011-07-01 06:16:01104CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc)
Graydon Hoare4c2245d2011-03-18 06:51:45105
Graydon Hoare1e03f002011-05-06 18:21:51106# version-string calculation
107CFG_GIT_DIR := $(CFG_SRC_DIR).git
Graydon Hoare79ba3152011-06-25 19:23:27108CFG_VERSION = prerelease
Graydon Hoare0a8f9a32011-06-13 21:45:26109ifneq ($(wildcard $(CFG_GIT)),)
Graydon Hoare1e03f002011-05-06 18:21:51110ifneq ($(wildcard $(CFG_GIT_DIR)),)
111 CFG_VERSION += $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \
112 --pretty=format:'(%h %ci)')
113endif
Graydon Hoare0a8f9a32011-06-13 21:45:26114endif
Graydon Hoare1e03f002011-05-06 18:21:51115
Graydon Hoare94731fa2011-03-30 04:45:09116ifdef CFG_DISABLE_VALGRIND
117 $(info cfg: disabling valgrind (CFG_DISABLE_VALGRIND))
Graydon Hoare4c2245d2011-03-18 06:51:45118 CFG_VALGRIND :=
Graydon Hoare9c6e7e62011-03-16 16:17:32119endif
Patrick Walton518e2d22011-05-06 01:11:40120ifdef CFG_BAD_VALGRIND
121 $(info cfg: disabling valgrind due to its unreliability on this platform)
122 CFG_VALGRIND :=
123endif
Graydon Hoare9c6e7e62011-03-16 16:17:32124
Graydon Hoare28a4e772011-03-23 17:37:35125DOCS :=
126ifeq ($(CFG_MAKEINFO),)
127 $(info cfg: no makeinfo found, omitting doc/rust.html)
128else
129 DOCS += doc/rust.html
130endif
131
132ifeq ($(CFG_TEXI2PDF),)
133 $(info cfg: no texi2pdf found, omitting doc/rust.pdf)
134else
Graydon Hoaref7407472011-03-23 20:31:51135 ifeq ($(CFG_TEX),)
136 $(info cfg: no tex found, omitting doc/rust.pdf)
137 else
138 DOCS += doc/rust.pdf
139 endif
Graydon Hoare28a4e772011-03-23 17:37:35140endif
141
Brian Anderson0c620072011-10-27 21:59:22142ifeq ($(CFG_NATURALDOCS),)
Brian Anderson33f2f222011-10-27 22:04:29143 $(info cfg: no naturaldocs found, omitting doc/std/index.html)
Brian Anderson0c620072011-10-27 21:59:22144else
145 DOCS += doc/std/index.html
146endif
147
Graydon Hoare94731fa2011-03-30 04:45:09148ifdef CFG_DISABLE_DOCS
149 $(info cfg: disabling doc build (CFG_DISABLE_DOCS))
150 DOCS :=
151endif
Graydon Hoare28a4e772011-03-23 17:37:35152
Graydon Hoare4c2245d2011-03-18 06:51:45153######################################################################
154# Target-and-rule "utility variables"
155######################################################################
156
157ifdef VERBOSE
158 Q :=
159 E =
160else
161 Q := @
162 E = echo $(1)
163endif
164
Graydon Hoare4c2245d2011-03-18 06:51:45165S := $(CFG_SRC_DIR)
166X := $(CFG_EXE_SUFFIX)
167
168# Look in doc and src dirs.
169VPATH := $(S)doc $(S)src
170
Graydon Hoare4c2245d2011-03-18 06:51:45171# "Source" files we generate in builddir along the way.
Graydon Hoare40624e32011-05-01 20:18:52172GENERATED :=
Graydon Hoare4c2245d2011-03-18 06:51:45173
174# Delete the built-in rules.
175.SUFFIXES:
176%:: %,v
177%:: RCS/%,v
178%:: RCS/%
179%:: s.%
180%:: SCCS/s.%
Graydon Hoare9c6e7e62011-03-16 16:17:32181
Graydon Hoare4c2245d2011-03-18 06:51:45182######################################################################
183# Standard library variables
184######################################################################
185
Graydon Hoare65974392011-03-21 20:42:29186STDLIB_CRATE := $(S)src/lib/std.rc
Graydon Hoare4c2245d2011-03-18 06:51:45187STDLIB_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rc *.rs */*.rs))
188
189######################################################################
190# rustc crate variables
191######################################################################
192
Graydon Hoare65974392011-03-21 20:42:29193COMPILER_CRATE := $(S)src/comp/rustc.rc
Graydon Hoare874a7bf2011-03-19 00:30:06194COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
Tim Chevalier60399ed2011-05-18 22:34:52195 rustc.rc *.rs */*.rs */*/*.rs))
Graydon Hoare4c2245d2011-03-18 06:51:45196
197######################################################################
Graydon Hoared987b492011-05-03 06:37:52198# Exports for sub-utilities
199######################################################################
200
Brian Anderson6e654562011-10-02 03:12:08201# Note that any variable that re-configure should pick up needs to be
202# exported
203
Graydon Hoared987b492011-05-03 06:37:52204export CFG_SRC_DIR
Graydon Hoaread954fc2011-07-23 19:26:47205export CFG_BUILD_DIR
Graydon Hoare1e03f002011-05-06 18:21:51206export CFG_VERSION
Brian Anderson6306c812011-09-29 19:21:58207export CFG_HOST_TRIPLE
Graydon Hoare6a4a85f2011-05-18 19:00:26208export CFG_LLVM_ROOT
Graydon Hoare0dc2aa32011-06-28 18:18:25209export CFG_ENABLE_MINGW_CROSS
Brian Anderson6e654562011-10-02 03:12:08210export CFG_PREFIX
Graydon Hoared987b492011-05-03 06:37:52211
Patrick Walton04f966f2011-05-05 01:28:30212######################################################################
213# Subprograms
214######################################################################
215
Graydon Hoare8fc51df2011-06-27 18:53:04216LLVM_AS := $(CFG_LLVM_BINDIR)/llvm-as$(X)
Patrick Walton04f966f2011-05-05 01:28:30217
Graydon Hoare8fc51df2011-06-27 18:53:04218LLC := $(CFG_LLVM_BINDIR)/llc$(X)
Graydon Hoared987b492011-05-03 06:37:52219
220######################################################################
Graydon Hoarefafb42e2011-07-15 23:12:41221# Per-stage targets and runner
222######################################################################
223
224define SREQ
Brian Andersoned106dd2011-09-30 19:08:51225
Brian Anderson38c67a42011-09-30 19:24:28226# Destinations of artifacts for the host compiler
227HOST_ROOT$(1) = stage$(1)
228HOST_BIN$(1) = $$(HOST_ROOT$(1))/bin
229HOST_LIB$(1) = $$(HOST_ROOT$(1))/lib
230
Brian Anderson9563c172011-10-01 02:00:19231# Destinations of artifacts for target architectures
232TARGET_ROOT$(1)$(2) = $$(HOST_LIB$(1))/rustc/$(2)
233TARGET_BIN$(1)$(2) = $$(TARGET_ROOT$(1)$(2))/bin
234TARGET_LIB$(1)$(2) = $$(TARGET_ROOT$(1)$(2))/lib
235
Brian Anderson38c67a42011-09-30 19:24:28236# The target locations of artifacts for the host architecture (used for
237# promoting target binaries to host binaries)
238TARGET_HOST_ROOT$(1) = $$(TARGET_ROOT$(1)$$(CFG_HOST_TRIPLE))
239TARGET_HOST_BIN$(1) = $$(TARGET_BIN$(1)$$(CFG_HOST_TRIPLE))
240TARGET_HOST_LIB$(1) = $$(TARGET_LIB$(1)$$(CFG_HOST_TRIPLE))
Brian Andersoned106dd2011-09-30 19:08:51241
Brian Anderson6e654562011-10-02 03:12:08242# The name of the standard library used by rustc
Rafael Ávila de Espíndola88894b62011-07-20 20:02:36243ifdef CFG_DISABLE_SHAREDSTD
Brian Andersonf634eb22011-09-30 23:11:47244 HOST_STDLIB_DEFAULT$(1) = $$(HOST_LIB$(1))/libstd.rlib
Brian Anderson6e654562011-10-02 03:12:08245 TARGET_STDLIB_DEFAULT$(1)$(2) = $$(TARGET_LIB$(1)$(2))/libstd.rlib
Brian Andersonf634eb22011-09-30 23:11:47246else
247 HOST_STDLIB_DEFAULT$(1) = $$(HOST_LIB$(1))/$(CFG_STDLIB)
Brian Anderson6e654562011-10-02 03:12:08248 TARGET_STDLIB_DEFAULT$(1)$(2) = $$(TARGET_LIB$(1)$(2))/$(CFG_STDLIB)
Brian Andersonf634eb22011-09-30 23:11:47249endif
250
Brian Anderson6e654562011-10-02 03:12:08251# Preqrequisites for using the stageN compiler
252HOST_SREQ$(1) = \
253 $$(HOST_BIN$(1))/rustc$$(X) \
254 $$(HOST_LIB$(1))/$$(CFG_RUNTIME) \
255 $$(HOST_LIB$(1))/$$(CFG_RUSTLLVM) \
256 $$(HOST_STDLIB_DEFAULT$(1)) \
257 $$(MKFILES)
258
259# Prerequisites for using the stageN compiler to build target artifacts
260TARGET_SREQ$(1)$(2) = \
261 $$(HOST_SREQ$(1)) \
262 $$(TARGET_LIB$(1)$(2))/$$(CFG_RUNTIME) \
Marijn Haverbekeba1c6fc2011-10-20 15:32:10263 $$(TARGET_LIB$(1)$(2))/intrinsics.bc
Brian Anderson6e654562011-10-02 03:12:08264
265# Prerequisites for complete stageN targets
266SREQ$(1)$(2) = \
267 $$(TARGET_SREQ$(1)$(2)) \
268 $$(TARGET_LIB$(1)$(2))/$$(CFG_STDLIB)
Graydon Hoarefafb42e2011-07-15 23:12:41269
Brian Andersone3d3aaa2011-08-26 18:11:49270ifeq ($(1),0)
271# Don't run the the stage0 compiler under valgrind - that ship has sailed
272CFG_VALGRIND_COMPILE$(1) =
273else
274CFG_VALGRIND_COMPILE$(1) = $$(CFG_VALGRIND_COMPILE)
275endif
276
Niko Matsakisd0887992011-10-14 21:08:04277STAGE$(1)_$(2) := $$(Q)$$(call CFG_RUN_TARG,$(1), \
278 $$(CFG_VALGRIND_COMPILE$(1)) $$(HOST_BIN$(1))/rustc$$(X) \
279 $$(CFG_RUSTC_FLAGS) --target=$(2))
Brian Anderson7dbce102011-09-29 19:06:37280
Niko Matsakisd0887992011-10-14 21:08:04281PERF_STAGE$(1)_$(2) := $$(Q)$$(call CFG_RUN_TARG,$(1), \
282 $$(CFG_PERF_TOOL) $$(HOST_BIN$(1))/rustc$$(X) \
283 $$(CFG_RUSTC_FLAGS) --target=$(2))
Brian Anderson7dbce102011-09-29 19:06:37284
Graydon Hoarefafb42e2011-07-15 23:12:41285endef
286
Brian Anderson0148daa2011-09-29 00:06:57287$(foreach target,$(CFG_TARGET_TRIPLES), \
288 $(eval $(call SREQ,0,$(target))) \
289 $(eval $(call SREQ,1,$(target))) \
290 $(eval $(call SREQ,2,$(target))) \
291 $(eval $(call SREQ,3,$(target))))
Graydon Hoarefafb42e2011-07-15 23:12:41292
293######################################################################
294# Entrypoint rule
Graydon Hoare4c2245d2011-03-18 06:51:45295######################################################################
296
Graydon Hoareae784df2011-05-14 00:00:43297ifneq ($(CFG_IN_TRANSITION),)
298
Graydon Hoare9ac29482011-05-16 22:14:58299CFG_INFO := $(info cfg:)
Graydon Hoareae784df2011-05-14 00:00:43300CFG_INFO := $(info cfg: *** compiler is in snapshot transition ***)
301CFG_INFO := $(info cfg: *** stage2 and later will not be built ***)
Graydon Hoare9ac29482011-05-16 22:14:58302CFG_INFO := $(info cfg:)
Graydon Hoareae784df2011-05-14 00:00:43303
Brian Anderson6e654562011-10-02 03:12:08304all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS)
Brian Andersonb0560962011-09-30 23:15:02305
Graydon Hoareae784df2011-05-14 00:00:43306else
Brian Anderson86ed9052011-09-30 03:27:28307
Niko Matsakisd0887992011-10-14 21:08:04308TARGET_SREQS := $(foreach target,$(CFG_TARGET_TRIPLES),$(SREQ3$(target)))
Brian Anderson6e654562011-10-02 03:12:08309FUZZ := $(HOST_BIN3)/fuzzer$(X)
Brian Anderson86ed9052011-09-30 03:27:28310
Niko Matsakisd0887992011-10-14 21:08:04311#all: $(SREQ3$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS) $(FUZZ)
312all: $(TARGET_SREQS) $(GENERATED) $(DOCS) $(FUZZ)
Brian Anderson6e654562011-10-02 03:12:08313
Graydon Hoareae784df2011-05-14 00:00:43314endif
315
Graydon Hoare10f33602011-03-25 17:29:45316
317######################################################################
318# Re-configuration
319######################################################################
320
Graydon Hoareae784df2011-05-14 00:00:43321config.mk: $(S)configure $(S)Makefile.in $(S)src/snapshots.txt
Graydon Hoare10f33602011-03-25 17:29:45322 @$(call E, cfg: reconfiguring)
Graydon Hoaredf8161d2011-06-30 20:41:20323 $(Q)$(S)configure $(CFG_CONFIGURE_ARGS)
Graydon Hoare10f33602011-03-25 17:29:45324
325
Graydon Hoaree961f532011-03-21 18:23:19326######################################################################
Graydon Hoare79ba3152011-06-25 19:23:27327# Primary-target makefiles
Graydon Hoaree961f532011-03-21 18:23:19328######################################################################
329
Brian Anderson6e654562011-10-02 03:12:08330include $(CFG_SRC_DIR)/mk/target.mk
331include $(CFG_SRC_DIR)/mk/host.mk
Michael Sullivanb01ecb12011-07-21 18:58:01332include $(CFG_SRC_DIR)/mk/stage0.mk
Graydon Hoare40624e32011-05-01 20:18:52333include $(CFG_SRC_DIR)/mk/rt.mk
334include $(CFG_SRC_DIR)/mk/rustllvm.mk
Graydon Hoare40624e32011-05-01 20:18:52335include $(CFG_SRC_DIR)/mk/autodep.mk
Brian Anderson3a6f3cf2011-10-03 00:28:59336include $(CFG_SRC_DIR)/mk/tools.mk
Graydon Hoare79ba3152011-06-25 19:23:27337include $(CFG_SRC_DIR)/mk/docs.mk
338
Graydon Hoare79ba3152011-06-25 19:23:27339######################################################################
340# Secondary makefiles, conditionalized for speed
341######################################################################
342
Graydon Hoaredf8161d2011-06-30 20:41:20343ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \
344 $(findstring check,$(MAKECMDGOALS)) \
345 $(findstring test,$(MAKECMDGOALS)) \
Graydon Hoare39151f22011-07-13 22:44:09346 $(findstring tidy,$(MAKECMDGOALS)) \
Graydon Hoaredf8161d2011-06-30 20:41:20347 $(findstring clean,$(MAKECMDGOALS))),)
348 CFG_INFO := $(info cfg: including dist rules)
Graydon Hoare79ba3152011-06-25 19:23:27349 include $(CFG_SRC_DIR)/mk/dist.mk
350endif
351
Graydon Hoaredf8161d2011-06-30 20:41:20352ifneq ($(strip $(findstring snap,$(MAKECMDGOALS)) \
353 $(findstring clean,$(MAKECMDGOALS))),)
354 CFG_INFO := $(info cfg: including snap rules)
Graydon Hoare79ba3152011-06-25 19:23:27355 include $(CFG_SRC_DIR)/mk/snap.mk
356endif
357
358ifneq ($(findstring reformat,$(MAKECMDGOALS)),)
Graydon Hoaredf8161d2011-06-30 20:41:20359 CFG_INFO := $(info cfg: including reformat rules)
Graydon Hoare79ba3152011-06-25 19:23:27360 include $(CFG_SRC_DIR)/mk/pp.mk
361endif
362
Graydon Hoaredf8161d2011-06-30 20:41:20363ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \
364 $(findstring test,$(MAKECMDGOALS)) \
Graydon Hoared5b2d622011-09-13 22:06:21365 $(findstring perf,$(MAKECMDGOALS)) \
Graydon Hoaredf8161d2011-06-30 20:41:20366 $(findstring tidy,$(MAKECMDGOALS))),)
367 CFG_INFO := $(info cfg: including test rules)
Graydon Hoare79ba3152011-06-25 19:23:27368 include $(CFG_SRC_DIR)/mk/tests.mk
Graydon Hoare79ba3152011-06-25 19:23:27369endif
370
Graydon Hoared5b2d622011-09-13 22:06:21371ifneq ($(findstring perf,$(MAKECMDGOALS)),)
372 CFG_INFO := $(info cfg: including perf rules)
373 include $(CFG_SRC_DIR)/mk/perf.mk
374endif
375
Graydon Hoare79ba3152011-06-25 19:23:27376ifneq ($(findstring clean,$(MAKECMDGOALS)),)
Graydon Hoaredf8161d2011-06-30 20:41:20377 CFG_INFO := $(info cfg: including clean rules)
Graydon Hoare79ba3152011-06-25 19:23:27378 include $(CFG_SRC_DIR)/mk/clean.mk
Michael Sullivanb01ecb12011-07-21 18:58:01379endif
Brian Anderson9563c172011-10-01 02:00:19380
381ifneq ($(findstring install,$(MAKECMDGOALS)),)
382 CFG_INFO := $(info cfg: including install rules)
383 include $(CFG_SRC_DIR)/mk/install.mk
Niko Matsakise1c470c2011-10-12 19:10:21384endif
385
386ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \
387 $(findstring TAGS.vi,$(MAKECMDGOALS))),)
388 CFG_INFO := $(info cfg: including ctags rules)
389 include $(CFG_SRC_DIR)/mk/ctags.mk
390endif