From d51bcdb17ca9f010e761c1e55198743242c4e186 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 5 Feb 2025 08:30:01 +0400 Subject: [PATCH] CMAKE: fixed GPU plugin build within vcpkg infra (#28825) ### Details: - Ported https://github.com/openvinotoolkit/openvino/pull/28816 --- .../compile_flags/os_flags.cmake | 34 +++++++++++++++++++ src/cmake/ov_parallel.cmake | 34 ++----------------- .../intel_gpu/src/graph/CMakeLists.txt | 2 +- .../intel_gpu/src/runtime/CMakeLists.txt | 8 ++--- 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/cmake/developer_package/compile_flags/os_flags.cmake b/cmake/developer_package/compile_flags/os_flags.cmake index 20b9dcebb88fca..0986b55c1f441e 100644 --- a/cmake/developer_package/compile_flags/os_flags.cmake +++ b/cmake/developer_package/compile_flags/os_flags.cmake @@ -645,3 +645,37 @@ function(ov_try_use_gold_linker) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold" PARENT_SCOPE) endif() endfunction() + +# +# ov_target_link_libraries_as_system( ) +# +function(ov_target_link_libraries_as_system TARGET_NAME LINK_TYPE) + message("Link to ${TARGET_NAME} using ${LINK_TYPE} the following ${ARGN}") + target_link_libraries(${TARGET_NAME} ${LINK_TYPE} ${ARGN}) + + # include directories as SYSTEM + foreach(library IN LISTS ARGN) + if(TARGET ${library}) + get_target_property(include_directories ${library} INTERFACE_INCLUDE_DIRECTORIES) + if(include_directories) + foreach(include_directory IN LISTS include_directories) + # cannot include /usr/include headers as SYSTEM + if(NOT "${include_directory}" MATCHES ".*/usr/include.*$") + # Note, some include dirs can be wrapper with $ and we need to clean it + string(REGEX REPLACE "^\\$$" "" include_directory "${include_directory}") + target_include_directories(${TARGET_NAME} SYSTEM ${LINK_TYPE} $) + else() + set(_system_library ON) + endif() + endforeach() + endif() + endif() + endforeach() + + if(_system_library) + # if we deal with system library (e.i. having /usr/include as header paths) + # we cannot use SYSTEM key word for such library + set_target_properties(${TARGET_NAME} PROPERTIES NO_SYSTEM_FROM_IMPORTED ON) + endif() +endfunction() diff --git a/src/cmake/ov_parallel.cmake b/src/cmake/ov_parallel.cmake index 6ab895abb24ada..f7f6bf6bf736a4 100644 --- a/src/cmake/ov_parallel.cmake +++ b/src/cmake/ov_parallel.cmake @@ -318,7 +318,7 @@ macro(ov_find_package_openmp) # falling back to system OpenMP then if(NOT TARGET IntelOpenMP::OpenMP_CXX) - _ov_target_link_libraries(${TARGET_NAME} ${LINK_TYPE} OpenMP::OpenMP_CXX) + ov_target_link_libraries_as_system(${TARGET_NAME} ${LINK_TYPE} OpenMP::OpenMP_CXX) endif() endif() endmacro() @@ -360,34 +360,6 @@ function(ov_set_threading_interface_for TARGET_NAME) message(WARNING "Unknown target type") endif() - function(_ov_target_link_libraries TARGET_NAME LINK_TYPE) - target_link_libraries(${TARGET_NAME} ${LINK_TYPE} ${ARGN}) - - # include directories as SYSTEM - foreach(library IN LISTS ARGN) - if(TARGET ${library}) - get_target_property(include_directories ${library} INTERFACE_INCLUDE_DIRECTORIES) - if(include_directories) - foreach(include_directory IN LISTS include_directories) - # cannot include /usr/include headers as SYSTEM - if(NOT "${include_directory}" MATCHES ".*/usr/include.*$") - target_include_directories(${TARGET_NAME} SYSTEM - ${LINK_TYPE} $) - else() - set(_system_library ON) - endif() - endforeach() - endif() - endif() - endforeach() - - if(_system_library) - # if we deal with system library (e.i. having /usr/include as header paths) - # we cannot use SYSTEM key word for such library - set_target_properties(${TARGET_NAME} PROPERTIES NO_SYSTEM_FROM_IMPORTED ON) - endif() - endfunction() - set(_ov_thread_define "OV_THREAD_SEQ") if(NOT TARGET openvino::threading) @@ -423,13 +395,13 @@ function(ov_set_threading_interface_for TARGET_NAME) set_target_properties(openvino_threading PROPERTIES INTERFACE_LINK_LIBRARIES ${_ov_threading_lib}) # perform linkage with target - _ov_target_link_libraries(${TARGET_NAME} ${LINK_TYPE} ${_ov_threading_lib}) + ov_target_link_libraries_as_system(${TARGET_NAME} ${LINK_TYPE} ${_ov_threading_lib}) endif() target_compile_definitions(${TARGET_NAME} ${COMPILE_DEF_TYPE} OV_THREAD=${_ov_thread_define}) if(NOT THREADING STREQUAL "SEQ") find_package(Threads REQUIRED) - _ov_target_link_libraries(${TARGET_NAME} ${LINK_TYPE} Threads::Threads) + ov_target_link_libraries_as_system(${TARGET_NAME} ${LINK_TYPE} Threads::Threads) endif() endfunction(ov_set_threading_interface_for) diff --git a/src/plugins/intel_gpu/src/graph/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/CMakeLists.txt index cdbf85c5fc4fb6..a0dac51047894c 100644 --- a/src/plugins/intel_gpu/src/graph/CMakeLists.txt +++ b/src/plugins/intel_gpu/src/graph/CMakeLists.txt @@ -52,7 +52,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE openvino_intel_gpu_kernels openvino::runtime) if(ENABLE_ONEDNN_FOR_GPU) - target_link_libraries(${TARGET_NAME} PUBLIC onednn_gpu_tgt) + ov_target_link_libraries_as_system(${TARGET_NAME} PUBLIC onednn_gpu_tgt) endif() if(COMMAND add_cpplint_target) diff --git a/src/plugins/intel_gpu/src/runtime/CMakeLists.txt b/src/plugins/intel_gpu/src/runtime/CMakeLists.txt index 8d0306c6f39a08..ddccadfa338625 100644 --- a/src/plugins/intel_gpu/src/runtime/CMakeLists.txt +++ b/src/plugins/intel_gpu/src/runtime/CMakeLists.txt @@ -55,6 +55,10 @@ if(OV_COMPILER_IS_INTEL_LLVM) target_compile_definitions(${TARGET_NAME} PUBLIC OV_GPU_WITH_SYCL) endif() +if(ENABLE_ONEDNN_FOR_GPU) + ov_target_link_libraries_as_system(${TARGET_NAME} PUBLIC onednn_gpu_tgt) +endif() + ov_set_threading_interface_for(${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PRIVATE @@ -63,10 +67,6 @@ target_link_libraries(${TARGET_NAME} PRIVATE openvino::runtime::dev ) -if(ENABLE_ONEDNN_FOR_GPU) - target_link_libraries(${TARGET_NAME} PUBLIC onednn_gpu_tgt) -endif() - set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) if(WIN32)