# Contributor: psykose # Contributor: Alex Yam # Maintainer: psykose pkgname=wasi-libcxx # match llvm version pkgver=15.0.7 _llvmver="${pkgver%%.*}" _wasi_sdk_ver=19 pkgrel=1 pkgdesc="WASI LLVM C++ standard library" subpackages="wasi-libcxxabi:_libcxxabi" url="https://libcxx.llvm.org/" arch="all" license="Apache-2.0 WITH LLVM-exception" makedepends=" clang cmake libxml2-dev llvm$_llvmver-dev llvm$_llvmver-static python3-dev samurai wasi-libc zlib-dev " source=" https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-project-$pkgver.src.tar.xz https://github.com/WebAssembly/wasi-sdk/archive/refs/tags/wasi-sdk-$_wasi_sdk_ver.tar.gz " builddir="$srcdir"/llvm-project-$pkgver.src # TODO: check, needs to somehow pass wasi sysroot include to lit.. options="!check" prepare() { default_prepare mv "$srcdir"/wasi-sdk-wasi-sdk-$_wasi_sdk_ver/wasi-sdk.cmake "$builddir" mv "$srcdir"/wasi-sdk-wasi-sdk-$_wasi_sdk_ver/cmake/Platform cmake } build() { export CFLAGS="$CFLAGS -fno-exceptions --sysroot=/usr/share/wasi-sysroot" export CXXFLAGS="$CXXFLAGS -fno-exceptions --sysroot=/usr/share/wasi-sysroot" cmake -B build -G Ninja -S runtimes -Wno-dev \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -DCMAKE_BUILD_TYPE=MinSizeRel \ -DCMAKE_MODULE_PATH="$builddir"/cmake \ -DCMAKE_TOOLCHAIN_FILE="$builddir"/wasi-sdk.cmake \ -DCMAKE_C_COMPILER_WORKS=ON \ -DCMAKE_CXX_COMPILER_WORKS=ON \ -DCMAKE_STAGING_PREFIX=/usr/share/wasi-sysroot \ -DCXX_SUPPORTS_CXX11=ON \ -DLIBCXX_ABI_VERSION=2 \ -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY=OFF \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=libcxxabi/include \ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \ -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \ -DLIBCXX_ENABLE_FILESYSTEM=OFF \ -DLIBCXX_ENABLE_SHARED=OFF \ -DLIBCXX_ENABLE_THREADS=OFF \ -DLIBCXX_HAS_EXTERNAL_THREAD_API=OFF \ -DLIBCXX_HAS_MUSL_LIBC=ON \ -DLIBCXX_HAS_PTHREAD_API=OFF \ -DLIBCXX_HAS_WIN32_THREAD_API=OFF \ -DLIBCXX_INCLUDE_TESTS="$(want_check && echo ON || echo OFF)" \ -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \ -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY=OFF \ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \ -DLIBCXXABI_ENABLE_PIC=OFF \ -DLIBCXXABI_ENABLE_SHARED=OFF \ -DLIBCXXABI_ENABLE_THREADS=OFF \ -DLIBCXXABI_HAS_EXTERNAL_THREAD_API=OFF \ -DLIBCXXABI_HAS_PTHREAD_API=OFF \ -DLIBCXXABI_HAS_WIN32_THREAD_API=OFF \ -DLIBCXXABI_INCLUDE_TESTS="$(want_check && echo ON || echo OFF)" \ -DLIBCXXABI_LIBCXX_INCLUDES="$builddir"/build-libcxx/include/c++/v1 \ -DLIBCXXABI_LIBCXX_PATH=libcxx \ -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \ -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \ -DUNIX=ON \ -DWASI_SDK_PREFIX=/usr cmake --build build } package() { DESTDIR="$pkgdir" cmake --install build } _libcxxabi() { pkgdesc="WASI Low level support for the LLVM C++ standard library." amove usr/share/wasi-sysroot/lib/wasm32-wasi/libc++abi.a } sha512sums=" 4836d3603f32e8e54434cbfa8ef33d9d473ac5dc20ebf9c67132653c73f4524931abd1084655eaee5f20bcfcb91bcc4bbc5c4a0b603ad0c9029c556e14dc4c52 llvm-project-15.0.7.src.tar.xz 0a501fda853033425874537e0b0ed45d72b1f1488df99e16b7c1ab46d4f496e6329f9611f67bba0f9178f05df5cfe64706c7c34dab2eaee72e5274df6d85a77a wasi-sdk-19.tar.gz "