From 6577b841ef35a200802dd276bbfab9f6ac276247 Mon Sep 17 00:00:00 2001 From: Matthew McCall Date: Wed, 24 Jul 2024 18:25:10 -0400 Subject: [PATCH] Update CMake files for Emscripten support Lower CMake version requirement to 3.22 and adjust `target_link_options` for Emscripten. Conditionalize `target_link_libraries` for Emscripten in both main and extras CMakeLists. --- CMakeLists.txt | 8 +++++--- extras/CMakeLists.txt | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec560e1..6219a18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.28) +cmake_minimum_required(VERSION 3.22) project(OasisC CXX C) add_subdirectory(libs/Oasis) @@ -14,7 +14,7 @@ set(OasisC_SOURCES if (DEFINED EMSCRIPTEN) add_executable(OasisC ${OasisC_SOURCES}) set(CMAKE_EXECUTABLE_SUFFIX ".mjs") - target_link_options(OasisC PUBLIC -sSINGLE_FILE --no-entry "-s EXPORT_NAME='OasisC'" "-s EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'") + target_link_options(OasisC PUBLIC -sSINGLE_FILE --no-entry "-sEXPORT_NAME='OasisC'" "-sEXPORTED_RUNTIME_METHODS=ccall,cwrap") else () add_library(OasisC ${OasisC_SOURCES}) endif () @@ -28,5 +28,7 @@ endif() if(OASIS_BUILD_EXTRAS) add_subdirectory(extras) - target_link_libraries(OasisC PUBLIC OasisCExtras) + if (DEFINED EMSCRIPTEN) + target_link_libraries(OasisC PUBLIC OasisCExtras) + endif () endif() \ No newline at end of file diff --git a/extras/CMakeLists.txt b/extras/CMakeLists.txt index e84f970..17c61d0 100644 --- a/extras/CMakeLists.txt +++ b/extras/CMakeLists.txt @@ -2,8 +2,12 @@ set(OasisC_EXTRAS_SOURCES # cmake-format: sortable src/FromString.cpp src/MathMLSerializer.cpp) -add_library(OasisCExtras ${OasisC_EXTRAS_SOURCES}) - +if (DEFINED EMSCRIPTEN) + add_library(OasisCExtras OBJECT ${OasisC_EXTRAS_SOURCES}) +else () + add_library(OasisCExtras ${OasisC_EXTRAS_SOURCES}) +endif () + target_include_directories(OasisCExtras PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_link_libraries(OasisCExtras PUBLIC Oasis::Oasis Oasis::Extras)