@@ -28,6 +28,38 @@ set(EKG_VERSION 1.2.0)
2828message (STATUS "Building EKG user interface library version ${EKG_VERSION} " )
2929project (ekg VERSION ${EKG_VERSION} DESCRIPTION "graphical user interface" )
3030
31+ set (
32+ MATCH_SPECIALIZED_COMPILERS_ID
33+ "/emcc"
34+ )
35+
36+ string (
37+ REGEX MATCH
38+ ${MATCH_SPECIALIZED_COMPILERS_ID}
39+ MATCHED_COMPILER_FILENAME
40+ ${CMAKE_CXX_COMPILER}
41+ )
42+
43+ if (
44+ EKG_WASM_LINUX_EMCC_BUILD
45+ OR
46+ MATCHED_COMPILER_FILENAME STREQUAL "/emcc"
47+ )
48+ message (STATUS "Found specialized compiler ID: ${MATCHED_COMPILER_FILENAME} , WASM build type" )
49+ set (EKG_WASM_LINUX_EMCC_BUILD 1)
50+ elseif (EKG_WASM_LINUX_EMCC_BUILD)
51+ message (FATAL_ERROR "No specialized compiler ID was found with '/emcc' for WASM build type" )
52+ endif ()
53+
54+ if (
55+ CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
56+ OR
57+ CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
58+ )
59+ message (STATUS "Found compiler ID: ${CMAKE_CXX_COMPILER_ID} " )
60+ add_compile_options (-O3)
61+ endif ()
62+
3163# Enable if your base OS is Debian-based (e.g Ubuntu).
3264# It is a common issue related by the Linux community.
3365if (EKG_LINUX_NOT_FOUND_FREETYPE)
@@ -44,6 +76,9 @@ if(WIN32 OR EKG_FORCE_WINDOWS)
4476elseif (ANDROID OR EKG_FORCE_ANDROID)
4577 set (LIBRARY_OUTPUT_PATH "${ANDROID_ABI} /" )
4678 set (PLATFORM "${ANDROID_ABI} " )
79+ elseif (LINUX AND EKG_WASM_LINUX_EMCC_BUILD)
80+ set (LIBRARY_OUTPUT_PATH "../lib/linux-wasm/" )
81+ set (PLATFORM "linux-wasm" )
4782elseif (LINUX OR EKG_FORCE_LINUX)
4883 # WSL is not detected as Linux-based OS, same you use a Linux kernel-based distribution.
4984 set (LIBRARY_OUTPUT_PATH "../lib/linux/" )
@@ -53,17 +88,16 @@ endif()
5388message (STATUS "Generating EKG ${PLATFORM} native library" )
5489file (GLOB_RECURSE SOURCE_FILES "src/*.cpp" )
5590
56- if (
57- CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
58- OR
59- CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
60- )
61- add_compile_options (-O3)
62- endif ()
63-
6491include_directories (./include )
6592add_library (ekg STATIC ${SOURCE_FILES} )
6693
94+ if (EKG_WASM_LINUX_EMCC_BUILD)
95+ set_target_properties (
96+ ekg
97+ PROPERTIES LINK_FLAGS "--bind -s USE_FREETYPE=1"
98+ )
99+ endif ()
100+
67101message (STATUS "EKG native library building done" )
68102
69103if (LINUX OR EKG_FORCE_LINUX)
0 commit comments