comparison Applications/StoneWebViewer/WebAssembly/CMakeLists.txt @ 1912:7947565ed2b7

use Python 3 for clang if available
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sun, 20 Mar 2022 17:53:12 +0100
parents 1cfd602de69d
children 9c52c0376ad7
comparison
equal deleted inserted replaced
1911:898774b4e02d 1912:7947565ed2b7
29 29
30 # Configuration of the Emscripten compiler for WebAssembly target 30 # Configuration of the Emscripten compiler for WebAssembly target
31 # --------------------------------------------------------------- 31 # ---------------------------------------------------------------
32 set(USE_WASM ON CACHE BOOL "") 32 set(USE_WASM ON CACHE BOOL "")
33 33
34 set(WASM_FLAGS "${WASM_FLAGS} -s WASM=1 -s FETCH=1 -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0") 34 # "-Wno-unused-command-line-argument" is used to avoid annoying
35 # warnings about setting WASM, FETCH and ASSERTIONS, which was
36 # required for earlier versions of emsdk:
37 # https://groups.google.com/g/emscripten-discuss/c/VX4enWfadUE
38 set(WASM_FLAGS "${WASM_FLAGS} -s WASM=1 -s FETCH=1 -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0 -Wno-unused-command-line-argument")
39
35 if (CMAKE_BUILD_TYPE STREQUAL "Debug") 40 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
36 set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1") 41 set(WASM_FLAGS "${WASM_FLAGS} -s SAFE_HEAP=1")
37 endif() 42 endif()
38 43
39 set(WASM_LINKER_FLAGS "${WASM_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'") 44 set(WASM_LINKER_FLAGS "${WASM_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'")
94 # --------------------------------------------------------------- 99 # ---------------------------------------------------------------
95 100
96 set(LIBCLANG "libclang-4.0.so.1" CACHE PATH "Version of clang to generate the code model") 101 set(LIBCLANG "libclang-4.0.so.1" CACHE PATH "Version of clang to generate the code model")
97 set(STONE_WRAPPER ${CMAKE_CURRENT_BINARY_DIR}/stone.js) 102 set(STONE_WRAPPER ${CMAKE_CURRENT_BINARY_DIR}/stone.js)
98 103
104 include(FindPython3 OPTIONAL RESULT_VARIABLE HAS_CMAKE_PYTHON3)
105 if (HAS_CMAKE_PYTHON3 STREQUAL "NOTFOUND" OR
106 NOT Python3_FOUND)
107 # CMake <= 3.12 or Python 3 not available: Fallback to Python 2.7
108 set(CLANG_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
109 else()
110 set(CLANG_PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
111 endif()
112
99 add_custom_command( 113 add_custom_command(
100 COMMAND 114 COMMAND
101 ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/ParseWebAssemblyExports.py --libclang=${LIBCLANG} ${CMAKE_SOURCE_DIR}/StoneWebViewer.cpp > ${STONE_WRAPPER} 115 ${CLANG_PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/ParseWebAssemblyExports.py --libclang=${LIBCLANG} ${CMAKE_SOURCE_DIR}/StoneWebViewer.cpp > ${STONE_WRAPPER}
102 DEPENDS 116 DEPENDS
103 ${CMAKE_SOURCE_DIR}/StoneWebViewer.cpp 117 ${CMAKE_SOURCE_DIR}/StoneWebViewer.cpp
104 ${CMAKE_SOURCE_DIR}/ParseWebAssemblyExports.py 118 ${CMAKE_SOURCE_DIR}/ParseWebAssemblyExports.py
105 OUTPUT 119 OUTPUT
106 ${STONE_WRAPPER} 120 ${STONE_WRAPPER}