CPP_x86_64-unknown-linux-gnu=$(CPP)
AR_x86_64-unknown-linux-gnu=$(AR)
CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so
+CFG_STATIC_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).a
CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64
CPP_i686-unknown-linux-gnu=$(CPP)
AR_i686-unknown-linux-gnu=$(AR)
CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so
+CFG_STATIC_LIB_NAME_i686-unknown-linux-gnu=lib$(1).a
CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32
CPP_x86_64-apple-darwin=$(CPP)
AR_x86_64-apple-darwin=$(AR)
CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib
+CFG_STATIC_LIB_NAME_x86_64-apple-darwin=lib$(1).a
CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib
CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64
CPP_i686-apple-darwin=$(CPP)
AR_i686-apple-darwin=$(AR)
CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib
+CFG_STATIC_LIB_NAME_i686-apple-darwin=lib$(1).a
CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib
CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386
CPP_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc -E
AR_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-ar
CFG_LIB_NAME_arm-linux-androideabi=lib$(1).so
+CFG_STATIC_LIB_NAME_arm-linux-androideabi=lib$(1).a
CFG_LIB_GLOB_arm-linux-androideabi=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_arm-linux-androideabi=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_arm-linux-androideabi := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__
CPP_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-gcc -E
AR_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-ar
CFG_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).so
+CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).a
CFG_LIB_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabihf := -Wall -g -fPIC -D__arm__
CPP_arm-unknown-linux-gnueabi=arm-linux-gnueabi-gcc -E
AR_arm-unknown-linux-gnueabi=arm-linux-gnueabi-ar
CFG_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).so
+CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).a
CFG_LIB_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabi := -Wall -g -fPIC -D__arm__
CPP_mips-unknown-linux-gnu=mips-linux-gnu-gcc -E
AR_mips-unknown-linux-gnu=mips-linux-gnu-ar
CFG_LIB_NAME_mips-unknown-linux-gnu=lib$(1).so
+CFG_STATIC_LIB_NAME_mips-unknown-linux-gnu=lib$(1).a
CFG_LIB_GLOB_mips-unknown-linux-gnu=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_mips-unknown-linux-gnu=lib$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_mips-unknown-linux-gnu := -Wall -g -fPIC -mips32r2 -msoft-float -mabi=32 -mno-compact-eh
CPP_i686-pc-mingw32=$(CPP)
AR_i686-pc-mingw32=$(AR)
CFG_LIB_NAME_i686-pc-mingw32=$(1).dll
+CFG_STATIC_LIB_NAME_i686-pc-mingw32=$(1).lib
CFG_LIB_GLOB_i686-pc-mingw32=$(1)-*.dll
CFG_LIB_DSYM_GLOB_i686-pc-mingw32=$(1)-*.dylib.dSYM
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
CPP_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-cpp
AR_i586-mingw32msvc=$(CFG_MINGW32_CROSS_PATH)/bin/i586-mingw32msvc-ar
CFG_LIB_NAME_i586-mingw32msvc=$(1).dll
+CFG_STATIC_LIB_NAME_i586-mingw32msvc=$(1).lib
CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll
CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=i586 -m32
CPP_x86_64-w64-mingw32=$(CPP)
AR_x86_64-w64-mingw32=$(AR)
CFG_LIB_NAME_x86_64-w64-mingw32=$(1).dll
+CFG_STATIC_LIB_NAME_x86_64-w64-mingw32=$(1).lib
CFG_LIB_GLOB_x86_64-w64-mingw32=$(1)-*.dll
CFG_LIB_DSYM_GLOB_x86_64-w64-mingw32=$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_x86_64-w64-mingw32 := -Wall -Werror -g -m64 -D_WIN32_WINNT=0x0600
CPP_x86_64-unknown-freebsd=$(CPP)
AR_x86_64-unknown-freebsd=$(AR)
CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so
+CFG_STATIC_LIB_NAME_x86_64-unknown-freebsd=lib$(1).a
CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so
CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM
CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include
endef
$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_LIBUV_ARCH_VAR,$(t))))
+ifdef CFG_ENABLE_FAST_MAKE
+LIBUV_DEPS := $(S)/.gitmodules
+else
+LIBUV_DEPS := $(wildcard \
+ $(S)src/libuv/* \
+ $(S)src/libuv/*/* \
+ $(S)src/libuv/*/*/* \
+ $(S)src/libuv/*/*/*/*)
+endif
+
+LIBUV_NO_LOAD = run-benchmarks.target.mk run-tests.target.mk \
+ uv_dtrace_header.target.mk uv_dtrace_provider.target.mk
+
+export PYTHONPATH := $(PYTHONPATH):$(S)src/gyp/pylib
+
define DEF_RUNTIME_TARGETS
######################################################################
rt/arch/$$(HOST_$(1))/ccall.S \
rt/arch/$$(HOST_$(1))/record_sp.S
-RT_OUTPUT_DIR_$(1) := $(1)/rt
RT_BUILD_DIR_$(1)_$(2) := $$(RT_OUTPUT_DIR_$(1))/stage$(2)
-ifeq ($$(CFG_WINDOWSY_$(1)), 1)
- LIBUV_OSTYPE_$(1)_$(2) := win
- LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
- JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/jemalloc.lib
-else ifeq ($(OSTYPE_$(1)), apple-darwin)
- LIBUV_OSTYPE_$(1)_$(2) := mac
- LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
- JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
-else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
- LIBUV_OSTYPE_$(1)_$(2) := freebsd
- LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
- JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
-else ifeq ($(OSTYPE_$(1)), linux-androideabi)
- LIBUV_OSTYPE_$(1)_$(2) := android
- LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
- JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
-else
- LIBUV_OSTYPE_$(1)_$(2) := linux
- LIBUV_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/libuv/libuv.a
- JEMALLOC_LIB_$(1)_$(2) := $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc/lib/libjemalloc_pic.a
-endif
-
RUNTIME_DEF_$(1)_$(2) := $$(RT_OUTPUT_DIR_$(1))/rustrt$$(CFG_DEF_SUFFIX_$(1))
RUNTIME_INCS_$(1)_$(2) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
-I $$(S)src/rt/arch/$$(HOST_$(1)) \
$$(Q)$(AR_$(1)) rcs $$@ $$<
$$(RT_BUILD_DIR_$(1)_$(2))/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)_$(2)) $$(MKFILE_DEPS) \
- $$(RUNTIME_DEF_$(1)_$(2)) $$(LIBUV_LIB_$(1)_$(2)) $$(JEMALLOC_LIB_$(1)_$(2))
+ $$(RUNTIME_DEF_$(1)_$(2)) $$(LIBUV_LIB_$(1)) $$(JEMALLOC_LIB_$(1))
@$$(call E, link: $$@)
$$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)_$(2)) \
- $$(JEMALLOC_LIB_$(1)_$(2)) $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(LIBUV_LIB_$(1)_$(2)) \
- $$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
+ $$(JEMALLOC_LIB_$(1)) $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(LIBUV_LIB_$(1)) \
+ $$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)_$(2)),$$(CFG_RUNTIME_$(1)))
-# FIXME: For some reason libuv's makefiles can't figure out the
-# correct definition of CC on the mingw I'm using, so we are
-# explicitly using gcc. Also, we have to list environment variables
-# first on windows... mysterious
+# These could go in rt.mk or rustllvm.mk, they're needed for both.
-ifdef CFG_ENABLE_FAST_MAKE
-LIBUV_DEPS := $$(S)/.gitmodules
+# This regexp has a single $, escaped twice
+$(1)/%.bsd.def: %.def.in $$(MKFILE_DEPS)
+ @$$(call E, def: $$@)
+ $$(Q)echo "{" > $$@
+ $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
+ $$(Q)echo "};" >> $$@
+
+$(1)/%.linux.def: %.def.in $$(MKFILE_DEPS)
+ @$$(call E, def: $$@)
+ $$(Q)echo "{" > $$@
+ $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
+ $$(Q)echo "};" >> $$@
+
+$(1)/%.darwin.def: %.def.in $$(MKFILE_DEPS)
+ @$$(call E, def: $$@)
+ $$(Q)sed 's/^./_&/' $$< > $$@
+
+$(1)/%.android.def: %.def.in $$(MKFILE_DEPS)
+ @$$(call E, def: $$@)
+ $$(Q)echo "{" > $$@
+ $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
+ $$(Q)echo "};" >> $$@
+
+$(1)/%.mingw32.def: %.def.in $$(MKFILE_DEPS)
+ @$$(call E, def: $$@)
+ $$(Q)echo LIBRARY $$* > $$@
+ $$(Q)echo EXPORTS >> $$@
+ $$(Q)sed 's/^./ &/' $$< >> $$@
+
+endef
+
+
+######################################################################
+# Runtime third party targets (libuv, jemalloc, etc.)
+#
+# These targets do not need to be built once per stage, so these
+# rules just build them once and then we're done with them.
+######################################################################
+
+define DEF_THIRD_PARTY_TARGETS
+
+# $(1) is the target triple
+
+RT_OUTPUT_DIR_$(1) := $(1)/rt
+JEMALLOC_TARGET_$(1) := jemalloc_pic
+
+ifeq ($$(CFG_WINDOWSY_$(1)), 1)
+ LIBUV_OSTYPE_$(1) := win
+ JEMALLOC_TARGET_$(1) := jemalloc
+else ifeq ($(OSTYPE_$(1)), apple-darwin)
+ LIBUV_OSTYPE_$(1) := mac
+else ifeq ($(OSTYPE_$(1)), unknown-freebsd)
+ LIBUV_OSTYPE_$(1) := freebsd
+else ifeq ($(OSTYPE_$(1)), linux-androideabi)
+ LIBUV_OSTYPE_$(1) := android
+ JEMALLOC_ARGS_$(1) := --disable-tls
+ LIBUV_ARGS_$(1) := PLATFORM=android host=android OS=linux
else
-LIBUV_DEPS := $$(wildcard \
- $$(S)src/libuv/* \
- $$(S)src/libuv/*/* \
- $$(S)src/libuv/*/*/* \
- $$(S)src/libuv/*/*/*/*)
+ LIBUV_OSTYPE_$(1) := linux
endif
-LIBUV_MAKEFILE_$(1)_$(2) := $$(CFG_BUILD_DIR)$$(RT_BUILD_DIR_$(1)_$(2))/libuv/Makefile
-LIBUV_NO_LOAD = run-benchmarks.target.mk run-tests.target.mk \
- uv_dtrace_header.target.mk uv_dtrace_provider.target.mk
+LIBUV_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),uv)
+LIBUV_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/libuv/$$(LIBUV_NAME_$(1))
+JEMALLOC_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),$$(JEMALLOC_TARGET_$(1)))
+JEMALLOC_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/jemalloc/lib/$$(JEMALLOC_NAME_$(1))
-export PYTHONPATH := $(PYTHONPATH):$$(S)src/gyp/pylib
+LIBUV_MAKEFILE_$(1) := $$(CFG_BUILD_DIR)$$(RT_OUTPUT_DIR_$(1))/libuv/Makefile
-$$(LIBUV_MAKEFILE_$(1)_$(2)): $$(LIBUV_DEPS)
+$$(LIBUV_MAKEFILE_$(1)): $$(LIBUV_DEPS)
(cd $(S)src/libuv/ && \
- $$(CFG_PYTHON) ./gyp_uv -f make -Dtarget_arch=$$(LIBUV_ARCH_$(1)) -D ninja \
- -DOS=$$(LIBUV_OSTYPE_$(1)_$(2)) \
+ $$(CFG_PYTHON) ./gyp_uv -f make -Dtarget_arch=$$(LIBUV_ARCH_$(1)) \
+ -D ninja \
+ -DOS=$$(LIBUV_OSTYPE_$(1)) \
-Goutput_dir=$$(@D) --generator-output $$(@D))
-# XXX: Shouldn't need platform-specific conditions here
+# Windows has a completely different build system for libuv because of mingw. In
+# theory when we support msvc then we should be using gyp's msvc output instead
+# of mingw's makefile for windows
ifdef CFG_WINDOWSY_$(1)
-$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS)
+$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
$$(Q)$$(MAKE) -C $$(S)src/libuv -f Makefile.mingw \
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
AR="$$(AR_$(1))" \
V=$$(VERBOSE)
$$(Q)cp $$(S)src/libuv/libuv.a $$@
-else ifeq ($(OSTYPE_$(1)), linux-androideabi)
-$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)_$(2))
- $$(Q)$$(MAKE) -C $$(@D) \
- CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
- LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
- CC="$$(CC_$(1))" \
- CXX="$$(CXX_$(1))" \
- LINK="$$(CXX_$(1))" \
- AR="$$(AR_$(1))" \
- PLATFORM=android \
- host=android OS=linux \
- builddir="." \
- BUILDTYPE=Release \
- NO_LOAD="$$(LIBUV_NO_LOAD)" \
- V=$$(VERBOSE)
else
-$$(LIBUV_LIB_$(1)_$(2)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)_$(2))
+$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1))
$$(Q)$$(MAKE) -C $$(@D) \
CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
CC="$$(CC_$(1))" \
CXX="$$(CXX_$(1))" \
AR="$$(AR_$(1))" \
+ $$(LIBUV_ARGS_$(1)) \
builddir="." \
BUILDTYPE=Release \
NO_LOAD="$$(LIBUV_NO_LOAD)" \
V=$$(VERBOSE)
endif
-ifeq ($(OSTYPE_$(1)), linux-androideabi)
-$$(JEMALLOC_LIB_$(1)_$(2)):
- cd $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc; $(S)src/rt/jemalloc/configure \
- --disable-experimental --build=$(CFG_BUILD_TRIPLE) --host=$(1) --disable-tls \
- EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
- LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
- CC="$$(CC_$(1))" \
- CXX="$$(CXX_$(1))" \
- AR="$$(AR_$(1))"
- $$(Q)$$(MAKE) -C $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc
-else
-$$(JEMALLOC_LIB_$(1)_$(2)):
- cd $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc; $(S)src/rt/jemalloc/configure \
+$$(JEMALLOC_LIB_$(1)):
+ cd $$(RT_OUTPUT_DIR_$(1))/jemalloc; $(S)src/rt/jemalloc/configure \
+ $$(JEMALLOC_ARGS_$(1)) \
--disable-experimental --build=$(CFG_BUILD_TRIPLE) --host=$(1) \
- EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \
- LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
+ EXTRA_CFLAGS="$$(CFG_GCCISH_CFLAGS) $$(LIBUV_FLAGS_$$(HOST_$(1)))" \
CC="$$(CC_$(1))" \
CXX="$$(CXX_$(1))" \
AR="$$(AR_$(1))"
- $$(Q)$$(MAKE) -C $$(RT_BUILD_DIR_$(1)_$(2))/jemalloc
-endif
-
-
-# These could go in rt.mk or rustllvm.mk, they're needed for both.
-
-# This regexp has a single $, escaped twice
-$(1)/%.bsd.def: %.def.in $$(MKFILE_DEPS)
- @$$(call E, def: $$@)
- $$(Q)echo "{" > $$@
- $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
- $$(Q)echo "};" >> $$@
-
-$(1)/%.linux.def: %.def.in $$(MKFILE_DEPS)
- @$$(call E, def: $$@)
- $$(Q)echo "{" > $$@
- $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
- $$(Q)echo "};" >> $$@
-
-$(1)/%.darwin.def: %.def.in $$(MKFILE_DEPS)
- @$$(call E, def: $$@)
- $$(Q)sed 's/^./_&/' $$< > $$@
-
-$(1)/%.android.def: %.def.in $$(MKFILE_DEPS)
- @$$(call E, def: $$@)
- $$(Q)echo "{" > $$@
- $$(Q)sed 's/.$$$$/&;/' $$< >> $$@
- $$(Q)echo "};" >> $$@
-
-$(1)/%.mingw32.def: %.def.in $$(MKFILE_DEPS)
- @$$(call E, def: $$@)
- $$(Q)echo LIBRARY $$* > $$@
- $$(Q)echo EXPORTS >> $$@
- $$(Q)sed 's/^./ &/' $$< >> $$@
+ $$(Q)$$(MAKE) -C $$(RT_OUTPUT_DIR_$(1))/jemalloc build_lib_static
endef
-# Instantiate template for all stages
+# Instantiate template for all stages/targets
+$(foreach target,$(CFG_TARGET_TRIPLES), \
+ $(eval $(call DEF_THIRD_PARTY_TARGETS,$(target))))
$(foreach stage,$(STAGES), \
- $(foreach target,$(CFG_TARGET_TRIPLES), \
+ $(foreach target,$(CFG_TARGET_TRIPLES), \
$(eval $(call DEF_RUNTIME_TARGETS,$(target),$(stage)))))