diff options
-rw-r--r-- | profiles/prefix/darwin/macos/package.use.force | 4 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-11.0.0.ebuild | 27 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-11.0.1.9999.ebuild | 25 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-11.0.1_rc1.ebuild | 25 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-11.0.1_rc2.ebuild | 25 | ||||
-rw-r--r-- | sys-libs/libcxx/libcxx-12.0.0.9999.ebuild | 25 |
6 files changed, 115 insertions, 16 deletions
diff --git a/profiles/prefix/darwin/macos/package.use.force b/profiles/prefix/darwin/macos/package.use.force index 4b4798eb7ee5..c1677ba92529 100644 --- a/profiles/prefix/darwin/macos/package.use.force +++ b/profiles/prefix/darwin/macos/package.use.force @@ -21,3 +21,7 @@ media-gfx/tachyon threads opengl # Elias Pipping <pipping@gentoo.org> (2007-11-29) # won't compile without media-libs/libsdl opengl + +# Jacob Floyd <cognifloyd@gmail.org> (2020-12-20) +# Make sure we always use libcxxabi on macos prefix +sys-libs/libcxx libcxxabi diff --git a/sys-libs/libcxx/libcxx-11.0.0.ebuild b/sys-libs/libcxx/libcxx-11.0.0.ebuild index d4ba5210700f..cb077d76d64b 100644 --- a/sys-libs/libcxx/libcxx-11.0.0.ebuild +++ b/sys-libs/libcxx/libcxx-11.0.0.ebuild @@ -14,7 +14,7 @@ llvm.org_set_globals LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" SLOT="0" -KEYWORDS="amd64 arm arm64 ~riscv x86" +KEYWORDS="amd64 arm arm64 ~riscv x86 ~x64-macos" IUSE="elibc_glibc elibc_musl +libcxxabi +libunwind +static-libs test" REQUIRED_USE="libunwind? ( libcxxabi )" RESTRICT="!test? ( test )" @@ -41,7 +41,11 @@ python_check_deps() { } pkg_setup() { - llvm_pkg_setup + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version dev-lang/llvm; then + llvm_pkg_setup + fi use test && python-any-r1_pkg_setup if ! use libcxxabi && ! tc-is-gcc ; then @@ -58,6 +62,10 @@ src_prepare() { eapply "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch" llvm.org_src_prepare + + # eprefixify static path references to libc++abi for symbol re-export to + # avoid linking against it twice in both /usr/lib and ${EPREFIX}/usr/lib + sed -i -e "s^/usr/lib/libc++abi.dylib^${EPREFIX}&^g" lib/CMakeLists.txt || die } test_compiler() { @@ -99,6 +107,15 @@ multilib_src_configure() { extra_libs+=( "${compiler_rt}" ) fi fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() fi # bootstrap: cmake is unhappy if compiler can't link to stdlib @@ -188,8 +205,10 @@ gen_shared_ldscript() { multilib_src_install() { cmake_src_install - gen_shared_ldscript - use static-libs && gen_static_ldscript + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi } pkg_postinst() { diff --git a/sys-libs/libcxx/libcxx-11.0.1.9999.ebuild b/sys-libs/libcxx/libcxx-11.0.1.9999.ebuild index dd1a1a1f3a2f..8d2f6ea86216 100644 --- a/sys-libs/libcxx/libcxx-11.0.1.9999.ebuild +++ b/sys-libs/libcxx/libcxx-11.0.1.9999.ebuild @@ -42,7 +42,11 @@ python_check_deps() { } pkg_setup() { - llvm_pkg_setup + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version dev-lang/llvm; then + llvm_pkg_setup + fi use test && python-any-r1_pkg_setup if ! use libcxxabi && ! tc-is-gcc ; then @@ -59,6 +63,10 @@ src_prepare() { eapply "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch" llvm.org_src_prepare + + # eprefixify static path references to libc++abi for symbol re-export to + # avoid linking against it twice in both /usr/lib and ${EPREFIX}/usr/lib + sed -i -e "s^/usr/lib/libc++abi.dylib^${EPREFIX}&^g" lib/CMakeLists.txt || die } test_compiler() { @@ -100,6 +108,15 @@ multilib_src_configure() { extra_libs+=( "${compiler_rt}" ) fi fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() fi # bootstrap: cmake is unhappy if compiler can't link to stdlib @@ -189,8 +206,10 @@ gen_shared_ldscript() { multilib_src_install() { cmake_src_install - gen_shared_ldscript - use static-libs && gen_static_ldscript + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi } pkg_postinst() { diff --git a/sys-libs/libcxx/libcxx-11.0.1_rc1.ebuild b/sys-libs/libcxx/libcxx-11.0.1_rc1.ebuild index dd1a1a1f3a2f..8d2f6ea86216 100644 --- a/sys-libs/libcxx/libcxx-11.0.1_rc1.ebuild +++ b/sys-libs/libcxx/libcxx-11.0.1_rc1.ebuild @@ -42,7 +42,11 @@ python_check_deps() { } pkg_setup() { - llvm_pkg_setup + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version dev-lang/llvm; then + llvm_pkg_setup + fi use test && python-any-r1_pkg_setup if ! use libcxxabi && ! tc-is-gcc ; then @@ -59,6 +63,10 @@ src_prepare() { eapply "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch" llvm.org_src_prepare + + # eprefixify static path references to libc++abi for symbol re-export to + # avoid linking against it twice in both /usr/lib and ${EPREFIX}/usr/lib + sed -i -e "s^/usr/lib/libc++abi.dylib^${EPREFIX}&^g" lib/CMakeLists.txt || die } test_compiler() { @@ -100,6 +108,15 @@ multilib_src_configure() { extra_libs+=( "${compiler_rt}" ) fi fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() fi # bootstrap: cmake is unhappy if compiler can't link to stdlib @@ -189,8 +206,10 @@ gen_shared_ldscript() { multilib_src_install() { cmake_src_install - gen_shared_ldscript - use static-libs && gen_static_ldscript + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi } pkg_postinst() { diff --git a/sys-libs/libcxx/libcxx-11.0.1_rc2.ebuild b/sys-libs/libcxx/libcxx-11.0.1_rc2.ebuild index dd1a1a1f3a2f..8d2f6ea86216 100644 --- a/sys-libs/libcxx/libcxx-11.0.1_rc2.ebuild +++ b/sys-libs/libcxx/libcxx-11.0.1_rc2.ebuild @@ -42,7 +42,11 @@ python_check_deps() { } pkg_setup() { - llvm_pkg_setup + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version dev-lang/llvm; then + llvm_pkg_setup + fi use test && python-any-r1_pkg_setup if ! use libcxxabi && ! tc-is-gcc ; then @@ -59,6 +63,10 @@ src_prepare() { eapply "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch" llvm.org_src_prepare + + # eprefixify static path references to libc++abi for symbol re-export to + # avoid linking against it twice in both /usr/lib and ${EPREFIX}/usr/lib + sed -i -e "s^/usr/lib/libc++abi.dylib^${EPREFIX}&^g" lib/CMakeLists.txt || die } test_compiler() { @@ -100,6 +108,15 @@ multilib_src_configure() { extra_libs+=( "${compiler_rt}" ) fi fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() fi # bootstrap: cmake is unhappy if compiler can't link to stdlib @@ -189,8 +206,10 @@ gen_shared_ldscript() { multilib_src_install() { cmake_src_install - gen_shared_ldscript - use static-libs && gen_static_ldscript + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi } pkg_postinst() { diff --git a/sys-libs/libcxx/libcxx-12.0.0.9999.ebuild b/sys-libs/libcxx/libcxx-12.0.0.9999.ebuild index dd1a1a1f3a2f..8d2f6ea86216 100644 --- a/sys-libs/libcxx/libcxx-12.0.0.9999.ebuild +++ b/sys-libs/libcxx/libcxx-12.0.0.9999.ebuild @@ -42,7 +42,11 @@ python_check_deps() { } pkg_setup() { - llvm_pkg_setup + # darwin prefix builds do not have llvm installed yet, so rely on bootstrap-prefix + # to set the appropriate path vars to LLVM instead of using llvm_pkg_setup. + if [[ ${CHOST} != *-darwin* ]] || has_version dev-lang/llvm; then + llvm_pkg_setup + fi use test && python-any-r1_pkg_setup if ! use libcxxabi && ! tc-is-gcc ; then @@ -59,6 +63,10 @@ src_prepare() { eapply "${FILESDIR}/${PN}-3.9-cmake-link-flags.patch" llvm.org_src_prepare + + # eprefixify static path references to libc++abi for symbol re-export to + # avoid linking against it twice in both /usr/lib and ${EPREFIX}/usr/lib + sed -i -e "s^/usr/lib/libc++abi.dylib^${EPREFIX}&^g" lib/CMakeLists.txt || die } test_compiler() { @@ -100,6 +108,15 @@ multilib_src_configure() { extra_libs+=( "${compiler_rt}" ) fi fi + elif [[ ${CHOST} == *-darwin* ]] && tc-is-clang; then + # clang-based darwin prefix disables libunwind useflag during + # bootstrap, because libunwind is not in the prefix yet. + # override the default, though, because clang based libcxx + # should never use gcc_s on Darwin. + want_gcc_s=OFF + # compiler_rt is not available in EPREFIX during bootstrap, + # so we cannot link to it yet anyway, so keep the defaults + # of want_compiler_rt=OFF and extra_libs=() fi # bootstrap: cmake is unhappy if compiler can't link to stdlib @@ -189,8 +206,10 @@ gen_shared_ldscript() { multilib_src_install() { cmake_src_install - gen_shared_ldscript - use static-libs && gen_static_ldscript + if [[ ${CHOST} != *-darwin* ]] ; then + gen_shared_ldscript + use static-libs && gen_static_ldscript + fi } pkg_postinst() { |