|
1 | 1 | # Template file for 'wasi-sdk' |
2 | 2 | pkgname=wasi-sdk |
3 | | -version=28 |
| 3 | +version=29 |
4 | 4 | revision=1 |
5 | | -_llvmversion="21.1.4" |
| 5 | +_llvmversion="21.1.7" |
6 | 6 | _llvmver="${_llvmversion%%.*}" |
7 | | -_wasi_sdk_ver=28 |
8 | | -build_wrksrc="llvm-project-${_llvmversion}.src" |
| 7 | +_wasi_libc_ref=ac020b8 |
| 8 | +# build_wrksrc="llvm-project-${_llvmversion}.src" |
9 | 9 | build_style=cmake |
10 | | -hostmakedepends="python3 clang${_llvmver} llvm${_llvmver} chroot-git ninja" |
11 | | -makedepends="wasi-libc" |
| 10 | +hostmakedepends="python3 clang${_llvmver} llvm${_llvmver} lld${_llvmver} ninja |
| 11 | + wasm-component-ld" |
12 | 12 | depends="wasi-libc wasi-libcxx wasi-compiler-rt" |
13 | 13 | short_desc="WASI-enabled WebAssembly C/C++ toolchain" |
14 | 14 | maintainer="Duncaen < [email protected]>" |
15 | 15 | license="custom:Apache-2.0-with-llvm-exception" |
16 | 16 | homepage="https://github.com/WebAssembly/wasi-sdk" |
17 | 17 | distfiles="https://github.com/llvm/llvm-project/releases/download/llvmorg-${_llvmversion}/llvm-project-${_llvmversion}.src.tar.xz |
18 | | - https://github.com/WebAssembly/wasi-sdk/archive/refs/tags/wasi-sdk-${version}.tar.gz" |
19 | | -checksum="a01ad7e5167780c945871d75c0413081d12067607a6de5cf71dc3e8d1a82112c |
20 | | - b3f724b32e7e50ea32664ca66e77ad16d82ca94e660a0e543766ef3c261c3054" |
| 18 | + https://github.com/WebAssembly/wasi-sdk/archive/refs/tags/wasi-sdk-${version}.tar.gz |
| 19 | + https://github.com/WebAssembly/wasi-libc/archive/${_wasi_libc_ref}.zip>wasi-libc-${_wasi_libc_ref}.tar.gz" |
| 20 | +checksum="e5b65fd79c95c343bb584127114cb2d252306c1ada1e057899b6aacdd445899e |
| 21 | + aba99b0d51e766751d6832d07fdd044a827845d7e9e337aacc2357247d0696e6 |
| 22 | + e8023fb214b2183b724defed68c92b89616a1f434f18c7d4559338926bb16877" |
21 | 23 |
|
22 | 24 | nostrip=yes |
23 | 25 |
|
| 26 | +skip_extraction="llvm-project-${_llvmversion}.src.tar.xz wasi-libc-${_wasi_libc_ref}.tar.gz" |
| 27 | + |
| 28 | +conf_files=" |
| 29 | + /etc/clang21/wasm32-unknown-wasi.cfg |
| 30 | + /etc/clang21/wasm32-unknown-wasi-threads.cfg" |
| 31 | + |
| 32 | + |
| 33 | +subpackages="wasi-compiler-rt wasi-libcxx wasi-libc" # subpackages need to be ordered right |
| 34 | + |
24 | 35 | export CMAKE_GENERATOR=Ninja |
25 | 36 |
|
26 | 37 | post_extract() { |
27 | | - cp "wasi-sdk-wasi-sdk-${version}/wasi-sdk.cmake" "llvm-project-${_llvmversion}.src"/wasi-sdk.cmake |
28 | | - cp -r "wasi-sdk-wasi-sdk-${version}/cmake/Platform" "llvm-project-${_llvmversion}.src"/cmake |
| 38 | + vsrcextract -C src/llvm-project "llvm-project-${_llvmversion}.src.tar.xz" |
| 39 | + vsrcextract -C src/wasi-libc "wasi-libc-${_wasi_libc_ref}.tar.gz" |
| 40 | + # cp "wasi-sdk-wasi-sdk-${version}/wasi-sdk.cmake" "llvm-project-${_llvmversion}.src"/wasi-sdk.cmake |
| 41 | + # cp -r "wasi-sdk-wasi-sdk-${version}/cmake/Platform" "llvm-project-${_llvmversion}.src"/cmake |
29 | 42 | } |
30 | 43 |
|
31 | | -_configure_libcxx() { |
32 | | - local target="$1" |
33 | | - local destdir="$2" |
34 | | - local want_threads="OFF" |
35 | | - local extra_cflags="" |
36 | | - |
37 | | - case "$target" in |
38 | | - *-threads) |
39 | | - want_threads="ON" |
40 | | - extra_cflags="-pthread" |
41 | | - ;; |
42 | | - esac |
43 | | - |
44 | | - cmake -B "$destdir" -G Ninja -S runtimes -Wno-dev \ |
45 | | - -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ |
46 | | - -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \ |
47 | | - -DCMAKE_BUILD_TYPE=MinSizeRel \ |
48 | | - -DCMAKE_MODULE_PATH="${wrksrc}/${build_wrksrc}/cmake" \ |
49 | | - -DCMAKE_TOOLCHAIN_FILE="${wrksrc}/${build_wrksrc}/wasi-sdk.cmake" \ |
50 | | - -DCMAKE_C_COMPILER_WORKS=ON \ |
51 | | - -DCMAKE_CXX_COMPILER_WORKS=ON \ |
52 | | - -DCMAKE_C_FLAGS="$CFLAGS $extra_cflags --target=$target" \ |
53 | | - -DCMAKE_CXX_FLAGS="$CXXFLAGS $extra_cflags --target=$target" \ |
54 | | - -DCMAKE_ASM_COMPILER_TARGET="$target" \ |
55 | | - -DCMAKE_CXX_COMPILER_TARGET="$target" \ |
56 | | - -DCMAKE_C_COMPILER_TARGET="$target" \ |
57 | | - -DLLVM_DEFAULT_TARGET_TRIPLE="$target" \ |
58 | | - -DCMAKE_STAGING_PREFIX="${XBPS_CROSS_BASE}/usr/share/wasi-sysroot" \ |
59 | | - -DCXX_SUPPORTS_CXX11=ON \ |
60 | | - -DLIBCXX_ABI_VERSION=2 \ |
61 | | - -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY=OFF \ |
62 | | - -DLIBCXX_CXX_ABI=libcxxabi \ |
63 | | - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=libcxxabi/include \ |
64 | | - -DLIBCXX_ENABLE_EXCEPTIONS=OFF \ |
65 | | - -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \ |
66 | | - -DLIBCXX_ENABLE_FILESYSTEM=OFF \ |
67 | | - -DLIBCXX_ENABLE_SHARED=OFF \ |
68 | | - -DLIBCXX_ENABLE_THREADS=$want_threads \ |
69 | | - -DLIBCXX_HAS_EXTERNAL_THREAD_API=OFF \ |
70 | | - -DLIBCXX_HAS_MUSL_LIBC=ON \ |
71 | | - -DLIBCXX_HAS_PTHREAD_API=$want_threads \ |
72 | | - -DLIBCXX_HAS_WIN32_THREAD_API=OFF \ |
73 | | - -DLIBCXX_INCLUDE_TESTS="$([ "$CHECK_PKGS" ] && echo ON || echo OFF)" \ |
74 | | - -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY=OFF \ |
75 | | - -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \ |
76 | | - -DLIBCXXABI_ENABLE_PIC=OFF \ |
77 | | - -DLIBCXXABI_ENABLE_SHARED=OFF \ |
78 | | - -DLIBCXXABI_ENABLE_THREADS=$want_threads \ |
79 | | - -DLIBCXXABI_HAS_EXTERNAL_THREAD_API=OFF \ |
80 | | - -DLIBCXXABI_HAS_PTHREAD_API=$want_threads \ |
81 | | - -DLIBCXXABI_HAS_WIN32_THREAD_API=OFF \ |
82 | | - -DLIBCXXABI_INCLUDE_TESTS="$([ "$CHECK_PKGS" ] && echo ON || echo OFF)" \ |
83 | | - -DLIBCXXABI_LIBCXX_INCLUDES="${wrksrc}/${build_wrksrc}/build-libcxx/include/c++/v1" \ |
84 | | - -DLIBCXXABI_LIBCXX_PATH=libcxx \ |
85 | | - -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \ |
86 | | - -DLIBCXXABI_USE_LLVM_UNWINDER=OFF \ |
87 | | - -DUNIX=ON \ |
88 | | - -DWASI_SDK_PREFIX=/usr \ |
89 | | - -DLIBCXX_INSTALL_INCLUDE_DIR=include/$target/c++/v1 \ |
90 | | - -DLIBCXX_INSTALL_INCLUDE_TARGET_DIR=include/$target/c++/v1 \ |
91 | | - -DLIBCXXABI_INSTALL_INCLUDE_DIR=include/$target/c++/v1 |
| 44 | +post_patch() { |
| 45 | + # avoid building again at install step |
| 46 | + vsed -e 's/\(install:\) finish/\1/' -i src/wasi-libc/Makefile |
92 | 47 | } |
93 | 48 |
|
94 | | -do_configure() { |
95 | | - export CFLAGS="-O2 -fno-exceptions --sysroot=${XBPS_CROSS_BASE}/usr/share/wasi-sysroot" |
96 | | - export CXXFLAGS="-O2 -fno-exceptions --sysroot=${XBPS_CROSS_BASE}/usr/share/wasi-sysroot" |
97 | | - |
98 | | - _configure_libcxx wasm32-wasi build |
99 | | - _configure_libcxx wasm32-wasi-threads build-threads |
100 | 49 |
|
101 | | - cmake -B build-compiler-rt -G Ninja -S compiler-rt -Wno-dev \ |
102 | | - -DCMAKE_BUILD_TYPE=MinSizeRel \ |
103 | | - -DCMAKE_MODULE_PATH="${wrksrc}/${build_wrksrc}/cmake" \ |
104 | | - -DCMAKE_TOOLCHAIN_FILE="${wrksrc}/${build_wrksrc}/wasi-sdk.cmake" \ |
| 50 | +do_configure() { |
| 51 | + unset CFLAGS CXXFLAGS LDFLAGS |
| 52 | + cmake -G Ninja -B build -S . \ |
| 53 | + -DCMAKE_INSTALL_PREFIX=build/install \ |
| 54 | + -DCMAKE_TOOLCHAIN_FILE=${wrksrc}/wasi-sdk.cmake \ |
105 | 55 | -DCMAKE_C_COMPILER_WORKS=ON \ |
106 | 56 | -DCMAKE_CXX_COMPILER_WORKS=ON \ |
107 | | - -DCOMPILER_RT_BAREMETAL_BUILD=ON \ |
108 | | - -DCOMPILER_RT_INCLUDE_TESTS=OFF \ |
109 | | - -DCOMPILER_RT_HAS_FPIC_FLAG=OFF \ |
110 | | - -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ |
111 | | - -DCOMPILER_RT_OS_DIR=wasi \ |
112 | 57 | -DWASI_SDK_PREFIX=/usr \ |
113 | | - -DCMAKE_INSTALL_PREFIX="/usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/" |
| 58 | + -DWASI_SDK_VERSION="${version}" |
114 | 59 | } |
115 | 60 |
|
116 | 61 | do_build() { |
117 | | - cmake --build build ${makejobs} |
118 | | - cmake --build build-threads ${makejobs} |
119 | | - cmake --build build-compiler-rt ${makejobs} |
| 62 | + unset CFLAGS CXXFLAGS LDFLAGS |
| 63 | + cmake --build build --target dist ${makejobs} |
120 | 64 | } |
121 | 65 |
|
122 | 66 | do_install() { |
123 | | - DESTDIR="$DESTDIR" cmake --install build-compiler-rt |
124 | | - rm -r "$DESTDIR/usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/include" |
| 67 | + vmkdir "usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/lib" |
| 68 | + bsdtar -x -C "${DESTDIR}/usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/lib" --strip-components 1 -f "build/dist/libclang_rt-${version}.tar.gz" |
125 | 69 |
|
126 | | - DESTDIR="$DESTDIR" cmake --install build |
127 | | - mv -v "${DESTDIR}"/usr/share/wasi-sysroot/lib/wasm32-{unknown-,}wasi |
128 | | - DESTDIR="$DESTDIR" cmake --install build-threads |
129 | | - mv -v "${DESTDIR}"/usr/share/wasi-sysroot/lib/wasm32-{unknown-,}wasi-threads |
| 70 | + vmkdir usr/share/wasi-sysroot |
| 71 | + bsdtar -x -C "${DESTDIR}/usr/share/wasi-sysroot" --strip-components 1 -f "build/dist/wasi-sysroot-${version}.tar.gz" |
130 | 72 |
|
131 | 73 | mkdir -p "${DESTDIR}/etc/clang${_llvmver}" |
132 | 74 | cat <<-EOF >"${DESTDIR}/etc/clang${_llvmver}/wasm32-unknown-wasi.cfg" |
133 | 75 | --sysroot /usr/share/wasi-sysroot |
134 | 76 | EOF |
135 | | - ln -svf wasm32-unknown-wasi.cfg "${DESTDIR}/etc/clang$_llvmver/wasm32-unknown-wasi-threads.cfg" |
136 | | - vlicense "../wasi-sdk-wasi-sdk-${version}/LICENSE" |
| 77 | + cat <<-EOF >"${DESTDIR}/etc/clang${_llvmver}/wasm32-unknown-wasi-threads.cfg" |
| 78 | + --sysroot /usr/share/wasi-sysroot |
| 79 | + EOF |
| 80 | + |
| 81 | + vlicense LICENSE |
137 | 82 | } |
138 | 83 |
|
139 | 84 | wasi-libcxx_package() { |
140 | 85 | short_desc+=" - C++ standard library" |
141 | 86 | nostrip=yes |
142 | 87 | make_dirs="/usr/share/wasi-sysroot/include/c++/v1 0755 root root" |
143 | 88 | pkg_install() { |
144 | | - vmove usr/share/wasi-sysroot/include |
145 | | - vmove usr/share/wasi-sysroot/share |
146 | | - vmove usr/share/wasi-sysroot/lib/wasm32-wasi |
147 | | - vmove usr/share/wasi-sysroot/lib/wasm32-wasi-threads |
| 89 | + vmove usr/share/wasi-sysroot/include/wasm32-wasi-threads/c++ |
| 90 | + vmove usr/share/wasi-sysroot/include/wasm32-wasi/c++ |
| 91 | + vmove usr/share/wasi-sysroot/include/wasm32-wasip1-threads/c++ |
| 92 | + vmove usr/share/wasi-sysroot/include/wasm32-wasip1/c++ |
| 93 | + vmove usr/share/wasi-sysroot/include/wasm32-wasip2/c++ |
| 94 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi-threads/libc++.a |
| 95 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi-threads/libc++abi.a |
| 96 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi-threads/libc++experimental.a |
| 97 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi/libc++.a |
| 98 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi/libc++abi.a |
| 99 | + vmove usr/share/wasi-sysroot/lib/wasm32-wasi/libc++experimental.a |
| 100 | + vmove usr/share/wasi-sysroot/share/libc++ |
148 | 101 | } |
149 | 102 | } |
150 | 103 |
|
151 | 104 | wasi-compiler-rt_package() { |
152 | 105 | short_desc+=" - runtime libraries" |
153 | 106 | nostrip=yes |
154 | 107 | pkg_install() { |
155 | | - vmove "usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/lib/wasi/libclang_rt.builtins-wasm32.a" |
| 108 | + vmove "usr/lib/llvm/${_llvmver}/lib/clang/${_llvmver}/lib" |
| 109 | + } |
| 110 | +} |
| 111 | + |
| 112 | +wasi-libc_package() { |
| 113 | + short_desc+=" - C standard library" |
| 114 | + nostrip=yes |
| 115 | + pkg_install() { |
| 116 | + vmove "usr/share/wasi-sysroot/include" |
| 117 | + vmove "usr/share/wasi-sysroot/lib" |
156 | 118 | } |
157 | 119 | } |
0 commit comments