Files
CMake/Tests/RunCMake/Emscripten/C-WHOLE_ARCHIVE.cmake
T
Brad King 86574083a8 Emscripten: Drop hard-coded -fPIC flag
In commit 96d9b94a98 (Emscripten: Add platform modules, 2025-05-16,
v4.2.0-rc1~607^2~3) this flag was added as part of an attempt to support
shared libraries without requiring projects to set much themselves. That
attempt was reverted by commit d361bf365e (Emscripten: Drop hard-coded
-sMAIN_MODULE and -sSIDE_MODULE flags, 2025-09-18, v4.2.0-rc1~146^2).
Also avoid hard-coding `-fPIC`.  `POSITION_INDEPENDENT_CODE` is already
enabled for shared library targets.  Projects can enable it themselves
where `-fPIC` is needed outside of shared libraries.

Fixes: #27424
Issue: #27240
2025-11-25 10:32:04 -05:00

25 lines
826 B
CMake

enable_language(C)
add_library(base STATIC base.c unref.c)
set_property(TARGET base PROPERTY POSITION_INDEPENDENT_CODE 1)
target_compile_definitions(base PUBLIC STATIC_BASE)
add_library(lib SHARED lib.c)
target_link_libraries(lib PRIVATE "$<LINK_LIBRARY:WHOLE_ARCHIVE,base>")
target_link_options(lib PRIVATE -sSIDE_MODULE)
add_executable(main main.c)
set_property(TARGET main PROPERTY POSITION_INDEPENDENT_CODE 1)
target_link_libraries(main PRIVATE lib)
target_link_options(main PRIVATE -sMAIN_MODULE)
add_library(circular1 STATIC circular1.c)
add_library(circular2 STATIC circular2.c)
target_link_libraries(circular1 PRIVATE circular2)
target_link_libraries(circular2 PRIVATE circular1)
add_executable(main_circular main_circular.c)
target_link_libraries(main_circular PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,circular1>)