Emscripten: Restore linking shared libraries with -shared flag

Prior to CMake 4.2.0, projects using the EMSDK's toolchain file while
also enabling `TARGET_SUPPORTS_SHARED_LIBS` would link shared libraries
using our default `-shared` flag plus whatever `-sSIDE_MODULE` flag
the project added, if any.  CMake 4.2.0 introduced builtin Emscripten
support, but since commit d361bf365e (Emscripten: Drop hard-coded
-sMAIN_MODULE and -sSIDE_MODULE flags, 2025-09-18, v4.2.0-rc1~146^2)
we still leave it to projects to add Emscripten-specific flags needed
to link shared libraries.

Restore the pre-4.2 behavior of adding the `-shared` flag.  In
particular, this is needed for upcoming Emscripten support for real
shared libraries.

Issue: #27240
This commit is contained in:
Brad King
2026-05-14 09:18:24 -04:00
parent 4cac69f6a2
commit 0182611a56

View File

@@ -11,7 +11,6 @@ macro(__emscripten_clang lang)
# We also do not add -sMAIN_MODULE to CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS
# to preserve legacy behavior in which projects added it as needed.
# In the future we may add both flags with suitable controls.
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "")
set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)