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}) |
