Skip to content

Commit 20c44a3

Browse files
committed
[js] export default vis
1 parent a5045f7 commit 20c44a3

File tree

3 files changed

+35
-22
lines changed

3 files changed

+35
-22
lines changed

build_tools/build_llvm_wasi.sh

+12-9
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,17 @@ echo "*********************** BUILDING LLVM *********************************"
3131
# hack to emit html wrappers
3232
# https://stackoverflow.com/a/75596433/9045206
3333
sed -i.bak 's/CMAKE_EXECUTABLE_SUFFIX ".js"/CMAKE_EXECUTABLE_SUFFIX ".html"/g' "$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
34-
sed -i.bak 's/if(LLVM_ENABLE_PIC)/if(LLVM_ENABLE_PIC)\nreturn()\nendif()\nif(LLVM_ENABLE_PIC)/g' "${LLVM_SOURCE_DIR}/mlir/lib/ExecutionEngine/CMakeLists.txt"
3534

35+
# all emscripten settings here https://github.com/emscripten-core/emscripten/blob/main/src/settings.js
36+
# wasm-ld exports https://lld.llvm.org/WebAssembly.html#exports
37+
# -sLINKABLE=1 combined with CMAKE_CXX_VISIBILITY_PRESET=default will cause all symbols to be exported
38+
# -sEXPORT_ALL=1 put all of the exported function in the wasm on the JS module
3639
cmake_options=(
3740
-GNinja
3841
-S "${LLVM_SOURCE_DIR}/llvm"
3942
-B "${LLVM_BUILD_DIR}"
40-
-DCMAKE_C_FLAGS="-Os"
41-
-DCMAKE_CXX_FLAGS="-Os"
4243
-DCMAKE_BUILD_TYPE=Release
43-
-DCMAKE_EXE_LINKER_FLAGS="--emit-symbol-map -sSTANDALONE_WASM=1 -sWASM=1 -sWASM_BIGINT=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=cwrap,ccall,getValue,setValue,writeAsciiToMemory,wasmTable --minify 0 -lembind"
44+
-DCMAKE_EXE_LINKER_FLAGS="--emit-symbol-map -sSTANDALONE_WASM=1 -sWASM=1 -sWASM_BIGINT=1 -sLINKABLE=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=cwrap,ccall,getValue,setValue,writeAsciiToMemory,wasmTable --minify 0 -lembind"
4445
-DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL_DIR}"
4546
-DCMAKE_SYSTEM_NAME=Emscripten
4647
-DCMAKE_TOOLCHAIN_FILE="$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
@@ -58,10 +59,12 @@ cmake --build "${LLVM_BUILD_DIR}" \
5859
--target install-mlirdevelopment-distribution
5960

6061
sed -i.bak 's/CMAKE_EXECUTABLE_SUFFIX ".html"/CMAKE_EXECUTABLE_SUFFIX ".js"/g' "$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
61-
# https://stackoverflow.com/a/1252191/9045206
62-
sed -i.bak -e ':a' -e 'N' -e '$!ba' -e 's/if(LLVM_ENABLE_PIC)\nreturn()\nendif()\n//g' "${LLVM_SOURCE_DIR}/mlir/lib/ExecutionEngine/CMakeLists.txt"
63-
6462

6563
# wasi files aren't installed for some reason
66-
cp "${LLVM_BUILD_DIR}"/bin/* "${LLVM_INSTALL_DIR}/bin"
67-
cp "${LLVM_BUILD_DIR}"/lib/*.symbols "${LLVM_INSTALL_DIR}/lib"
64+
cp "${LLVM_BUILD_DIR}"/bin/mlir-opt.* "${LLVM_INSTALL_DIR}/bin"
65+
# cp "${LLVM_BUILD_DIR}"/lib/*.symbols "${LLVM_INSTALL_DIR}/lib"
66+
67+
# prevent symbol collisions
68+
# sed -i.bak 's/if(LLVM_ENABLE_PIC)/if(LLVM_ENABLE_PIC)\nreturn()\nendif()\nif(LLVM_ENABLE_PIC)/g' "${LLVM_SOURCE_DIR}/mlir/lib/ExecutionEngine/CMakeLists.txt"
69+
# https://stackoverflow.com/a/1252191/9045206
70+
# sed -i.bak -e ':a' -e 'N' -e '$!ba' -e 's/if(LLVM_ENABLE_PIC)\nreturn()\nendif()\n//g' "${LLVM_SOURCE_DIR}/mlir/lib/ExecutionEngine/CMakeLists.txt"

build_tools/cmake/llvm_wasm_cache.cmake

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ set(LLVM_ENABLE_LIBPFM OFF CACHE BOOL "")
1414
set(LLVM_ENABLE_LIBXML2 OFF CACHE BOOL "")
1515
set(LLVM_ENABLE_OCAMLDOC OFF CACHE BOOL "")
1616

17-
set(LLVM_BUILD_LLVM_DYLIB ON CACHE BOOL "")
18-
set(MLIR_BUILD_MLIR_C_DYLIB ON CACHE BOOL "")
17+
set(LLVM_BUILD_LLVM_DYLIB OFF CACHE BOOL "")
18+
set(MLIR_BUILD_MLIR_C_DYLIB OFF CACHE BOOL "")
1919
# when building libLLVM
2020
# relocation R_WASM_MEMORY_ADDR_SLEB cannot be used against symbol
21-
set(LLVM_ENABLE_PIC ON CACHE BOOL "")
21+
set(LLVM_ENABLE_PIC OFF CACHE BOOL "")
2222
set(MLIR_ENABLE_SPIRV_CPU_RUNNER OFF)
2323
set(MLIR_ENABLE_EXECUTION_ENGINE OFF)
2424

@@ -41,7 +41,7 @@ set(LLVM_MlirDevelopment_DISTRIBUTION_COMPONENTS
4141
llvm-headers
4242
llvm-libraries
4343
cmake-exports
44-
opt
44+
# opt
4545
# triggers LLVMMlirDevelopmentExports.cmake
4646
mlirdevelopment-cmake-exports
4747
# triggers MLIRMlirDevelopmentTargets.cmake
@@ -51,7 +51,7 @@ set(LLVM_MlirDevelopment_DISTRIBUTION_COMPONENTS
5151
mlir-headers
5252
mlir-libraries
5353
mlir-opt
54-
mlir-reduce
55-
mlir-tblgen
56-
mlir-translate
54+
# mlir-reduce
55+
# mlir-tblgen
56+
# mlir-translate
5757
CACHE STRING "")
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
# everything in here gets run at the end of the project loading
22
# https://github.com/emscripten-core/emscripten/issues/15276#issuecomment-1039349267
33
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
4-
# so that the correct LLVM_ABI macros get set
4+
# __ELF__ so that the correct LLVM_ABI macros get set
5+
# https://github.com/WebAssembly/tool-conventions/blob/main/BasicCABI.md#function-arguments-and-return-values
6+
# Similarly, types can either be returned directly from WebAssembly functions or returned indirectly via a pointer parameter prepended to the parameter list.
7+
# https://github.com/llvm/llvm-project/blob/6d973b4548e281d0b8e75e85833804bb45b6a0e8/clang/lib/CodeGen/Targets/WebAssembly.cpp#L135
8+
# https://github.com/llvm/llvm-project/commit/c285307e1457c4db2346443a4336e672d7487111#diff-b83bb889340990fea25762060e144b5cd4b4652a6fa737aaea9555d456344219
9+
# https://github.com/llvm/llvm-project/blame/63534779b4ef1816e2961246011e2ec3be110d27/clang/lib/CodeGen/TargetInfo.cpp
510
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__ELF__")
611
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__ELF__")
7-
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-sSIDE_MODULE=1 -sEXPORT_ALL=1 --emit-symbol-map")
8-
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-sSIDE_MODULE=1 -sEXPORT_ALL=1 --emit-symbol-map")
12+
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-sLINKABLE=1 -sEXPORT_ALL=1")
13+
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-sLINKABLE=1 -sEXPORT_ALL=1")
914
# prevent duplicated libs from being linked
1015
# will need to be renamed to DEDUPLICATION when CMake version catches up
1116
# https://github.com/Kitware/CMake/commit/5617c34c3135f7ec203d5a48b803eb323f458bc3#diff-17fc647759070cdaddd99e9ad994c4478860d9c301ed9a9a9f061a8825c8b690L20
1217
set(CMAKE_C_LINK_LIBRARIES_PROCESSING ORDER=FORWARD UNICITY=ALL)
1318
set(CMAKE_CXX_LINK_LIBRARIES_PROCESSING ORDER=FORWARD UNICITY=ALL)
14-
# hack to prevent -Bsymbolic
15-
set(LLVM_LINKER_IS_SOLARISLD_ILLUMOS ON)
19+
20+
## hack to prevent -Bsymbolic
21+
#set(LLVM_LINKER_IS_SOLARISLD_ILLUMOS ON)
22+
1623
set(CMAKE_SHARED_LIBRARY_SUFFIX ".wasm")
17-
set(CMAKE_STRIP FALSE)
24+
set(CMAKE_STRIP FALSE)
25+
set(LLVM_NO_DEAD_STRIP ON)
26+
set(CMAKE_VERBOSE_MAKEFILE ON)
27+
set(CMAKE_CXX_VISIBILITY_PRESET default)

0 commit comments

Comments
 (0)