Skip to content

Commit 315750a

Browse files
ricky26alexcrichton
authored andcommitted
Very hacky MSVC hacks.
Conflicts: mk/platform.mk src/librustc/session/config.rs src/librustc_back/target/aarch64_apple_ios.rs src/librustc_back/target/aarch64_linux_android.rs src/librustc_back/target/arm_linux_androideabi.rs src/librustc_back/target/arm_unknown_linux_gnueabi.rs src/librustc_back/target/arm_unknown_linux_gnueabihf.rs src/librustc_back/target/armv7_apple_ios.rs src/librustc_back/target/armv7s_apple_ios.rs src/librustc_back/target/i386_apple_ios.rs src/librustc_back/target/i686_apple_darwin.rs src/librustc_back/target/i686_pc_windows_gnu.rs src/librustc_back/target/i686_unknown_dragonfly.rs src/librustc_back/target/i686_unknown_linux_gnu.rs src/librustc_back/target/mips_unknown_linux_gnu.rs src/librustc_back/target/mipsel_unknown_linux_gnu.rs src/librustc_back/target/mod.rs src/librustc_back/target/powerpc_unknown_linux_gnu.rs src/librustc_back/target/x86_64_apple_darwin.rs src/librustc_back/target/x86_64_apple_ios.rs src/librustc_back/target/x86_64_pc_windows_gnu.rs src/librustc_back/target/x86_64_unknown_dragonfly.rs src/librustc_back/target/x86_64_unknown_freebsd.rs src/librustc_back/target/x86_64_unknown_linux_gnu.rs src/librustc_back/target/x86_64_unknown_openbsd.rs src/librustc_llvm/lib.rs src/librustc_trans/back/link.rs src/librustc_trans/trans/base.rs src/libstd/os.rs src/rustllvm/RustWrapper.cpp
1 parent 3ca008d commit 315750a

27 files changed

+1535
-29
lines changed

configure

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
610610
# there's no rpath. This is where the build system itself puts libraries;
611611
# --libdir is used to configure the installation directory.
612612
# FIXME: This needs to parameterized over target triples. Do it in platform.mk
613-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
613+
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
614614
then
615615
CFG_LIBDIR_RELATIVE=bin
616616
else
@@ -628,7 +628,8 @@ esac
628628

629629
CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
630630

631-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
631+
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
632+
&& [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
632633
err "libdir on windows should be set to 'bin'"
633634
fi
634635

@@ -803,7 +804,7 @@ then
803804
fi
804805

805806
BIN_SUF=
806-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
807+
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
807808
then
808809
BIN_SUF=.exe
809810
fi
@@ -1311,7 +1312,7 @@ do
13111312
# (llvm's configure tries to find pthread first, so we have to disable it explicitly.)
13121313
# Also note that pthreads works badly on mingw-w64 systems: #8996
13131314
case "$CFG_BUILD" in
1314-
(*-windows-*)
1315+
(*-windows-gnu)
13151316
LLVM_OPTS="$LLVM_OPTS --disable-pthreads"
13161317
;;
13171318
esac

mk/cfg/aarch64-apple-ios.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),)
55
CFG_IOS_SDK_aarch64-apple-ios := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null)
66
CFG_IOS_SDK_FLAGS_aarch64-apple-ios := -target aarch64-apple-darwin -isysroot $(CFG_IOS_SDK_aarch64-apple-ios) -mios-version-min=7.0 -arch arm64
77
CC_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang)
8+
LINK_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang)
89
CXX_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++)
910
CPP_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++)
1011
AR_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos ar)

mk/cfg/aarch64-linux-android.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# aarch64-linux-android configuration
22
# CROSS_PREFIX_aarch64-linux-android-
33
CC_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc
4+
LINK_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc
45
CXX_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-g++
56
CPP_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc -E
67
AR_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-ar

mk/cfg/aarch64-unknown-linux-gnu.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# aarch64-unknown-linux-gnu configuration
22
CROSS_PREFIX_aarch64-unknown-linux-gnu=aarch64-linux-gnu-
33
CC_aarch64-unknown-linux-gnu=gcc
4+
LINK_aarch64-unknown-linux-gnu=gcc
45
CXX_aarch64-unknown-linux-gnu=g++
56
CPP_aarch64-unknown-linux-gnu=gcc -E
67
AR_aarch64-unknown-linux-gnu=ar

mk/cfg/arm-linux-androideabi.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# arm-linux-androideabi configuration
2+
LINK_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc
23
CC_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc
34
CXX_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-g++
45
CPP_arm-linux-androideabi=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc -E

mk/cfg/x86_64-pc-windows-gnu.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# x86_64-pc-windows-gnu configuration
22
CROSS_PREFIX_x86_64-pc-windows-gnu=x86_64-w64-mingw32-
33
CC_x86_64-pc-windows-gnu=gcc
4+
LINK_x86_64-pc-windows-gnu=gcc
45
CXX_x86_64-pc-windows-gnu=g++
56
CPP_x86_64-pc-windows-gnu=gcc -E
67
AR_x86_64-pc-windows-gnu=ar

mk/cfg/x86_64-pc-windows-msvc.mk

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# x86_64-pc-windows-msvc configuration
2+
CROSS_PREFIX_x86_64-pc-windows-msvc=
3+
CC_x86_64-pc-windows-msvc=cl
4+
LINK_x86_64-pc-windows-msvc=link
5+
CXX_x86_64-pc-windows-msvc=g++
6+
CPP_x86_64-pc-windows-msvc=gcc -E
7+
AR_x86_64-pc-windows-msvc=llvm-ar
8+
CFG_LIB_NAME_x86_64-pc-windows-msvc=$(1).dll
9+
CFG_STATIC_LIB_NAME_x86_64-pc-windows-msvc=$(1).lib
10+
CFG_LIB_GLOB_x86_64-pc-windows-msvc=$(1)-*.dll
11+
CFG_LIB_DSYM_GLOB_x86_64-pc-windows-msvc=$(1)-*.dylib.dSYM
12+
CFG_JEMALLOC_CFLAGS_x86_64-pc-windows-msvc := $(CFLAGS)
13+
CFG_GCCISH_CFLAGS_x86_64-pc-windows-msvc := $(CFLAGS)
14+
CFG_GCCISH_CXXFLAGS_x86_64-pc-windows-msvc := -fno-rtti $(CXXFLAGS)
15+
CFG_GCCISH_LINK_FLAGS_x86_64-pc-windows-msvc := -shared -g -m64
16+
CFG_GCCISH_DEF_FLAG_x86_64-pc-windows-msvc :=
17+
CFG_GCCISH_PRE_LIB_FLAGS_x86_64-pc-windows-msvc :=
18+
CFG_GCCISH_POST_LIB_FLAGS_x86_64-pc-windows-msvc :=
19+
CFG_DEF_SUFFIX_x86_64-pc-windows-msvc := .windows.def
20+
CFG_LLC_FLAGS_x86_64-pc-windows-msvc :=
21+
CFG_INSTALL_NAME_x86_64-pc-windows-msvc =
22+
CFG_EXE_SUFFIX_x86_64-pc-windows-msvc := .exe
23+
CFG_WINDOWSY_x86_64-pc-windows-msvc := 1
24+
CFG_UNIXY_x86_64-pc-windows-msvc :=
25+
CFG_PATH_MUNGE_x86_64-pc-windows-msvc :=
26+
CFG_LDPATH_x86_64-pc-windows-msvc :=
27+
CFG_RUN_x86_64-pc-windows-msvc=$(2)
28+
CFG_RUN_TARG_x86_64-pc-windows-msvc=$(call CFG_RUN_x86_64-pc-windows-msvc,,$(2))
29+
CFG_GNU_TRIPLE_x86_64-pc-windows-msvc := x86_64-w64-mingw32

mk/platform.mk

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,15 @@ FIND_COMPILER = $(word 1,$(1:ccache=))
145145
define CFG_MAKE_TOOLCHAIN
146146
# Prepend the tools with their prefix if cross compiling
147147
ifneq ($(CFG_BUILD),$(1))
148-
CC_$(1)=$(CROSS_PREFIX_$(1))$(CC_$(1))
149-
CXX_$(1)=$(CROSS_PREFIX_$(1))$(CXX_$(1))
150-
CPP_$(1)=$(CROSS_PREFIX_$(1))$(CPP_$(1))
151-
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
152-
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(CC_$(1))) \
153-
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
154-
155-
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
148+
CC_$(1)=$(CROSS_PREFIX_$(1))$(CC_$(1))
149+
CXX_$(1)=$(CROSS_PREFIX_$(1))$(CXX_$(1))
150+
CPP_$(1)=$(CROSS_PREFIX_$(1))$(CPP_$(1))
151+
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
152+
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
153+
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
154+
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
155+
156+
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
156157
endif
157158

158159
CFG_COMPILE_C_$(1) = $$(CC_$(1)) \

src/librustc/session/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,7 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig {
632632
let mut ret = vec![ // Target bindings.
633633
attr::mk_word_item(fam.clone()),
634634
mk(InternedString::new("target_os"), intern(os)),
635+
mk(InternedString::new("target_abi"), intern(abi)),
635636
mk(InternedString::new("target_family"), fam),
636637
mk(InternedString::new("target_arch"), intern(arch)),
637638
mk(InternedString::new("target_endian"), intern(end)),

src/librustc_back/target/aarch64_unknown_linux_gnu.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub fn target() -> Target {
2222
target_env: "gnu".to_string(),
2323
arch: "aarch64".to_string(),
2424
target_os: "linux".to_string(),
25+
target_abi: "".to_string(),
2526
options: base,
2627
}
2728
}

0 commit comments

Comments
 (0)