diff options
author | Brent Cook <bcook@openbsd.org> | 2018-03-18 09:46:44 -0500 |
---|---|---|
committer | Brent Cook <bcook@openbsd.org> | 2018-03-18 09:46:44 -0500 |
commit | 0dfd7cb1034f1bdbab8bbc7cb1dee2b4b02f092e (patch) | |
tree | 21e61add767c0fcb897e52d6f152dcefbcb0a81a | |
parent | 1fb8c9c6bea797e4db5e395fb34b899682ee8682 (diff) | |
parent | 3625c50f44da03b39577219dc2013bf02f76fc9a (diff) | |
download | portable-0dfd7cb1034f1bdbab8bbc7cb1dee2b4b02f092e.tar.gz portable-0dfd7cb1034f1bdbab8bbc7cb1dee2b4b02f092e.tar.bz2 portable-0dfd7cb1034f1bdbab8bbc7cb1dee2b4b02f092e.zip |
Land #399, Use binary directory for symbol exports generation
-rw-r--r-- | cmake_export_symbol.cmake | 40 | ||||
-rw-r--r-- | crypto/CMakeLists.txt | 6 |
2 files changed, 26 insertions, 20 deletions
diff --git a/cmake_export_symbol.cmake b/cmake_export_symbol.cmake index cbc65f2..0883001 100644 --- a/cmake_export_symbol.cmake +++ b/cmake_export_symbol.cmake | |||
@@ -1,49 +1,55 @@ | |||
1 | macro(export_symbol TARGET FILENAME) | 1 | macro(export_symbol TARGET SYMBOLS_PATH) |
2 | 2 | ||
3 | set(FLAG "") | 3 | set(FLAG "") |
4 | get_filename_component(FILENAME ${SYMBOLS_PATH} NAME) | ||
4 | 5 | ||
5 | if(WIN32) | 6 | if(WIN32) |
6 | string(REPLACE ".sym" ".def" DEF_FILENAME ${FILENAME}) | 7 | string(REPLACE ".sym" ".def" DEF_FILENAME ${FILENAME}) |
7 | file(WRITE ${DEF_FILENAME} "EXPORTS\n") | 8 | file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${DEF_FILENAME}" DEF_PATH) |
8 | file(READ ${FILENAME} SYMBOLS) | 9 | file(WRITE ${DEF_PATH} "EXPORTS\n") |
9 | file(APPEND ${DEF_FILENAME} "${SYMBOLS}") | 10 | file(READ ${SYMBOLS_PATH} SYMBOLS) |
10 | target_sources(${TARGET} PRIVATE ${DEF_FILENAME}) | 11 | file(APPEND ${DEF_PATH} "${SYMBOLS}") |
12 | target_sources(${TARGET} PRIVATE ${DEF_PATH}) | ||
11 | 13 | ||
12 | elseif(APPLE) | 14 | elseif(APPLE) |
13 | file(READ ${FILENAME} SYMBOLS) | 15 | file(READ ${SYMBOLS_PATH} SYMBOLS) |
14 | string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS}) | 16 | string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS}) |
15 | string(REPLACE "\n" "\n_" SYMBOLS ${SYMBOLS}) | 17 | string(REPLACE "\n" "\n_" SYMBOLS ${SYMBOLS}) |
16 | string(REGEX REPLACE "(.)$" "\\1\\n" SYMBOLS ${SYMBOLS}) | 18 | string(REGEX REPLACE "(.)$" "\\1\\n" SYMBOLS ${SYMBOLS}) |
17 | string(REPLACE ".sym" ".exp" EXP_FILENAME ${FILENAME}) | 19 | string(REPLACE ".sym" ".exp" EXP_FILENAME ${FILENAME}) |
18 | file(WRITE ${EXP_FILENAME} "_${SYMBOLS}") | 20 | file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${EXP_FILENAME}" EXP_PATH) |
19 | set(FLAG "-exported_symbols_list ${EXP_FILENAME}") | 21 | file(WRITE ${EXP_PATH} "_${SYMBOLS}") |
22 | set(FLAG "-exported_symbols_list ${EXP_PATH}") | ||
20 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) | 23 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) |
21 | 24 | ||
22 | elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX") | 25 | elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX") |
23 | file(READ ${FILENAME} SYMBOLS) | 26 | file(READ ${SYMBOLS_PATH} SYMBOLS) |
24 | string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS}) | 27 | string(REGEX REPLACE "\n$" "" SYMBOLS ${SYMBOLS}) |
25 | string(REPLACE "\n" "\n+e " SYMBOLS ${SYMBOLS}) | 28 | string(REPLACE "\n" "\n+e " SYMBOLS ${SYMBOLS}) |
26 | string(REPLACE ".sym" ".opt" OPT_FILENAME ${FILENAME}) | 29 | string(REPLACE ".sym" ".opt" OPT_FILENAME ${FILENAME}) |
27 | file(WRITE ${OPT_FILENAME} "+e ${SYMBOLS}") | 30 | file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${OPT_FILENAME}" OPT_PATH) |
28 | set(FLAG "-Wl,-c,${OPT_FILENAME}") | 31 | file(WRITE ${OPT_PATH} "+e ${SYMBOLS}") |
32 | set(FLAG "-Wl,-c,${OPT_PATH}") | ||
29 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) | 33 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) |
30 | 34 | ||
31 | elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") | 35 | elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") |
32 | file(READ ${FILENAME} SYMBOLS) | 36 | file(READ ${SYMBOLS_PATH} SYMBOLS) |
33 | string(REPLACE "\n" ";\n" SYMBOLS ${SYMBOLS}) | 37 | string(REPLACE "\n" ";\n" SYMBOLS ${SYMBOLS}) |
34 | string(REPLACE ".sym" ".ver" VER_FILENAME ${FILENAME}) | 38 | string(REPLACE ".sym" ".ver" VER_FILENAME ${FILENAME}) |
35 | file(WRITE ${VER_FILENAME} | 39 | file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${VER_FILENAME}" VER_PATH) |
40 | file(WRITE ${VER_PATH} | ||
36 | "{\nglobal:\n${SYMBOLS}\nlocal:\n*;\n};\n") | 41 | "{\nglobal:\n${SYMBOLS}\nlocal:\n*;\n};\n") |
37 | set(FLAG "-Wl,-M${VER_FILENAME}") | 42 | set(FLAG "-Wl,-M${VER_PATH}") |
38 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) | 43 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) |
39 | 44 | ||
40 | elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") | 45 | elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") |
41 | file(READ ${FILENAME} SYMBOLS) | 46 | file(READ ${SYMBOLS_PATH} SYMBOLS) |
42 | string(REPLACE "\n" ";\n" SYMBOLS ${SYMBOLS}) | 47 | string(REPLACE "\n" ";\n" SYMBOLS ${SYMBOLS}) |
43 | string(REPLACE ".sym" ".ver" VER_FILENAME ${FILENAME}) | 48 | string(REPLACE ".sym" ".ver" VER_FILENAME ${FILENAME}) |
44 | file(WRITE ${VER_FILENAME} | 49 | file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${VER_FILENAME}" VER_PATH) |
50 | file(WRITE ${VER_PATH} | ||
45 | "{\nglobal:\n${SYMBOLS}\nlocal:\n*;\n};\n") | 51 | "{\nglobal:\n${SYMBOLS}\nlocal:\n*;\n};\n") |
46 | set(FLAG "-Wl,--version-script,\"${VER_FILENAME}\"") | 52 | set(FLAG "-Wl,--version-script,\"${VER_PATH}\"") |
47 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) | 53 | set_target_properties(${TARGET} PROPERTIES LINK_FLAGS ${FLAG}) |
48 | endif() | 54 | endif() |
49 | 55 | ||
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 0615110..afa57b3 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt | |||
@@ -798,11 +798,11 @@ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/crypto.sym SYMS) | |||
798 | foreach(SYM IN LISTS CRYPTO_UNEXPORT) | 798 | foreach(SYM IN LISTS CRYPTO_UNEXPORT) |
799 | string(REPLACE "${SYM}\n" "" SYMS ${SYMS}) | 799 | string(REPLACE "${SYM}\n" "" SYMS ${SYMS}) |
800 | endforeach() | 800 | endforeach() |
801 | file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym ${SYMS}) | 801 | file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym ${SYMS}) |
802 | if(EXTRA_EXPORT) | 802 | if(EXTRA_EXPORT) |
803 | list(SORT EXTRA_EXPORT) | 803 | list(SORT EXTRA_EXPORT) |
804 | foreach(SYM IN LISTS EXTRA_EXPORT) | 804 | foreach(SYM IN LISTS EXTRA_EXPORT) |
805 | file(APPEND ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym "${SYM}\n") | 805 | file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym "${SYM}\n") |
806 | endforeach() | 806 | endforeach() |
807 | endif() | 807 | endif() |
808 | 808 | ||
@@ -810,7 +810,7 @@ add_library(crypto-objects OBJECT ${CRYPTO_SRC}) | |||
810 | if (BUILD_SHARED) | 810 | if (BUILD_SHARED) |
811 | add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>) | 811 | add_library(crypto STATIC $<TARGET_OBJECTS:crypto-objects>) |
812 | add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>) | 812 | add_library(crypto-shared SHARED $<TARGET_OBJECTS:crypto-objects>) |
813 | export_symbol(crypto-shared ${CMAKE_CURRENT_SOURCE_DIR}/crypto_p.sym) | 813 | export_symbol(crypto-shared ${CMAKE_CURRENT_BINARY_DIR}/crypto_p.sym) |
814 | if (WIN32) | 814 | if (WIN32) |
815 | target_link_libraries(crypto-shared Ws2_32.lib) | 815 | target_link_libraries(crypto-shared Ws2_32.lib) |
816 | set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION}) | 816 | set(CRYPTO_POSTFIX -${CRYPTO_MAJOR_VERSION}) |