From 9e82faa335bc8fde700541da39bb5279b1696b89 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Wed, 23 Mar 2022 11:32:50 -0500 Subject: [PATCH] Limit symbol exports in CMake build. --- src/CMakeLists.txt | 13 ++++++++++++- src/percetto.exports | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/percetto.exports diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ba95b1e..fa3ad5e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,7 +17,18 @@ set_target_properties( target_include_directories(percetto PUBLIC $) target_include_directories(percetto PUBLIC $ $) - +if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + # Limit what symbols are exported + set_property( + TARGET percetto + APPEND_STRING + PROPERTY LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/percetto.exports") + # Re-link if the version script changes. + set_property( + TARGET percetto + APPEND + PROPERTY LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/percetto.exports") +endif() install(FILES percetto.h perfetto-port.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install( TARGETS percetto diff --git a/src/percetto.exports b/src/percetto.exports new file mode 100644 index 0000000..20c7937 --- /dev/null +++ b/src/percetto.exports @@ -0,0 +1,14 @@ +{ + global: + percetto_register_group_category; + percetto_register_track; + percetto_event_begin; + percetto_event_end; + percetto_event; + percetto_event_extended; + percetto_init_with_args; + percetto_init; + + local: + *; +};