From f639db18a5449214cfd722408de036b6eb2f0581 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Wed, 9 Oct 2024 17:49:55 -0700 Subject: [PATCH] Allow conflict-set to have multiple object files --- CMakeLists.txt | 20 +++++++++----------- privatize_symbols_macos.sh | 8 -------- 2 files changed, 9 insertions(+), 19 deletions(-) delete mode 100755 privatize_symbols_macos.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 93f6502..82fffad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,8 +95,14 @@ target_compile_options(${PROJECT_NAME}-object PRIVATE -fno-exceptions -fvisibility=hidden) target_include_directories(${PROJECT_NAME}-object PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) +add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o + COMMAND ld -r $ -o + ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o + DEPENDS $ + COMMAND_EXPAND_LISTS) -add_library(${PROJECT_NAME} SHARED $) +add_library(${PROJECT_NAME} SHARED ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o) set_target_properties( ${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/radix_tree") @@ -110,19 +116,11 @@ if(HAS_VERSION_SCRIPT) LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map) endif() -add_library(${PROJECT_NAME}-static STATIC - $) +add_library(${PROJECT_NAME}-static STATIC ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o) if(NOT CMAKE_BUILD_TYPE STREQUAL Debug) set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE C) endif() - -if(APPLE) - add_custom_command( - TARGET ${PROJECT_NAME}-static - PRE_LINK - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/privatize_symbols_macos.sh - $) -else() +if(NOT APPLE) add_custom_command( TARGET ${PROJECT_NAME}-static POST_BUILD diff --git a/privatize_symbols_macos.sh b/privatize_symbols_macos.sh deleted file mode 100755 index f879599..0000000 --- a/privatize_symbols_macos.sh +++ /dev/null @@ -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