From d1f9ab838931ed2ef4ef5699c7980b4ecdb6f193 Mon Sep 17 00:00:00 2001 From: Egor Tyuvaev Date: Thu, 2 May 2024 19:57:02 +0200 Subject: [PATCH] CMake: reading definitions from COMPILE_DEFINITIONS property (#24324) Compilation in Conan fails if compiler=clang and libstd=libstdc++ because conan defines _GLIBCXX_USE_CXX11_ABI=0 but openvino autodetects the value and overwrites it with _GLIBCXX_USE_CXX11_ABI=1. These changes make it honor the compile definitions generated by Conan. Co-authored-by: Ilya Lavrenov --- cmake/developer_package/target_flags.cmake | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake index 2c6c7433e6a..6f337941530 100644 --- a/cmake/developer_package/target_flags.cmake +++ b/cmake/developer_package/target_flags.cmake @@ -122,8 +122,19 @@ function(ov_get_compiler_definition definition var) message(FATAL_ERROR "Internal error: 'ov_get_definition' must be used only on Linux") endif() + get_directory_property(_user_defines COMPILE_DEFINITIONS) + foreach(_user_define IN LISTS _user_defines) + # older cmake versions keep -D at the beginning, trim it + string(REPLACE "-D" "" _user_define "${_user_define}") + list(APPEND _ov_user_flags "-D${_user_define}") + endforeach() + string(REPLACE " " ";" _user_cxx_flags "${CMAKE_CXX_FLAGS}") + foreach(_user_flag IN LISTS _user_cxx_flags) + list(APPEND _ov_user_flags ${_user_flag}) + endforeach() + execute_process(COMMAND echo "#include " - COMMAND "${CMAKE_CXX_COMPILER}" -x c++ - -E -dM ${CMAKE_CXX_FLAGS} + COMMAND "${CMAKE_CXX_COMPILER}" ${_ov_user_flags} -x c++ - -E -dM COMMAND grep -E "^#define ${definition} " OUTPUT_VARIABLE output_value ERROR_VARIABLE error_message