mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
sys-libs/libcxx: Try building with -nodefaultlibs for bootstrap
Add a hack that appends -nodefaultlibs if the C++ compiler fails to link software otherwise. This is based on what we do in sys-libs/compiler-rt already and it should make it possible to bootstrap libc++ on systems without C++ standard library.
This commit is contained in:
@@ -73,6 +73,11 @@ pkg_setup() {
|
||||
fi
|
||||
}
|
||||
|
||||
test_compiler() {
|
||||
$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
|
||||
<<<'int main() { return 0; }' &>/dev/null
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local cxxabi cxxabi_incs
|
||||
if use libcxxabi; then
|
||||
@@ -109,6 +114,15 @@ multilib_src_configure() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# bootstrap: cmake is unhappy if compiler can't link to stdlib
|
||||
local nolib_flags=( -nodefaultlibs -lc )
|
||||
if ! test_compiler; then
|
||||
if test_compiler "${nolib_flags[@]}"; then
|
||||
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
|
||||
ewarn "${CXX} seems to lack runtime, trying with ${nolib_flags[*]}"
|
||||
fi
|
||||
fi
|
||||
|
||||
local libdir=$(get_libdir)
|
||||
local mycmakeargs=(
|
||||
-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}
|
||||
|
||||
@@ -85,6 +85,11 @@ pkg_setup() {
|
||||
fi
|
||||
}
|
||||
|
||||
test_compiler() {
|
||||
$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
|
||||
<<<'int main() { return 0; }' &>/dev/null
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local cxxabi cxxabi_incs
|
||||
if use libcxxabi; then
|
||||
@@ -121,6 +126,15 @@ multilib_src_configure() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# bootstrap: cmake is unhappy if compiler can't link to stdlib
|
||||
local nolib_flags=( -nodefaultlibs -lc )
|
||||
if ! test_compiler; then
|
||||
if test_compiler "${nolib_flags[@]}"; then
|
||||
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
|
||||
ewarn "${CXX} seems to lack runtime, trying with ${nolib_flags[*]}"
|
||||
fi
|
||||
fi
|
||||
|
||||
local libdir=$(get_libdir)
|
||||
local mycmakeargs=(
|
||||
-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}
|
||||
|
||||
@@ -84,6 +84,11 @@ pkg_setup() {
|
||||
fi
|
||||
}
|
||||
|
||||
test_compiler() {
|
||||
$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
|
||||
<<<'int main() { return 0; }' &>/dev/null
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local cxxabi cxxabi_incs
|
||||
if use libcxxabi; then
|
||||
@@ -120,6 +125,15 @@ multilib_src_configure() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# bootstrap: cmake is unhappy if compiler can't link to stdlib
|
||||
local nolib_flags=( -nodefaultlibs -lc )
|
||||
if ! test_compiler; then
|
||||
if test_compiler "${nolib_flags[@]}"; then
|
||||
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
|
||||
ewarn "${CXX} seems to lack runtime, trying with ${nolib_flags[*]}"
|
||||
fi
|
||||
fi
|
||||
|
||||
local libdir=$(get_libdir)
|
||||
local mycmakeargs=(
|
||||
-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}
|
||||
|
||||
Reference in New Issue
Block a user