tools.mk 7.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# Copyright 2012 The Rust Project Developers. See the COPYRIGHT
# file at the top-level directory of this distribution and at
# http://rust-lang.org/COPYRIGHT.
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.

11 12 13
# Rules for non-core tools built with the compiler, both for target
# and host architectures

14
# The test runner that runs the cfail/rfail/rpass and bxench tests
15 16
COMPILETEST_CRATE := $(S)src/compiletest/compiletest.rs
COMPILETEST_INPUTS := $(wildcard $(S)src/compiletest/*.rs)
17

18
# Rustpkg, the package manager and build system
19 20
RUSTPKG_LIB := $(S)src/librustpkg/rustpkg.rs
RUSTPKG_INPUTS := $(wildcard $(S)src/librustpkg/*.rs)
21

G
Graydon Hoare 已提交
22
# Rustdoc, the documentation tool
23
RUSTDOC_LIB := $(S)src/librustdoc/rustdoc.rs
B
Brian Anderson 已提交
24
RUSTDOC_INPUTS := $(wildcard $(S)src/librustdoc/*.rs)
G
Graydon Hoare 已提交
25

26
# Rusti, the JIT REPL
27
RUSTI_LIB := $(S)src/librusti/rusti.rs
B
Brian Anderson 已提交
28
RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs)
29

30
# Rust, the convenience tool
31
RUST_LIB := $(S)src/librust/rust.rs
32 33
RUST_INPUTS := $(wildcard $(S)src/librust/*.rs)

34 35
# FIXME: These are only built for the host arch. Eventually we'll
# have tools that need to built for other targets.
36
define TOOLS_STAGE_N_TARGET
37

38
$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4)):			\
39 40
		$$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS)	\
		$$(TSREQ$(1)_T_$(4)_H_$(3))						\
41 42
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4))      \
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4))
43 44 45
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<

46
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)):		\
47
		$$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS)		    \
48
		$$(TSREQ$(1)_T_$(4)_H_$(3))					\
49
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4))	\
50
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4))	\
51
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4))
52
	@$$(call E, compile_and_link: $$@)
53
	$$(STAGE$(1)_T_$(4)_H_$(3)) $$(WFLAGS_ST$(1)) -o $$@ $$< && touch $$@
54

55
$$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4)):				\
56
		$$(DRIVER_CRATE) 							\
57
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4))
58
	@$$(call E, compile_and_link: $$@)
59
	$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustpkg -o $$@ $$<
60

61
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)):		\
62 63
		$$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS)			\
		$$(TSREQ$(1)_T_$(4)_H_$(3))					\
64
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4))	\
65
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4))	\
66
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4))
67 68 69
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@

70
$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)):			\
71
		$$(DRIVER_CRATE) 							\
72
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4))
73 74 75
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<

76
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)):		\
77 78
		$$(RUSTI_LIB) $$(RUSTI_INPUTS)			\
		$$(TSREQ$(1)_T_$(4)_H_$(3))					\
79
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4))	\
80
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4))	\
81
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4))
82 83 84
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@

85
$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4)):			\
86
		$$(DRIVER_CRATE) 							\
87
		$$(TLIB$(1)_T_$(4)_H_$(4))/$(CFG_LIBRUSTI_$(4))
88 89 90
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$<

91
$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)):		\
92 93
		$$(RUST_LIB) $$(RUST_INPUTS)			\
		$$(TSREQ$(1)_T_$(4)_H_$(3))					\
94
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4))	\
95
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4))	\
96 97 98
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4))	\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4))		\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4))	\
99
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4))
100 101 102
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@

103
$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4)):			\
104
		$$(DRIVER_CRATE) 							\
105
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4))
106 107 108
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rust -o $$@ $$<

109 110 111 112
endef

define TOOLS_STAGE_N_HOST

113 114
$$(HBIN$(2)_H_$(4))/compiletest$$(X_$(4)):				\
		$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4))	\
115
		$$(HSREQ$(2)_H_$(4))
116 117 118
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@

119

120 121 122
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)):				\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4))		\
123 124 125
		$$(HSREQ$(2)_H_$(4))
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@
126 127
	$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB_$(4)) \
		$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB_$(4))) \
128
	        $$(HLIB$(2)_H_$(4))
129

130 131 132
$$(HBIN$(2)_H_$(4))/rustpkg$$(X_$(4)):				\
		$$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4))	\
133
		$$(HSREQ$(2)_H_$(4))
134 135 136
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@

137 138 139
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)):					\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4))			\
140 141 142
		$$(HSREQ$(2)_H_$(4))
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@
143 144
	$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB_$(4)) \
		$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB_$(4))) \
145
	        $$(HLIB$(2)_H_$(4))
G
Graydon Hoare 已提交
146

147 148 149
$$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)):				\
		$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4))	\
150
		$$(HSREQ$(2)_H_$(4))
G
Graydon Hoare 已提交
151 152 153
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@

154 155 156
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)):					\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4))			\
B
Brian Anderson 已提交
157 158 159
		$$(HSREQ$(2)_H_$(4))
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@
160 161
	$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB_$(4)) \
		$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB_$(4))) \
162
	        $$(HLIB$(2)_H_$(4))
G
Graydon Hoare 已提交
163

164 165 166
$$(HBIN$(2)_H_$(4))/rusti$$(X_$(4)):				\
		$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4))	\
167
		$$(HSREQ$(2)_H_$(4))
G
Graydon Hoare 已提交
168 169 170
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@

171 172 173
$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)):					\
		$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4))			\
174 175 176
		$$(HSREQ$(2)_H_$(4))
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@
177 178
	$$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB_$(4)) \
		$$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)_$(4)) \
179 180
	        $$(HLIB$(2)_H_$(4))

181 182 183
$$(HBIN$(2)_H_$(4))/rust$$(X_$(4)):				\
		$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4))	\
		$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4))	\
184 185 186 187
		$$(HSREQ$(2)_H_$(4))
	@$$(call E, cp: $$@)
	$$(Q)cp $$< $$@

188 189
endef

190
$(foreach host,$(CFG_HOST_TRIPLES),				\
191
$(foreach target,$(CFG_TARGET_TRIPLES),				\
192 193
 $(eval $(call TOOLS_STAGE_N_TARGET,0,1,$(host),$(target)))	\
 $(eval $(call TOOLS_STAGE_N_TARGET,1,2,$(host),$(target)))	\
194 195
 $(eval $(call TOOLS_STAGE_N_TARGET,2,3,$(host),$(target)))	\
 $(eval $(call TOOLS_STAGE_N_TARGET,3,bogus,$(host),$(target)))))
196

197
$(foreach host,$(CFG_HOST_TRIPLES),				\
198 199 200
 $(eval $(call TOOLS_STAGE_N_HOST,0,1,$(host),$(host)))	\
 $(eval $(call TOOLS_STAGE_N_HOST,1,2,$(host),$(host)))	\
 $(eval $(call TOOLS_STAGE_N_HOST,2,3,$(host),$(host))))