Skip to content

Commit 6c2cdb3

Browse files
committed
auto merge of #9772 : alexcrichton/rust/buildsystem, r=thestinger
Reorganize the makefiles to stop building these once per stage because there's no need to do this at all. Closes #7002
2 parents 6db8899 + d858360 commit 6c2cdb3

File tree

3 files changed

+119
-115
lines changed

3 files changed

+119
-115
lines changed

configure

+6-2
Original file line numberDiff line numberDiff line change
@@ -680,11 +680,15 @@ do
680680
for s in 0 1 2 3
681681
do
682682
make_dir $t/rt/stage$s
683+
make_dir $t/rt/libuv
684+
make_dir $t/rt/libuv/src/ares
685+
make_dir $t/rt/libuv/src/eio
686+
make_dir $t/rt/libuv/src/ev
687+
make_dir $t/rt/jemalloc
683688
for i in \
684689
isaac linenoise sync test \
685690
arch/i386 arch/x86_64 arch/arm arch/mips \
686-
libuv libuv/src/ares libuv/src/eio libuv/src/ev \
687-
jemalloc sundown/src sundown/html
691+
sundown/src sundown/html
688692
do
689693
make_dir $t/rt/stage$s/$i
690694
done

mk/platform.mk

+12
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ CXX_x86_64-unknown-linux-gnu=$(CXX)
145145
CPP_x86_64-unknown-linux-gnu=$(CPP)
146146
AR_x86_64-unknown-linux-gnu=$(AR)
147147
CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so
148+
CFG_STATIC_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).a
148149
CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so
149150
CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
150151
CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64
@@ -171,6 +172,7 @@ CXX_i686-unknown-linux-gnu=$(CXX)
171172
CPP_i686-unknown-linux-gnu=$(CPP)
172173
AR_i686-unknown-linux-gnu=$(AR)
173174
CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so
175+
CFG_STATIC_LIB_NAME_i686-unknown-linux-gnu=lib$(1).a
174176
CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so
175177
CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
176178
CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32
@@ -197,6 +199,7 @@ CXX_x86_64-apple-darwin=$(CXX)
197199
CPP_x86_64-apple-darwin=$(CPP)
198200
AR_x86_64-apple-darwin=$(AR)
199201
CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib
202+
CFG_STATIC_LIB_NAME_x86_64-apple-darwin=lib$(1).a
200203
CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib
201204
CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM
202205
CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64
@@ -222,6 +225,7 @@ CXX_i686-apple-darwin=$(CXX)
222225
CPP_i686-apple-darwin=$(CPP)
223226
AR_i686-apple-darwin=$(AR)
224227
CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib
228+
CFG_STATIC_LIB_NAME_i686-apple-darwin=lib$(1).a
225229
CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib
226230
CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM
227231
CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386
@@ -247,6 +251,7 @@ CXX_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-g+
247251
CPP_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc -E
248252
AR_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-ar
249253
CFG_LIB_NAME_arm-linux-androideabi=lib$(1).so
254+
CFG_STATIC_LIB_NAME_arm-linux-androideabi=lib$(1).a
250255
CFG_LIB_GLOB_arm-linux-androideabi=lib$(1)-*.so
251256
CFG_LIB_DSYM_GLOB_arm-linux-androideabi=lib$(1)-*.dylib.dSYM
252257
CFG_GCCISH_CFLAGS_arm-linux-androideabi := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__
@@ -273,6 +278,7 @@ CXX_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-g++
273278
CPP_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-gcc -E
274279
AR_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-ar
275280
CFG_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).so
281+
CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).a
276282
CFG_LIB_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.so
277283
CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.dylib.dSYM
278284
CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabihf := -Wall -g -fPIC -D__arm__
@@ -299,6 +305,7 @@ CXX_arm-unknown-linux-gnueabi=arm-linux-gnueabi-g++
299305
CPP_arm-unknown-linux-gnueabi=arm-linux-gnueabi-gcc -E
300306
AR_arm-unknown-linux-gnueabi=arm-linux-gnueabi-ar
301307
CFG_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).so
308+
CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).a
302309
CFG_LIB_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.so
303310
CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.dylib.dSYM
304311
CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabi := -Wall -g -fPIC -D__arm__
@@ -325,6 +332,7 @@ CXX_mips-unknown-linux-gnu=mips-linux-gnu-g++
325332
CPP_mips-unknown-linux-gnu=mips-linux-gnu-gcc -E
326333
AR_mips-unknown-linux-gnu=mips-linux-gnu-ar
327334
CFG_LIB_NAME_mips-unknown-linux-gnu=lib$(1).so
335+
CFG_STATIC_LIB_NAME_mips-unknown-linux-gnu=lib$(1).a
328336
CFG_LIB_GLOB_mips-unknown-linux-gnu=lib$(1)-*.so
329337
CFG_LIB_DSYM_GLOB_mips-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
330338
CFG_GCCISH_CFLAGS_mips-unknown-linux-gnu := -Wall -g -fPIC -mips32r2 -msoft-float -mabi=32 -mno-compact-eh
@@ -351,6 +359,7 @@ CXX_i686-pc-mingw32=$(CXX)
351359
CPP_i686-pc-mingw32=$(CPP)
352360
AR_i686-pc-mingw32=$(AR)
353361
CFG_LIB_NAME_i686-pc-mingw32=$(1).dll
362+
CFG_STATIC_LIB_NAME_i686-pc-mingw32=$(1).lib
354363
CFG_LIB_GLOB_i686-pc-mingw32=$(1)-*.dll
355364
CFG_LIB_DSYM_GLOB_i686-pc-mingw32=$(1)-*.dylib.dSYM
356365
CFG_GCCISH_CFLAGS_i686-pc-mingw32 := -Wall -Werror -g -m32 -march=i686 -D_WIN32_WINNT=0x0600 -I$(CFG_SRC_DIR)src/etc/mingw-fix-include
@@ -377,6 +386,7 @@ CXX_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-g++
377386
CPP_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-cpp
378387
AR_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-ar
379388
CFG_LIB_NAME_i586-mingw32msvc=$(1).dll
389+
CFG_STATIC_LIB_NAME_i586-mingw32msvc=$(1).lib
380390
CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll
381391
CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM
382392
CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=i586 -m32
@@ -404,6 +414,7 @@ CXX_x86_64-w64-mingw32=$(CXX)
404414
CPP_x86_64-w64-mingw32=$(CPP)
405415
AR_x86_64-w64-mingw32=$(AR)
406416
CFG_LIB_NAME_x86_64-w64-mingw32=$(1).dll
417+
CFG_STATIC_LIB_NAME_x86_64-w64-mingw32=$(1).lib
407418
CFG_LIB_GLOB_x86_64-w64-mingw32=$(1)-*.dll
408419
CFG_LIB_DSYM_GLOB_x86_64-w64-mingw32=$(1)-*.dylib.dSYM
409420
CFG_GCCISH_CFLAGS_x86_64-w64-mingw32 := -Wall -Werror -g -m64 -D_WIN32_WINNT=0x0600
@@ -429,6 +440,7 @@ CXX_x86_64-unknown-freebsd=$(CXX)
429440
CPP_x86_64-unknown-freebsd=$(CPP)
430441
AR_x86_64-unknown-freebsd=$(AR)
431442
CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so
443+
CFG_STATIC_LIB_NAME_x86_64-unknown-freebsd=lib$(1).a
432444
CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so
433445
CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM
434446
CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include

mk/rt.mk

+101-113
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@ define DEF_LIBUV_ARCH_VAR
4646
endef
4747
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_LIBUV_ARCH_VAR,$(t))))
4848

49+
ifdef CFG_ENABLE_FAST_MAKE
50+
LIBUV_DEPS := $(S)/.gitmodules
51+
else
52+
LIBUV_DEPS := $(wildcard \
53+
$(S)src/libuv/* \
54+
$(S)src/libuv/*/* \
55+
$(S)src/libuv/*/*/* \
56+
$(S)src/libuv/*/*/*/*)
57+
endif
58+
59+
LIBUV_NO_LOAD = run-benchmarks.target.mk run-tests.target.mk \
60+
uv_dtrace_header.target.mk uv_dtrace_provider.target.mk
61+
62+
export PYTHONPATH := $(PYTHONPATH):$(S)src/gyp/pylib
63+
4964
define DEF_RUNTIME_TARGETS
5065

5166
######################################################################
@@ -97,31 +112,8 @@ RUNTIME_S_$(1)_$(2) := rt/arch/$$(HOST_$(1))/_context.S \
97112
rt/arch/$$(HOST_$(1))/ccall.S \
98113
rt/arch/$$(HOST_$(1))/record_sp.S
99114

100-
RT_OUTPUT_DIR_$(1) := $(1)/rt
101115
RT_BUILD_DIR_$(1)_$(2) := $$(RT_OUTPUT_DIR_$(1))/stage$(2)
102116

103-
ifeq ($$(CFG_WINDOWSY_$(1)), 1)
104-
LIBUV_OSTYPE_$(1)_$(2) := win
105-
LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
106-
JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/jemalloc.lib
107-
else ifeq ($(OSTYPE_$(1)), apple-darwin)
108-
LIBUV_OSTYPE_$(1)_$(2) := mac
109-
LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
110-
JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
111-
else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
112-
LIBUV_OSTYPE_$(1)_$(2) := freebsd
113-
LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
114-
JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
115-
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
116-
LIBUV_OSTYPE_$(1)_$(2) := android
117-
LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
118-
JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
119-
else
120-
LIBUV_OSTYPE_$(1)_$(2) := linux
121-
LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
122-
JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
123-
endif
124-
125117
RUNTIME_DEF_$(1)_$(2) := $$(RT_OUTPUT_DIR_$(1))/rustrt$$(CFG_DEF_SUFFIX_$(1))
126118
RUNTIME_INCS_$(1)_$(2) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
127119
-I $$(S)src/rt/arch/$$(HOST_$(1)) \
@@ -157,133 +149,129 @@ $$(RT_BUILD_DIR_$(1)_$(2))/arch/$$(HOST_$(1))/libmorestack.a: $$(MORESTACK_OBJ_$
157149
$$(Q)$(AR_$(1)) rcs $$@ $$<
158150

159151
$$(RT_BUILD_DIR_$(1)_$(2))/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)_$(2)) $$(MKFILE_DEPS) \
160-
$$(RUNTIME_DEF_$(1)_$(2)) $$(LIBUV_LIB_$(1)_$(2)) $$(JEMALLOC_LIB_$(1)_$(2))
152+
$$(RUNTIME_DEF_$(1)_$(2)) $$(LIBUV_LIB_$(1)) $$(JEMALLOC_LIB_$(1))
161153
@$$(call E, link: $$@)
162154
$$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)_$(2)) \
163-
$$(JEMALLOC_LIB_$(1)_$(2)) $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(LIBUV_LIB_$(1)_$(2)) \
164-
$$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
155+
$$(JEMALLOC_LIB_$(1)) $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(LIBUV_LIB_$(1)) \
156+
$$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
165157

166-
# FIXME: For some reason libuv's makefiles can't figure out the
167-
# correct definition of CC on the mingw I'm using, so we are
168-
# explicitly using gcc. Also, we have to list environment variables
169-
# first on windows... mysterious
158+
# These could go in rt.mk or rustllvm.mk, they're needed for both.
170159

171-
ifdef CFG_ENABLE_FAST_MAKE
172-
LIBUV_DEPS := $$(S)/.gitmodules
160+
# This regexp has a single $, escaped twice
161+
$(1)/%.bsd.def: %.def.in $$(MKFILE_DEPS)
162+
@$$(call E, def: $$@)
163+
$$(Q)echo "{" > $$@
164+
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
165+
$$(Q)echo "};" >> $$@
166+
167+
$(1)/%.linux.def: %.def.in $$(MKFILE_DEPS)
168+
@$$(call E, def: $$@)
169+
$$(Q)echo "{" > $$@
170+
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
171+
$$(Q)echo "};" >> $$@
172+
173+
$(1)/%.darwin.def: %.def.in $$(MKFILE_DEPS)
174+
@$$(call E, def: $$@)
175+
$$(Q)sed 's/^./_&/' $$< > $$@
176+
177+
$(1)/%.android.def: %.def.in $$(MKFILE_DEPS)
178+
@$$(call E, def: $$@)
179+
$$(Q)echo "{" > $$@
180+
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
181+
$$(Q)echo "};" >> $$@
182+
183+
$(1)/%.mingw32.def: %.def.in $$(MKFILE_DEPS)
184+
@$$(call E, def: $$@)
185+
$$(Q)echo LIBRARY $$* > $$@
186+
$$(Q)echo EXPORTS >> $$@
187+
$$(Q)sed 's/^./ &/' $$< >> $$@
188+
189+
endef
190+
191+
192+
######################################################################
193+
# Runtime third party targets (libuv, jemalloc, etc.)
194+
#
195+
# These targets do not need to be built once per stage, so these
196+
# rules just build them once and then we're done with them.
197+
######################################################################
198+
199+
define DEF_THIRD_PARTY_TARGETS
200+
201+
# $(1) is the target triple
202+
203+
RT_OUTPUT_DIR_$(1) := $(1)/rt
204+
JEMALLOC_TARGET_$(1) := jemalloc_pic
205+
206+
ifeq ($$(CFG_WINDOWSY_$(1)), 1)
207+
LIBUV_OSTYPE_$(1) := win
208+
JEMALLOC_TARGET_$(1) := jemalloc
209+
else ifeq ($(OSTYPE_$(1)), apple-darwin)
210+
LIBUV_OSTYPE_$(1) := mac
211+
else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
212+
LIBUV_OSTYPE_$(1) := freebsd
213+
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
214+
LIBUV_OSTYPE_$(1) := android
215+
JEMALLOC_ARGS_$(1) := --disable-tls
216+
LIBUV_ARGS_$(1) := PLATFORM=android host=android OS=linux
173217
else
174-
LIBUV_DEPS := $$(wildcard \
175-
$$(S)src/libuv/* \
176-
$$(S)src/libuv/*/* \
177-
$$(S)src/libuv/*/*/* \
178-
$$(S)src/libuv/*/*/*/*)
218+
LIBUV_OSTYPE_$(1) := linux
179219
endif
180220

181-
LIBUV_MAKEFILE_$(1)_$(2) := $$(CFG_BUILD_DIR)$$(RT_BUILD_DIR_$(1)_$(2))/libuv/Makefile
182-
LIBUV_NO_LOAD = run-benchmarks.target.mk run-tests.target.mk \
183-
uv_dtrace_header.target.mk uv_dtrace_provider.target.mk
221+
LIBUV_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),uv)
222+
LIBUV_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/libuv/$$(LIBUV_NAME_$(1))
223+
JEMALLOC_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),$$(JEMALLOC_TARGET_$(1)))
224+
JEMALLOC_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/jemalloc/lib/$$(JEMALLOC_NAME_$(1))
184225

185-
export PYTHONPATH := $(PYTHONPATH):$$(S)src/gyp/pylib
226+
LIBUV_MAKEFILE_$(1) := $$(CFG_BUILD_DIR)$$(RT_OUTPUT_DIR_$(1))/libuv/Makefile
186227

187-
$$(LIBUV_MAKEFILE_$(1)_$(2)): $$(LIBUV_DEPS)
228+
$$(LIBUV_MAKEFILE_$(1)): $$(LIBUV_DEPS)
188229
(cd $(S)src/libuv/ && \
189-
$$(CFG_PYTHON) ./gyp_uv -f make -Dtarget_arch=$$(LIBUV_ARCH_$(1)) -D ninja \
190-
-DOS=$$(LIBUV_OSTYPE_$(1)_$(2)) \
230+
$$(CFG_PYTHON) ./gyp_uv -f make -Dtarget_arch=$$(LIBUV_ARCH_$(1)) \
231+
-D ninja \
232+
-DOS=$$(LIBUV_OSTYPE_$(1)) \
191233
-Goutput_dir=$$(@D) --generator-output $$(@D))
192234

193-
# XXX: Shouldn't need platform-specific conditions here
235+
# Windows has a completely different build system for libuv because of mingw. In
236+
# theory when we support msvc then we should be using gyp's msvc output instead
237+
# of mingw's makefile for windows
194238
ifdef CFG_WINDOWSY_$(1)
195-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
239+
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
196240
$$(Q)$$(MAKE) -C $$(S)src/libuv -f Makefile.mingw \
197241
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
198242
AR="$$(AR_$(1))" \
199243
V=$$(VERBOSE)
200244
$$(Q)cp $$(S)src/libuv/libuv.a $$@
201-
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
202-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)_$(2))
203-
$$(Q)$$(MAKE) -C $$(@D) \
204-
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
205-
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
206-
CC="$$(CC_$(1))" \
207-
CXX="$$(CXX_$(1))" \
208-
LINK="$$(CXX_$(1))" \
209-
AR="$$(AR_$(1))" \
210-
PLATFORM=android \
211-
host=android OS=linux \
212-
builddir="." \
213-
BUILDTYPE=Release \
214-
NO_LOAD="$$(LIBUV_NO_LOAD)" \
215-
V=$$(VERBOSE)
216245
else
217-
$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)_$(2))
246+
$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1))
218247
$$(Q)$$(MAKE) -C $$(@D) \
219248
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
220249
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
221250
CC="$$(CC_$(1))" \
222251
CXX="$$(CXX_$(1))" \
223252
AR="$$(AR_$(1))" \
253+
$$(LIBUV_ARGS_$(1)) \
224254
builddir="." \
225255
BUILDTYPE=Release \
226256
NO_LOAD="$$(LIBUV_NO_LOAD)" \
227257
V=$$(VERBOSE)
228258
endif
229259

230-
ifeq ($(OSTYPE_$(1)), linux-androideabi)
231-
$$(JEMALLOC_LIB_$(1)_$(2)):
232-
cd $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc; $(S)src/rt/jemalloc/configure \
233-
--disable-experimental --build=$(CFG_BUILD_TRIPLE) --host=$(1) --disable-tls \
234-
EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
235-
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
236-
CC="$$(CC_$(1))" \
237-
CXX="$$(CXX_$(1))" \
238-
AR="$$(AR_$(1))"
239-
$$(Q)$$(MAKE) -C $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc
240-
else
241-
$$(JEMALLOC_LIB_$(1)_$(2)):
242-
cd $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc; $(S)src/rt/jemalloc/configure \
260+
$$(JEMALLOC_LIB_$(1)):
261+
cd $$(RT_OUTPUT_DIR_$(1))/jemalloc; $(S)src/rt/jemalloc/configure \
262+
$$(JEMALLOC_ARGS_$(1)) \
243263
--disable-experimental --build=$(CFG_BUILD_TRIPLE) --host=$(1) \
244-
EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
245-
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
264+
EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
246265
CC="$$(CC_$(1))" \
247266
CXX="$$(CXX_$(1))" \
248267
AR="$$(AR_$(1))"
249-
$$(Q)$$(MAKE) -C $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc
250-
endif
251-
252-
253-
# These could go in rt.mk or rustllvm.mk, they're needed for both.
254-
255-
# This regexp has a single $, escaped twice
256-
$(1)/%.bsd.def: %.def.in $$(MKFILE_DEPS)
257-
@$$(call E, def: $$@)
258-
$$(Q)echo "{" > $$@
259-
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
260-
$$(Q)echo "};" >> $$@
261-
262-
$(1)/%.linux.def: %.def.in $$(MKFILE_DEPS)
263-
@$$(call E, def: $$@)
264-
$$(Q)echo "{" > $$@
265-
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
266-
$$(Q)echo "};" >> $$@
267-
268-
$(1)/%.darwin.def: %.def.in $$(MKFILE_DEPS)
269-
@$$(call E, def: $$@)
270-
$$(Q)sed 's/^./_&/' $$< > $$@
271-
272-
$(1)/%.android.def: %.def.in $$(MKFILE_DEPS)
273-
@$$(call E, def: $$@)
274-
$$(Q)echo "{" > $$@
275-
$$(Q)sed 's/.$$$$/&;/' $$< >> $$@
276-
$$(Q)echo "};" >> $$@
277-
278-
$(1)/%.mingw32.def: %.def.in $$(MKFILE_DEPS)
279-
@$$(call E, def: $$@)
280-
$$(Q)echo LIBRARY $$* > $$@
281-
$$(Q)echo EXPORTS >> $$@
282-
$$(Q)sed 's/^./ &/' $$< >> $$@
268+
$$(Q)$$(MAKE) -C $$(RT_OUTPUT_DIR_$(1))/jemalloc build_lib_static
283269

284270
endef
285271

286-
# Instantiate template for all stages
272+
# Instantiate template for all stages/targets
273+
$(foreach target,$(CFG_TARGET_TRIPLES), \
274+
$(eval $(call DEF_THIRD_PARTY_TARGETS,$(target))))
287275
$(foreach stage,$(STAGES), \
288-
$(foreach target,$(CFG_TARGET_TRIPLES), \
276+
$(foreach target,$(CFG_TARGET_TRIPLES), \
289277
$(eval $(call DEF_RUNTIME_TARGETS,$(target),$(stage)))))

0 commit comments

Comments
 (0)