diff --git a/CMakeLists.txt b/CMakeLists.txt index c5f2fbd04..16b3baa5f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,13 @@ option(ENABLE_ASAN "Enable AddressSanitizer (ASAN) for debugging (degrades perf option(ENABLE_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan) for debugging" OFF) option(ENABLE_MSAN "Enable MemorySanitizer (MSan) for debugging (not recommended to run with ASAN)" OFF) +# This helps support the case where emsdk toolchain file is used +# either by setting it with -DCMAKE_TOOLCHAIN_FILE=/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake +# or by using "emcmake cmake -B build -S ." as described in https://emscripten.org/docs/compiling/Building-Projects.html +if(EMSCRIPTEN) + SET(PLATFORM Web CACHE ENUM "Forcing PLATFORM_WEB because EMSCRIPTEN was detected") +endif() + if(CMAKE_VERSION VERSION_LESS "3.1") if(CMAKE_C_COMPILER_ID STREQUAL "GNU") set(CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}") diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 08b97ea91..57ba74d47 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -28,7 +28,6 @@ if (APPLE AND NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") add_definitions(-DGL_SILENCE_DEPRECATION) MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!") endif() -set(OUTPUT_EXT) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) include(CheckIncludeFile) @@ -85,12 +84,12 @@ elseif(${PLATFORM} MATCHES "Web") # Since WASM is used, ALLOW_MEMORY_GROWTH has no extra overheads set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s ALLOW_MEMORY_GROWTH=1 --no-heap-copy") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --shell-file ${CMAKE_SOURCE_DIR}/src/shell.html") - set(OUTPUT_EXT ".html") + set(CMAKE_EXECUTABLE_SUFFIX ".html") # Remove the -rdynamic flag because otherwise emscripten # does not generate HTML+JS+WASM files, only a non-working # and fat HTML - string(REPLACE "-rdynamic" "" CMAKE_SHARED_LIBRARY_LINK_C_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS}) + string(REPLACE "-rdynamic" "" CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS}") endif() include_directories(BEFORE SYSTEM others/external/include) @@ -103,7 +102,7 @@ endif() foreach(example_source ${example_sources}) # Create the basename for the example get_filename_component(example_name ${example_source} NAME) - string(REPLACE ".c" "${OUTPUT_EXT}" example_name ${example_name}) + string(REPLACE ".c" "" example_name ${example_name}) # Setup the example add_executable(${example_name} ${example_source}) @@ -125,7 +124,7 @@ if (${PLATFORM} MATCHES "Desktop") foreach (example_source "others/rlgl_standalone.c") # Create the basename for the example get_filename_component(example_name ${example_source} NAME) - string(REPLACE ".c" "${OUTPUT_EXT}" example_name ${example_name}) + string(REPLACE ".c" "" example_name ${example_name}) add_executable(${example_name} ${example_source}) add_dependencies(${example_name} raylib) target_link_libraries(${example_name} ${raylib_LDFLAGS})