mirror of
https://github.com/void-linux/void-packages.git
synced 2025-04-22 17:17:03 +02:00
157 lines
5.6 KiB
Bash
157 lines
5.6 KiB
Bash
# Template file for 'wasi-sdk'
|
|
pkgname=wasi-sdk
|
|
version=25
|
|
revision=1
|
|
_llvmversion="19.1.7"
|
|
_llvmver="${_llvmversion%%.*}"
|
|
_wasi_sdk_ver=25
|
|
build_wrksrc="llvm-project-${_llvmversion}.src"
|
|
build_style=cmake
|
|
hostmakedepends="python3 clang${_llvmver} llvm${_llvmver} chroot-git ninja"
|
|
makedepends="wasi-libc"
|
|
depends="wasi-libc wasi-libcxx wasi-compiler-rt"
|
|
short_desc="WASI-enabled WebAssembly C/C++ toolchain"
|
|
maintainer="Duncaen <duncaen@voidlinux.org>"
|
|
license="custom:Apache-2.0-with-llvm-exception"
|
|
homepage="https://github.com/WebAssembly/wasi-sdk"
|
|
distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${_llvmversion}/llvm-project-${_llvmversion}.src.tar.xz
|
|
https://github.com/WebAssembly/wasi-sdk/archive/refs/tags/wasi-sdk-${version}.tar.gz"
|
|
checksum="82401fea7b79d0078043f7598b835284d6650a75b93e64b6f761ea7b63097501
|
|
4ab1ad1b5fc60d3c9c36905fea8ed899f5fdc5bd0bd77849c112e0b5a1788916"
|
|
|
|
nostrip=yes
|
|
|
|
export CMAKE_GENERATOR=Ninja
|
|
|
|
post_extract() {
|
|
cp "wasi-sdk-wasi-sdk-${version}/wasi-sdk.cmake" "llvm-project-${_llvmversion}.src"/wasi-sdk.cmake
|
|
cp -r "wasi-sdk-wasi-sdk-${version}/cmake/Platform" "llvm-project-${_llvmversion}.src"/cmake
|
|
}
|
|
|
|
_configure_libcxx() {
|
|
local target="$1"
|
|
local destdir="$2"
|
|
local want_threads="OFF"
|
|
local extra_cflags=""
|
|
|
|
case "$target" in
|
|
*-threads)
|
|
want_threads="ON"
|
|
extra_cflags="-pthread"
|
|
;;
|
|
esac
|
|
|
|
cmake -B "$destdir" -G Ninja -S runtimes -Wno-dev \
|
|
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
|
|
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
|
|
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
|
-DCMAKE_MODULE_PATH="${wrksrc}/${build_wrksrc}/cmake" \
|
|
-DCMAKE_TOOLCHAIN_FILE="${wrksrc}/${build_wrksrc}/wasi-sdk.cmake" \
|
|
-DCMAKE_C_COMPILER_WORKS=ON \
|
|
-DCMAKE_CXX_COMPILER_WORKS=ON \
|
|
-DCMAKE_C_FLAGS="$CFLAGS $extra_cflags --target=$target" \
|
|
-DCMAKE_CXX_FLAGS="$CXXFLAGS $extra_cflags --target=$target" \
|
|
-DCMAKE_ASM_COMPILER_TARGET="$target" \
|
|
-DCMAKE_CXX_COMPILER_TARGET="$target" \
|
|
-DCMAKE_C_COMPILER_TARGET="$target" \
|
|
-DLLVM_DEFAULT_TARGET_TRIPLE="$target" \
|
|
-DCMAKE_STAGING_PREFIX="${XBPS_CROSS_BASE}/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=$want_threads \
|
|
-DLIBCXX_HAS_EXTERNAL_THREAD_API=OFF \
|
|
-DLIBCXX_HAS_MUSL_LIBC=ON \
|
|
-DLIBCXX_HAS_PTHREAD_API=$want_threads \
|
|
-DLIBCXX_HAS_WIN32_THREAD_API=OFF \
|
|
-DLIBCXX_INCLUDE_TESTS="$([ "$CHECK_PKGS" ] && echo ON || echo OFF)" \
|
|
-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY=OFF \
|
|
-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
|
|
-DLIBCXXABI_ENABLE_PIC=OFF \
|
|
-DLIBCXXABI_ENABLE_SHARED=OFF \
|
|
-DLIBCXXABI_ENABLE_THREADS=$want_threads \
|
|
-DLIBCXXABI_HAS_EXTERNAL_THREAD_API=OFF \
|
|
-DLIBCXXABI_HAS_PTHREAD_API=$want_threads \
|
|
-DLIBCXXABI_HAS_WIN32_THREAD_API=OFF \
|
|
-DLIBCXXABI_INCLUDE_TESTS="$([ "$CHECK_PKGS" ] && echo ON || echo OFF)" \
|
|
-DLIBCXXABI_LIBCXX_INCLUDES="${wrksrc}/${build_wrksrc}/build-libcxx/include/c++/v1" \
|
|
-DLIBCXXABI_LIBCXX_PATH=libcxx \
|
|
-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
|
|
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
|
|
-DUNIX=ON \
|
|
-DWASI_SDK_PREFIX=/usr \
|
|
-DLIBCXX_INSTALL_INCLUDE_DIR=include/$target/c++/v1 \
|
|
-DLIBCXX_INSTALL_INCLUDE_TARGET_DIR=include/$target/c++/v1 \
|
|
-DLIBCXXABI_INSTALL_INCLUDE_DIR=include/$target/c++/v1
|
|
}
|
|
|
|
do_configure() {
|
|
export CFLAGS="-O2 -fno-exceptions --sysroot=${XBPS_CROSS_BASE}/usr/share/wasi-sysroot"
|
|
export CXXFLAGS="-O2 -fno-exceptions --sysroot=${XBPS_CROSS_BASE}/usr/share/wasi-sysroot"
|
|
|
|
_configure_libcxx wasm32-wasi build
|
|
_configure_libcxx wasm32-wasi-threads build-threads
|
|
|
|
cmake -B build-compiler-rt -G Ninja -S compiler-rt -Wno-dev \
|
|
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
|
-DCMAKE_MODULE_PATH="${wrksrc}/${build_wrksrc}/cmake" \
|
|
-DCMAKE_TOOLCHAIN_FILE="${wrksrc}/${build_wrksrc}/wasi-sdk.cmake" \
|
|
-DCMAKE_C_COMPILER_WORKS=ON \
|
|
-DCMAKE_CXX_COMPILER_WORKS=ON \
|
|
-DCOMPILER_RT_BAREMETAL_BUILD=ON \
|
|
-DCOMPILER_RT_INCLUDE_TESTS=OFF \
|
|
-DCOMPILER_RT_HAS_FPIC_FLAG=OFF \
|
|
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
|
|
-DCOMPILER_RT_OS_DIR=wasi \
|
|
-DWASI_SDK_PREFIX=/usr \
|
|
-DCMAKE_INSTALL_PREFIX="/usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/"
|
|
}
|
|
|
|
do_build() {
|
|
cmake --build build ${makejobs}
|
|
cmake --build build-threads ${makejobs}
|
|
cmake --build build-compiler-rt ${makejobs}
|
|
}
|
|
|
|
do_install() {
|
|
DESTDIR="$DESTDIR" cmake --install build-compiler-rt
|
|
rm -r "$DESTDIR/usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/include"
|
|
|
|
DESTDIR="$DESTDIR" cmake --install build
|
|
mv -v "${DESTDIR}"/usr/share/wasi-sysroot/lib/wasm32-{unknown-,}wasi
|
|
DESTDIR="$DESTDIR" cmake --install build-threads
|
|
mv -v "${DESTDIR}"/usr/share/wasi-sysroot/lib/wasm32-{unknown-,}wasi-threads
|
|
|
|
mkdir -p "${DESTDIR}/etc/clang${_llvmver}"
|
|
cat <<-EOF >"${DESTDIR}/etc/clang${_llvmver}/wasm32-unknown-wasi.cfg"
|
|
--sysroot /usr/share/wasi-sysroot
|
|
EOF
|
|
ln -svf wasm32-unknown-wasi.cfg "${DESTDIR}/etc/clang$_llvmver/wasm32-unknown-wasi-threads.cfg"
|
|
vlicense "../wasi-sdk-wasi-sdk-${version}/LICENSE"
|
|
}
|
|
|
|
wasi-libcxx_package() {
|
|
short_desc+=" - C++ standard library"
|
|
nostrip=yes
|
|
make_dirs="/usr/share/wasi-sysroot/include/c++/v1 0755 root root"
|
|
pkg_install() {
|
|
vmove usr/share/wasi-sysroot/include
|
|
vmove usr/share/wasi-sysroot/share
|
|
vmove usr/share/wasi-sysroot/lib/wasm32-wasi
|
|
vmove usr/share/wasi-sysroot/lib/wasm32-wasi-threads
|
|
}
|
|
}
|
|
|
|
wasi-compiler-rt_package() {
|
|
short_desc+=" - runtime libraries"
|
|
nostrip=yes
|
|
pkg_install() {
|
|
vmove "usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/lib/wasi/libclang_rt.builtins-wasm32.a"
|
|
}
|
|
}
|