mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-26 16:18:43 -05:00
86574083a8
In commit96d9b94a98(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 commitd361bf365e(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
25 lines
826 B
CMake
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>)
|