Emscripten: Restore support for indirect use of emsdk toolchain file

Extend commit 644ad91e6a (Emscripten: Restore support for emsdk
toolchain file and platform module, 2025-09-17) to support using a
third-party `CMAKE_TOOLCHAIN_FILE` that includes the emsdk-provided
toolchain file.

Issue: #27232
This commit is contained in:
Brad King
2025-09-19 09:21:33 -04:00
parent 8580c6bd8d
commit 707f14d434
+10 -4
View File
@@ -1,10 +1,16 @@
# Emscripten provides a combined toolchain file and platform module
# that predates CMake upstream support. Avoid interfering with it.
if(CMAKE_SYSTEM_VERSION EQUAL 1)
if(CMAKE_TOOLCHAIN_FILE MATCHES [[/Modules/Platform/Emscripten\.cmake$]])
include("${CMAKE_TOOLCHAIN_FILE}")
# that predates CMake upstream support. As a toolchain file it sets
# CMAKE_SYSTEM_VERSION to 1 and points CMAKE_MODULE_PATH to itself.
# Include it here to preserve its role as a platform module.
if(CMAKE_SYSTEM_VERSION EQUAL 1 AND CMAKE_MODULE_PATH)
find_file(_EMSCRIPTEN_PLATFORM_MODULE NAMES "Platform/Emscripten.cmake"
NO_CACHE NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH PATHS ${CMAKE_MODULE_PATH})
if(_EMSCRIPTEN_PLATFORM_MODULE)
include("${_EMSCRIPTEN_PLATFORM_MODULE}")
unset(_EMSCRIPTEN_PLATFORM_MODULE)
return()
endif()
unset(_EMSCRIPTEN_PLATFORM_MODULE)
endif()
set(CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH ON)