Allow conflict-set to have multiple object files
This commit is contained in:
@@ -95,8 +95,14 @@ target_compile_options(${PROJECT_NAME}-object PRIVATE -fno-exceptions
|
|||||||
-fvisibility=hidden)
|
-fvisibility=hidden)
|
||||||
target_include_directories(${PROJECT_NAME}-object
|
target_include_directories(${PROJECT_NAME}-object
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
|
||||||
|
COMMAND ld -r $<TARGET_OBJECTS:${PROJECT_NAME}-object> -o
|
||||||
|
${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
|
||||||
|
DEPENDS $<TARGET_OBJECTS:${PROJECT_NAME}-object>
|
||||||
|
COMMAND_EXPAND_LISTS)
|
||||||
|
|
||||||
add_library(${PROJECT_NAME} SHARED $<TARGET_OBJECTS:${PROJECT_NAME}-object>)
|
add_library(${PROJECT_NAME} SHARED ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
|
${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/radix_tree")
|
"${CMAKE_CURRENT_BINARY_DIR}/radix_tree")
|
||||||
@@ -110,19 +116,11 @@ if(HAS_VERSION_SCRIPT)
|
|||||||
LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map)
|
LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(${PROJECT_NAME}-static STATIC
|
add_library(${PROJECT_NAME}-static STATIC ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
|
||||||
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
|
|
||||||
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
|
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE C)
|
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE C)
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT APPLE)
|
||||||
if(APPLE)
|
|
||||||
add_custom_command(
|
|
||||||
TARGET ${PROJECT_NAME}-static
|
|
||||||
PRE_LINK
|
|
||||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/privatize_symbols_macos.sh
|
|
||||||
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
|
|
||||||
else()
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${PROJECT_NAME}-static
|
TARGET ${PROJECT_NAME}-static
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# This has the effect of making visibility=hidden symbols private in object files
|
|
||||||
for obj in "$@" ; do
|
|
||||||
ld -r "$obj" -o "$obj.tmp"
|
|
||||||
touch -r "$obj" "$obj.tmp"
|
|
||||||
mv "$obj.tmp" "$obj"
|
|
||||||
done
|
|
Reference in New Issue
Block a user