Skip to content

Commit

Permalink
Added option to specify cxx standard.
Browse files Browse the repository at this point in the history
  • Loading branch information
5cript committed Feb 2, 2025
1 parent a1e1bea commit 53cb956
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
4 changes: 4 additions & 0 deletions cmake/backend/emscripten.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -130,13 +130,17 @@ function(nui_add_emscripten_target)
set(PATCH_DOTENV_COMMAND COMMAND cmake -E true)
endif()

get_target_property(TARGET_CXX_STANDARD ${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_TARGET} CXX_STANDARD)
message(STATUS "C++ standard of frontend subproject: ${TARGET_CXX_STANDARD}")

include(ExternalProject)
ExternalProject_Add(
"${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_TARGET}-emscripten"
SOURCE_DIR "${SOURCE_DIR}"
# emscripten cmake with passed down Release/Debug build type
CONFIGURE_COMMAND
${EMCMAKE} cmake
"-DCMAKE_CXX_STANDARD=${TARGET_CXX_STANDARD}"
${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_CMAKE_OPTIONS}
"-DNUI_NPM=${NUI_NPM}"
"-DNUI_NODE=${NUI_NODE}"
Expand Down
8 changes: 6 additions & 2 deletions cmake/frontend/emscripten.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ function(nui_prepare_emscripten_target)
cmake_parse_arguments(
NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS
"NO_INLINE;NO_INLINE_INJECT;LEAN_INDEX_HTML"
"TARGET;PREJS;STATIC;UNPACKED_MODE"
"TARGET;PREJS;STATIC;UNPACKED_MODE;CXX_STANDARD"
"EMSCRIPTEN_LINK_OPTIONS;EMSCRIPTEN_COMPILE_OPTIONS;PARCEL_ARGS;NPM_INSTALL_ARGS;OBSERVED_BUNDLE_FILES"
${ARGN}
)
Expand All @@ -28,9 +28,13 @@ function(nui_prepare_emscripten_target)
set(NUI_LEAN_HTML "lean")
endif()

if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD)
get_target_property(NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} CXX_STANDARD)
endif()

set(INLINER_COMMAND "")
if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE)
nui_enable_inline(TARGET ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR})
nui_enable_inline(TARGET ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR} CXX_STANDARD ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_CXX_STANDARD})
if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE_INJECT)
set(INLINER_COMMAND COMMAND ${NUI_INLINE_INJECTOR_TARGET_FILE} "${CMAKE_BINARY_DIR}/static/index.html" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.js" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.css" ${NUI_DEFER_INLINE_SCRIPTS_TAG} ${NUI_LEAN_HTML})
endif()
Expand Down
4 changes: 2 additions & 2 deletions nui/include/nui/frontend/utility/val_conversion.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ namespace Nui
template <typename T>
Nui::val convertToVal(std::map<std::string, T> const& map);
template <typename T>
Nui::val convertToVal(std::unique_ptr<T> const& map);
Nui::val convertToVal(std::unique_ptr<T> const& ptr);
template <typename T>
Nui::val convertToVal(std::shared_ptr<T> const& map);
Nui::val convertToVal(std::shared_ptr<T> const& ptr);
inline Nui::val convertToVal(long long)
{
throw std::runtime_error("Cannot convert long long to val");
Expand Down

0 comments on commit 53cb956

Please sign in to comment.