From 73e51e012fbc54a92f8d3ee703e88e02b1a3a430 Mon Sep 17 00:00:00 2001 From: Masud Rahman Date: Sun, 25 Jun 2017 18:19:20 -0400 Subject: cmake_export_symbol: Darwin compatibility The Darwin platform prefixes all C symbols with an underscore. At link-time of a shared library, libressl generates a list of symbols to export, but does not prefix each symbol with an underscore. This commit addresses that issue. --- cmake_export_symbol.cmake | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmake_export_symbol.cmake b/cmake_export_symbol.cmake index 2928c6b..cbc65f2 100644 --- a/cmake_export_symbol.cmake +++ b/cmake_export_symbol.cmake @@ -10,7 +10,13 @@ macro(export_symbol TARGET FILENAME) target_sources(${TARGET} PRIVATE ${DEF_FILENAME}) elseif(APPLE) - set(FLAG "-exported_symbols_list ${FILENAME}") + file(READ ${FILENAME} SYMBOLS) + string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS}) + string(REPLACE "\n" "\n_" SYMBOLS ${SYMBOLS}) + string(REGEX REPLACE "(.)$" "\\1\\n" SYMBOLS ${SYMBOLS}) + string(REPLACE ".sym" ".exp" EXP_FILENAME ${FILENAME}) + file(WRITE ${EXP_FILENAME} "_${SYMBOLS}") + set(FLAG "-exported_symbols_list ${EXP_FILENAME}") set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX") -- cgit v1.2.3-55-g6feb