aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasud Rahman <mrahman15@bloomberg.net>2017-06-25 18:19:20 -0400
committerMasud Rahman <mrahman15@bloomberg.net>2017-06-25 18:19:20 -0400
commit73e51e012fbc54a92f8d3ee703e88e02b1a3a430 (patch)
tree6abde49f90627f8f2d762cecc12c2f9dd11ef8c7
parent8b80bcdad82a57d195381a150aa2690f188b127e (diff)
downloadportable-73e51e012fbc54a92f8d3ee703e88e02b1a3a430.tar.gz
portable-73e51e012fbc54a92f8d3ee703e88e02b1a3a430.tar.bz2
portable-73e51e012fbc54a92f8d3ee703e88e02b1a3a430.zip
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.
-rw-r--r--cmake_export_symbol.cmake8
1 files changed, 7 insertions, 1 deletions
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)
10 target_sources(${TARGET} PRIVATE ${DEF_FILENAME}) 10 target_sources(${TARGET} PRIVATE ${DEF_FILENAME})
11 11
12 elseif(APPLE) 12 elseif(APPLE)
13 set(FLAG "-exported_symbols_list ${FILENAME}") 13 file(READ ${FILENAME} SYMBOLS)
14 string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS})
15 string(REPLACE "\n" "\n_" SYMBOLS ${SYMBOLS})
16 string(REGEX REPLACE "(.)$" "\\1\\n" SYMBOLS ${SYMBOLS})
17 string(REPLACE ".sym" ".exp" EXP_FILENAME ${FILENAME})
18 file(WRITE ${EXP_FILENAME} "_${SYMBOLS}")
19 set(FLAG "-exported_symbols_list ${EXP_FILENAME}")
14 set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) 20 set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG})
15 21
16 elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX") 22 elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX")