From a24ca998ba0435ba183be7dbae89ef6b412e326f Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 22 Jul 2015 14:38:35 -0700 Subject: [PATCH] Remove MSVC logic from the configure script Cargo will soon support testing the cross compilation capabilities between 32/64 bit Windows, meaning that there's not "one true value" for any of these environment variables that Cargo is setting (e.g. where to find `cl`, `link`, etc). Instead, all dependencies have been updated to probe the system (in the same manner as the compiler) for the tools that they're using. All of the logic is housed in the `gcc` crate which now exposes a function to probe the system for a particular tool. The updated crates here then use the result of this probe to run the various build scripts. This all boils down to being able to build MSVC targets inside an MSYS shell instead of requiring use of a MSVC shell (which doesn't allow for simultaneous host builds and cross builds). --- Cargo.lock | 71 +++++++++++++++++++++++++++++++---------------------- Cargo.toml | 2 +- Makefile.in | 13 ---------- configure | 46 ---------------------------------- 4 files changed, 42 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7d399e0f5..efdea8294 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,7 +2,7 @@ name = "cargo" version = "0.4.0" dependencies = [ - "advapi32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bufstream 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "curl 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "docopt 0.6.67 (registry+https://github.com/rust-lang/crates.io-index)", @@ -13,9 +13,9 @@ dependencies = [ "git2-curl 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "hamcrest 0.1.0 (git+https://github.com/carllerche/hamcrest-rust.git)", - "kernel32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libgit2-sys 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", @@ -24,20 +24,21 @@ dependencies = [ "semver 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "advapi32-sys" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -63,7 +64,7 @@ name = "curl" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "curl-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "curl-sys 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -72,11 +73,12 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -116,8 +118,12 @@ dependencies = [ [[package]] name = "gcc" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "git2" @@ -126,7 +132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libgit2-sys 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -153,10 +159,11 @@ source = "git+https://github.com/carllerche/hamcrest-rust.git#b61fef3e6d47114f86 [[package]] name = "kernel32-sys" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -166,12 +173,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libgit2-sys" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libssh2-sys 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libssh2-sys 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -186,20 +193,22 @@ dependencies = [ [[package]] name = "libssh2-sys" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libz-sys" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -230,7 +239,7 @@ name = "miniz-sys" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -247,7 +256,7 @@ name = "openssl-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libressl-pnacl-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -330,11 +339,11 @@ dependencies = [ [[package]] name = "term" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -347,7 +356,7 @@ name = "time" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -370,9 +379,11 @@ dependencies = [ [[package]] name = "winapi" -version = "0.1.22" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-build" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] diff --git a/Cargo.toml b/Cargo.toml index 4fbbcf75c..61f16daca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ threadpool = "0.1" time = "0.1" toml = "0.1" url = "0.2" -winapi = "0.1" +winapi = "0.2" [dev-dependencies] tempdir = "0.3" diff --git a/Makefile.in b/Makefile.in index 718099145..a8d189ba1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -58,19 +58,6 @@ BIN_TARGETS := cargo BIN_TARGETS := $(BIN_TARGETS:src/bin/%.rs=%) BIN_TARGETS := $(filter-out cargo,$(BIN_TARGETS)) -ifdef CFG_MSVC_INCLUDE_PATH -export INCLUDE := $(CFG_MSVC_INCLUDE_PATH) -endif -ifdef CFG_MSVC_LIB_PATH -export LIB := $(CFG_MSVC_LIB_PATH) -endif -ifdef CFG_MSVC_BIN -export PATH := $(CFG_MSVC_BIN):$(PATH) -endif -ifdef CFG_MSVC_WINDOWS_SDK_DIR -export PATH := $(CFG_MSVC_WINDOWS_SDK_DIR):$(PATH) -endif - define DIST_TARGET ifdef CFG_ENABLE_OPTIMIZE TARGET_$(1) = $$(TARGET_ROOT)/$(1)/release diff --git a/configure b/configure index e5590d923..5c2f8b3e2 100755 --- a/configure +++ b/configure @@ -369,52 +369,6 @@ if [ "$CFG_SRC_DIR" != "$CFG_BUILD_DIR" ]; then err "cargo does not currently support an out-of-tree build dir" fi -for i in $CFG_TARGET -do - case $i in - x86_64-*-msvc) - # Use the REG program to figure out where VS is installed - # We need to figure out where cl.exe and link.exe are, so we do some - # munging and some probing here. We also look for the default - # INCLUDE and LIB variables for MSVC so we can set those in the - # build system as well. - install=$(reg QUERY \ - 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0' \ - -v InstallDir) - need_ok "couldn't find visual studio install root" - CFG_MSVC_ROOT=$(echo "$install" | grep InstallDir | sed 's/.*REG_SZ[ ]*//') - CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT") - CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT") - CFG_MSVC_BIN="${CFG_MSVC_ROOT}/VC/bin/amd64" - CFG_MSVC_CL="${CFG_MSVC_BIN}/cl.exe" - CFG_MSVC_LIB="${CFG_MSVC_BIN}/lib.exe" - CFG_MSVC_LINK="${CFG_MSVC_BIN}/link.exe" - - vcvarsall="${CFG_MSVC_ROOT}/VC/vcvarsall.bat" - CFG_MSVC_INCLUDE_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %INCLUDE%") - need_ok "failed to learn about MSVC's INCLUDE" - CFG_MSVC_LIB_PATH=$(cmd /c "\"$vcvarsall\" amd64 && cmd /c echo %LIB%") - need_ok "failed to learn about MSVC's LIB" - CFG_MSVC_WINDOWS_SDK_DIR=$(cmd /c \ - "\"$vcvarsall\" amd64 && cmd /c echo %WindowsSdkDir%") - need_ok "failed to learn about MSVC's WindowsSdkDir" - export CFG_MSVC_WINDOWS_SDK_DIR="${CFG_MSVC_WINDOWS_SDK_DIR}bin/x64" - - putvar CFG_MSVC_ROOT - putvar CFG_MSVC_BIN - putvar CFG_MSVC_CL - putvar CFG_MSVC_LIB - putvar CFG_MSVC_LINK - putvar CFG_MSVC_INCLUDE_PATH - putvar CFG_MSVC_LIB_PATH - putvar CFG_MSVC_WINDOWS_SDK_DIR - ;; - - *) - ;; - esac -done - if [ ! -z "$CFG_ENABLE_NIGHTLY" ]; then if [ ! -f .cargo/config ]; then mkdir -p .cargo