mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
auto merge of #11045 : jhasse/rust/patch-libdir, r=alexcrichton
See https://github.com/mozilla/rust/issues/5223#issuecomment-30455086
This commit is contained in:
commit
4329fc6730
@ -416,6 +416,7 @@ export CFG_ENABLE_MINGW_CROSS
|
|||||||
export CFG_PREFIX
|
export CFG_PREFIX
|
||||||
export CFG_LIBDIR
|
export CFG_LIBDIR
|
||||||
export CFG_RUSTLIBDIR
|
export CFG_RUSTLIBDIR
|
||||||
|
export LIBDIR_RELATIVE
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Subprograms
|
# Subprograms
|
||||||
@ -433,12 +434,12 @@ define SREQ
|
|||||||
# Destinations of artifacts for the host compiler
|
# Destinations of artifacts for the host compiler
|
||||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR)
|
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(LIBDIR_RELATIVE)
|
||||||
|
|
||||||
# Destinations of artifacts for target architectures
|
# Destinations of artifacts for target architectures
|
||||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/$$(CFG_RUSTLIBDIR)/$(2)
|
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/$$(CFG_RUSTLIBDIR)/$(2)
|
||||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/$$(CFG_LIBDIR)
|
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||||
|
|
||||||
# The name of the standard and extra libraries used by rustc
|
# The name of the standard and extra libraries used by rustc
|
||||||
HSTDLIB_DEFAULT$(1)_H_$(3) = \
|
HSTDLIB_DEFAULT$(1)_H_$(3) = \
|
||||||
|
42
configure
vendored
42
configure
vendored
@ -397,7 +397,17 @@ valopt sysconfdir "/etc" "install system configuration files"
|
|||||||
valopt datadir "${CFG_PREFIX}/share" "install data"
|
valopt datadir "${CFG_PREFIX}/share" "install data"
|
||||||
valopt infodir "${CFG_PREFIX}/share/info" "install additional info"
|
valopt infodir "${CFG_PREFIX}/share/info" "install additional info"
|
||||||
valopt mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
|
valopt mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
|
||||||
valopt libdir "${CFG_PREFIX}/lib" "install libraries"
|
|
||||||
|
# On windows we just store the libraries in the bin directory because
|
||||||
|
# there's no rpath
|
||||||
|
# FIXME: Thise needs to parameterized over target triples. Do it in platform.mk
|
||||||
|
LIBDIR_RELATIVE=lib
|
||||||
|
if [ "$CFG_OSTYPE" = "pc-mingw32" ]
|
||||||
|
then
|
||||||
|
LIBDIR_RELATIVE=bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
valopt libdir "${CFG_PREFIX}/${LIBDIR_RELATIVE}" "install libraries"
|
||||||
valopt rustlibdir "rustlib" "subdirectory name for rustc's libraries"
|
valopt rustlibdir "rustlib" "subdirectory name for rustc's libraries"
|
||||||
|
|
||||||
# Validate Options
|
# Validate Options
|
||||||
@ -560,10 +570,10 @@ then
|
|||||||
step_msg "on OS X 10.9, forcing use of clang"
|
step_msg "on OS X 10.9, forcing use of clang"
|
||||||
CFG_ENABLE_CLANG=1
|
CFG_ENABLE_CLANG=1
|
||||||
putvar CFG_ENABLE_CLANG
|
putvar CFG_ENABLE_CLANG
|
||||||
else
|
else
|
||||||
# on OS X, with xcode 5 and newer, certain developers may have
|
# on OS X, with xcode 5 and newer, certain developers may have
|
||||||
# cc, gcc and g++ point to a mixture of clang and gcc
|
# cc, gcc and g++ point to a mixture of clang and gcc
|
||||||
# if so, this will create very strange build errors
|
# if so, this will create very strange build errors
|
||||||
# this last stanza is to detect some such problems and save the future rust
|
# this last stanza is to detect some such problems and save the future rust
|
||||||
# contributor some time solving that issue.
|
# contributor some time solving that issue.
|
||||||
# this detection could be generalized to other OSes aside from OS X
|
# this detection could be generalized to other OSes aside from OS X
|
||||||
@ -576,8 +586,8 @@ then
|
|||||||
# note that for xcode 5, g++ points to clang, not clang++
|
# note that for xcode 5, g++ points to clang, not clang++
|
||||||
if !((chk_cc gcc clang && chk_cc g++ clang) ||
|
if !((chk_cc gcc clang && chk_cc g++ clang) ||
|
||||||
(chk_cc gcc gcc &&( chk_cc g++ g++ || chk g++ gcc))) then
|
(chk_cc gcc gcc &&( chk_cc g++ g++ || chk g++ gcc))) then
|
||||||
err "the gcc and g++ in your path point to different compilers.
|
err "the gcc and g++ in your path point to different compilers.
|
||||||
Check which versions are in your path with cc --version and g++ --version.
|
Check which versions are in your path with cc --version and g++ --version.
|
||||||
To resolve this problem, either fix your PATH or run configure with --enable-clang"
|
To resolve this problem, either fix your PATH or run configure with --enable-clang"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -751,15 +761,6 @@ do
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
# On windows we just store the libraries in the bin directory because
|
|
||||||
# there's no rpath
|
|
||||||
# FIXME: Thise needs to parameterized over target triples. Do it in platform.mk
|
|
||||||
CFG_LIBDIR=lib
|
|
||||||
if [ "$CFG_OSTYPE" = "pc-mingw32" ]
|
|
||||||
then
|
|
||||||
CFG_LIBDIR=bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
for h in $CFG_HOST
|
for h in $CFG_HOST
|
||||||
do
|
do
|
||||||
for t in $CFG_TARGET
|
for t in $CFG_TARGET
|
||||||
@ -770,21 +771,21 @@ do
|
|||||||
make_dir $h/stage$i/bin
|
make_dir $h/stage$i/bin
|
||||||
|
|
||||||
# host lib dir
|
# host lib dir
|
||||||
make_dir $h/stage$i/$CFG_LIBDIR
|
make_dir $h/stage$i/$LIBDIR_RELATIVE
|
||||||
|
|
||||||
# host test dir
|
# host test dir
|
||||||
make_dir $h/stage$i/test
|
make_dir $h/stage$i/test
|
||||||
|
|
||||||
# target bin dir
|
# target bin dir
|
||||||
make_dir $h/stage$i/$CFG_LIBDIR/$CFG_RUSTLIBDIR/$t/bin
|
make_dir $h/stage$i/$LIBDIR_RELATIVE/$CFG_RUSTLIBDIR/$t/bin
|
||||||
|
|
||||||
# target lib dir
|
# target lib dir
|
||||||
make_dir $h/stage$i/$CFG_LIBDIR/$CFG_RUSTLIBDIR/$t/$CFG_LIBDIR
|
make_dir $h/stage$i/$LIBDIR_RELATIVE/$CFG_RUSTLIBDIR/$t/lib
|
||||||
done
|
done
|
||||||
|
|
||||||
# Fix stage0:
|
# Fix stage0:
|
||||||
make_dir $h/stage0/$CFG_LIBDIR/rustc/$t/bin
|
make_dir $h/stage0/$LIBDIR_RELATIVE/rustc/$t/bin
|
||||||
make_dir $h/stage0/$CFG_LIBDIR/rustc/$t/$CFG_LIBDIR
|
make_dir $h/stage0/$LIBDIR_RELATIVE/rustc/$t/$LIBDIR_RELATIVE
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -1038,6 +1039,7 @@ putvar CFG_TARGET
|
|||||||
putvar CFG_C_COMPILER
|
putvar CFG_C_COMPILER
|
||||||
putvar CFG_LIBDIR
|
putvar CFG_LIBDIR
|
||||||
putvar CFG_RUSTLIBDIR
|
putvar CFG_RUSTLIBDIR
|
||||||
|
putvar LIBDIR_RELATIVE
|
||||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||||
putvar CFG_ANDROID_CROSS_PATH
|
putvar CFG_ANDROID_CROSS_PATH
|
||||||
putvar CFG_MINGW32_CROSS_PATH
|
putvar CFG_MINGW32_CROSS_PATH
|
||||||
|
@ -149,7 +149,7 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBNATIVE_$(4)): \
|
|||||||
$$(HBIN$(2)_H_$(4))/:
|
$$(HBIN$(2)_H_$(4))/:
|
||||||
mkdir -p $$@
|
mkdir -p $$@
|
||||||
|
|
||||||
ifneq ($(CFG_LIBDIR),bin)
|
ifneq ($(LIBDIR_RELATIVE),bin)
|
||||||
$$(HLIB$(2)_H_$(4))/:
|
$$(HLIB$(2)_H_$(4))/:
|
||||||
mkdir -p $$@
|
mkdir -p $$@
|
||||||
endif
|
endif
|
||||||
|
@ -63,7 +63,7 @@ ISTAGE = 2
|
|||||||
|
|
||||||
PREFIX_ROOT = $(CFG_PREFIX)
|
PREFIX_ROOT = $(CFG_PREFIX)
|
||||||
PREFIX_BIN = $(PREFIX_ROOT)/bin
|
PREFIX_BIN = $(PREFIX_ROOT)/bin
|
||||||
PREFIX_LIB = $(PREFIX_ROOT)/$(CFG_LIBDIR)
|
PREFIX_LIB = $(CFG_LIBDIR)
|
||||||
|
|
||||||
define INSTALL_PREPARE_N
|
define INSTALL_PREPARE_N
|
||||||
# $(1) is the target triple
|
# $(1) is the target triple
|
||||||
@ -76,7 +76,7 @@ TL$(1)$(2) = $$(TLIB$$(ISTAGE)_T_$(1)_H_$(2))
|
|||||||
# PT{R,B,L} == Prefix Target {Root, Bin, Lib}
|
# PT{R,B,L} == Prefix Target {Root, Bin, Lib}
|
||||||
PTR$(1)$(2) = $$(PREFIX_LIB)/$(CFG_RUSTLIBDIR)/$(1)
|
PTR$(1)$(2) = $$(PREFIX_LIB)/$(CFG_RUSTLIBDIR)/$(1)
|
||||||
PTB$(1)$(2) = $$(PTR$(1)$(2))/bin
|
PTB$(1)$(2) = $$(PTR$(1)$(2))/bin
|
||||||
PTL$(1)$(2) = $$(PTR$(1)$(2))/$(CFG_LIBDIR)
|
PTL$(1)$(2) = $$(PTR$(1)$(2))/lib
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -193,10 +193,8 @@ endif
|
|||||||
$$(TBIN$(1)_T_$(2)_H_$(3))/:
|
$$(TBIN$(1)_T_$(2)_H_$(3))/:
|
||||||
mkdir -p $$@
|
mkdir -p $$@
|
||||||
|
|
||||||
ifneq ($(CFG_LIBDIR),bin)
|
|
||||||
$$(TLIB$(1)_T_$(2)_H_$(3))/:
|
$$(TLIB$(1)_T_$(2)_H_$(3))/:
|
||||||
mkdir -p $$@
|
mkdir -p $$@
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
10
mk/tests.mk
10
mk/tests.mk
@ -101,14 +101,14 @@ endif
|
|||||||
ifdef CFG_WINDOWSY_$(1)
|
ifdef CFG_WINDOWSY_$(1)
|
||||||
CFG_TESTLIB_$(1)=$$(CFG_BUILD_DIR)$$(2)/$$(strip \
|
CFG_TESTLIB_$(1)=$$(CFG_BUILD_DIR)$$(2)/$$(strip \
|
||||||
$$(if $$(findstring stage0,$$(1)), \
|
$$(if $$(findstring stage0,$$(1)), \
|
||||||
stage0/$$(CFG_LIBDIR), \
|
stage0/$$(LIBDIR_RELATIVE), \
|
||||||
$$(if $$(findstring stage1,$$(1)), \
|
$$(if $$(findstring stage1,$$(1)), \
|
||||||
stage1/$$(CFG_LIBDIR), \
|
stage1/$$(LIBDIR_RELATIVE), \
|
||||||
$$(if $$(findstring stage2,$$(1)), \
|
$$(if $$(findstring stage2,$$(1)), \
|
||||||
stage2/$$(CFG_LIBDIR), \
|
stage2/$$(LIBDIR_RELATIVE), \
|
||||||
$$(if $$(findstring stage3,$$(1)), \
|
$$(if $$(findstring stage3,$$(1)), \
|
||||||
stage3/$$(CFG_LIBDIR), \
|
stage3/$$(LIBDIR_RELATIVE), \
|
||||||
)))))/$$(CFG_RUSTLIBDIR)/$$(CFG_BUILD)/$$(CFG_LIBDIR)
|
)))))/$$(CFG_RUSTLIBDIR)/$$(CFG_BUILD)/lib
|
||||||
CFG_RUN_TEST_$(1)=$$(call CFG_RUN_$(1),$$(call CFG_TESTLIB_$(1),$$(1),$$(3)),$$(1))
|
CFG_RUN_TEST_$(1)=$$(call CFG_RUN_$(1),$$(call CFG_TESTLIB_$(1),$$(1),$$(3)),$$(1))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -154,12 +154,11 @@ pub fn search(filesearch: @FileSearch, pick: pick) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn relative_target_lib_path(target_triple: &str) -> Path {
|
pub fn relative_target_lib_path(target_triple: &str) -> Path {
|
||||||
let dir = libdir();
|
let mut p = Path::new(libdir());
|
||||||
let mut p = Path::new(dir.as_slice());
|
|
||||||
assert!(p.is_relative());
|
assert!(p.is_relative());
|
||||||
p.push(rustlibdir());
|
p.push(rustlibdir());
|
||||||
p.push(target_triple);
|
p.push(target_triple);
|
||||||
p.push(dir);
|
p.push("lib");
|
||||||
p
|
p
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,7 +244,7 @@ pub fn rust_path() -> ~[Path] {
|
|||||||
// The name of the directory rustc expects libraries to be located.
|
// The name of the directory rustc expects libraries to be located.
|
||||||
// On Unix should be "lib", on windows "bin"
|
// On Unix should be "lib", on windows "bin"
|
||||||
pub fn libdir() -> ~str {
|
pub fn libdir() -> ~str {
|
||||||
(env!("CFG_LIBDIR")).to_owned()
|
(env!("LIBDIR_RELATIVE")).to_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
// The name of rustc's own place to organize libraries.
|
// The name of rustc's own place to organize libraries.
|
||||||
|
Loading…
Reference in New Issue
Block a user