Initial commit
This commit is contained in:
commit
68fbcfb32e
9 changed files with 361 additions and 0 deletions
98
wasm-llvm.nix
Normal file
98
wasm-llvm.nix
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
{ pkgs }:
|
||||
with pkgs;
|
||||
stdenv.mkDerivation {
|
||||
name = "wasm-llvm";
|
||||
version = "17.0.6";
|
||||
src = fetchzip {
|
||||
url = "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-17.0.6.tar.gz";
|
||||
hash = "sha256-8MEDLLhocshmxoEBRSKlJ/GzJ8nfuzQ8qn0X/vLA+ag=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
python3
|
||||
];
|
||||
|
||||
phases = [
|
||||
"configurePhase"
|
||||
"installPhase"
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
configurePhase = ''
|
||||
cmake -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=$out \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_ENABLE_ZLIB=OFF \
|
||||
-DLLVM_ENABLE_TERMINFO=OFF \
|
||||
-DLLVM_ENABLE_ZSTD=OFF \
|
||||
-DLLVM_STATIC_LINK_CXX_STDLIB=ON \
|
||||
-DLLVM_HAVE_LIBXAR=OFF \
|
||||
-DLLVM_INCLUDE_TESTS=OFF \
|
||||
-DLLVM_INCLUDE_UTILS=OFF \
|
||||
-DLLVM_INCLUDE_BENCHMARKS=OFF \
|
||||
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
||||
-DLLVM_TARGETS_TO_BUILD=WebAssembly \
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE=wasm32-wasi \
|
||||
-DLLVM_ENABLE_PROJECTS="lld;clang;clang-tools-extra" \
|
||||
-DLLVM_INSTALL_BINUTILS_SYMLINKS=TRUE \
|
||||
-DLLVM_ENABLE_LIBXML2=OFF \
|
||||
$src/llvm
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $dev/cmake
|
||||
|
||||
cat > $dev/cmake/toolchain.cmake <<-CMAKE
|
||||
set(CMAKE_SYSTEM_NAME WASI)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR wasm32)
|
||||
set(triple wasm32-wasi)
|
||||
|
||||
set(CMAKE_C_COMPILER $out/bin/clang)
|
||||
set(CMAKE_CXX_COMPILER $out/bin/clang++)
|
||||
set(CMAKE_ASM_COMPILER $out/bin/clang)
|
||||
set(CMAKE_AR $out/bin/llvm-ar)
|
||||
set(CMAKE_RANLIB $out/bin/llvm-ranlib)
|
||||
|
||||
set(CMAKE_C_COMPILER_TARGET wasm32-wasi)
|
||||
set(CMAKE_CXX_COMPILER_TARGET wasm32-wasi)
|
||||
set(CMAKE_ASM_COMPILER_TARGET wasm32-wasi)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
CMAKE
|
||||
|
||||
mkdir -p $dev/cmake/Platform
|
||||
echo "set(WASI 1)" > $dev/cmake/Platform/WASI.cmake
|
||||
|
||||
ninja -v \
|
||||
install-clang \
|
||||
install-clang-format \
|
||||
install-clang-tidy \
|
||||
install-clang-apply-replacements \
|
||||
install-lld \
|
||||
install-llvm-mc \
|
||||
install-llvm-ranlib \
|
||||
install-llvm-strip \
|
||||
install-llvm-dwarfdump \
|
||||
install-clang-resource-headers \
|
||||
install-ar \
|
||||
install-ranlib \
|
||||
install-strip \
|
||||
install-nm \
|
||||
install-size \
|
||||
install-strings \
|
||||
install-objdump \
|
||||
install-objcopy \
|
||||
install-c++filt \
|
||||
install-llvm-config
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue