From 681fc824569cc2d37522b9927b9a6ecbfffee3eb Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 15:38:00 -0700 Subject: [PATCH 01/10] mk: Remove a bunch of unused directives --- mk/cfg/aarch64-apple-ios.mk | 4 ---- mk/cfg/aarch64-linux-android.mk | 4 ---- mk/cfg/aarch64-unknown-linux-gnu.mk | 4 ---- mk/cfg/arm-linux-androideabi.mk | 4 ---- mk/cfg/arm-unknown-linux-gnueabi.mk | 4 ---- mk/cfg/arm-unknown-linux-gnueabihf.mk | 4 ---- mk/cfg/armv7-apple-ios.mk | 4 ---- mk/cfg/armv7s-apple-ios.mk | 4 ---- mk/cfg/i386-apple-ios.mk | 4 ---- mk/cfg/i686-apple-darwin.mk | 4 ---- mk/cfg/i686-pc-windows-gnu.mk | 4 ---- mk/cfg/i686-unknown-linux-gnu.mk | 4 ---- mk/cfg/mips-unknown-linux-gnu.mk | 4 ---- mk/cfg/mipsel-unknown-linux-gnu.mk | 4 ---- mk/cfg/powerpc-unknown-linux-gnu.mk | 4 ---- mk/cfg/x86_64-apple-darwin.mk | 4 ---- mk/cfg/x86_64-apple-ios.mk | 4 ---- mk/cfg/x86_64-pc-windows-gnu.mk | 4 ---- mk/cfg/x86_64-unknown-bitrig.mk | 4 ---- mk/cfg/x86_64-unknown-dragonfly.mk | 4 ---- mk/cfg/x86_64-unknown-freebsd.mk | 4 ---- mk/cfg/x86_64-unknown-linux-gnu.mk | 4 ---- mk/cfg/x86_64-unknown-openbsd.mk | 4 ---- mk/rustllvm.mk | 2 -- 24 files changed, 94 deletions(-) diff --git a/mk/cfg/aarch64-apple-ios.mk b/mk/cfg/aarch64-apple-ios.mk index 0219ab960579b..7767129a5e218 100644 --- a/mk/cfg/aarch64-apple-ios.mk +++ b/mk/cfg/aarch64-apple-ios.mk @@ -20,16 +20,12 @@ CFG_GCCISH_CFLAGS_aarch64-apple-ios := -Wall -Werror -fPIC $(CFG_IOS_SDK_FLAGS_a CFG_GCCISH_CXXFLAGS_aarch64-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_aarch64-apple-ios) -I$(CFG_IOS_SDK_aarch64-apple-ios)/usr/include/c++/4.2.1 CFG_GCCISH_LINK_FLAGS_aarch64-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_aarch64-apple-ios) -Wl,-no_compact_unwind CFG_GCCISH_DEF_FLAG_aarch64-apple-ios := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_aarch64-apple-ios := -CFG_GCCISH_POST_LIB_FLAGS_aarch64-apple-ios := -CFG_DEF_SUFFIX_aarch64-apple-ios := .darwin.def CFG_LLC_FLAGS_aarch64-apple-ios := -mattr=+neon,+cyclone,+fp-armv8 CFG_INSTALL_NAME_aarch64-apple-ios = -Wl,-install_name,@rpath/$(1) CFG_LIBUV_LINK_FLAGS_aarch64-apple-ios = CFG_EXE_SUFFIX_aarch64-apple-ios := CFG_WINDOWSY_aarch64-apple-ios := CFG_UNIXY_aarch64-apple-ios := 1 -CFG_PATH_MUNGE_aarch64-apple-ios := true CFG_LDPATH_aarch64-apple-ios := CFG_RUN_aarch64-apple-ios = $(2) CFG_RUN_TARG_aarch64-apple-ios = $(call CFG_RUN_aarch64-apple-ios,,$(2)) diff --git a/mk/cfg/aarch64-linux-android.mk b/mk/cfg/aarch64-linux-android.mk index a6f7f2ba1d66e..d7a1405c3d0a8 100644 --- a/mk/cfg/aarch64-linux-android.mk +++ b/mk/cfg/aarch64-linux-android.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_aarch64-linux-android := -Wall -g -fPIC -D__aarch64__ -DANDROI CFG_GCCISH_CXXFLAGS_aarch64-linux-android := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_aarch64-linux-android := -shared -fPIC -ldl -g -lm -lsupc++ CFG_GCCISH_DEF_FLAG_aarch64-linux-android := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_aarch64-linux-android := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_aarch64-linux-android := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_aarch64-linux-android := .android.def CFG_LLC_FLAGS_aarch64-linux-android := CFG_INSTALL_NAME_aarch64-linux-android = CFG_EXE_SUFFIX_aarch64-linux-android := CFG_WINDOWSY_aarch64-linux-android := CFG_UNIXY_aarch64-linux-android := 1 -CFG_PATH_MUNGE_aarch64-linux-android := true CFG_LDPATH_aarch64-linux-android := CFG_RUN_aarch64-linux-android= CFG_RUN_TARG_aarch64-linux-android= diff --git a/mk/cfg/aarch64-unknown-linux-gnu.mk b/mk/cfg/aarch64-unknown-linux-gnu.mk index fade026654960..6637423e4951a 100644 --- a/mk/cfg/aarch64-unknown-linux-gnu.mk +++ b/mk/cfg/aarch64-unknown-linux-gnu.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_aarch64-unknown-linux-gnu := -Wall -g -fPIC -D__aarch64__ $(CF CFG_GCCISH_CXXFLAGS_aarch64-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_aarch64-unknown-linux-gnu := -shared -fPIC -g CFG_GCCISH_DEF_FLAG_aarch64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_aarch64-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_aarch64-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_aarch64-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_aarch64-unknown-linux-gnu := CFG_INSTALL_NAME_aarch64-unknown-linux-gnu = CFG_EXE_SUFFIX_aarch64-unknown-linux-gnu := CFG_WINDOWSY_aarch64-unknown-linux-gnu := CFG_UNIXY_aarch64-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_aarch64-unknown-linux-gnu := true CFG_LDPATH_aarch64-unknown-linux-gnu := CFG_RUN_aarch64-unknown-linux-gnu=$(2) CFG_RUN_TARG_aarch64-unknown-linux-gnu=$(call CFG_RUN_aarch64-unknown-linux-gnu,,$(2)) diff --git a/mk/cfg/arm-linux-androideabi.mk b/mk/cfg/arm-linux-androideabi.mk index 471220e2b6618..fdd38ba75fe58 100644 --- a/mk/cfg/arm-linux-androideabi.mk +++ b/mk/cfg/arm-linux-androideabi.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_arm-linux-androideabi := -Wall -g -fPIC -D__arm__ -DANDROID -D CFG_GCCISH_CXXFLAGS_arm-linux-androideabi := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_arm-linux-androideabi := -shared -fPIC -ldl -g -lm -lsupc++ CFG_GCCISH_DEF_FLAG_arm-linux-androideabi := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_arm-linux-androideabi := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_arm-linux-androideabi := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_arm-linux-androideabi := .android.def CFG_LLC_FLAGS_arm-linux-androideabi := CFG_INSTALL_NAME_arm-linux-androideabi = CFG_EXE_SUFFIX_arm-linux-androideabi := CFG_WINDOWSY_arm-linux-androideabi := CFG_UNIXY_arm-linux-androideabi := 1 -CFG_PATH_MUNGE_arm-linux-androideabi := true CFG_LDPATH_arm-linux-androideabi := CFG_RUN_arm-linux-androideabi= CFG_RUN_TARG_arm-linux-androideabi= diff --git a/mk/cfg/arm-unknown-linux-gnueabi.mk b/mk/cfg/arm-unknown-linux-gnueabi.mk index b4c604b26bae0..9a91097458e90 100644 --- a/mk/cfg/arm-unknown-linux-gnueabi.mk +++ b/mk/cfg/arm-unknown-linux-gnueabi.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabi := -Wall -g -fPIC -D__arm__ -mfpu=vf CFG_GCCISH_CXXFLAGS_arm-unknown-linux-gnueabi := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-gnueabi := -shared -fPIC -g CFG_GCCISH_DEF_FLAG_arm-unknown-linux-gnueabi := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-linux-gnueabi := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-linux-gnueabi := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_arm-unknown-linux-gnueabi := .linux.def CFG_LLC_FLAGS_arm-unknown-linux-gnueabi := CFG_INSTALL_NAME_arm-unknown-linux-gnueabi = CFG_EXE_SUFFIX_arm-unknown-linux-gnueabi := CFG_WINDOWSY_arm-unknown-linux-gnueabi := CFG_UNIXY_arm-unknown-linux-gnueabi := 1 -CFG_PATH_MUNGE_arm-unknown-linux-gnueabi := true CFG_LDPATH_arm-unknown-linux-gnueabi := CFG_RUN_arm-unknown-linux-gnueabi=$(2) CFG_RUN_TARG_arm-unknown-linux-gnueabi=$(call CFG_RUN_arm-unknown-linux-gnueabi,,$(2)) diff --git a/mk/cfg/arm-unknown-linux-gnueabihf.mk b/mk/cfg/arm-unknown-linux-gnueabihf.mk index 4f02de0f6b5e6..0bd661ea00db2 100644 --- a/mk/cfg/arm-unknown-linux-gnueabihf.mk +++ b/mk/cfg/arm-unknown-linux-gnueabihf.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabihf := -Wall -g -fPIC -D__arm__ $(CFLA CFG_GCCISH_CXXFLAGS_arm-unknown-linux-gnueabihf := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-gnueabihf := -shared -fPIC -g CFG_GCCISH_DEF_FLAG_arm-unknown-linux-gnueabihf := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-linux-gnueabihf := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-linux-gnueabihf := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_arm-unknown-linux-gnueabihf := .linux.def CFG_LLC_FLAGS_arm-unknown-linux-gnueabihf := CFG_INSTALL_NAME_ar,-unknown-linux-gnueabihf = CFG_EXE_SUFFIX_arm-unknown-linux-gnueabihf := CFG_WINDOWSY_arm-unknown-linux-gnueabihf := CFG_UNIXY_arm-unknown-linux-gnueabihf := 1 -CFG_PATH_MUNGE_arm-unknown-linux-gnueabihf := true CFG_LDPATH_arm-unknown-linux-gnueabihf := CFG_RUN_arm-unknown-linux-gnueabihf=$(2) CFG_RUN_TARG_arm-unknown-linux-gnueabihf=$(call CFG_RUN_arm-unknown-linux-gnueabihf,,$(2)) diff --git a/mk/cfg/armv7-apple-ios.mk b/mk/cfg/armv7-apple-ios.mk index aee4e64addfc1..d4696976574e9 100644 --- a/mk/cfg/armv7-apple-ios.mk +++ b/mk/cfg/armv7-apple-ios.mk @@ -19,15 +19,11 @@ CFG_GCCISH_CFLAGS_armv7-apple-ios := -Wall -Werror -g -fPIC $(CFG_IOS_SDK_FLAGS_ CFG_GCCISH_CXXFLAGS_armv7-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_armv7-apple-ios) -I$(CFG_IOS_SDK_armv7-apple-ios)/usr/include/c++/4.2.1 CFG_GCCISH_LINK_FLAGS_armv7-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_armv7-apple-ios) -Wl,-no_compact_unwind CFG_GCCISH_DEF_FLAG_armv7-apple-ios := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_armv7-apple-ios := -CFG_GCCISH_POST_LIB_FLAGS_armv7-apple-ios := -CFG_DEF_SUFFIX_armv7-apple-ios := .darwin.def CFG_LLC_FLAGS_armv7-apple-ios := -mattr=+vfp3,+v7,+neon -march=arm CFG_INSTALL_NAME_armv7-apple-ios = -Wl,-install_name,@rpath/$(1) CFG_EXE_SUFFIX_armv7-apple-ios := CFG_WINDOWSY_armv7-apple-ios := CFG_UNIXY_armv7-apple-ios := 1 -CFG_PATH_MUNGE_armv7-apple-ios := true CFG_LDPATH_armv7-apple-ios := CFG_RUN_armv7-apple-ios = $(2) CFG_RUN_TARG_armv7-apple-ios = $(call CFG_RUN_armv7-apple-ios,,$(2)) diff --git a/mk/cfg/armv7s-apple-ios.mk b/mk/cfg/armv7s-apple-ios.mk index 7540bd44de878..96ca07648949f 100644 --- a/mk/cfg/armv7s-apple-ios.mk +++ b/mk/cfg/armv7s-apple-ios.mk @@ -19,15 +19,11 @@ CFG_GCCISH_CFLAGS_armv7s-apple-ios := -Wall -Werror -g -fPIC $(CFG_IOS_SDK_FLAGS CFG_GCCISH_CXXFLAGS_armv7s-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_armv7s-apple-ios) -I$(CFG_IOS_SDK_armv7s-apple-ios)/usr/include/c++/4.2.1 CFG_GCCISH_LINK_FLAGS_armv7s-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_armv7s-apple-ios) -Wl,-no_compact_unwind CFG_GCCISH_DEF_FLAG_armv7s-apple-ios := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_armv7s-apple-ios := -CFG_GCCISH_POST_LIB_FLAGS_armv7s-apple-ios := -CFG_DEF_SUFFIX_armv7s-apple-ios := .darwin.def CFG_LLC_FLAGS_armv7s-apple-ios := -mattr=+vfp4,+v7,+neon CFG_INSTALL_NAME_armv7s-apple-ios = -Wl,-install_name,@rpath/$(1) CFG_EXE_SUFFIX_armv7s-apple-ios := CFG_WINDOWSY_armv7s-apple-ios := CFG_UNIXY_armv7s-apple-ios := 1 -CFG_PATH_MUNGE_armv7s-apple-ios := true CFG_LDPATH_armv7s-apple-ios := CFG_RUN_armv7s-apple-ios = $(2) CFG_RUN_TARG_armv7s-apple-ios = $(call CFG_RUN_armv7s-apple-ios,,$(2)) diff --git a/mk/cfg/i386-apple-ios.mk b/mk/cfg/i386-apple-ios.mk index e84bf49d4079a..373e2e3b65d15 100644 --- a/mk/cfg/i386-apple-ios.mk +++ b/mk/cfg/i386-apple-ios.mk @@ -18,15 +18,11 @@ CFG_GCCISH_CFLAGS_i386-apple-ios := -Wall -Werror -g -fPIC -m32 $(CFG_IOSSIM_FLA CFG_GCCISH_CXXFLAGS_i386-apple-ios := -fno-rtti $(CFG_IOSSIM_FLAGS_i386-apple-ios) -I$(CFG_IOSSIM_SDK_i386-apple-ios)/usr/include/c++/4.2.1 CFG_GCCISH_LINK_FLAGS_i386-apple-ios := -lpthread -m32 -Wl,-no_compact_unwind -m32 -Wl,-syslibroot $(CFG_IOSSIM_SDK_i386-apple-ios) CFG_GCCISH_DEF_FLAG_i386-apple-ios := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_i386-apple-ios := -CFG_GCCISH_POST_LIB_FLAGS_i386-apple-ios := -CFG_DEF_SUFFIX_i386-apple-ios := .darwin.def CFG_LLC_FLAGS_i386-apple-ios = CFG_INSTALL_NAME_i386-apple-ios = -Wl,-install_name,@rpath/$(1) CFG_EXE_SUFFIX_i386-apple-ios := CFG_WINDOWSY_i386-apple-ios := CFG_UNIXY_i386-apple-ios := 1 -CFG_PATH_MUNGE_i386-apple-ios = :true CFG_LDPATH_i386-apple-ios = CFG_RUN_i386-apple-ios = $(2) CFG_RUN_TARG_i386-apple-ios = $(call CFG_RUN_i386-apple-ios,,$(2)) diff --git a/mk/cfg/i686-apple-darwin.mk b/mk/cfg/i686-apple-darwin.mk index e935ce053e02a..7ebb492bb21fe 100644 --- a/mk/cfg/i686-apple-darwin.mk +++ b/mk/cfg/i686-apple-darwin.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386 $( CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -pthread -framework CoreServices -m32 CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin := -CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin := -CFG_DEF_SUFFIX_i686-apple-darwin := .darwin.def CFG_LLC_FLAGS_i686-apple-darwin := CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) CFG_EXE_SUFFIX_i686-apple-darwin := CFG_WINDOWSY_i686-apple-darwin := CFG_UNIXY_i686-apple-darwin := 1 -CFG_PATH_MUNGE_i686-apple-darwin := true CFG_LDPATH_i686-apple-darwin := CFG_RUN_i686-apple-darwin=$(2) CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2)) diff --git a/mk/cfg/i686-pc-windows-gnu.mk b/mk/cfg/i686-pc-windows-gnu.mk index 357a321688bca..174671a9a8812 100644 --- a/mk/cfg/i686-pc-windows-gnu.mk +++ b/mk/cfg/i686-pc-windows-gnu.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_i686-pc-windows-gnu := -Wall -Werror -g -m32 -D_WIN32_WINNT=0x CFG_GCCISH_CXXFLAGS_i686-pc-windows-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_i686-pc-windows-gnu := -shared -g -m32 CFG_GCCISH_DEF_FLAG_i686-pc-windows-gnu := -CFG_GCCISH_PRE_LIB_FLAGS_i686-pc-windows-gnu := -CFG_GCCISH_POST_LIB_FLAGS_i686-pc-windows-gnu := -CFG_DEF_SUFFIX_i686-pc-windows-gnu := .windows.def CFG_LLC_FLAGS_i686-pc-windows-gnu := CFG_INSTALL_NAME_i686-pc-windows-gnu = CFG_EXE_SUFFIX_i686-pc-windows-gnu := .exe CFG_WINDOWSY_i686-pc-windows-gnu := 1 CFG_UNIXY_i686-pc-windows-gnu := -CFG_PATH_MUNGE_i686-pc-windows-gnu := CFG_LDPATH_i686-pc-windows-gnu := CFG_RUN_i686-pc-windows-gnu=$(2) CFG_RUN_TARG_i686-pc-windows-gnu=$(call CFG_RUN_i686-pc-windows-gnu,,$(2)) diff --git a/mk/cfg/i686-unknown-linux-gnu.mk b/mk/cfg/i686-unknown-linux-gnu.mk index 1cc9c143e8d47..88c0907f63b2a 100644 --- a/mk/cfg/i686-unknown-linux-gnu.mk +++ b/mk/cfg/i686-unknown-linux-gnu.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 $(CFLAGS CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32 CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_i686-unknown-linux-gnu := CFG_INSTALL_NAME_i686-unknown-linux-gnu = CFG_EXE_SUFFIX_i686-unknown-linux-gnu = CFG_WINDOWSY_i686-unknown-linux-gnu := CFG_UNIXY_i686-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_i686-unknown-linux-gnu := true CFG_LDPATH_i686-unknown-linux-gnu := CFG_RUN_i686-unknown-linux-gnu=$(2) CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2)) diff --git a/mk/cfg/mips-unknown-linux-gnu.mk b/mk/cfg/mips-unknown-linux-gnu.mk index c5d84966f8526..ba5f6d0e75634 100644 --- a/mk/cfg/mips-unknown-linux-gnu.mk +++ b/mk/cfg/mips-unknown-linux-gnu.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_mips-unknown-linux-gnu := -Wall -g -fPIC -mips32r2 -msoft-floa CFG_GCCISH_CXXFLAGS_mips-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_mips-unknown-linux-gnu := -shared -fPIC -g -mips32r2 -msoft-float -mabi=32 CFG_GCCISH_DEF_FLAG_mips-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_mips-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_mips-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_mips-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_mips-unknown-linux-gnu := CFG_INSTALL_NAME_mips-unknown-linux-gnu = CFG_EXE_SUFFIX_mips-unknown-linux-gnu := CFG_WINDOWSY_mips-unknown-linux-gnu := CFG_UNIXY_mips-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_mips-unknown-linux-gnu := true CFG_LDPATH_mips-unknown-linux-gnu := CFG_RUN_mips-unknown-linux-gnu= CFG_RUN_TARG_mips-unknown-linux-gnu= diff --git a/mk/cfg/mipsel-unknown-linux-gnu.mk b/mk/cfg/mipsel-unknown-linux-gnu.mk index eb2f300abffd8..539038c743460 100644 --- a/mk/cfg/mipsel-unknown-linux-gnu.mk +++ b/mk/cfg/mipsel-unknown-linux-gnu.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_mipsel-unknown-linux-gnu := -Wall -g -fPIC -mips32 -mabi=32 $( CFG_GCCISH_CXXFLAGS_mipsel-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_mipsel-unknown-linux-gnu := -shared -fPIC -g -mips32 CFG_GCCISH_DEF_FLAG_mipsel-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_mipsel-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_mipsel-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_mipsel-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_mipsel-unknown-linux-gnu := CFG_INSTALL_NAME_mipsel-unknown-linux-gnu = CFG_EXE_SUFFIX_mipsel-unknown-linux-gnu := CFG_WINDOWSY_mipsel-unknown-linux-gnu := CFG_UNIXY_mipsel-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_mipsel-unknown-linux-gnu := true CFG_LDPATH_mipsel-unknown-linux-gnu := CFG_RUN_mipsel-unknown-linux-gnu= CFG_RUN_TARG_mipsel-unknown-linux-gnu= diff --git a/mk/cfg/powerpc-unknown-linux-gnu.mk b/mk/cfg/powerpc-unknown-linux-gnu.mk index fd37bd663f7dd..dda957673eba6 100644 --- a/mk/cfg/powerpc-unknown-linux-gnu.mk +++ b/mk/cfg/powerpc-unknown-linux-gnu.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_powerpc-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 $(CFL CFG_GCCISH_CXXFLAGS_powerpc-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_powerpc-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32 CFG_GCCISH_DEF_FLAG_powerpc-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_powerpc-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_powerpc-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_powerpc-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_powerpc-unknown-linux-gnu := CFG_INSTALL_NAME_powerpc-unknown-linux-gnu = CFG_EXE_SUFFIX_powerpc-unknown-linux-gnu = CFG_WINDOWSY_powerpc-unknown-linux-gnu := CFG_UNIXY_powerpc-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_powerpc-unknown-linux-gnu := true CFG_LDPATH_powerpc-unknown-linux-gnu := CFG_RUN_powerpc-unknown-linux-gnu=$(2) CFG_RUN_TARG_powerpc-unknown-linux-gnu=$(call CFG_RUN_powerpc-unknown-linux-gnu,,$(2)) diff --git a/mk/cfg/x86_64-apple-darwin.mk b/mk/cfg/x86_64-apple-darwin.mk index dbd67542ab75a..4c68d3dcf37b4 100644 --- a/mk/cfg/x86_64-apple-darwin.mk +++ b/mk/cfg/x86_64-apple-darwin.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_6 CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -pthread -framework CoreServices -m64 CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin := -CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := -CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def CFG_LLC_FLAGS_x86_64-apple-darwin := CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) CFG_EXE_SUFFIX_x86_64-apple-darwin := CFG_WINDOWSY_x86_64-apple-darwin := CFG_UNIXY_x86_64-apple-darwin := 1 -CFG_PATH_MUNGE_x86_64-apple-darwin := true CFG_LDPATH_x86_64-apple-darwin := CFG_RUN_x86_64-apple-darwin=$(2) CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) diff --git a/mk/cfg/x86_64-apple-ios.mk b/mk/cfg/x86_64-apple-ios.mk index b3f05a895a49f..dd6080fdb0bab 100644 --- a/mk/cfg/x86_64-apple-ios.mk +++ b/mk/cfg/x86_64-apple-ios.mk @@ -20,16 +20,12 @@ CFG_GCCISH_CFLAGS_x86_64-apple-ios := -Wall -Werror -fPIC $(CFG_IOSSIM_FLAGS_x86 CFG_GCCISH_CXXFLAGS_x86_64-apple-ios := -fno-rtti $(CFG_IOSSIM_FLAGS_x86_64-apple-ios) -I$(CFG_IOSSIM_SDK_x86_64-apple-ios)/usr/include/c++/4.2.1 CFG_GCCISH_LINK_FLAGS_x86_64-apple-ios := -lpthread -Wl,-no_compact_unwind -m64 -Wl,-syslibroot $(CFG_IOSSIM_SDK_x86_64-apple-ios) CFG_GCCISH_DEF_FLAG_x86_64-apple-ios := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-ios := -CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-ios := -CFG_DEF_SUFFIX_x86_64-apple-ios := .darwin.def CFG_LLC_FLAGS_x86_64-apple-ios := CFG_INSTALL_NAME_x86_64-apple-ios = -Wl,-install_name,@rpath/$(1) CFG_LIBUV_LINK_FLAGS_x86_64-apple-ios := CFG_EXE_SUFFIX_x86_64-apple-ios := CFG_WINDOWSY_x86_64-apple-ios := CFG_UNIXY_x86_64-apple-ios := 1 -CFG_PATH_MUNGE_x86_64-apple-ios := true CFG_LDPATH_x86_64-apple-ios := CFG_RUN_x86_64-apple-ios = $(2) CFG_RUN_TARG_x86_64-apple-ios = $(call CFG_RUN_x86_64-apple-ios,,$(2)) diff --git a/mk/cfg/x86_64-pc-windows-gnu.mk b/mk/cfg/x86_64-pc-windows-gnu.mk index e9e5f04ea5433..4118ea26c072b 100644 --- a/mk/cfg/x86_64-pc-windows-gnu.mk +++ b/mk/cfg/x86_64-pc-windows-gnu.mk @@ -13,15 +13,11 @@ CFG_GCCISH_CFLAGS_x86_64-pc-windows-gnu := -Wall -Werror -g -m64 -D_WIN32_WINNT= CFG_GCCISH_CXXFLAGS_x86_64-pc-windows-gnu := -fno-rtti $(CXXFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-pc-windows-gnu := -shared -g -m64 CFG_GCCISH_DEF_FLAG_x86_64-pc-windows-gnu := -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-pc-windows-gnu := -CFG_GCCISH_POST_LIB_FLAGS_x86_64-pc-windows-gnu := -CFG_DEF_SUFFIX_x86_64-pc-windows-gnu := .windows.def CFG_LLC_FLAGS_x86_64-pc-windows-gnu := CFG_INSTALL_NAME_x86_64-pc-windows-gnu = CFG_EXE_SUFFIX_x86_64-pc-windows-gnu := .exe CFG_WINDOWSY_x86_64-pc-windows-gnu := 1 CFG_UNIXY_x86_64-pc-windows-gnu := -CFG_PATH_MUNGE_x86_64-pc-windows-gnu := CFG_LDPATH_x86_64-pc-windows-gnu := CFG_RUN_x86_64-pc-windows-gnu=$(2) CFG_RUN_TARG_x86_64-pc-windows-gnu=$(call CFG_RUN_x86_64-pc-windows-gnu,,$(2)) diff --git a/mk/cfg/x86_64-unknown-bitrig.mk b/mk/cfg/x86_64-unknown-bitrig.mk index ad34988cb1bc0..dd6d19f7491bb 100644 --- a/mk/cfg/x86_64-unknown-bitrig.mk +++ b/mk/cfg/x86_64-unknown-bitrig.mk @@ -11,15 +11,11 @@ CFG_JEMALLOC_CFLAGS_x86_64-unknown-bitrig := -m64 -I/usr/include $(CFLAGS) CFG_GCCISH_CFLAGS_x86_64-unknown-bitrig := -Wall -Werror -fPIC -m64 -I/usr/include $(CFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-unknown-bitrig := -shared -pic -pthread -m64 $(LDFLAGS) CFG_GCCISH_DEF_FLAG_x86_64-unknown-bitrig := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-bitrig := -Wl,-pic -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-bitrig := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-bitrig := .bsd.def CFG_LLC_FLAGS_x86_64-unknown-bitrig := CFG_INSTALL_NAME_x86_64-unknown-bitrig = CFG_EXE_SUFFIX_x86_64-unknown-bitrig := CFG_WINDOWSY_x86_64-unknown-bitrig := CFG_UNIXY_x86_64-unknown-bitrig := 1 -CFG_PATH_MUNGE_x86_64-unknown-bitrig := CFG_LDPATH_x86_64-unknown-bitrig := CFG_RUN_x86_64-unknown-bitrig=$(2) CFG_RUN_TARG_x86_64-unknown-bitrig=$(call CFG_RUN_x86_64-unknown-bitrig,,$(2)) diff --git a/mk/cfg/x86_64-unknown-dragonfly.mk b/mk/cfg/x86_64-unknown-dragonfly.mk index 9665b5c780272..4015293826e1a 100644 --- a/mk/cfg/x86_64-unknown-dragonfly.mk +++ b/mk/cfg/x86_64-unknown-dragonfly.mk @@ -11,15 +11,11 @@ CFG_JEMALLOC_CFLAGS_x86_64-unknown-dragonfly := -m64 -I/usr/include -I/usr/local CFG_GCCISH_CFLAGS_x86_64-unknown-dragonfly := -Wall -Werror -g -fPIC -m64 -I/usr/include -I/usr/local/include $(CFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-unknown-dragonfly := -shared -fPIC -g -pthread -lrt -m64 CFG_GCCISH_DEF_FLAG_x86_64-unknown-dragonfly := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-dragonfly := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-dragonfly := .bsd.def CFG_LLC_FLAGS_x86_64-unknown-dragonfly := CFG_INSTALL_NAME_x86_64-unknown-dragonfly = CFG_EXE_SUFFIX_x86_64-unknown-dragonfly := CFG_WINDOWSY_x86_64-unknown-dragonfly := CFG_UNIXY_x86_64-unknown-dragonfly := 1 -CFG_PATH_MUNGE_x86_64-unknown-dragonfly := CFG_LDPATH_x86_64-unknown-dragonfly := CFG_RUN_x86_64-unknown-dragonfly=$(2) CFG_RUN_TARG_x86_64-unknown-dragonfly=$(call CFG_RUN_x86_64-unknown-dragonfly,,$(2)) diff --git a/mk/cfg/x86_64-unknown-freebsd.mk b/mk/cfg/x86_64-unknown-freebsd.mk index 4e847ea78a717..1bd43168b4f69 100644 --- a/mk/cfg/x86_64-unknown-freebsd.mk +++ b/mk/cfg/x86_64-unknown-freebsd.mk @@ -11,15 +11,11 @@ CFG_JEMALLOC_CFLAGS_x86_64-unknown-freebsd := -I/usr/local/include $(CFLAGS) CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include $(CFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -pthread -lrt CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def CFG_LLC_FLAGS_x86_64-unknown-freebsd := CFG_INSTALL_NAME_x86_64-unknown-freebsd = CFG_EXE_SUFFIX_x86_64-unknown-freebsd := CFG_WINDOWSY_x86_64-unknown-freebsd := CFG_UNIXY_x86_64-unknown-freebsd := 1 -CFG_PATH_MUNGE_x86_64-unknown-freebsd := CFG_LDPATH_x86_64-unknown-freebsd := CFG_RUN_x86_64-unknown-freebsd=$(2) CFG_RUN_TARG_x86_64-unknown-freebsd=$(call CFG_RUN_x86_64-unknown-freebsd,,$(2)) diff --git a/mk/cfg/x86_64-unknown-linux-gnu.mk b/mk/cfg/x86_64-unknown-linux-gnu.mk index e5866094ee84f..044c687c9fc4c 100644 --- a/mk/cfg/x86_64-unknown-linux-gnu.mk +++ b/mk/cfg/x86_64-unknown-linux-gnu.mk @@ -12,15 +12,11 @@ CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64 CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64 CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def CFG_LLC_FLAGS_x86_64-unknown-linux-gnu := CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = CFG_WINDOWSY_x86_64-unknown-linux-gnu := CFG_UNIXY_x86_64-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_x86_64-unknown-linux-gnu := true CFG_LDPATH_x86_64-unknown-linux-gnu := CFG_RUN_x86_64-unknown-linux-gnu=$(2) CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) diff --git a/mk/cfg/x86_64-unknown-openbsd.mk b/mk/cfg/x86_64-unknown-openbsd.mk index 582d75c3eaf09..261616ecf1fda 100644 --- a/mk/cfg/x86_64-unknown-openbsd.mk +++ b/mk/cfg/x86_64-unknown-openbsd.mk @@ -11,15 +11,11 @@ CFG_JEMALLOC_CFLAGS_x86_64-unknown-openbsd := -m64 -I/usr/include $(CFLAGS) CFG_GCCISH_CFLAGS_x86_64-unknown-openbsd := -Wall -Werror -g -fPIC -m64 -I/usr/include $(CFLAGS) CFG_GCCISH_LINK_FLAGS_x86_64-unknown-openbsd := -shared -fPIC -g -pthread -m64 CFG_GCCISH_DEF_FLAG_x86_64-unknown-openbsd := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-openbsd := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-openbsd := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-openbsd := .bsd.def CFG_LLC_FLAGS_x86_64-unknown-openbsd := CFG_INSTALL_NAME_x86_64-unknown-openbsd = CFG_EXE_SUFFIX_x86_64-unknown-openbsd := CFG_WINDOWSY_x86_64-unknown-openbsd := CFG_UNIXY_x86_64-unknown-openbsd := 1 -CFG_PATH_MUNGE_x86_64-unknown-openbsd := CFG_LDPATH_x86_64-unknown-openbsd := CFG_RUN_x86_64-unknown-openbsd=$(2) CFG_RUN_TARG_x86_64-unknown-openbsd=$(call CFG_RUN_x86_64-unknown-openbsd,,$(2)) diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index 44225020811c0..363022e8781d0 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -25,8 +25,6 @@ endif RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, \ ExecutionEngineWrapper.cpp RustWrapper.cpp PassWrapper.cpp) -RUSTLLVM_DEF_$(1) := $(1)/rustllvm/rustllvm$(CFG_DEF_SUFFIX_$(1)) - RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \ -iquote $$(LLVM_INCDIR_$(1)) \ -iquote $$(S)src/rustllvm/include From ba2380d7b328ae59261d134970593c2a2668c690 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 15:53:32 -0700 Subject: [PATCH 02/10] rustc: Add target_env for triples by default This adds a new `#[cfg]` matcher against the `target_env` property of the destination target triple. For example all windows triples today end with `-gnu` but we will also hopefully support non-`gnu` targets for Windows, at which point we'll need to differentiate between the two. This new `target_env` matches is provided and filled in with the target's environment name. Currently the only non-empty value of this name is `gnu`, but `musl` will be shortly added for the linux triples. --- src/librustc/session/config.rs | 5 +++-- src/librustc_back/target/aarch64_apple_ios.rs | 1 + src/librustc_back/target/aarch64_linux_android.rs | 1 + src/librustc_back/target/aarch64_unknown_linux_gnu.rs | 1 + src/librustc_back/target/arm_linux_androideabi.rs | 1 + src/librustc_back/target/arm_unknown_linux_gnueabi.rs | 1 + src/librustc_back/target/arm_unknown_linux_gnueabihf.rs | 1 + src/librustc_back/target/armv7_apple_ios.rs | 1 + src/librustc_back/target/armv7s_apple_ios.rs | 1 + src/librustc_back/target/i386_apple_ios.rs | 1 + src/librustc_back/target/i686_apple_darwin.rs | 1 + src/librustc_back/target/i686_pc_windows_gnu.rs | 1 + src/librustc_back/target/i686_unknown_dragonfly.rs | 1 + src/librustc_back/target/i686_unknown_linux_gnu.rs | 1 + src/librustc_back/target/mips_unknown_linux_gnu.rs | 1 + src/librustc_back/target/mipsel_unknown_linux_gnu.rs | 1 + src/librustc_back/target/mod.rs | 4 ++++ src/librustc_back/target/powerpc_unknown_linux_gnu.rs | 1 + src/librustc_back/target/x86_64_apple_darwin.rs | 1 + src/librustc_back/target/x86_64_apple_ios.rs | 1 + src/librustc_back/target/x86_64_pc_windows_gnu.rs | 1 + src/librustc_back/target/x86_64_unknown_bitrig.rs | 1 + src/librustc_back/target/x86_64_unknown_dragonfly.rs | 1 + src/librustc_back/target/x86_64_unknown_freebsd.rs | 1 + src/librustc_back/target/x86_64_unknown_linux_gnu.rs | 1 + src/librustc_back/target/x86_64_unknown_openbsd.rs | 1 + 26 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index 050ccd6471288..072761f2754b3 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -621,6 +621,7 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { let arch = &sess.target.target.arch; let wordsz = &sess.target.target.target_pointer_width; let os = &sess.target.target.target_os; + let env = &sess.target.target.target_env; let fam = match sess.target.target.options.is_like_windows { true => InternedString::new("windows"), @@ -634,8 +635,8 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { mk(InternedString::new("target_family"), fam), mk(InternedString::new("target_arch"), intern(arch)), mk(InternedString::new("target_endian"), intern(end)), - mk(InternedString::new("target_pointer_width"), - intern(wordsz)) + mk(InternedString::new("target_pointer_width"), intern(wordsz)), + mk(InternedString::new("target_env"), intern(env)), ]; if sess.opts.debug_assertions { ret.push(attr::mk_word_item(InternedString::new("debug_assertions"))); diff --git a/src/librustc_back/target/aarch64_apple_ios.rs b/src/librustc_back/target/aarch64_apple_ios.rs index 2ceb34e68b772..dd6bc672a03d9 100644 --- a/src/librustc_back/target/aarch64_apple_ios.rs +++ b/src/librustc_back/target/aarch64_apple_ios.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "aarch64".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+neon,+fp-armv8,+cyclone".to_string(), eliminate_frame_pointer: false, diff --git a/src/librustc_back/target/aarch64_linux_android.rs b/src/librustc_back/target/aarch64_linux_android.rs index 64b0e0cfd6bac..fcc901fc81f57 100644 --- a/src/librustc_back/target/aarch64_linux_android.rs +++ b/src/librustc_back/target/aarch64_linux_android.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "aarch64".to_string(), target_os: "android".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs b/src/librustc_back/target/aarch64_unknown_linux_gnu.rs index a3ef6372f0648..18e67d066d036 100644 --- a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs +++ b/src/librustc_back/target/aarch64_unknown_linux_gnu.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { llvm_target: "aarch64-unknown-linux-gnu".to_string(), target_endian: "little".to_string(), target_pointer_width: "64".to_string(), + target_env: "gnu".to_string(), arch: "aarch64".to_string(), target_os: "linux".to_string(), options: base, diff --git a/src/librustc_back/target/arm_linux_androideabi.rs b/src/librustc_back/target/arm_linux_androideabi.rs index fad9344143155..57712d18cbae2 100644 --- a/src/librustc_back/target/arm_linux_androideabi.rs +++ b/src/librustc_back/target/arm_linux_androideabi.rs @@ -31,6 +31,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "android".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs b/src/librustc_back/target/arm_unknown_linux_gnueabi.rs index 32eccaf54b038..30015c4a7e6ff 100644 --- a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs +++ b/src/librustc_back/target/arm_unknown_linux_gnueabi.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "linux".to_string(), + target_env: "gnueabi".to_string(), options: TargetOptions { features: "+v6".to_string(), diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs b/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs index eff3601250f87..8f8c7114e6eff 100644 --- a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs +++ b/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "linux".to_string(), + target_env: "gnueabihf".to_string(), options: TargetOptions { features: "+v6,+vfp2".to_string(), diff --git a/src/librustc_back/target/armv7_apple_ios.rs b/src/librustc_back/target/armv7_apple_ios.rs index 4137642188691..3b55993659de2 100644 --- a/src/librustc_back/target/armv7_apple_ios.rs +++ b/src/librustc_back/target/armv7_apple_ios.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+v7,+vfp3,+neon".to_string(), .. opts(Arch::Armv7) diff --git a/src/librustc_back/target/armv7s_apple_ios.rs b/src/librustc_back/target/armv7s_apple_ios.rs index ef16aefdbd9dd..5a67e3fe127d6 100644 --- a/src/librustc_back/target/armv7s_apple_ios.rs +++ b/src/librustc_back/target/armv7s_apple_ios.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+v7,+vfp4,+neon".to_string(), .. opts(Arch::Armv7s) diff --git a/src/librustc_back/target/i386_apple_ios.rs b/src/librustc_back/target/i386_apple_ios.rs index afe63d006cf1a..a9a073e2a8c64 100644 --- a/src/librustc_back/target/i386_apple_ios.rs +++ b/src/librustc_back/target/i386_apple_ios.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: opts(Arch::I386) } } diff --git a/src/librustc_back/target/i686_apple_darwin.rs b/src/librustc_back/target/i686_apple_darwin.rs index fcea900283d28..47b329982d43e 100644 --- a/src/librustc_back/target/i686_apple_darwin.rs +++ b/src/librustc_back/target/i686_apple_darwin.rs @@ -26,6 +26,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "macos".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/i686_pc_windows_gnu.rs b/src/librustc_back/target/i686_pc_windows_gnu.rs index 249f2d440e681..9e2aa20085c36 100644 --- a/src/librustc_back/target/i686_pc_windows_gnu.rs +++ b/src/librustc_back/target/i686_pc_windows_gnu.rs @@ -30,6 +30,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "windows".to_string(), + target_env: "gnu".to_string(), options: options, } } diff --git a/src/librustc_back/target/i686_unknown_dragonfly.rs b/src/librustc_back/target/i686_unknown_dragonfly.rs index 4450d8d67782d..ecabe71ad4c6c 100644 --- a/src/librustc_back/target/i686_unknown_dragonfly.rs +++ b/src/librustc_back/target/i686_unknown_dragonfly.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "dragonfly".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/i686_unknown_linux_gnu.rs b/src/librustc_back/target/i686_unknown_linux_gnu.rs index f21f6adfb4c0c..21094ad905e90 100644 --- a/src/librustc_back/target/i686_unknown_linux_gnu.rs +++ b/src/librustc_back/target/i686_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/mips_unknown_linux_gnu.rs b/src/librustc_back/target/mips_unknown_linux_gnu.rs index 8acc248e23410..4662ff1958ba8 100644 --- a/src/librustc_back/target/mips_unknown_linux_gnu.rs +++ b/src/librustc_back/target/mips_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "mips".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: super::linux_base::opts() } } diff --git a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs b/src/librustc_back/target/mipsel_unknown_linux_gnu.rs index 604c62eb69f0f..80e38c5ddea98 100644 --- a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs +++ b/src/librustc_back/target/mipsel_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "mips".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: super::linux_base::opts() } diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index 07528df97f133..cf7499a337d08 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -100,6 +100,8 @@ pub struct Target { pub target_pointer_width: String, /// OS name to use for conditional compilation. pub target_os: String, + /// Environment name to use for conditional compilation. + pub target_env: String, /// Architecture to use for ABI considerations. Valid options: "x86", "x86_64", "arm", /// "aarch64", "mips", and "powerpc". "mips" includes "mipsel". pub arch: String, @@ -250,6 +252,8 @@ impl Target { target_pointer_width: get_req_field("target-pointer-width"), arch: get_req_field("arch"), target_os: get_req_field("os"), + target_env: obj.find("env").and_then(|s| s.as_string()) + .map(|s| s.to_string()).unwrap_or(String::new()), options: Default::default(), }; diff --git a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs b/src/librustc_back/target/powerpc_unknown_linux_gnu.rs index 5e0b7bcf3ef8b..3a2b4bd16065e 100644 --- a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs +++ b/src/librustc_back/target/powerpc_unknown_linux_gnu.rs @@ -21,6 +21,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "powerpc".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_apple_darwin.rs b/src/librustc_back/target/x86_64_apple_darwin.rs index 0b3b2bea62d77..89a67da2d8bbc 100644 --- a/src/librustc_back/target/x86_64_apple_darwin.rs +++ b/src/librustc_back/target/x86_64_apple_darwin.rs @@ -25,6 +25,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "macos".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_apple_ios.rs b/src/librustc_back/target/x86_64_apple_ios.rs index 9df2ccca50003..74491629ed859 100644 --- a/src/librustc_back/target/x86_64_apple_ios.rs +++ b/src/librustc_back/target/x86_64_apple_ios.rs @@ -21,6 +21,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: opts(Arch::X86_64) } } diff --git a/src/librustc_back/target/x86_64_pc_windows_gnu.rs b/src/librustc_back/target/x86_64_pc_windows_gnu.rs index 6b3054656fe9f..bea7d16e9dfad 100644 --- a/src/librustc_back/target/x86_64_pc_windows_gnu.rs +++ b/src/librustc_back/target/x86_64_pc_windows_gnu.rs @@ -27,6 +27,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "windows".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_bitrig.rs b/src/librustc_back/target/x86_64_unknown_bitrig.rs index 7b7877c0c6995..201c56b2e15c6 100644 --- a/src/librustc_back/target/x86_64_unknown_bitrig.rs +++ b/src/librustc_back/target/x86_64_unknown_bitrig.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "bitrig".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_dragonfly.rs b/src/librustc_back/target/x86_64_unknown_dragonfly.rs index 676aaecc2fc7d..c590f0297b948 100644 --- a/src/librustc_back/target/x86_64_unknown_dragonfly.rs +++ b/src/librustc_back/target/x86_64_unknown_dragonfly.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "dragonfly".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_freebsd.rs b/src/librustc_back/target/x86_64_unknown_freebsd.rs index 3275cb07b5abc..0d8ea90a2ab04 100644 --- a/src/librustc_back/target/x86_64_unknown_freebsd.rs +++ b/src/librustc_back/target/x86_64_unknown_freebsd.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "freebsd".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs b/src/librustc_back/target/x86_64_unknown_linux_gnu.rs index 49c4ad4aea99f..ba945afc5649b 100644 --- a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs +++ b/src/librustc_back/target/x86_64_unknown_linux_gnu.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_openbsd.rs b/src/librustc_back/target/x86_64_unknown_openbsd.rs index d2667dcd1dd9e..7f64259adf9f8 100644 --- a/src/librustc_back/target/x86_64_unknown_openbsd.rs +++ b/src/librustc_back/target/x86_64_unknown_openbsd.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "openbsd".to_string(), + target_env: "".to_string(), options: base, } } From cd980b3bee5bd48e8a6cd4c0d7c8e0fb0fdb64dd Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 15:42:05 -0700 Subject: [PATCH 03/10] mk: Add support for musl-based builds This commit adds support to the makefiles, configuration script, and build system to understand MUSL. This is broken up into a few parts: * Any target of the form `*-musl` requires the `--musl-root` option to `./configure` which will indicate the root of the MUSL installation. It is also expected that there is a libunwind build inside of that installation built against that MUSL. * Objects from MUSL are copied into the build tree for Rust to be statically linked into the appropriate Rust library. * Objects for binary startup and shutdown are included in each Rust installation by default for MUSL. This requires MUSL to only be installed on the machine compiling rust. Only a linker will be necessary for compiling against MUSL on a target machine. Eventually a MUSL and/or libunwind build may be integrated by default into the build but for now they are just always assumed to exist externally. --- configure | 8 ++++++++ mk/cfg/x86_64-unknown-linux-musl.mk | 27 +++++++++++++++++++++++++++ mk/crates.mk | 3 +++ mk/main.mk | 6 ++++-- mk/prepare.mk | 4 ++-- mk/rt.mk | 21 ++++++++++++++++++++- mk/target.mk | 13 ++++--------- 7 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 mk/cfg/x86_64-unknown-linux-musl.mk diff --git a/configure b/configure index 6d629bf9807e4..71d608fbdaa7a 100755 --- a/configure +++ b/configure @@ -583,6 +583,7 @@ valopt jemalloc-root "" "set directory where libjemalloc_pic.a is located" valopt build "${DEFAULT_BUILD}" "GNUs ./configure syntax LLVM build triple" valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path" valopt release-channel "dev" "the name of the release channel to build" +valopt musl-root "/usr/local" "MUSL root installation directory" # Many of these are saved below during the "writing configuration" step # (others are conditionally saved). @@ -1058,6 +1059,13 @@ do fi ;; + + *-musl) + if [ ! -f $CFG_MUSL_ROOT/lib/libc.a ] + then + err "musl libc $CFG_MUSL_ROOT/lib/libc.a not found" + fi + ;; *) ;; esac diff --git a/mk/cfg/x86_64-unknown-linux-musl.mk b/mk/cfg/x86_64-unknown-linux-musl.mk new file mode 100644 index 0000000000000..b3dea6f97cbc1 --- /dev/null +++ b/mk/cfg/x86_64-unknown-linux-musl.mk @@ -0,0 +1,27 @@ +# x86_64-unknown-linux-musl configuration +CC_x86_64-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc +CXX_x86_64-unknown-linux-musl=notaprogram +CPP_x86_64-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc -E +AR_x86_64-unknown-linux-musl=$(AR) +CFG_LIB_NAME_x86_64-unknown-linux-musl=lib$(1).so +CFG_STATIC_LIB_NAME_x86_64-unknown-linux-musl=lib$(1).a +CFG_LIB_GLOB_x86_64-unknown-linux-musl=lib$(1)-*.so +CFG_JEMALLOC_CFLAGS_x86_64-unknown-linux-musl := -m64 +CFG_GCCISH_CFLAGS_x86_64-unknown-linux-musl := -Wall -Werror -g -fPIC -m64 +CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-musl := +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-musl := +CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-musl := +CFG_LLC_FLAGS_x86_64-unknown-linux-musl := +CFG_INSTALL_NAME_x86_64-unknown-linux-musl = +CFG_EXE_SUFFIX_x86_64-unknown-linux-musl = +CFG_WINDOWSY_x86_64-unknown-linux-musl := +CFG_UNIXY_x86_64-unknown-linux-musl := 1 +CFG_LDPATH_x86_64-unknown-linux-musl := +CFG_RUN_x86_64-unknown-linux-musl=$(2) +CFG_RUN_TARG_x86_64-unknown-linux-musl=$(call CFG_RUN_x86_64-unknown-linux-musl,,$(2)) +CFG_GNU_TRIPLE_x86_64-unknown-linux-musl := x86_64-unknown-linux-musl + +NATIVE_DEPS_libc_T_x86_64-unknown-linux-musl += libc.a +NATIVE_DEPS_std_T_x86_64-unknown-linux-musl += libunwind.a \ + crt1.o crti.o crtn.o +INSTALLED_OBJECTS_x86_64-unknown-linux-musl += crt1.o crti.o crtn.o diff --git a/mk/crates.mk b/mk/crates.mk index e7c6a716f4cfc..367c25a8a6d49 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -123,6 +123,9 @@ ONLY_RLIB_rustc_bitflags := 1 # Documented-by-default crates DOC_CRATES := std alloc collections core libc rustc_unicode +# Installed objects/libraries by default +INSTALLED_OBJECTS := libmorestack.a libcompiler-rt.a + ################################################################################ # You should not need to edit below this line ################################################################################ diff --git a/mk/main.mk b/mk/main.mk index c1ce1051d0a86..9ac96aa90f6b9 100644 --- a/mk/main.mk +++ b/mk/main.mk @@ -399,8 +399,10 @@ endif # Prerequisites for using the stageN compiler to build target artifacts TSREQ$(1)_T_$(2)_H_$(3) = \ $$(HSREQ$(1)_H_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a \ - $$(TLIB$(1)_T_$(2)_H_$(3))/libcompiler-rt.a + $$(foreach obj,$$(INSTALLED_OBJECTS),\ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(obj)) \ + $$(foreach obj,$$(INSTALLED_OBJECTS_$(2)),\ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(obj)) # Prerequisites for a working stageN compiler and libraries, for a specific # target diff --git a/mk/prepare.mk b/mk/prepare.mk index 4ded8a7916b9b..1382d160e1399 100644 --- a/mk/prepare.mk +++ b/mk/prepare.mk @@ -140,8 +140,8 @@ prepare-target-$(2)-host-$(3)-$(1)-$(4): prepare-maybe-clean-$(4) \ $$(if $$(findstring $(2),$$(CFG_HOST)), \ $$(foreach crate,$$(HOST_CRATES), \ $$(call PREPARE_LIB,$$(call CFG_LIB_GLOB_$(2),$$(crate)))),) \ - $$(call PREPARE_LIB,libmorestack.a) \ - $$(call PREPARE_LIB,libcompiler-rt.a),),),) + $$(foreach object,$$(INSTALLED_OBJECTS) $$(INSTALLED_OBJECTS_$(2)),\ + $$(call PREPARE_LIB,$$(object))),),),) endef define INSTALL_GDB_DEBUGGER_SCRIPTS_COMMANDS diff --git a/mk/rt.mk b/mk/rt.mk index 70abce8b46067..6ca1445644122 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -74,7 +74,8 @@ $$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.ll $$(MKFILE_DEPS) \ @mkdir -p $$(@D) @$$(call E, compile: $$@) $$(Q)$$(LLC_$$(CFG_BUILD)) $$(CFG_LLC_FLAGS_$(1)) \ - -filetype=obj -mtriple=$$(CFG_LLVM_TARGET_$(1)) -relocation-model=pic -o $$@ $$< + -filetype=obj -mtriple=$$(CFG_LLVM_TARGET_$(1)) \ + -relocation-model=pic -o $$@ $$< $$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.c $$(MKFILE_DEPS) @mkdir -p $$(@D) @@ -110,6 +111,11 @@ $$(RT_OUTPUT_DIR_$(1))/$$(NATIVE_$(2)_$(1)): $$(OBJS_$(2)_$(1)) @$$(call E, link: $$@) $$(Q)$$(AR_$(1)) rcs $$@ $$^ +ifeq ($$(findstring windows,$(1)),windows) +$$(RT_OUTPUT_DIR_$(1))/lib$(2).a: $$(RT_OUTPUT_DIR_$(1))/$$(NATIVE_$(2)_$(1)) + $$(Q)cp $$< $$^ +endif + endef $(foreach target,$(CFG_TARGET), \ @@ -312,6 +318,19 @@ endif # endif for windowsy endif # endif for ios endif # endif for darwin +################################################################################ +# libc/libunwind for musl +# +# When we're building a musl-like target we're going to link libc/libunwind +# statically into the standard library and liblibc, so we need to make sure +# they're in a location that we can find +################################################################################ + +ifeq ($$(findstring musl,$(1)),musl) +$$(RT_OUTPUT_DIR_$(1))/%: $$(CFG_MUSL_ROOT)/lib/% + cp $$^ $$@ +endif + endef # Instantiate template for all stages/targets diff --git a/mk/target.mk b/mk/target.mk index 8cc74a9cbfb76..319f44fd35b77 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -35,7 +35,9 @@ CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4) := \ $$(foreach dep,$$(RUST_DEPS_$(4)), \ $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \ $$(foreach dep,$$(NATIVE_DEPS_$(4)), \ - $$(RT_OUTPUT_DIR_$(2))/$$(call CFG_STATIC_LIB_NAME_$(2),$$(dep))) + $$(RT_OUTPUT_DIR_$(2))/$$(call CFG_STATIC_LIB_NAME_$(2),$$(dep))) \ + $$(foreach dep,$$(NATIVE_DEPS_$(4)_T_$(2)), \ + $$(RT_OUTPUT_DIR_$(2))/$$(dep)) endef $(foreach host,$(CFG_HOST), \ @@ -143,14 +145,7 @@ $$(TBIN$(1)_T_$(2)_H_$(3))/: $$(TLIB$(1)_T_$(2)_H_$(3))/: mkdir -p $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/libcompiler-rt.a: \ - $$(RT_OUTPUT_DIR_$(2))/$$(call CFG_STATIC_LIB_NAME_$(2),compiler-rt) \ - | $$(TLIB$(1)_T_$(2)_H_$(3))/ $$(SNAPSHOT_RUSTC_POST_CLEANUP) - @$$(call E, cp: $$@) - $$(Q)cp $$< $$@ - -$$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a: \ - $$(RT_OUTPUT_DIR_$(2))/$$(call CFG_STATIC_LIB_NAME_$(2),morestack) \ +$$(TLIB$(1)_T_$(2)_H_$(3))/%: $$(RT_OUTPUT_DIR_$(2))/% \ | $$(TLIB$(1)_T_$(2)_H_$(3))/ $$(SNAPSHOT_RUSTC_POST_CLEANUP) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ From 22da16a4c5b22feac0be1fe34795c5781392bb33 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 15:59:32 -0700 Subject: [PATCH 04/10] rustc_back: Add x86_64-unknown-linux-musl as a target This commit adds support for x86_64-unknown-linux-musl as a target of the compiler. There's some comments in the commit about some of the more flavorful flags passed to the linker as it's not quite as trivial as the normal specs. --- src/librustc_back/target/linux_base.rs | 14 +-- src/librustc_back/target/mod.rs | 28 +----- .../target/x86_64_unknown_linux_musl.rs | 85 +++++++++++++++++++ 3 files changed, 96 insertions(+), 31 deletions(-) create mode 100644 src/librustc_back/target/x86_64_unknown_linux_musl.rs diff --git a/src/librustc_back/target/linux_base.rs b/src/librustc_back/target/linux_base.rs index d267bc77e4975..823a4a81fa4c1 100644 --- a/src/librustc_back/target/linux_base.rs +++ b/src/librustc_back/target/linux_base.rs @@ -19,12 +19,16 @@ pub fn opts() -> TargetOptions { morestack: true, linker_is_gnu: true, has_rpath: true, - pre_link_args: vec!( - // GNU-style linkers will use this to omit linking to libraries which - // don't actually fulfill any relocations, but only for libraries which - // follow this flag. Thus, use it before specifying libraries to link to. + pre_link_args: vec![ + // We want to be able to strip as much executable code as possible + // from the linker command line, and this flag indicates to the + // linker that it can avoid linking in dynamic libraries that don't + // actually satisfy any symbols up to that point (as with many other + // resolutions the linker does). This option only applies to all + // following libraries so we're sure to pass it as one of the first + // arguments. "-Wl,--as-needed".to_string(), - ), + ], position_independent_executables: true, .. Default::default() } diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index cf7499a337d08..c32eacda2a252 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -59,32 +59,6 @@ mod dragonfly_base; mod bitrig_base; mod openbsd_base; -mod armv7_apple_ios; -mod armv7s_apple_ios; -mod i386_apple_ios; - -mod arm_linux_androideabi; -mod arm_unknown_linux_gnueabi; -mod arm_unknown_linux_gnueabihf; -mod aarch64_apple_ios; -mod aarch64_linux_android; -mod aarch64_unknown_linux_gnu; -mod i686_apple_darwin; -mod i686_pc_windows_gnu; -mod i686_unknown_dragonfly; -mod i686_unknown_linux_gnu; -mod mips_unknown_linux_gnu; -mod mipsel_unknown_linux_gnu; -mod powerpc_unknown_linux_gnu; -mod x86_64_apple_darwin; -mod x86_64_apple_ios; -mod x86_64_pc_windows_gnu; -mod x86_64_unknown_freebsd; -mod x86_64_unknown_dragonfly; -mod x86_64_unknown_bitrig; -mod x86_64_unknown_linux_gnu; -mod x86_64_unknown_openbsd; - /// Everything `rustc` knows about how to compile for a specific target. /// /// Every field here must be specified, and has no default value. @@ -333,6 +307,7 @@ impl Target { macro_rules! load_specific { ( $($name:ident),+ ) => ( { + $(mod $name;)* let target = target.replace("-", "_"); if false { } $( @@ -362,6 +337,7 @@ impl Target { arm_unknown_linux_gnueabi, arm_unknown_linux_gnueabihf, aarch64_unknown_linux_gnu, + x86_64_unknown_linux_musl, arm_linux_androideabi, aarch64_linux_android, diff --git a/src/librustc_back/target/x86_64_unknown_linux_musl.rs b/src/librustc_back/target/x86_64_unknown_linux_musl.rs new file mode 100644 index 0000000000000..74d61e90f67fe --- /dev/null +++ b/src/librustc_back/target/x86_64_unknown_linux_musl.rs @@ -0,0 +1,85 @@ +// Copyright 2014 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use target::Target; + +pub fn target() -> Target { + let mut base = super::linux_base::opts(); + base.cpu = "x86-64".to_string(); + base.linker = "musl-gcc".to_string(); + base.pre_link_args.push("-m64".to_string()); + + // Make sure that the linker/gcc really don't pull in anything, including + // default objects, libs, etc. + base.pre_link_args.push("-nostdlib".to_string()); + base.pre_link_args.push("-static".to_string()); + + // At least when this was tested, the linker would not add the + // `GNU_EH_FRAME` program header to executables generated, which is required + // when unwinding to locate the unwinding information. I'm not sure why this + // argument is *not* necessary for normal builds, but it can't hurt! + base.pre_link_args.push("-Wl,--eh-frame-hdr".to_string()); + + // There's a whole bunch of circular dependencies when dealing with MUSL + // unfortunately. To put this in perspective libc is statically linked to + // liblibc and libunwind is statically linked to libstd: + // + // * libcore depends on `fmod` which is in libc (transitively in liblibc). + // liblibc, however, depends on libcore. + // * compiler-rt has personality symbols that depend on libunwind, but + // libunwind is in libstd which depends on compiler-rt. + // + // Recall that linkers discard libraries and object files as much as + // possible, and with all the static linking and archives flying around with + // MUSL the linker is super aggressively stripping out objects. For example + // the first case has fmod stripped from liblibc (it's in its own object + // file) so it's not there when libcore needs it. In the second example all + // the unused symbols from libunwind are stripped (each is in its own object + // file in libstd) before we end up linking compiler-rt which depends on + // those symbols. + // + // To deal with these circular dependencies we just force the compiler to + // link everything as a group, not stripping anything out until everything + // is processed. The linker will still perform a pass to strip out object + // files but it won't do so until all objects/archives have been processed. + base.pre_link_args.push("-Wl,-(".to_string()); + base.post_link_args.push("-Wl,-)".to_string()); + + // When generating a statically linked executable there's generally some + // small setup needed which is listed in these files. These are provided by + // a musl toolchain and are linked by default by the `musl-gcc` script. Note + // that `gcc` also does this by default, it just uses some different files. + // + // Each target directory for musl has these object files included in it so + // they'll be included from there. + base.pre_link_objects.push("crt1.o".to_string()); + base.pre_link_objects.push("crti.o".to_string()); + base.post_link_objects.push("crtn.o".to_string()); + + // MUSL support doesn't currently include dynamic linking, so there's no + // need for dylibs or rpath business. Additionally `-pie` is incompatible + // with `-static`, so we can't pass `-pie`. + base.dynamic_linking = false; + base.has_rpath = false; + base.position_independent_executables = false; + + Target { + data_layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-\ + f32:32:32-f64:64:64-v64:64:64-v128:128:128-a:0:64-\ + s0:64:64-f80:128:128-n8:16:32:64-S128".to_string(), + llvm_target: "x86_64-unknown-linux-musl".to_string(), + target_endian: "little".to_string(), + target_pointer_width: "64".to_string(), + arch: "x86_64".to_string(), + target_os: "linux".to_string(), + target_env: "musl".to_string(), + options: base, + } +} From d09851730c47f49555c84b76dd6e71d91b0555ed Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 18:00:16 -0700 Subject: [PATCH 05/10] rustc: Add support for linking arbitrary objects MUSL for example provides its own start/end objects in place of the standard ones shipped by gcc. --- src/librustc_back/target/mod.rs | 20 ++++++++++++++----- .../target/x86_64_unknown_linux_musl.rs | 1 - src/librustc_trans/back/link.rs | 10 +++++++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index c32eacda2a252..3a79ae3e7c01b 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -91,14 +91,22 @@ pub struct Target { pub struct TargetOptions { /// Linker to invoke. Defaults to "cc". pub linker: String, - /// Linker arguments that are unconditionally passed *before* any user-defined libraries. + /// Linker arguments that are unconditionally passed *before* any + /// user-defined libraries. pub pre_link_args: Vec, - /// Linker arguments that are unconditionally passed *after* any user-defined libraries. + /// Linker arguments that are unconditionally passed *after* any + /// user-defined libraries. pub post_link_args: Vec, - /// Default CPU to pass to LLVM. Corresponds to `llc -mcpu=$cpu`. Defaults to "default". + /// Objects to link before and after all others, always found within the + /// sysroot folder. + pub pre_link_objects: Vec, + pub post_link_objects: Vec, + /// Default CPU to pass to LLVM. Corresponds to `llc -mcpu=$cpu`. Defaults + /// to "default". pub cpu: String, - /// Default target features to pass to LLVM. These features will *always* be passed, and cannot - /// be disabled even via `-C`. Corresponds to `llc -mattr=$features`. + /// Default target features to pass to LLVM. These features will *always* be + /// passed, and cannot be disabled even via `-C`. Corresponds to `llc + /// -mattr=$features`. pub features: String, /// Whether dynamic linking is available on this target. Defaults to false. pub dynamic_linking: bool, @@ -183,6 +191,8 @@ impl Default for TargetOptions { has_rpath: false, no_compiler_rt: false, position_independent_executables: false, + pre_link_objects: Vec::new(), + post_link_objects: Vec::new(), } } } diff --git a/src/librustc_back/target/x86_64_unknown_linux_musl.rs b/src/librustc_back/target/x86_64_unknown_linux_musl.rs index 74d61e90f67fe..3debad2e8f201 100644 --- a/src/librustc_back/target/x86_64_unknown_linux_musl.rs +++ b/src/librustc_back/target/x86_64_unknown_linux_musl.rs @@ -13,7 +13,6 @@ use target::Target; pub fn target() -> Target { let mut base = super::linux_base::opts(); base.cpu = "x86-64".to_string(); - base.linker = "musl-gcc".to_string(); base.pre_link_args.push("-m64".to_string()); // Make sure that the linker/gcc really don't pull in anything, including diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs index b53be98a06cc3..c72072f069650 100644 --- a/src/librustc_trans/back/link.rs +++ b/src/librustc_trans/back/link.rs @@ -794,13 +794,21 @@ fn link_natively(sess: &Session, trans: &CrateTranslation, dylib: bool, let pname = get_cc_prog(sess); let mut cmd = Command::new(&pname[..]); + let root = sess.target_filesearch(PathKind::Native).get_lib_path(); cmd.args(&sess.target.target.options.pre_link_args); + for obj in &sess.target.target.options.pre_link_objects { + cmd.arg(root.join(obj)); + } + link_args(&mut cmd, sess, dylib, tmpdir.path(), trans, obj_filename, out_filename); - cmd.args(&sess.target.target.options.post_link_args); if !sess.target.target.options.no_compiler_rt { cmd.arg("-lcompiler-rt"); } + for obj in &sess.target.target.options.post_link_objects { + cmd.arg(root.join(obj)); + } + cmd.args(&sess.target.target.options.post_link_args); if sess.opts.debugging_opts.print_link_args { println!("{:?}", &cmd); From 6c048723f83fad6c96c2e19d6dfa1db547371c11 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 15:56:55 -0700 Subject: [PATCH 06/10] std: Prepare for linking to musl This commit modifies the standard library and its dependencies to link correctly when built against MUSL. This primarily ensures that the right libraries are linked against and when they're linked against they're linked against statically. --- src/liballoc/heap.rs | 4 +++- src/liblibc/lib.rs | 6 +++++- src/libstd/dynamic_lib.rs | 4 +++- src/libstd/rt/libunwind.rs | 7 ++++++- src/libstd/rtdeps.rs | 2 +- src/libstd/sys/unix/time.rs | 3 ++- src/libstd/thread/local.rs | 1 + 7 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/liballoc/heap.rs b/src/liballoc/heap.rs index 9d1d8a7ac24b8..86a04a0687a5b 100644 --- a/src/liballoc/heap.rs +++ b/src/liballoc/heap.rs @@ -211,7 +211,9 @@ mod imp { } // -lpthread needs to occur after -ljemalloc, the earlier argument isn't enough - #[cfg(all(not(windows), not(target_os = "android")))] + #[cfg(all(not(windows), + not(target_os = "android"), + not(target_env = "musl")))] #[link(name = "pthread")] extern {} diff --git a/src/liblibc/lib.rs b/src/liblibc/lib.rs index 4fbcdaa378e25..999e7c643e576 100644 --- a/src/liblibc/lib.rs +++ b/src/liblibc/lib.rs @@ -140,11 +140,15 @@ pub use funcs::bsd43::*; // On NaCl, these libraries are static. Thus it would be a Bad Idea to link them // in when creating a test crate. -#[cfg(not(any(windows, all(target_os = "nacl", test))))] +#[cfg(not(any(windows, target_env = "musl", all(target_os = "nacl", test))))] #[link(name = "c")] #[link(name = "m")] extern {} +#[cfg(all(target_env = "musl", not(test)))] +#[link(name = "c", kind = "static")] +extern {} + // libnacl provides functions that require a trip through the IRT to work. // ie: _exit, mmap, nanosleep, etc. Anything that would otherwise require a trip // to the kernel. diff --git a/src/libstd/dynamic_lib.rs b/src/libstd/dynamic_lib.rs index ef72cbc96e18f..8b90fce6fc4fc 100644 --- a/src/libstd/dynamic_lib.rs +++ b/src/libstd/dynamic_lib.rs @@ -125,7 +125,9 @@ mod tests { use path::Path; #[test] - #[cfg_attr(any(windows, target_os = "android"), ignore)] // FIXME #8818, #10379 + #[cfg_attr(any(windows, + target_os = "android", // FIXME #10379 + target_env = "musl"), ignore)] fn test_loading_cosine() { // The math library does not need to be loaded since it is already // statically linked in diff --git a/src/libstd/rt/libunwind.rs b/src/libstd/rt/libunwind.rs index 4b754bd5f589f..8f75ae5ef5cc8 100644 --- a/src/libstd/rt/libunwind.rs +++ b/src/libstd/rt/libunwind.rs @@ -97,10 +97,15 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code, exception: *mut _Unwind_Exception); -#[cfg(any(target_os = "linux", target_os = "freebsd"))] +#[cfg(any(all(target_os = "linux", not(target_env = "musl")), + target_os = "freebsd"))] #[link(name = "gcc_s")] extern {} +#[cfg(all(target_os = "linux", target_env = "musl", not(test)))] +#[link(name = "unwind", kind = "static")] +extern {} + #[cfg(any(target_os = "android", target_os = "openbsd"))] #[link(name = "gcc")] extern {} diff --git a/src/libstd/rtdeps.rs b/src/libstd/rtdeps.rs index 96c4bcec853dc..a7f3bc2bdc82c 100644 --- a/src/libstd/rtdeps.rs +++ b/src/libstd/rtdeps.rs @@ -24,7 +24,7 @@ extern {} // // On Linux, librt and libdl are indirect dependencies via std, // and binutils 2.22+ won't add them automatically -#[cfg(target_os = "linux")] +#[cfg(all(target_os = "linux", not(target_env = "musl")))] #[link(name = "dl")] #[link(name = "pthread")] extern {} diff --git a/src/libstd/sys/unix/time.rs b/src/libstd/sys/unix/time.rs index d2f51678d497f..f59eb2c03013f 100644 --- a/src/libstd/sys/unix/time.rs +++ b/src/libstd/sys/unix/time.rs @@ -82,7 +82,8 @@ mod inner { // OpenBSD provide it via libc #[cfg(not(any(target_os = "android", target_os = "bitrig", - target_os = "openbsd")))] + target_os = "openbsd", + target_env = "musl")))] #[link(name = "rt")] extern {} diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs index 6d8f1cba7091f..5b7d6fdd86423 100644 --- a/src/libstd/thread/local.rs +++ b/src/libstd/thread/local.rs @@ -364,6 +364,7 @@ mod imp { use sys_common::thread_local as os; extern { + #[linkage = "extern_weak"] static __dso_handle: *mut u8; #[linkage = "extern_weak"] static __cxa_thread_atexit_impl: *const (); From 5f518ad658fe3914f3817285c484409a582cba96 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 20:00:55 -0700 Subject: [PATCH 07/10] compiletest: Don't force dylibs on musl MUSL support is currently only with static builds, so building a dylib will always fail. --- src/compiletest/runtest.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 3d4aebad9d69f..33d4f761eea84 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -1233,7 +1233,20 @@ fn compose_and_run_compiler(config: &Config, props: &TestProps, let mut crate_type = if aux_props.no_prefer_dynamic { Vec::new() } else { - vec!("--crate-type=dylib".to_string()) + // We primarily compile all auxiliary libraries as dynamic libraries + // to avoid code size bloat and large binaries as much as possible + // for the test suite (otherwise including libstd statically in all + // executables takes up quite a bit of space). + // + // For targets like MUSL, however, there is no support for dynamic + // libraries so we just go back to building a normal library. Note, + // however, that if the library is built with `force_host` then it's + // ok to be a dylib as the host should always support dylibs. + if config.target.contains("musl") && !aux_props.force_host { + vec!("--crate-type=lib".to_string()) + } else { + vec!("--crate-type=dylib".to_string()) + } }; crate_type.extend(extra_link_args.clone().into_iter()); let aux_args = From 7dd62155d85e9556c2b2b70c03acce9910896696 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2015 20:01:34 -0700 Subject: [PATCH 08/10] std: Don't assume dlopen() works on yourself Statically linked executables do not succeed (aka MUSL-based executables). --- src/libstd/sys/unix/thread.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libstd/sys/unix/thread.rs b/src/libstd/sys/unix/thread.rs index 281ac37e67115..cfab9d1c51a15 100644 --- a/src/libstd/sys/unix/thread.rs +++ b/src/libstd/sys/unix/thread.rs @@ -342,7 +342,10 @@ fn min_stack_size(attr: *const libc::pthread_attr_t) -> usize { static mut __pthread_get_minstack: Option = None; INIT.call_once(|| { - let lib = DynamicLibrary::open(None).unwrap(); + let lib = match DynamicLibrary::open(None) { + Ok(l) => l, + Err(..) => return, + }; unsafe { if let Ok(f) = lib.symbol("__pthread_get_minstack") { __pthread_get_minstack = Some(mem::transmute::<*const (), F>(f)); From 60f8f6bde9be62554a850c31c770357e7d3e576e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 23 Apr 2015 18:40:54 -0700 Subject: [PATCH 09/10] compiletest: Add support for `// ignore-musl` Add the ability to ignore a test based on the environment of the triple being used. --- src/compiletest/header.rs | 4 ++++ src/compiletest/util.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/compiletest/header.rs b/src/compiletest/header.rs index f5505b6e83a67..a648e51497e79 100644 --- a/src/compiletest/header.rs +++ b/src/compiletest/header.rs @@ -170,6 +170,9 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool { format!("ignore-{}", config.stage_id.split('-').next().unwrap()) } + fn ignore_env(config: &Config) -> String { + format!("ignore-{}", util::get_env(&config.target).unwrap_or("")) + } fn ignore_gdb(config: &Config, line: &str) -> bool { if config.mode != common::DebugInfoGdb { return false; @@ -231,6 +234,7 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool { !parse_name_directive(ln, &ignore_target(config)) && !parse_name_directive(ln, &ignore_architecture(config)) && !parse_name_directive(ln, &ignore_stage(config)) && + !parse_name_directive(ln, &ignore_env(config)) && !(config.mode == common::Pretty && parse_name_directive(ln, "ignore-pretty")) && !(config.target != config.host && parse_name_directive(ln, "ignore-cross-compile")) && !ignore_gdb(config, ln) && diff --git a/src/compiletest/util.rs b/src/compiletest/util.rs index a8b26cb3ef768..184d62db45114 100644 --- a/src/compiletest/util.rs +++ b/src/compiletest/util.rs @@ -60,6 +60,10 @@ pub fn get_arch(triple: &str) -> &'static str { panic!("Cannot determine Architecture from triple"); } +pub fn get_env(triple: &str) -> Option<&str> { + triple.split('-').nth(3) +} + pub fn make_new_path(path: &str) -> String { assert!(cfg!(windows)); // Windows just uses PATH as the library search path, so we have to From 247842b741db380fbd0e0d73f37e86f6c561ca9d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 23 Apr 2015 18:41:37 -0700 Subject: [PATCH 10/10] test: Fix some tests to run with musl There were a few test cases to fix: * Dynamic libraries are not supported with MUSL right now, so all of those related test which force or require dylibs are ignored. * Looks like the default stack for MUSL is smaller than glibc, so a few stack allocations in benchmarks were boxed up (shouldn't have a perf impact). * Some small linkage tweaks here and there * Out-of-stack detection does not currently work with MUSL --- mk/rt.mk | 4 ++-- src/test/bench/noise.rs | 4 ++-- src/test/bench/shootout-reverse-complement.rs | 8 ++++---- src/test/run-pass-fulldeps/issue-13560.rs | 1 + src/test/run-pass/issue-12133-3.rs | 1 + src/test/run-pass/linkage-visibility.rs | 1 + src/test/run-pass/out-of-stack-new-thread-no-split.rs | 11 ++++++----- src/test/run-pass/sepcomp-extern.rs | 2 +- 8 files changed, 18 insertions(+), 14 deletions(-) diff --git a/mk/rt.mk b/mk/rt.mk index 6ca1445644122..bd6578d3b724b 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -113,7 +113,7 @@ $$(RT_OUTPUT_DIR_$(1))/$$(NATIVE_$(2)_$(1)): $$(OBJS_$(2)_$(1)) ifeq ($$(findstring windows,$(1)),windows) $$(RT_OUTPUT_DIR_$(1))/lib$(2).a: $$(RT_OUTPUT_DIR_$(1))/$$(NATIVE_$(2)_$(1)) - $$(Q)cp $$< $$^ + $$(Q)cp $$^ $$@ endif endef @@ -227,7 +227,7 @@ COMPRT_DEPS := $(wildcard \ $(S)src/compiler-rt/*/*/*/*) endif -COMPRT_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),compiler-rt) +COMPRT_NAME_$(1) := libcompiler-rt.a COMPRT_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(COMPRT_NAME_$(1)) COMPRT_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/compiler-rt diff --git a/src/test/bench/noise.rs b/src/test/bench/noise.rs index efbb5dfb5491e..81a6fb8ff6deb 100644 --- a/src/test/bench/noise.rs +++ b/src/test/bench/noise.rs @@ -101,8 +101,8 @@ impl Noise2DContext { fn main() { let symbols = [' ', '░', '▒', '▓', '█', '█']; - let mut pixels = [0f32; 256*256]; - let n2d = Noise2DContext::new(); + let mut pixels = Box::new([0f32; 256*256]); + let n2d = Box::new(Noise2DContext::new()); for _ in 0..100 { for y in 0..256 { diff --git a/src/test/bench/shootout-reverse-complement.rs b/src/test/bench/shootout-reverse-complement.rs index 7c9f33678a39c..55b2b1e2e324f 100644 --- a/src/test/bench/shootout-reverse-complement.rs +++ b/src/test/bench/shootout-reverse-complement.rs @@ -50,17 +50,17 @@ use std::ptr::copy; use std::thread; struct Tables { - table8: [u8; 1 << 8], - table16: [u16; 1 << 16] + table8: Box<[u8; 1 << 8]>, + table16: Box<[u16; 1 << 16]>, } impl Tables { fn new() -> Tables { - let mut table8 = [0;1 << 8]; + let mut table8 = Box::new([0;1 << 8]); for (i, v) in table8.iter_mut().enumerate() { *v = Tables::computed_cpl8(i as u8); } - let mut table16 = [0;1 << 16]; + let mut table16 = Box::new([0;1 << 16]); for (i, v) in table16.iter_mut().enumerate() { *v = (table8[i & 255] as u16) << 8 | table8[i >> 8] as u16; diff --git a/src/test/run-pass-fulldeps/issue-13560.rs b/src/test/run-pass-fulldeps/issue-13560.rs index 1541e809b6178..fc9f241af7f10 100644 --- a/src/test/run-pass-fulldeps/issue-13560.rs +++ b/src/test/run-pass-fulldeps/issue-13560.rs @@ -12,6 +12,7 @@ // aux-build:issue-13560-2.rs // aux-build:issue-13560-3.rs // ignore-stage1 +// ignore-musl // Regression test for issue #13560, the test itself is all in the dependent // libraries. The fail which previously failed to compile is the one numbered 3. diff --git a/src/test/run-pass/issue-12133-3.rs b/src/test/run-pass/issue-12133-3.rs index 79a530785452a..66201ff901f30 100644 --- a/src/test/run-pass/issue-12133-3.rs +++ b/src/test/run-pass/issue-12133-3.rs @@ -11,6 +11,7 @@ // aux-build:issue-12133-rlib.rs // aux-build:issue-12133-dylib.rs // aux-build:issue-12133-dylib2.rs +// ignore-musl // pretty-expanded FIXME #23616 diff --git a/src/test/run-pass/linkage-visibility.rs b/src/test/run-pass/linkage-visibility.rs index 74da4273b6ab0..98a7ce55540d1 100644 --- a/src/test/run-pass/linkage-visibility.rs +++ b/src/test/run-pass/linkage-visibility.rs @@ -11,6 +11,7 @@ // aux-build:linkage-visibility.rs // ignore-android: FIXME(#10379) // ignore-windows: std::dynamic_lib does not work on Windows well +// ignore-musl #![feature(std_misc)] diff --git a/src/test/run-pass/out-of-stack-new-thread-no-split.rs b/src/test/run-pass/out-of-stack-new-thread-no-split.rs index 0d0a5bee8a443..2c6e55b57b066 100644 --- a/src/test/run-pass/out-of-stack-new-thread-no-split.rs +++ b/src/test/run-pass/out-of-stack-new-thread-no-split.rs @@ -8,11 +8,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//ignore-android -//ignore-freebsd -//ignore-ios -//ignore-dragonfly -//ignore-bitrig +// ignore-android +// ignore-freebsd +// ignore-ios +// ignore-dragonfly +// ignore-bitrig +// ignore-musl #![feature(asm)] diff --git a/src/test/run-pass/sepcomp-extern.rs b/src/test/run-pass/sepcomp-extern.rs index 973c61712c3ed..f21b787dab72f 100644 --- a/src/test/run-pass/sepcomp-extern.rs +++ b/src/test/run-pass/sepcomp-extern.rs @@ -14,8 +14,8 @@ // Test accessing external items from multiple compilation units. +extern crate sepcomp_extern_lib; -#[link(name = "sepcomp_extern_lib")] extern { #[allow(ctypes)] fn foo() -> usize;