Enable emscripten build

extensions
Volodymyr Shymanskyy 5 years ago
parent add9efbf89
commit 892e89f7b4

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.9)
set(OUT_FILE "wasm3")
if(CLANG OR CLANG_SUFFIX)
set(CMAKE_C_COMPILER "clang${CLANG_SUFFIX}")
set(CMAKE_CXX_COMPILER "clang++${CLANG_SUFFIX}")
@ -13,6 +14,12 @@ if(CLANG_CL)
set(CMAKE_LINKER "lld-link")
endif()
if(EMSCRIPTEN)
set(CMAKE_C_COMPILER "emcc")
set(CMAKE_CXX_COMPILER "em++")
set(OUT_FILE "wasm3.html")
endif()
if(M EQUAL 32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
@ -56,8 +63,12 @@ if (CMAKE_C_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") # TODO: remove
endif()
if(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_MBCS) # -DM3_RUN_LOOPS=10
if(EMSCRIPTEN)
set(CMAKE_C_FLAGS_RELEASE "-O2 -flto -w -Wfatal-errors -Xclang -target-feature -Xclang +tail-call")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 --lto-O3 --closure 1 --strip-all --gc-sections") # --emrun
elseif(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX- /diagnostics:column")
@ -72,7 +83,7 @@ else()
if (CMAKE_C_COMPILER_ID MATCHES "GNU")
set(OPT_FLAGS "-O3")
else()
set(OPT_FLAGS "-Oz") # -Ofast
set(OPT_FLAGS "-Oz -Wl,--lto-O3") # -Ofast
endif()
set(CMAKE_C_FLAGS_RELEASE "${OPT_FLAGS} -fomit-frame-pointer -march=native -w -Wfatal-errors") #-fno-inline
@ -81,11 +92,11 @@ else()
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-O3")
endif()
add_executable(wasm3 ${M3_SRC})
add_executable(${OUT_FILE} ${M3_SRC})
check_ipo_supported(RESULT result)
if(result)
set_property(TARGET wasm3 PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
set_property(TARGET ${OUT_FILE} PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
message("LTO: ON")
else()
message("LTO: OFF")

Loading…
Cancel
Save