Skip to content

Commit a69d4bf

Browse files
committed
Merge branch 'master' of https://github.com/MeshInspector/MeshLib into dev
2 parents 4ddaa6a + 9d36105 commit a69d4bf

22 files changed

+577
-394
lines changed

CMakeLists.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ set(MESHLIB_PROJECT_NAME "MeshLib" CACHE STRING "Project name")
1616
add_compile_definitions(MR_PROJECT_NAME=\"${MESHLIB_PROJECT_NAME}\")
1717

1818
include(CompilerOptions)
19+
IF(EMSCRIPTEN)
20+
include(ConfigureEmscripten)
21+
ENDIF()
1922

2023
# all binaries will be located in ./build/Release/bin
2124
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
@@ -169,9 +172,6 @@ IF(NOT MR_EMSCRIPTEN)
169172
find_package(fmt)
170173
find_package(spdlog REQUIRED)
171174
find_package(TBB REQUIRED)
172-
IF(spdlog_VERSION VERSION_GREATER_EQUAL "1.7" AND fmt_VERSION VERSION_GREATER_EQUAL "7.0")
173-
add_compile_definitions(SPDLOG_FMT_EXTERNAL)
174-
ENDIF()
175175
add_compile_definitions(SPDLOG_COMPILED_LIB SPDLOG_SHARED_LIB)
176176
ENDIF() # NOT MR_EMSCRIPTEN
177177

@@ -354,6 +354,10 @@ install(
354354
DESTINATION ${MR_CONFIG_DIR}
355355
)
356356

357+
IF(EMSCRIPTEN)
358+
install(FILES cmake/Modules/EmscriptenHelpers.cmake DESTINATION ${MR_CONFIG_DIR})
359+
ENDIF()
360+
357361
IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
358362
set(CPACK_GENERATOR "DRAGNDROP")
359363
include(CPack)

cmake/Modules/CompilerOptions.cmake

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ IF(WIN32)
9696
ENDIF()
9797
ENDIF()
9898

99-
IF(NOT MR_EMSCRIPTEN_SINGLETHREAD AND NOT MSVC)
99+
IF(NOT EMSCRIPTEN AND NOT MSVC)
100100
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
101-
ENDIF() # NOT MR_EMSCRIPTEN_SINGLETHREAD
101+
ENDIF()
102102

103103
IF(MSVC)
104104
add_definitions(-DUNICODE -D_UNICODE)
@@ -152,55 +152,9 @@ add_compile_definitions(PYBIND11_NONLIMITEDAPI_LIB_SUFFIX_FOR_MODULE=\"${MESHLIB
152152
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
153153
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wabi=16")
154154
ENDIF()
155-
# complitely ignore "maybe-uninitialized" for GCC because of false positives
155+
# completely ignore "maybe-uninitialized" for GCC because of false positives
156156
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109561
157157
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116090
158158
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
159159
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-maybe-uninitialized")
160160
ENDIF()
161-
162-
163-
IF(MR_EMSCRIPTEN)
164-
# reference: https://github.com/emscripten-core/emscripten/blob/main/src/settings.js
165-
string(JOIN " " CMAKE_EXE_LINKER_FLAGS
166-
"${CMAKE_EXE_LINKER_FLAGS}"
167-
"-s EXPORTED_RUNTIME_METHODS=[ccall]"
168-
"-s ALLOW_MEMORY_GROWTH=1"
169-
"-s LLD_REPORT_UNDEFINED=1"
170-
"-s USE_WEBGL2=1"
171-
"-s USE_GLFW=3"
172-
"-s USE_ZLIB=1"
173-
"-s FULL_ES3=1"
174-
"-s USE_LIBPNG=1"
175-
)
176-
177-
IF(MR_EMSCRIPTEN_SINGLETHREAD)
178-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ENVIRONMENT=web,node")
179-
ELSE()
180-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ENVIRONMENT=web,worker,node -pthread -s PTHREAD_POOL_SIZE_STRICT=0 -s PTHREAD_POOL_SIZE=navigator.hardwareConcurrency")
181-
182-
# uncomment to enable source map for debugging in browsers (slow)
183-
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -gsource-map")
184-
185-
# REF: `https://emscripten.org/docs/tools_reference/settings_reference.html#maximum-memory`,
186-
# `https://github.com/emscripten-core/emscripten/issues/22794#issuecomment-2445501403`
187-
IF(MR_EMSCRIPTEN_WASM64)
188-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s MAXIMUM_MEMORY=16GB") # wasm-ld: maximum memory [...] cannot be greater than 17179869184
189-
ELSE()
190-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s MAXIMUM_MEMORY=4GB")
191-
ENDIF()
192-
193-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pthreads-mem-growth") # look https://github.com/emscripten-core/emscripten/issues/8287
194-
ENDIF() # NOT MR_EMSCRIPTEN_SINGLETHREAD
195-
196-
IF(NOT MR_DISABLE_EMSCRIPTEN_ASYNCIFY)
197-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s ASYNCIFY -Wno-limited-postlink-optimizations")
198-
add_compile_definitions(MR_EMSCRIPTEN_ASYNCIFY)
199-
ENDIF() # NOT MR_DISABLE_EMSCRIPTEN_ASYNCIFY
200-
201-
add_compile_definitions(SPDLOG_FMT_EXTERNAL)
202-
add_compile_definitions(SPDLOG_WCHAR_FILENAMES) # hack to make it work with new version of fmt
203-
204-
# FIXME: comment required
205-
add_compile_definitions(EIGEN_STACK_ALLOCATION_LIMIT=0)
206-
ENDIF() # MR_EMSCRIPTEN
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# reference: https://github.com/emscripten-core/emscripten/blob/main/src/settings.js
2+
string(JOIN " " MESHLIB_EMSCRIPTEN_CXX_FLAGS
3+
"--use-port=boost_headers"
4+
"--use-port=freetype" # TODO: make optional
5+
"--use-port=libpng" # TODO: make optional
6+
"--use-port=zlib" # TODO: make optional
7+
)
8+
string(JOIN " " MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS
9+
"-s EXPORTED_RUNTIME_METHODS=[ccall]"
10+
"-s ALLOW_MEMORY_GROWTH=1"
11+
"-s LLD_REPORT_UNDEFINED=1"
12+
"-s USE_WEBGL2=1"
13+
"-s USE_GLFW=3"
14+
"-s FULL_ES3=1"
15+
)
16+
17+
IF(MR_EMSCRIPTEN_SINGLETHREAD)
18+
set(MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS "${MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS} -s ENVIRONMENT=web,node")
19+
ELSE()
20+
string(JOIN " " MESHLIB_EMSCRIPTEN_CXX_FLAGS ${MESHLIB_EMSCRIPTEN_CXX_FLAGS}
21+
"-pthread"
22+
# look https://github.com/emscripten-core/emscripten/issues/8287
23+
"-Wno-pthreads-mem-growth"
24+
)
25+
26+
# uncomment to enable source map for debugging in browsers (slow)
27+
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -gsource-map")
28+
29+
IF(MR_EMSCRIPTEN_WASM64)
30+
set(MAXIMUM_MEMORY 16GB) # wasm-ld: maximum memory [...] cannot be greater than 17179869184
31+
ELSE()
32+
set(MAXIMUM_MEMORY 4GB)
33+
ENDIF()
34+
string(JOIN " " MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS ${MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS}
35+
"-s ENVIRONMENT=web,worker,node"
36+
#"-pthread"
37+
"-s PTHREAD_POOL_SIZE_STRICT=0"
38+
"-s PTHREAD_POOL_SIZE=navigator.hardwareConcurrency"
39+
"-s MAXIMUM_MEMORY=${MAXIMUM_MEMORY}"
40+
)
41+
ENDIF()
42+
43+
IF(NOT MR_DISABLE_EMSCRIPTEN_ASYNCIFY)
44+
string(JOIN " " MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS ${MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS}
45+
"-s ASYNCIFY"
46+
# FIXME: comment required
47+
"-Wno-limited-postlink-optimizations"
48+
)
49+
50+
add_compile_definitions(MR_EMSCRIPTEN_ASYNCIFY)
51+
ENDIF()
52+
53+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MESHLIB_EMSCRIPTEN_CXX_FLAGS}")
54+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MESHLIB_EMSCRIPTEN_EXE_LINKER_FLAGS}")

0 commit comments

Comments
 (0)