Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 598940 Details for
Bug 702344
>sys-devel/clang-9 - add support for default libunwind library (none|libgcc|libunwind)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
clang ebuild
clang-9.0.1_rc2.ebuild (text/plain), 8.41 KB, created by
David Carlos Manuelda
on 2019-12-09 14:43:28 UTC
(
hide
)
Description:
clang ebuild
Filename:
MIME Type:
Creator:
David Carlos Manuelda
Created:
2019-12-09 14:43:28 UTC
Size:
8.41 KB
patch
obsolete
># Copyright 1999-2019 Gentoo Authors ># Distributed under the terms of the GNU General Public License v2 > >EAPI=7 > >PYTHON_COMPAT=( python{2_7,3_{5,6,7}} ) >inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \ > pax-utils python-single-r1 toolchain-funcs > >DESCRIPTION="C language family frontend for LLVM" >HOMEPAGE="https://llvm.org/" >LLVM_COMPONENTS=( clang clang-tools-extra ) >LLVM_TEST_COMPONENTS=( > llvm/lib/Testing/Support > llvm/utils/{lit,llvm-lit,unittest} >) >llvm.org_set_globals ># We need extra level of indirection for CLANG_RESOURCE_DIR >S=${WORKDIR}/x/y/clang > ># Keep in sync with sys-devel/llvm >ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 > NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore ) >ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) >LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} > ># MSVCSetupApi.h: MIT ># sorttable.js: MIT > >LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT" >SLOT="$(ver_cut 1)" >KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux" >IUSE="debug default-compiler-rt default-libcxx doc +static-analyzer > test xml kernel_FreeBSD ${ALL_LLVM_TARGETS[*]}" >REQUIRED_USE="${PYTHON_REQUIRED_USE} > || ( ${ALL_LLVM_TARGETS[*]} )" >RESTRICT="!test? ( test )" > >RDEPEND=" > ~sys-devel/llvm-${PV}:${SLOT}=[debug=,${LLVM_TARGET_USEDEPS// /,},${MULTILIB_USEDEP}] > static-analyzer? ( dev-lang/perl:* ) > xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] ) > ${PYTHON_DEPS}" >DEPEND="${RDEPEND}" >BDEPEND=" > doc? ( dev-python/sphinx ) > xml? ( virtual/pkgconfig ) > ${PYTHON_DEPS}" >RDEPEND="${RDEPEND} > !<sys-devel/llvm-4.0.0_rc:0 > !sys-devel/clang:0" >PDEPEND=" > sys-devel/clang-common > ~sys-devel/clang-runtime-${PV} > default-compiler-rt? ( > =sys-libs/compiler-rt-${PV%_*}* > =sys-libs/llvm-libunwind-${PV%_*}* > ) > default-libcxx? ( >=sys-libs/libcxx-${PV} )" > ># least intrusive of all >CMAKE_BUILD_TYPE=RelWithDebInfo > ># Multilib notes: ># 1. ABI_* flags control ABIs libclang* is built for only. ># 2. clang is always capable of compiling code for all ABIs for enabled ># target. However, you will need appropriate crt* files (installed ># e.g. by sys-devel/gcc and sys-libs/glibc). ># 3. ${CHOST}-clang wrappers are always installed for all ABIs included ># in the current profile (i.e. alike supported by sys-devel/gcc). ># ># Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need ># multilib clang* libraries (not runtime, not wrappers). > >pkg_setup() { > LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup > python-single-r1_pkg_setup >} > >src_unpack() { > # create extra parent dir for CLANG_RESOURCE_DIR > mkdir -p x/y || die > cd x/y || die > llvm.org_src_unpack > mv clang-tools-extra clang/tools/extra || die >} > >multilib_src_configure() { > local llvm_version=$(llvm-config --version) || die > local clang_version=$(ver_cut 1-3 "${llvm_version}") > > local mycmakeargs=( > -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" > -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" > # relative to bindir > -DCLANG_RESOURCE_DIR="../../../../lib/clang/${clang_version}" > > -DBUILD_SHARED_LIBS=ON > -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" > -DLLVM_BUILD_TESTS=$(usex test) > > # these are not propagated reliably, so redefine them > -DLLVM_ENABLE_EH=ON > -DLLVM_ENABLE_RTTI=ON > > -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml) > # libgomp support fails to find headers without explicit -I > # furthermore, it provides only syntax checking > -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp > > # override default stdlib and rtlib > -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "") > -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "") > -DCLANG_DEFAULT_UNWINDLIB=$(usex default-compiler-rt libunwind "") > > -DCLANG_ENABLE_ARCMT=$(usex static-analyzer) > -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer) > ) > use test && mycmakeargs+=( > -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm" > -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}" > ) > > if multilib_is_native_abi; then > mycmakeargs+=( > # normally copied from LLVM_INCLUDE_DOCS but the latter > # is lacking value in stand-alone builds > -DCLANG_INCLUDE_DOCS=$(usex doc) > -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc) > ) > use doc && mycmakeargs+=( > -DLLVM_BUILD_DOCS=ON > -DLLVM_ENABLE_SPHINX=ON > -DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" > -DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra" > -DSPHINX_WARNINGS_AS_ERRORS=OFF > ) > else > mycmakeargs+=( > -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF > ) > fi > > if [[ -n ${EPREFIX} ]]; then > mycmakeargs+=( > -DGCC_INSTALL_PREFIX="${EPREFIX}/usr" > ) > fi > > if tc-is-cross-compiler; then > [[ -x "/usr/bin/clang-tblgen" ]] \ > || die "/usr/bin/clang-tblgen not found or usable" > mycmakeargs+=( > -DCMAKE_CROSSCOMPILING=ON > -DCLANG_TABLEGEN=/usr/bin/clang-tblgen > ) > fi > > # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 > use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" > cmake-utils_src_configure >} > >multilib_src_compile() { > cmake-utils_src_compile > > # provide a symlink for tests > if [[ ! -L ${WORKDIR}/lib/clang ]]; then > mkdir -p "${WORKDIR}"/lib || die > ln -s "${BUILD_DIR}/$(get_libdir)/clang" "${WORKDIR}"/lib/clang || die > fi >} > >multilib_src_test() { > # respect TMPDIR! > local -x LIT_PRESERVES_TMP=1 > cmake-utils_src_make check-clang > multilib_is_native_abi && cmake-utils_src_make check-clang-tools >} > >src_install() { > MULTILIB_WRAPPED_HEADERS=( > /usr/include/clang/Config/config.h > ) > > multilib-minimal_src_install > > # Move runtime headers to /usr/lib/clang, where they belong > mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die > # move (remaining) wrapped headers back > mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${SLOT}/include || die > > # Apply CHOST and version suffix to clang tools > # note: we use two version components here (vs 3 in runtime path) > local llvm_version=$(llvm-config --version) || die > local clang_version=$(ver_cut 1 "${llvm_version}") > local clang_full_version=$(ver_cut 1-3 "${llvm_version}") > local clang_tools=( clang clang++ clang-cl clang-cpp ) > local abi i > > # cmake gives us: > # - clang-X > # - clang -> clang-X > # - clang++, clang-cl, clang-cpp -> clang > # we want to have: > # - clang-X > # - clang++-X, clang-cl-X, clang-cpp-X -> clang-X > # - clang, clang++, clang-cl, clang-cpp -> clang*-X > # also in CHOST variant > for i in "${clang_tools[@]:1}"; do > rm "${ED}/usr/lib/llvm/${SLOT}/bin/${i}" || die > dosym "clang-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}-${clang_version}" > dosym "${i}-${clang_version}" "/usr/lib/llvm/${SLOT}/bin/${i}" > done > > # now create target symlinks for all supported ABIs > for abi in $(get_all_abis); do > local abi_chost=$(get_abi_CHOST "${abi}") > for i in "${clang_tools[@]}"; do > dosym "${i}-${clang_version}" \ > "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}-${clang_version}" > dosym "${abi_chost}-${i}-${clang_version}" \ > "/usr/lib/llvm/${SLOT}/bin/${abi_chost}-${i}" > done > done > > # Remove unnecessary headers on FreeBSD, bug #417171 > if use kernel_FreeBSD; then > rm "${ED}"/usr/lib/clang/${clang_full_version}/include/{std,float,iso,limits,tgmath,varargs}*.h || die > fi >} > >multilib_src_install() { > cmake-utils_src_install > > # move headers to /usr/include for wrapping & ABI mismatch checks > # (also drop the version suffix from runtime headers) > rm -rf "${ED}"/usr/include || die > mv "${ED}"/usr/lib/llvm/${SLOT}/include "${ED}"/usr/include || die > mv "${ED}"/usr/lib/llvm/${SLOT}/$(get_libdir)/clang "${ED}"/usr/include/clangrt || die >} > >multilib_src_install_all() { > python_fix_shebang "${ED}" > if use static-analyzer; then > python_optimize "${ED}"/usr/lib/llvm/${SLOT}/share/scan-view > fi > > docompress "/usr/lib/llvm/${SLOT}/share/man" > # match 'html' non-compression > use doc && docompress -x "/usr/share/doc/${PF}/tools-extra" > # +x for some reason; TODO: investigate > use static-analyzer && fperms a-x "/usr/lib/llvm/${SLOT}/share/man/man1/scan-build.1" >} > >pkg_postinst() { > if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then > eselect compiler-shadow update all > fi > > elog "You can find additional utility scripts in:" > elog " ${EROOT}/usr/lib/llvm/${SLOT}/share/clang" > elog "Some of them are vim integration scripts (with instructions inside)." > elog "The run-clang-tidy.py script requires the following additional package:" > elog " dev-python/pyyaml" >} > >pkg_postrm() { > if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then > eselect compiler-shadow clean all > fi >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 702344
: 598940 |
598950
|
689727