# Contributor: Dmitry Golovin # Contributor: Shiz # Maintainer: Shiz global pkgname := 'libc++' global pkgver := '4.0.0' global pkgrel := '0' global _llvmver := $(pkgver%%.*) global pkgdesc := '"A new implementation of the C++ standard library, targeting C++11'" global url := '"http://libcxx.llvm.org/'" global arch := '"all !ppc64le !s390x'" global license := '"UOI-NCSA'" global makedepends := ""cmake clang>=$_llvmver llvm-dev>=$_llvmver llvm-libunwind-dev>=$_llvmver llvm-static>=$_llvmver"" global checkdepends := '"lit'" global subpackages := ""$pkgname-dev"" global source := ""http://releases.llvm.org/$pkgver/libcxx-$pkgver.src.tar.xz http://releases.llvm.org/$pkgver/libcxxabi-$pkgver.src.tar.xz check-for-musl-libcs-max_align_t.patch avoid-strtoll_l.patch disable-broken-tests.patch no-libunwind-sources.patch"" global builddir := $srcdir global _cxxdir := ""$srcdir/libcxx-$pkgver.src"" global _abidir := ""$srcdir/libcxxabi-$pkgver.src"" # Tests on armhf are too slooow, disable them for now. matchstr $CARCH { armhf { global options := '"!check'"} } proc prepare { ln -s $_cxxdir "$srcdir"/libcxx ln -s $_abidir "$srcdir"/libcxxabi default_prepare } # Due a mutual build-time dependency between libc++abi and libc++, it is # preferable that we build them within the same APKBUILD to avoid duplication. # Since nothing else seems to need libc++abi and we need to compile it into # libc++ statically anyway to make -static with libc++ work, we don't actually # create libc++abi packages. If something arises that depends on libc++abi, # this may change, but for now this is the simplest approach. proc build { mkdir -p "$_abidir"/build cd "$_abidir"/build cmake .. \ -DCMAKE_BUILD_TYPE=MinSizeRel \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DLIBCXXABI_LIBUNWIND_INCLUDES=/usr/include \ -DLIBCXXABI_LIBCXX_INCLUDES="$_cxxdir"/include \ -DLIBCXXABI_LIBCXX_LIBRARY_PATH="$_cxxdir"/build/lib \ -DLIBCXXABI_INCLUDE_TESTS=1 make mkdir -p "$_cxxdir"/build cd "$_cxxdir"/build cmake .. \ -DCMAKE_BUILD_TYPE=MinSizeRel \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DLIBCXX_HAS_MUSL_LIBC=ON \ -DLIBCXX_HAS_GCC_S_LIB=OFF \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$_abidir"/include \ -DLIBCXX_CXX_ABI_LIBRARY_PATH="$_abidir"/build/lib \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON # needed to make -static work. make } proc check { cd "$_abidir"/build make check-cxxabi cd "$_cxxdir"/build # XXX: Some tests fail due to fakeroot currently, and some other due # yet-uninvestigated causes. make check-cxx || true } proc package { cd "$_cxxdir"/build make install DESTDIR="$pkgdir" } global sha512sums := '"6dad794c00919955e14710def169cdcde8a1743431479e993c4a6a3c87c2fd9f5dbd6e17542e524981eed0783dce70384c356b74ef3c6d70598c6ff03454b1dd libcxx-4.0.0.src.tar.xz b69933a0bde00321323e98962cd54b78a48bc5e93448d7a5124cb5ef844497ba7648cd92fcbe476186c60c7742e3121841f150c142c2a14c1bf2aa26a8b93d64 libcxxabi-4.0.0.src.tar.xz 6ad979fd7095940759cd1f51cc6d1d9a98dd78ecc51191f4d7bdbca834fcad7e5371ac6199512ca297267868bfbe1872258a903a03c98e7aa46700d31e79d24a check-for-musl-libcs-max_align_t.patch 212bbc1bcbc4628754bdd5bc8a9109fa0032790a3c80517a647a26ee27c22daa417303a72b6cc92cfc099dcc7fd9a36e9d8899165ebe4a5ab14030eaa596bc9c avoid-strtoll_l.patch c3e4b9d68a9b7c7066f3a63c756fe682749d8d8abbfdf629d7ed085bbb5f69a1c2d79d0e53f036e0a5d9e501c48df15708560f3a4e6d68ac91c577572d181ccd disable-broken-tests.patch 7d514667bbbb3b32286b91c1b96126cc795ea37db0c6ecdb6502422a4bd6a55553ff2b85ba6cec2969d9d88402713cc4544b9b895b516693a0e5f31a5d628da4 no-libunwind-sources.patch'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgname) op: Equal rhs: {(libc) (Lit_Other "+") (Lit_Other "+")} spids: [9] ) ] spids: [9] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(4.0.0)} spids:[14])] spids: [14] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(0)} spids:[17])] spids: [17] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_llvmver) op: Equal rhs: { (BracedVarSub token: suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(".*")}) spids: [21 25] ) } spids: [20] ) ] spids: [20] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("A new implementation of the C++ standard library, targeting C++11"))} spids: [27] ) ] spids: [27] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://libcxx.llvm.org/"))} spids: [32] ) ] spids: [32] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arch) op: Equal rhs: {(DQ ("all !ppc64le !s390x"))} spids: [37] ) ] spids: [37] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (UOI-NCSA))} spids:[42])] spids: [42] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:makedepends) op: Equal rhs: { (DQ ("cmake\n") ("\tclang>=") ($ VSub_Name "$_llvmver") ("\n") ("\tllvm-dev>=") ($ VSub_Name "$_llvmver") ("\n") ("\tllvm-libunwind-dev>=") ($ VSub_Name "$_llvmver") ("\n") ("\tllvm-static>=") ($ VSub_Name "$_llvmver") ) } spids: [47] ) ] spids: [47] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:checkdepends) op:Equal rhs:{(DQ (lit))} spids:[63])] spids: [63] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: {(DQ ($ VSub_Name "$pkgname") (-dev))} spids: [68] ) ] spids: [68] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ("http://releases.llvm.org/") ($ VSub_Name "$pkgver") (/libcxx-) ($ VSub_Name "$pkgver") (".src.tar.xz\n") ("\thttp://releases.llvm.org/") ($ VSub_Name "$pkgver") (/libcxxabi-) ($ VSub_Name "$pkgver") (".src.tar.xz\n") ("\tcheck-for-musl-libcs-max_align_t.patch\n") ("\tavoid-strtoll_l.patch\n") ("\tdisable-broken-tests.patch\n") ("\tno-libunwind-sources.patch") ) } spids: [74] ) ] spids: [74] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir"))} spids: [92] ) ] spids: [92] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_cxxdir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir") (/libcxx-) ($ VSub_Name "$pkgver") (.src))} spids: [97] ) ] spids: [97] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_abidir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir") (/libcxxabi-) ($ VSub_Name "$pkgver") (.src))} spids: [105] ) ] spids: [105] ) (Case to_match: {(DQ ($ VSub_Name "$CARCH"))} arms: [ (case_arm pat_list: [{(armhf)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:options) op: Equal rhs: {(DQ ("!check"))} spids: [129] ) ] spids: [129] ) ] spids: [126 127 133 -1] ) ] spids: [117 123 135] ) (FuncDef name: prepare body: (BraceGroup children: [ (C {(ln)} {(-s)} {(DQ ($ VSub_Name "$_cxxdir"))} {(DQ ($ VSub_Name "$srcdir")) (/libcxx)}) (C {(ln)} {(-s)} {(DQ ($ VSub_Name "$_abidir"))} {(DQ ($ VSub_Name "$srcdir")) (/libcxxabi)}) (C {(default_prepare)}) ] spids: [142] ) spids: [138 141] ) (FuncDef name: build body: (BraceGroup children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$_abidir")) (/build)}) (C {(cd)} {(DQ ($ VSub_Name "$_abidir")) (/build)}) (C {(cmake)} {(..)} {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (MinSizeRel)} {(-DCMAKE_INSTALL_PREFIX) (Lit_Other "=") (/usr)} {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (clang) (Lit_Other "+") (Lit_Other "+")} {(-DCMAKE_CXX_FLAGS) (Lit_Other "=") (DQ ($ VSub_Name "$CXXFLAGS"))} {(-DCMAKE_C_COMPILER) (Lit_Other "=") (clang)} {(-DCMAKE_C_FLAGS) (Lit_Other "=") (DQ ($ VSub_Name "$CFLAGS"))} {(-DLIBCXXABI_USE_LLVM_UNWINDER) (Lit_Other "=") (ON)} {(-DLIBCXXABI_LIBUNWIND_INCLUDES) (Lit_Other "=") (/usr/include)} {(-DLIBCXXABI_LIBCXX_INCLUDES) (Lit_Other "=") (DQ ($ VSub_Name "$_cxxdir")) (/include)} {(-DLIBCXXABI_LIBCXX_LIBRARY_PATH) (Lit_Other "=") (DQ ($ VSub_Name "$_cxxdir")) (/build/lib) } {(-DLIBCXXABI_INCLUDE_TESTS) (Lit_Other "=") (1)} ) (C {(make)}) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$_cxxdir")) (/build)}) (C {(cd)} {(DQ ($ VSub_Name "$_cxxdir")) (/build)}) (C {(cmake)} {(..)} {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (MinSizeRel)} {(-DCMAKE_INSTALL_PREFIX) (Lit_Other "=") (/usr)} {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (clang) (Lit_Other "+") (Lit_Other "+")} {(-DCMAKE_CXX_FLAGS) (Lit_Other "=") (DQ ($ VSub_Name "$CXXFLAGS"))} {(-DCMAKE_C_COMPILER) (Lit_Other "=") (clang)} {(-DCMAKE_C_FLAGS) (Lit_Other "=") (DQ ($ VSub_Name "$CFLAGS"))} {(-DLIBCXX_HAS_MUSL_LIBC) (Lit_Other "=") (ON)} {(-DLIBCXX_HAS_GCC_S_LIB) (Lit_Other "=") (OFF)} {(-DLIBCXX_CXX_ABI) (Lit_Other "=") (libcxxabi)} {(-DLIBCXX_CXX_ABI_INCLUDE_PATHS) (Lit_Other "=") (DQ ($ VSub_Name "$_abidir")) (/include)} {(-DLIBCXX_CXX_ABI_LIBRARY_PATH) (Lit_Other "=") (DQ ($ VSub_Name "$_abidir")) (/build/lib) } {(-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY) (Lit_Other "=") (ON)} ) (C {(make)}) ] spids: [200] ) spids: [196 199] ) (FuncDef name: check body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$_abidir")) (/build)}) (C {(make)} {(check-cxxabi)}) (C {(cd)} {(DQ ($ VSub_Name "$_cxxdir")) (/build)}) (AndOr children:[(C {(make)} {(check-cxx)})(C {(true)})] op_id:Op_DPipe) ] spids: [427] ) spids: [423 426] ) (FuncDef name: package body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$_cxxdir")) (/build)}) (C {(make)} {(install)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$pkgdir"))}) ] spids: [475] ) spids: [471 474] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "6dad794c00919955e14710def169cdcde8a1743431479e993c4a6a3c87c2fd9f5dbd6e17542e524981eed0783dce70384c356b74ef3c6d70598c6ff03454b1dd libcxx-4.0.0.src.tar.xz\n" ) ( "b69933a0bde00321323e98962cd54b78a48bc5e93448d7a5124cb5ef844497ba7648cd92fcbe476186c60c7742e3121841f150c142c2a14c1bf2aa26a8b93d64 libcxxabi-4.0.0.src.tar.xz\n" ) ( "6ad979fd7095940759cd1f51cc6d1d9a98dd78ecc51191f4d7bdbca834fcad7e5371ac6199512ca297267868bfbe1872258a903a03c98e7aa46700d31e79d24a check-for-musl-libcs-max_align_t.patch\n" ) ( "212bbc1bcbc4628754bdd5bc8a9109fa0032790a3c80517a647a26ee27c22daa417303a72b6cc92cfc099dcc7fd9a36e9d8899165ebe4a5ab14030eaa596bc9c avoid-strtoll_l.patch\n" ) ( "c3e4b9d68a9b7c7066f3a63c756fe682749d8d8abbfdf629d7ed085bbb5f69a1c2d79d0e53f036e0a5d9e501c48df15708560f3a4e6d68ac91c577572d181ccd disable-broken-tests.patch\n" ) ( "7d514667bbbb3b32286b91c1b96126cc795ea37db0c6ecdb6502422a4bd6a55553ff2b85ba6cec2969d9d88402713cc4544b9b895b516693a0e5f31a5d628da4 no-libunwind-sources.patch" ) ) } spids: [498] ) ] spids: [498] ) ] )