libshit

Just some random shit
git clone https://git.neptards.moe/neptards/libshit.git
Log | Files | Refs | Submodules | README | LICENSE

libcxxabi-8.0.1.ebuild (3226B)


      1 # Copyright 1999-2019 Gentoo Authors
      2 # Distributed under the terms of the GNU General Public License v2
      3 
      4 EAPI=7
      5 
      6 : ${CMAKE_MAKEFILE_GENERATOR:=ninja}
      7 # (needed due to CMAKE_BUILD_TYPE != Gentoo)
      8 CMAKE_MIN_VERSION=3.7.0-r1
      9 PYTHON_COMPAT=( python2_7 )
     10 
     11 inherit cmake-multilib llvm multiprocessing python-any-r1
     12 
     13 MY_P=${P/_/}.src
     14 LIBCXX_P=libcxx-${PV/_/}.src
     15 
     16 DESCRIPTION="Low level support for a standard C++ library"
     17 HOMEPAGE="https://libcxxabi.llvm.org/"
     18 SRC_URI="https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/${MY_P}.tar.xz
     19 	https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/${LIBCXX_P}.tar.xz"
     20 
     21 LICENSE="|| ( UoI-NCSA MIT )"
     22 SLOT="0"
     23 KEYWORDS="amd64 arm arm64 x86"
     24 IUSE="+libunwind +static-libs test elibc_musl"
     25 RESTRICT="!test? ( test )"
     26 
     27 RDEPEND="
     28 	libunwind? (
     29 		|| (
     30 			>=sys-libs/libunwind-1.0.1-r1[static-libs?,${MULTILIB_USEDEP}]
     31 			>=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,${MULTILIB_USEDEP}]
     32 		)
     33 	)"
     34 # llvm-6 for new lit options
     35 DEPEND="${RDEPEND}
     36 	>=sys-devel/llvm-6
     37 	test? ( >=sys-devel/clang-3.9.0
     38 		$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') )"
     39 
     40 S=${WORKDIR}/${MY_P}
     41 
     42 # least intrusive of all
     43 CMAKE_BUILD_TYPE=RelWithDebInfo
     44 
     45 python_check_deps() {
     46 	has_version "dev-python/lit[${PYTHON_USEDEP}]"
     47 }
     48 
     49 pkg_setup() {
     50 	llvm_pkg_setup
     51 	use test && python-any-r1_pkg_setup
     52 }
     53 
     54 src_unpack() {
     55 	default
     56 	mv "${LIBCXX_P}" libcxx || die
     57 }
     58 
     59 multilib_src_configure() {
     60 	local libdir=$(get_libdir)
     61 	local mycmakeargs=(
     62 		-DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}
     63 		-DLIBCXXABI_ENABLE_SHARED=ON
     64 		-DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
     65 		-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)
     66 		-DLIBCXXABI_INCLUDE_TESTS=$(usex test)
     67 
     68 		-DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
     69 		# upstream is omitting standard search path for this
     70 		# probably because gcc & clang are bundling their own unwind.h
     71 		-DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include
     72 	)
     73 	if use test; then
     74 		local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null)
     75 		local jobs=${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}
     76 
     77 		[[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests"
     78 
     79 		mycmakeargs+=(
     80 			-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
     81 			-DLLVM_LIT_ARGS="-vv;-j;${jobs};--param=cxx_under_test=${clang_path}"
     82 		)
     83 	fi
     84 	cmake-utils_src_configure
     85 }
     86 
     87 build_libcxx() {
     88 	local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)"
     89 	local CMAKE_USE_DIR=${WORKDIR}/libcxx
     90 	local BUILD_DIR=${BUILD_DIR}/libcxx
     91 	local mycmakeargs=(
     92 		-DLIBCXX_LIBDIR_SUFFIX=
     93 		-DLIBCXX_ENABLE_SHARED=ON
     94 		-DLIBCXX_ENABLE_STATIC=OFF
     95 		-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
     96 		-DLIBCXX_CXX_ABI=libcxxabi
     97 		-DLIBCXX_CXX_ABI_INCLUDE_PATHS="${S}"/include
     98 		-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
     99 		-DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl)
    100 		-DLIBCXX_HAS_GCC_S_LIB=OFF
    101 		-DLIBCXX_INCLUDE_TESTS=OFF
    102 	)
    103 
    104 	cmake-utils_src_configure
    105 	cmake-utils_src_compile
    106 }
    107 
    108 multilib_src_test() {
    109 	# build a local copy of libc++ for testing to avoid circular dep
    110 	build_libcxx
    111 	mv "${BUILD_DIR}"/libcxx/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || die
    112 
    113 	cmake-utils_src_make check-libcxxabi
    114 }
    115 
    116 multilib_src_install_all() {
    117 	insinto /usr/include/libcxxabi
    118 	doins -r include/.
    119 }