-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
10299ab
commit 40b284c
Showing
6 changed files
with
158 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/usr/bin/env bash | ||
|
||
TD="$(cd $(dirname $0) && pwd)" | ||
REPO_ROOT="$(cd $TD/.. && pwd)" | ||
|
||
LLVM_SOURCE_DIR="${LLVM_SOURCE_DIR:-${REPO_ROOT}/third_party/llvm-project}" | ||
LLVM_BUILD_DIR="${LLVM_BUILD_DIR:-${REPO_ROOT}/llvm-build}" | ||
LLVM_INSTALL_DIR="${LLVM_INSTALL_DIR:-${REPO_ROOT}/llvm-install}" | ||
|
||
mkdir -p $LLVM_BUILD_DIR | ||
mkdir -p $LLVM_INSTALL_DIR | ||
|
||
LLVM_SOURCE_DIR="$(realpath "${LLVM_SOURCE_DIR}")" | ||
LLVM_BUILD_DIR="$(realpath "${LLVM_BUILD_DIR}")" | ||
LLVM_INSTALL_DIR="$(realpath "${LLVM_INSTALL_DIR}")" | ||
EMSDK="$(realpath "${EMSDK}")" | ||
|
||
echo "Paths canonicalized as:" | ||
echo "LLVM_SOURCE_DIR=${LLVM_SOURCE_DIR}" | ||
echo "LLVM_BUILD_DIR=${LLVM_BUILD_DIR}" | ||
echo "LLVM_INSTALL_DIR=${LLVM_INSTALL_DIR}" | ||
|
||
$EMSDK/emsdk activate | ||
source $EMSDK/emsdk_env.sh | ||
export CCACHE_COMPILERCHECK="string:$(emcc --version | head -n 1)" | ||
|
||
set -euo pipefail | ||
|
||
echo "*********************** BUILDING LLVM *********************************" | ||
|
||
# hack to emit html wrappers | ||
# https://stackoverflow.com/a/75596433/9045206 | ||
sed -i.bak 's/CMAKE_EXECUTABLE_SUFFIX ".js"/CMAKE_EXECUTABLE_SUFFIX ".html"/g' "$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" | ||
|
||
cmake_options=( | ||
-GNinja | ||
-S "${LLVM_SOURCE_DIR}/llvm" | ||
-B "${LLVM_BUILD_DIR}" | ||
# optimize for size | ||
-DCMAKE_C_FLAGS="-Os" | ||
-DCMAKE_CXX_FLAGS="-Os" | ||
-DCMAKE_BUILD_TYPE=Release | ||
-DCMAKE_EXE_LINKER_FLAGS="-sSTANDALONE_WASM=1 -sWASM=1 -sWASM_BIGINT=1 -sEXPORT_ALL=0 -sEXPORTED_RUNTIME_METHODS=cwrap,ccall,getValue,setValue,writeAsciiToMemory,wasmTable -lembind" | ||
-DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL_DIR}" | ||
-DCMAKE_SYSTEM_NAME=Emscripten | ||
-DCMAKE_TOOLCHAIN_FILE="$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" | ||
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_C_COMPILER=$CC;-DCMAKE_CXX_COMPILER=$CXX" | ||
-C "$TD/cmake/llvm_wasm_cache.cmake" | ||
) | ||
|
||
echo "Source Directory: ${LLVM_SOURCE_DIR}" | ||
echo "Build Directory: ${LLVM_BUILD_DIR}" | ||
echo "CMake Options: ${cmake_options[*]}" | ||
|
||
cmake "${cmake_options[@]}" | ||
cmake --build "${LLVM_BUILD_DIR}" \ | ||
--target install-mlirdevelopment-distribution | ||
|
||
sed -i.bak 's/CMAKE_EXECUTABLE_SUFFIX ".html"/CMAKE_EXECUTABLE_SUFFIX ".js"/g' "$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" | ||
|
||
# wasi files aren't installed for some reason | ||
cp "${LLVM_BUILD_DIR}"/bin/* "${LLVM_INSTALL_DIR}/bin" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
set(LLVM_ENABLE_PROJECTS "mlir;llvm" CACHE STRING "") | ||
set(LLVM_BUILD_TOOLS ON CACHE BOOL "") | ||
set(LLVM_INCLUDE_TOOLS ON CACHE BOOL "") | ||
set(LLVM_TARGETS_TO_BUILD "WebAssembly" CACHE STRING "") | ||
set(LLVM_TARGET_ARCH "wasm32-wasi" CACHE STRING "") | ||
set(LLVM_DEFAULT_TARGET_TRIPLE "wasm32-wasi" CACHE STRING "") | ||
|
||
set(LLVM_BUILD_DOCS OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_BINDINGS OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_CRASH_OVERRIDES OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_LIBEDIT OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_LIBPFM OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_LIBXML2 OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_OCAMLDOC OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_PIC OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_THREADS OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_UNWIND_TABLES OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "") | ||
set(LLVM_ENABLE_ZSTD OFF CACHE BOOL "") | ||
set(LLVM_INCLUDE_BENCHMARKS OFF CACHE BOOL "") | ||
set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "") | ||
set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") | ||
set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "") | ||
|
||
### Distributions ### | ||
|
||
set(LLVM_INSTALL_TOOLCHAIN_ONLY OFF CACHE BOOL "") | ||
|
||
set(LLVM_DISTRIBUTIONS MlirDevelopment CACHE STRING "") | ||
set(LLVM_MlirDevelopment_DISTRIBUTION_COMPONENTS | ||
llvm-config | ||
llvm-headers | ||
llvm-libraries | ||
cmake-exports | ||
opt | ||
# triggers LLVMMlirDevelopmentExports.cmake | ||
mlirdevelopment-cmake-exports | ||
# triggers MLIRMlirDevelopmentTargets.cmake | ||
mlir-mlirdevelopment-cmake-exports | ||
# triggers MLIRConfig.cmake and etc | ||
mlir-cmake-exports | ||
mlir-headers | ||
mlir-libraries | ||
mlir-opt | ||
mlir-reduce | ||
mlir-tblgen | ||
mlir-translate | ||
CACHE STRING "") |