diff --git a/CMakeLists.txt b/CMakeLists.txt index 48b0cb9..17fe8ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,6 @@ include(GNUInstallDirs) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(DefineTargetVariables) -include(FindObjcopyWithWeaken) include(PCFromUContext) define_target_variables() @@ -156,9 +155,6 @@ endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON) -# Check if we have an objcopy installed that supports -W -find_objcopy_with_weaken() - # AX_C___ATTRIBUTE__ check_c_source_compiles("#include static void foo(void) __attribute__ ((unused)); @@ -762,7 +758,6 @@ endif() set_target_properties(tcmalloc_minimal PROPERTIES VERSION ${TCMALLOC_SO_VERSION} SOVERSION ${TCMALLOC_SO_VERSION}) -weaken_object(tcmalloc_minimal) install(TARGETS tcmalloc_minimal) if(GPERFTOOLS_BUILD_STATIC) add_library(tcmalloc_minimal_static STATIC ${libtcmalloc_minimal_internal_la_SOURCES}) @@ -775,7 +770,6 @@ if(GPERFTOOLS_BUILD_STATIC) set_target_properties(tcmalloc_minimal_static PROPERTIES OUTPUT_NAME tcmalloc_minimal) endif() - weaken_object(tcmalloc_minimal_static) install(TARGETS tcmalloc_minimal_static) endif() @@ -937,7 +931,6 @@ if(GPERFTOOLS_BUILD_DEBUGALLOC) target_compile_definitions(tcmalloc_minimal_debug PRIVATE ${libtcmalloc_minimal_la_DEFINES} TCMALLOC_FOR_DEBUGALLOCATION) target_link_libraries(tcmalloc_minimal_debug PRIVATE ${libtcmalloc_minimal_la_LIBADD}) - weaken_object(tcmalloc_minimal_debug) install(TARGETS tcmalloc_minimal_debug) set_target_properties(tcmalloc_minimal_debug PROPERTIES VERSION ${TCMALLOC_SO_VERSION} @@ -951,7 +944,6 @@ if(GPERFTOOLS_BUILD_DEBUGALLOC) OUTPUT_NAME tcmalloc_minimal_debug) endif() target_link_libraries(tcmalloc_minimal_debug_static PRIVATE ${libtcmalloc_minimal_la_LIBADD}) - weaken_object(tcmalloc_minimal_debug_static) install(TARGETS tcmalloc_minimal_debug_static) endif() @@ -1093,7 +1085,6 @@ if(GPERFTOOLS_BUILD_HEAP_CHECKER OR GPERFTOOLS_BUILD_HEAP_PROFILER) set_target_properties(tcmalloc PROPERTIES VERSION ${TCMALLOC_SO_VERSION} SOVERSION ${TCMALLOC_SO_VERSION}) - weaken_object(tcmalloc) install(TARGETS tcmalloc) if(GPERFTOOLS_BUILD_STATIC) add_library(tcmalloc_static STATIC ${libtcmalloc_la_SOURCES}) @@ -1102,7 +1093,6 @@ if(GPERFTOOLS_BUILD_HEAP_CHECKER OR GPERFTOOLS_BUILD_HEAP_PROFILER) set_target_properties(tcmalloc_static PROPERTIES OUTPUT_NAME tcmalloc) endif() target_link_libraries(tcmalloc_static PRIVATE ${libtcmalloc_la_LIBADD}) - weaken_object(tcmalloc_static) install(TARGETS tcmalloc_static) endif() @@ -1220,7 +1210,6 @@ if(GPERFTOOLS_BUILD_DEBUGALLOC) set_target_properties(tcmalloc_debug PROPERTIES VERSION ${TCMALLOC_SO_VERSION} SOVERSION ${TCMALLOC_SO_VERSION}) - weaken_object(tcmalloc_debug) install(TARGETS tcmalloc_debug) if(GPERFTOOLS_BUILD_STATIC) add_library(tcmalloc_debug_static STATIC src/debugallocation.cc ${HEAP_CHECKER_SOURCES} ${TCMALLOC_INCLUDES}) @@ -1231,7 +1220,6 @@ if(GPERFTOOLS_BUILD_DEBUGALLOC) set_target_properties(tcmalloc_debug_static PROPERTIES OUTPUT_NAME tcmalloc_debug) endif() - weaken_object(tcmalloc_debug_static) install(TARGETS tcmalloc_debug_static) endif() @@ -1369,7 +1357,6 @@ if(GPERFTOOLS_BUILD_HEAP_PROFILER OR GPERFTOOLS_BUILD_HEAP_CHECKER) # libstacktrace.la, which we already get via libtcmalloc. Trying to # specify it twice causes link-time duplicate-definition errors. :-( target_link_libraries(tcmalloc_and_profiler PRIVATE ${libtcmalloc_la_LIBADD}) - weaken_object(tcmalloc_and_profiler) install(TARGETS tcmalloc_and_profiler) if(GPERFTOOLS_BUILD_STATIC) add_library(tcmalloc_and_profiler_static STATIC ${libtcmalloc_la_SOURCES} ${libprofiler_la_SOURCES}) @@ -1379,7 +1366,6 @@ if(GPERFTOOLS_BUILD_HEAP_PROFILER OR GPERFTOOLS_BUILD_HEAP_CHECKER) set_target_properties(tcmalloc_and_profiler_static PROPERTIES OUTPUT_NAME tcmalloc_and_profiler) endif() - weaken_object(tcmalloc_and_profiler_static) install(TARGETS tcmalloc_and_profiler_static) endif() diff --git a/cmake/FindObjcopyWithWeaken.cmake b/cmake/FindObjcopyWithWeaken.cmake deleted file mode 100644 index da6e2e1..0000000 --- a/cmake/FindObjcopyWithWeaken.cmake +++ /dev/null @@ -1,63 +0,0 @@ -function(find_objcopy_with_weaken) - find_program(OBJCOPY_EXECUTABLE "objcopy") - message(STATUS "Looking for objcopy that supports weaken - ${OBJCOPY_EXECUTABLE}") - if(NOT OBJCOPY_EXECUTABLE) - return() - endif() - set(objcopy_test_src "${CMAKE_CURRENT_BINARY_DIR}/objcopy_test.c") - set(objcopy_test_exe "${CMAKE_CURRENT_BINARY_DIR}/objcopy_test") - file(WRITE ${objcopy_test_src} "void foo() {} int main() { return 0; }") - try_compile(objcopy_test_compiled - ${CMAKE_CURRENT_BINARY_DIR} ${objcopy_test_src} - COPY_FILE ${objcopy_test_exe}) - if(objcopy_test_compiled AND EXISTS ${objcopy_test_exe}) - execute_process( - COMMAND ${OBJCOPY_EXECUTABLE} -W foo ${objcopy_test_exe} - RESULT_VARIABLE objcopy_result) - file(REMOVE ${objcopy_test_exe}) - endif() - if(objcopy_result EQUAL 0) - set(objcopy_weaken ON) - endif() - file(REMOVE ${objcopy_test_src}) - if(objcopy_weaken) - set(objcopy_has_weaken "Success") - set(HAVE_OBJCOPY_WEAKEN TRUE PARENT_SCOPE) - set(OBJCOPY_EXECUTABLE "${OBJCOPY_EXECUTABLE}" PARENT_SCOPE) - else() - set(objcopy_has_weaken "Failed") - endif() - message(STATUS "objcopy has weaken support - ${objcopy_has_weaken}") -endfunction(find_objcopy_with_weaken) - -function(weaken_object target) - if(NOT HAVE_OBJCOPY_WEAKEN) - return() - endif() - # If we have objcopy, make malloc/free/etc weak symbols. That way folks - # can override our malloc if they want to (they can still use tc_malloc). - # Note: the weird-looking symbols are the c++ memory functions: - # (in order) new, new(nothrow), new[], new[](nothrow), delete, delete[] - # In theory this will break if mangling changes, but that seems pretty - # unlikely at this point. Just in case, I throw in versions with an - # extra underscore as well, which may help on OS X. - add_custom_command(TARGET ${target} POST_BUILD - COMMAND "${OBJCOPY_EXECUTABLE}" - -W malloc -W free -W realloc -W calloc -W cfree - -W memalign -W posix_memalign -W valloc -W pvalloc - -W aligned_alloc - -W malloc_stats -W mallopt -W mallinfo -W nallocx - -W _Znwm -W _ZnwmRKSt9nothrow_t -W _Znam -W _ZnamRKSt9nothrow_t - -W _ZdlPv -W _ZdaPv - -W __Znwm -W __ZnwmRKSt9nothrow_t -W __Znam -W __ZnamRKSt9nothrow_t - -W __ZdlPv -W __ZdaPv - -W _ZdaPvRKSt9nothrow_t -W _ZdaPvSt11align_val_t - -W _ZdaPvSt11align_val_tRKSt9nothrow_t -W _ZdaPvm - -W _ZdaPvmSt11align_val_t -W _ZdlPvRKSt9nothrow_t - -W _ZdlPvSt11align_val_t -W _ZdlPvSt11align_val_tRKSt9nothrow_t - -W _ZdlPvm -W _ZdlPvmSt11align_val_t - -W _ZnamSt11align_val_t -W _ZnamSt11align_val_tRKSt9nothrow_t - -W _ZnwmSt11align_val_t -W _ZnwmSt11align_val_tRKSt9nothrow_t - -W malloc_size -W malloc_usable_size - "$") -endfunction() \ No newline at end of file