diff options
| author | arcadia-devtools <[email protected]> | 2022-03-29 15:08:25 +0300 |
|---|---|---|
| committer | arcadia-devtools <[email protected]> | 2022-03-29 15:08:25 +0300 |
| commit | 6eea9d2f39fb9f4d899efd685c872e4b8ede680f (patch) | |
| tree | fede9620276c8eafb0c51ff2ddd8e914be89f247 /cmake | |
| parent | 5f65d38427c0df2cc82db30c0363c6aa5d4d856e (diff) | |
intermediate changes
ref:b63d6b71507593ba174dde46e5c3aee4e9ccd498
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/yandex_common.cmake | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cmake/yandex_common.cmake b/cmake/yandex_common.cmake index 4efaad97b4c..0701afbda60 100644 --- a/cmake/yandex_common.cmake +++ b/cmake/yandex_common.cmake @@ -1,6 +1,7 @@ # Set of common macros find_package(Python2 REQUIRED) +find_package(Python3 REQUIRED) function(target_ragel_lexers TgtName Key Src) SET(RAGEL_BIN ${CMAKE_BINARY_DIR}/bin/ragel) @@ -122,3 +123,43 @@ function(resources Tgt Output) DEPENDS ${RESOURCE_ARGS_INPUTS} ) endfunction() + +function(use_export_script Target ExportFile) + get_filename_component(OutName ${ExportFile} NAME) + set(OutPath ${CMAKE_CURRENT_BINARY_DIR}/gen_${OutName}) + + if (MSVC) + target_link_flags(${Target} PRIVATE /DEF:${OutPath}) + set(EXPORT_SCRIPT_FLAVOR msvc) + elseif(APPLE) + execute_process( + COMMAND Python3_EXECUTABLE ${CMAKE_SOURCE_DIR}/build/scripts/export_script_gen.py ${ExportFile} --format darwin + RESULT_VARIABLE _SCRIPT_RES + OUTPUT_VARIABLE _SCRIPT_FLAGS + ERROR_VARIABLE _SCRIPT_STDERR + ) + if (NOT ${_SCRIPT_RES} EQUAL 0) + message(FATAL_ERROR "Failed to parse export symbols from ${ExportFile}:\n${_SCRIPT_STDERR}") + return() + endif() + target_link_flags(${Target} PRIVATE ${_SCRIPT_FLAGS}) + return() + else() + set(EXPORT_SCRIPT_FLAVOR gnu) + target_link_flags(${Target} PRIVATE -Wl,--gc-sections -rdynamic -Wl,--version-script=${OutPath}) + endif() + + add_custom_command( + OUTPUT ${OutPath} + COMMAND + Python3::Interpreter ${CMAKE_SOURCE_DIR}/build/scripts/export_script_gen.py ${ExportFile} ${OutPath} --format ${EXPORT_SCRIPT_FLAVOR} + DEPENDS ${ExportFile} ${CMAKE_SOURCE_DIR}/build/scripts/export_script_gen.py + ) + target_sources(${Target} PRIVATE ${OutPath}) + set_property(SOURCE ${OutPath} PROPERTY + HEADER_FILE_ONLY On + ) + set_property(TARGET ${Target} APPEND PROPERTY + LINK_DEPENDS ${OutPath} + ) +endfunction() |
