diff --git a/src/etc/make-win-dist.py b/src/etc/make-win-dist.py index 9d883dec968..c4b2d20719f 100644 --- a/src/etc/make-win-dist.py +++ b/src/etc/make-win-dist.py @@ -23,7 +23,7 @@ def find_files(files, path): return found def make_win_dist(dist_root, target_triple): - # Ask gcc where it keeps its' stuff + # Ask gcc where it keeps its stuff gcc_out = subprocess.check_output(["gcc.exe", "-print-search-dirs"]) bin_path = os.environ["PATH"].split(os.pathsep) lib_path = [] @@ -42,11 +42,48 @@ def make_win_dist(dist_root, target_triple): else: rustc_dlls.append("libgcc_s_seh-1.dll") - target_libs = ["crtbegin.o", "crtend.o", "crt2.o", "dllcrt2.o", - "libadvapi32.a", "libcrypt32.a", "libgcc.a", "libgcc_eh.a", "libgcc_s.a", - "libimagehlp.a", "libiphlpapi.a", "libkernel32.a", "libm.a", "libmingw32.a", - "libmingwex.a", "libmsvcrt.a", "libpsapi.a", "libshell32.a", "libstdc++.a", - "libuser32.a", "libws2_32.a", "libiconv.a", "libmoldname.a"] + target_libs = [ # MinGW libs + "crtbegin.o", + "crtend.o", + "crt2.o", + "dllcrt2.o", + "libgcc.a", + "libgcc_eh.a", + "libgcc_s.a", + "libm.a", + "libmingw32.a", + "libmingwex.a", + "libstdc++.a", + "libiconv.a", + "libmoldname.a", + # Windows import libs + "libadvapi32.a", + "libbcrypt.a", + "libcomctl32.a", + "libcomdlg32.a", + "libcrypt32.a", + "libctl3d32.a", + "libgdi32.a", + "libimagehlp.a", + "libiphlpapi.a", + "libkernel32.a", + "libmsvcrt.a", + "libodbc32.a", + "libole32.a", + "liboleaut32.a", + "libopengl32.a", + "libpsapi.a", + "librpcrt4.a", + "libsetupapi.a", + "libshell32.a", + "libuser32.a", + "libuuid.a", + "libwinhttp.a", + "libwinmm.a", + "libwinspool.a", + "libws2_32.a", + "libwsock32.a", + ] # Find mingw artifacts we want to bundle target_tools = find_files(target_tools, bin_path) @@ -59,14 +96,14 @@ def make_win_dist(dist_root, target_triple): shutil.copy(src, dist_bin_dir) # Copy platform tools to platform-specific bin directory - target_bin_dir = os.path.join(dist_root, "bin", "rustlib", target_triple, "gcc", "bin") + target_bin_dir = os.path.join(dist_root, "bin", "rustlib", target_triple, "bin") if not os.path.exists(target_bin_dir): os.makedirs(target_bin_dir) for src in target_tools: shutil.copy(src, target_bin_dir) # Copy platform libs to platform-spcific lib directory - target_lib_dir = os.path.join(dist_root, "bin", "rustlib", target_triple, "gcc", "lib") + target_lib_dir = os.path.join(dist_root, "bin", "rustlib", target_triple, "lib") if not os.path.exists(target_lib_dir): os.makedirs(target_lib_dir) for src in target_libs: diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index 30c76a7bf5f..3f76a575a1e 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -890,9 +890,6 @@ fn link_args(cmd: &mut Command, cmd.arg(obj_filename.with_extension("metadata.o")); } - // Rust does its' own LTO - cmd.arg("-fno-lto"); - if t.options.is_like_osx { // The dead_strip option to the linker specifies that functions and data // unreachable by the entry point will be removed. This is quite useful diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 299ae9eb41d..b4fd2ad00dd 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -568,8 +568,8 @@ pub fn phase_6_link_output(sess: &Session, trans: &CrateTranslation, outputs: &OutputFilenames) { let old_path = os::getenv("PATH").unwrap_or_else(||String::new()); - let mut new_path = os::split_paths(old_path.as_slice()); - new_path.extend(sess.host_filesearch().get_tools_search_paths().into_iter()); + let mut new_path = sess.host_filesearch().get_tools_search_paths(); + new_path.extend(os::split_paths(old_path.as_slice()).into_iter()); os::setenv("PATH", os::join_paths(new_path.as_slice()).unwrap()); time(sess.time_passes(), "linking", (), |_| diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs index 6d938b56303..99e9deb4637 100644 --- a/src/librustc/metadata/filesearch.rs +++ b/src/librustc/metadata/filesearch.rs @@ -150,12 +150,8 @@ impl<'a> FileSearch<'a> { p.push(find_libdir(self.sysroot)); p.push(rustlibdir()); p.push(self.triple); - let mut p1 = p.clone(); - p1.push("bin"); - let mut p2 = p.clone(); - p2.push("gcc"); - p2.push("bin"); - vec![p1, p2] + p.push("bin"); + vec![p] } }