From 02b848d0b8b6ee572d4dfd5d4eb308cef0edea65 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 24 May 2023 12:43:59 +0400 Subject: [PATCH] Unified cmake find_host_package and other host commands (#17662) * Unified cmake find_host_package and other host commands * should work * Moved files --- cmake/arm.toolchain.cmake | 64 ------- cmake/arm64.toolchain.cmake | 64 ------- .../IEDevScriptsConfig.cmake | 32 +--- .../cross_compile/find_commands.cmake | 160 ++++++++++++++++++ .../{ => cross_compile}/native_compile.cmake | 0 .../ncc_naming_style/ncc_naming_style.cmake | 22 ++- .../developer_package/packaging/rpm/rpm.cmake | 4 +- cmake/developer_package/target_flags.cmake | 42 ++--- cmake/toolchains/ia32.linux.toolchain.cmake | 2 +- cmake/toolchains/mingw-w64.toolchain.cmake | 80 +-------- cmake/toolchains/riscv64-gnu.toolchain.cmake | 63 ------- cmake/toolchains/x86_64.linux.toolchain.cmake | 69 +------- src/bindings/python/CMakeLists.txt | 17 +- src/cmake/install_tbb.cmake | 2 +- src/common/itt/cmake/ITTConfig.cmake | 7 +- src/plugins/intel_gna/CMakeLists.txt | 6 +- thirdparty/CMakeLists.txt | 4 +- 17 files changed, 233 insertions(+), 405 deletions(-) create mode 100644 cmake/developer_package/cross_compile/find_commands.cmake rename cmake/developer_package/{ => cross_compile}/native_compile.cmake (100%) diff --git a/cmake/arm.toolchain.cmake b/cmake/arm.toolchain.cmake index 3091d7d5a5a..33b92325b70 100644 --- a/cmake/arm.toolchain.cmake +++ b/cmake/arm.toolchain.cmake @@ -9,67 +9,3 @@ set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) set(CMAKE_STRIP arm-linux-gnueabihf-strip) set(PKG_CONFIG_EXECUTABLE arm-linux-gnueabihf-pkg-config CACHE PATH "Path to ARM pkg-config") - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -macro(__cmake_find_root_save_and_reset) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(__save_${v} ${${v}}) - set(${v} NEVER) - endforeach() -endmacro() - -macro(__cmake_find_root_restore) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(${v} ${__save_${v}}) - unset(__save_${v}) - endforeach() -endmacro() - - -# macro to find programs on the host OS -macro(find_host_program) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_program(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() - -# macro to find packages on the host OS -macro(find_host_package) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_package(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() diff --git a/cmake/arm64.toolchain.cmake b/cmake/arm64.toolchain.cmake index 80d6c371b54..a23a509b2de 100644 --- a/cmake/arm64.toolchain.cmake +++ b/cmake/arm64.toolchain.cmake @@ -9,67 +9,3 @@ set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) set(CMAKE_STRIP aarch64-linux-gnu-strip) set(PKG_CONFIG_EXECUTABLE aarch64-linux-gnu-pkg-config CACHE PATH "Path to ARM64 pkg-config") - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -macro(__cmake_find_root_save_and_reset) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(__save_${v} ${${v}}) - set(${v} NEVER) - endforeach() -endmacro() - -macro(__cmake_find_root_restore) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(${v} ${__save_${v}}) - unset(__save_${v}) - endforeach() -endmacro() - - -# macro to find programs on the host OS -macro(find_host_program) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_program(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() - -# macro to find packages on the host OS -macro(find_host_package) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_package(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() diff --git a/cmake/developer_package/IEDevScriptsConfig.cmake b/cmake/developer_package/IEDevScriptsConfig.cmake index e41118bb175..b558f30cd56 100644 --- a/cmake/developer_package/IEDevScriptsConfig.cmake +++ b/cmake/developer_package/IEDevScriptsConfig.cmake @@ -8,6 +8,12 @@ if(NOT DEFINED IEDevScripts_DIR) message(FATAL_ERROR "IEDevScripts_DIR is not defined") endif() +macro(ov_set_if_not_defined var value) + if(NOT DEFINED ${var}) + set(${var} ${value}) + endif() +endmacro() + set(OLD_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH "${IEDevScripts_DIR}") @@ -71,23 +77,8 @@ endfunction() # For cross-compilation # -# Search packages for the host system instead of packages for the target system -# in case of cross compilation these macros should be defined by the toolchain file -if(NOT COMMAND find_host_package) - macro(find_host_package) - find_package(${ARGN}) - endmacro() -endif() -if(NOT COMMAND find_host_library) - macro(find_host_library) - find_library(${ARGN}) - endmacro() -endif() -if(NOT COMMAND find_host_program) - macro(find_host_program) - find_program(${ARGN}) - endmacro() -endif() +include(cross_compile/find_commands) +include(cross_compile/native_compile) # # Common scripts @@ -166,12 +157,6 @@ else() endif() add_definitions(-DIE_BUILD_POSTFIX=\"${IE_BUILD_POSTFIX}\") -macro(ov_set_if_not_defined var value) - if(NOT DEFINED ${var}) - set(${var} ${value}) - endif() -endmacro() - ov_set_if_not_defined(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) ov_set_if_not_defined(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) ov_set_if_not_defined(CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ${OUTPUT_ROOT}/${BIN_FOLDER}) @@ -312,7 +297,6 @@ function(ov_mark_target_as_cc) endfunction() include(python_requirements) -include(native_compile) # Code style utils diff --git a/cmake/developer_package/cross_compile/find_commands.cmake b/cmake/developer_package/cross_compile/find_commands.cmake new file mode 100644 index 00000000000..7c6ca7fc55d --- /dev/null +++ b/cmake/developer_package/cross_compile/find_commands.cmake @@ -0,0 +1,160 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +# Search packages for the host system instead of packages for the target system +# in case of cross compilation these macros should be defined by the toolchain file + +if(CMAKE_CROSSCOMPILING AND NOT (OV_ARCH STREQUAL OV_HOST_ARCH AND + CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME)) + # don't look at directories which are part of PATH (with removed bin / sbin at the end) + # like /opt/homebrew on macOS where we cannot use system env path, because brew's + # dependencies will be found, but at the same time we need to find flatbufffers and + # other build system dependencies + # ov_set_if_not_defined(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF) + ov_set_if_not_defined(CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY OFF) + # it contains /usr and if we set this var to OFF, then CMAKE_FIND_ROOT_PATH is ignored + # ov_set_if_not_defined(CMAKE_FIND_USE_CMAKE_SYSTEM_PATH OFF) + if(LINUX) + # set root paths (overridden to /usr/lib//cmake) + # CMAKE_LIBRARY_ARCHITECTURE is defined automatically by cmake after trying the compilers + # ov_set_if_not_defined(CMAKE_FIND_ROOT_PATH "/usr") + endif() + + # controling CMAKE_FIND_ROOT_PATH usage + ov_set_if_not_defined(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + ov_set_if_not_defined(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + ov_set_if_not_defined(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + ov_set_if_not_defined(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +endif() + +macro(__ov_cmake_find_system_path_save_and_reset) + foreach(v + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH + ) + if(DEFINED ${v}) + set(__ov_save_${v} ${${v}}) + else() + set(__ov_save_${v} ON) + endif() + set(${v} ON) + endforeach() +endmacro() + +macro(__ov_cmake_find_system_path_restore) + foreach(v + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH + CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH + ) + set(${v} ${__ov_save_${v}}) + unset(__ov_save_${v}) + endforeach() +endmacro() + +macro(__ov_cmake_find_root_save_and_reset) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(__ov_save_${v} ${${v}}) + set(${v} NEVER) + endforeach() +endmacro() + +macro(__ov_cmake_find_root_restore) + foreach(v + CMAKE_FIND_ROOT_PATH_MODE_LIBRARY + CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + CMAKE_FIND_ROOT_PATH_MODE_PACKAGE + CMAKE_FIND_ROOT_PATH_MODE_PROGRAM + ) + set(${v} ${__ov_save_${v}}) + unset(__ov_save_${v}) + endforeach() +endmacro() + +macro(__ov_cmake_target_flags_save_and_reset) + foreach(v WIN32 UNIX LINUX APPLE ANDROID BSD) + set(__ov_target_save_${v} ${${v}}) + unset(${v}) + endforeach() + + if(CMAKE_HOST_WIN32) + set(WIN32 1) + elseif(CMAKE_HOST_APPLE) + set(APPLE 1) + set(UNIX 1) + elseif(CMAKE_HOST_LINUX) + set(LINUX 1) + set(UNIX 1) + elseif(CMAKE_HOST_UNIX) + set(UNIX 1) + elseif(CMAKE_HOST_BSD) + set(BSD 1) + endif() +endmacro() + +macro(__ov_cmake_target_flags_restore) + foreach(v WIN32 UNIX LINUX APPLE ANDROID BSD) + set(${v} ${__ov_target_save_${v}}) + unset(__ov_target_save_${v}) + endforeach() +endmacro() + +if(CMAKE_CROSSCOMPILING) + # macro to find programs on the host OS + if(NOT COMMAND find_host_package) + macro(find_host_package) + __ov_cmake_find_root_save_and_reset() + __ov_cmake_target_flags_save_and_reset() + __ov_cmake_find_system_path_save_and_reset() + find_package(${ARGN}) + __ov_cmake_find_system_path_restore() + __ov_cmake_target_flags_restore() + __ov_cmake_find_root_restore() + endmacro() + endif() + if(NOT COMMAND find_host_program) + macro(find_host_program) + __ov_cmake_find_root_save_and_reset() + __ov_cmake_target_flags_save_and_reset() + __ov_cmake_find_system_path_save_and_reset() + find_program(${ARGN}) + __ov_cmake_find_system_path_restore() + __ov_cmake_target_flags_restore() + __ov_cmake_find_root_restore() + endmacro() + endif() + if(NOT COMMAND find_host_library) + macro(find_host_library) + __ov_cmake_find_root_save_and_reset() + __ov_cmake_target_flags_save_and_reset() + __ov_cmake_find_system_path_save_and_reset() + find_library(${ARGN}) + __ov_cmake_find_system_path_restore() + __ov_cmake_target_flags_restore() + __ov_cmake_find_root_restore() + endmacro() + endif() +else() + if(NOT COMMAND find_host_package) + macro(find_host_package) + find_package(${ARGN}) + endmacro() + endif() + if(NOT COMMAND find_host_program) + macro(find_host_program) + find_program(${ARGN}) + endmacro() + endif() + if(NOT COMMAND find_host_library) + macro(find_host_library) + find_library(${ARGN}) + endmacro() + endif() +endif() diff --git a/cmake/developer_package/native_compile.cmake b/cmake/developer_package/cross_compile/native_compile.cmake similarity index 100% rename from cmake/developer_package/native_compile.cmake rename to cmake/developer_package/cross_compile/native_compile.cmake diff --git a/cmake/developer_package/ncc_naming_style/ncc_naming_style.cmake b/cmake/developer_package/ncc_naming_style/ncc_naming_style.cmake index 0a80c79eae6..c216502c148 100644 --- a/cmake/developer_package/ncc_naming_style/ncc_naming_style.cmake +++ b/cmake/developer_package/ncc_naming_style/ncc_naming_style.cmake @@ -58,16 +58,22 @@ endif() # Since we were able to find_package(Clang) in a separate process # let's try to find in current process if(ENABLE_NCC_STYLE) - if(WIN32) - set(CLANG_LIB_NAME libclang.dll) - find_host_program(CLANG NAMES ${CLANG_LIB_NAME} PATHS ENV PATH) - if(CLANG) - set(libclang_location ${CLANG}) - endif() - elseif(APPLE) + if(CMAKE_HOST_WIN32) + find_host_program(libclang_location NAMES libclang.dll + PATHS $ENV{PATH} + NO_CMAKE_FIND_ROOT_PATH) + elseif(CMAKE_HOST_APPLE) + set(_old_CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES}) + set(_old_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_PREFIXES "lib") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib") find_host_library(libclang_location NAMES clang PATHS /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib - DOC "Path to clang library") + DOC "Path to clang library" + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH) + set(CMAKE_FIND_LIBRARY_PREFIXES ${_old_CMAKE_FIND_LIBRARY_PREFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_old_CMAKE_FIND_LIBRARY_SUFFIXES}) else() find_host_package(Clang QUIET) endif() diff --git a/cmake/developer_package/packaging/rpm/rpm.cmake b/cmake/developer_package/packaging/rpm/rpm.cmake index f884341987f..ba669c4402a 100644 --- a/cmake/developer_package/packaging/rpm/rpm.cmake +++ b/cmake/developer_package/packaging/rpm/rpm.cmake @@ -98,9 +98,7 @@ macro(ov_rpm_specific_settings) # use rpmlint to check packages in post-build step set(CPACK_POST_BUILD_SCRIPTS "${IEDevScripts_DIR}/packaging/rpm/post_build.cmake") # enable for debug cpack run - if(NOT DEFINED CPACK_RPM_PACKAGE_DEBUG) - set(CPACK_RPM_PACKAGE_DEBUG OFF) - endif() + ov_set_if_not_defined(CPACK_RPM_PACKAGE_DEBUG OFF) # naming convention for rpm package files set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake index ced8d519da3..29f23e713e1 100644 --- a/cmake/developer_package/target_flags.cmake +++ b/cmake/developer_package/target_flags.cmake @@ -17,59 +17,56 @@ if(WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") - set(host_arch_flag X86_64) + set(OV_HOST_ARCH X86_64) elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") - set(host_arch_flag X86) + set(OV_HOST_ARCH X86) elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*|ARM64.*)") - set(host_arch_flag AARCH64) + set(OV_HOST_ARCH AARCH64) elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") - set(host_arch_flag ARM) + set(OV_HOST_ARCH ARM) elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^riscv64$") - set(host_arch_flag RISCV64) + set(OV_HOST_ARCH RISCV64) endif() -set(HOST_${host_arch_flag} ON) - macro(_ov_detect_arch_by_processor_type) if(CMAKE_OSX_ARCHITECTURES AND APPLE) if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64") - set(AARCH64 ON) + set(OV_ARCH AARCH64) elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64") - set(X86_64 ON) + set(OV_ARCH X86_64) elseif(CMAKE_OSX_ARCHITECTURES MATCHES ".*x86_64.*" AND CMAKE_OSX_ARCHITECTURES MATCHES ".*arm64.*") - set(UNIVERSAL2 ON) + set(OV_ARCH UNIVERSAL2) else() message(FATAL_ERROR "Unsupported value: CMAKE_OSX_ARCHITECTURES = ${CMAKE_OSX_ARCHITECTURES}") endif() elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") - set(X86_64 ON) + set(OV_ARCH X86_64) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*|wasm") - set(X86 ON) + set(OV_ARCH X86) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64.*|aarch64.*|AARCH64.*|ARM64.*|armv8)") - set(AARCH64 ON) + set(OV_ARCH AARCH64) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") - set(ARM ON) + set(OV_ARCH ARM) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv64$") - set(RISCV64 ON) + set(OV_ARCH RISCV64) endif() endmacro() macro(_ov_process_msvc_generator_platform) # if cmake -A is passed if(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") - set(AARCH64 ON) + set(OV_ARCH AARCH64) elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM") - set(ARM ON) + set(OV_ARCH ARM) elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64") - set(X86_64 ON) + set(OV_ARCH X86_64) elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32") - set(X86 ON) + set(OV_ARCH X86) else() _ov_detect_arch_by_processor_type() endif() endmacro() -# TODO: why OpenCV is found by cmake if(MSVC64 OR MINGW64) _ov_process_msvc_generator_platform() elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING)) @@ -78,6 +75,9 @@ else() _ov_detect_arch_by_processor_type() endif() +set(HOST_${OV_HOST_ARCH} ON) +set(${OV_ARCH} ON) + if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") set(EMSCRIPTEN ON) endif() @@ -115,7 +115,7 @@ get_property(OV_GENERATOR_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG function(ov_glibc_version) # cmake needs to look at glibc version only when we build for Linux on Linux - if(CMAKE_HOST_LINUX AND LINUX) + if(LINUX) function(ov_get_definition definition var) execute_process(COMMAND echo "#include " COMMAND "${CMAKE_CXX_COMPILER}" -xc - -E -dM diff --git a/cmake/toolchains/ia32.linux.toolchain.cmake b/cmake/toolchains/ia32.linux.toolchain.cmake index de659555f20..61c759ca4f6 100644 --- a/cmake/toolchains/ia32.linux.toolchain.cmake +++ b/cmake/toolchains/ia32.linux.toolchain.cmake @@ -4,7 +4,7 @@ set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR i386) - +set(CMAKE_STRIP i686-linux-gnu-strip) set(PKG_CONFIG_EXECUTABLE i686-linux-gnu-pkg-config CACHE PATH "Path to 32-bits pkg-config") set(CMAKE_CXX_FLAGS_INIT "-m32") diff --git a/cmake/toolchains/mingw-w64.toolchain.cmake b/cmake/toolchains/mingw-w64.toolchain.cmake index 72aba14bc84..c2ea7c4a0b6 100644 --- a/cmake/toolchains/mingw-w64.toolchain.cmake +++ b/cmake/toolchains/mingw-w64.toolchain.cmake @@ -14,82 +14,6 @@ set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR x86_64) -set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix) -set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++-posix) +set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) set(PKG_CONFIG_EXECUTABLE x86_64-w64-mingw32-pkg-config CACHE PATH "Path to Windows x86_64 pkg-config") - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -macro(__cmake_find_root_save_and_reset) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(__save_${v} ${${v}}) - set(${v} NEVER) - endforeach() -endmacro() - -macro(__cmake_find_root_restore) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(${v} ${__save_${v}}) - unset(__save_${v}) - endforeach() -endmacro() - - -# macro to find programs on the host OS -macro(find_host_program) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - SET(APPLE) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - SET(WIN32) - elseif(CMAKE_HOST_UNIX) - SET(UNIX 1) - SET(WIN32) - SET(APPLE) - endif() - find_program(${ARGN}) - SET(WIN32 1) - SET(APPLE) - SET(UNIX) - __cmake_find_root_restore() -endmacro() - -# macro to find packages on the host OS -macro(find_host_package) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - SET(APPLE) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(WIN32) - SET(UNIX) - elseif(CMAKE_HOST_UNIX) - SET(UNIX 1) - SET(WIN32) - SET(APPLE) - endif() - find_package(${ARGN}) - SET(WIN32 1) - SET(APPLE) - SET(UNIX) - __cmake_find_root_restore() -endmacro() diff --git a/cmake/toolchains/riscv64-gnu.toolchain.cmake b/cmake/toolchains/riscv64-gnu.toolchain.cmake index eca47d1b950..fd0c7a35c22 100644 --- a/cmake/toolchains/riscv64-gnu.toolchain.cmake +++ b/cmake/toolchains/riscv64-gnu.toolchain.cmake @@ -35,66 +35,3 @@ set(CMAKE_MODULE_LINKER_FLAGS_INIT "-L${CMAKE_SYSROOT}/lib") set(CMAKE_C_STANDARD_LIBRARIES_INIT "-latomic" CACHE STRING "" FORCE) set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "-latomic" CACHE STRING "" FORCE) - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -macro(__cmake_find_root_save_and_reset) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(__save_${v} ${${v}}) - set(${v} NEVER) - endforeach() -endmacro() - -macro(__cmake_find_root_restore) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(${v} ${__save_${v}}) - unset(__save_${v}) - endforeach() -endmacro() - -# macro to find programs on the host OS -macro(find_host_program) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_program(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() - -# macro to find packages on the host OS -macro(find_host_package) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_package(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() diff --git a/cmake/toolchains/x86_64.linux.toolchain.cmake b/cmake/toolchains/x86_64.linux.toolchain.cmake index 7ce73bc1e71..0062d8387ff 100644 --- a/cmake/toolchains/x86_64.linux.toolchain.cmake +++ b/cmake/toolchains/x86_64.linux.toolchain.cmake @@ -2,74 +2,13 @@ # SPDX-License-Identifier: Apache-2.0 # +# Install compiler on debian using: +# apt-get install -y gcc-x86-64-linux-gnu g++-x86-64-linux-gnu binutils-x86-64-linux-gnu pkg-config-x86-64-linux-gnu + set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR amd64) set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++) set(CMAKE_STRIP x86_64-linux-gnu-strip) -set(PKG_CONFIG_EXECUTABLE "NOT-FOUND" CACHE PATH "Path to amd64 pkg-config") - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - -macro(__cmake_find_root_save_and_reset) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(__save_${v} ${${v}}) - set(${v} NEVER) - endforeach() -endmacro() - -macro(__cmake_find_root_restore) - foreach(v - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM - ) - set(${v} ${__save_${v}}) - unset(__save_${v}) - endforeach() -endmacro() - - -# macro to find programs on the host OS -macro(find_host_program) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_program(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() - -# macro to find packages on the host OS -macro(find_host_package) - __cmake_find_root_save_and_reset() - if(CMAKE_HOST_WIN32) - SET(WIN32 1) - SET(UNIX) - elseif(CMAKE_HOST_APPLE) - SET(APPLE 1) - SET(UNIX) - endif() - find_package(${ARGN}) - SET(WIN32) - SET(APPLE) - SET(UNIX 1) - __cmake_find_root_restore() -endmacro() +set(PKG_CONFIG_EXECUTABLE x86_64-linux-gnu-pkg-config CACHE PATH "Path to amd64 pkg-config") diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt index 8ac8a6429ea..056d578070b 100644 --- a/src/bindings/python/CMakeLists.txt +++ b/src/bindings/python/CMakeLists.txt @@ -43,6 +43,12 @@ function(ov_check_python_build_conditions) endif() if(CMAKE_CROSSCOMPILING) # since this version pybind11 has PYBIND11_PYTHONLIBS_OVERWRITE option + # to properly cross-compile, users need to set: + # -DPYTHON_EXECUTABLE= + # -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libc-2.31.so + # -DPYTHON_INCLUDE_DIR= + # -DPYBIND11_PYTHONLIBS_OVERWRITE=OFF + # -DPYTHON_MODULE_EXTENSION=$(aarch64-linux-gnu-python3-config --extension-suffix) set(pybind11_min_version 2.10.1) endif() @@ -51,12 +57,15 @@ function(ov_check_python_build_conditions) if(EXISTS ${pybind11_tools_dir}) list(APPEND CMAKE_MODULE_PATH ${pybind11_tools_dir}) else() - find_package(pybind11 ${pybind11_min_version} QUIET) - list(APPEND CMAKE_MODULE_PATH "${pybind11_DIR}") + find_host_package(pybind11 ${pybind11_min_version} QUIET) + if(pybind11_FOUND) + list(APPEND CMAKE_MODULE_PATH "${pybind11_DIR}") + endif() endif() # use libraries with the same version as python itself set(PYBIND11_PYTHON_VERSION ${PYTHON_VERSION_STRING}) - find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} EXACT ${find_package_mode}) + find_host_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} EXACT + ${find_package_mode}) set(PYTHONLIBSNEW_FOUND ${PYTHONLIBS_FOUND} PARENT_SCOPE) endfunction() # try to find python libraries @@ -64,7 +73,7 @@ function(ov_check_python_build_conditions) if(PYTHONLIBSNEW_FOUND) # clear Python_ADDITIONAL_VERSIONS to find only python library matching PYTHON_EXECUTABLE unset(Python_ADDITIONAL_VERSIONS CACHE) - find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT ${find_package_mode}) + find_host_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT ${find_package_mode}) endif() if(NOT PYTHONLIBS_FOUND) message(${message_mode} "Python development libraries are not found. OpenVINO Python API will be turned off (ENABLE_PYTHON is OFF)") diff --git a/src/cmake/install_tbb.cmake b/src/cmake/install_tbb.cmake index fea3737cd75..1379b46c73b 100644 --- a/src/cmake/install_tbb.cmake +++ b/src/cmake/install_tbb.cmake @@ -23,7 +23,7 @@ function(_ov_detect_dynamic_tbbbind_2_5 var) find_file(_ov_tbbbind_2_5 NAMES "${CMAKE_SHARED_LIBRARY_PREFIX}tbbbind_2_5${CMAKE_SHARED_LIBRARY_SUFFIX}" HINTS "${_tbb_libs_dir}" - "Path to TBBBind 2.5+ library" + DOC "Path to TBBBind 2.5+ library" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) diff --git a/src/common/itt/cmake/ITTConfig.cmake b/src/common/itt/cmake/ITTConfig.cmake index 659fdc8b86a..251900ce60e 100644 --- a/src/common/itt/cmake/ITTConfig.cmake +++ b/src/common/itt/cmake/ITTConfig.cmake @@ -26,11 +26,10 @@ if(DEFINED INTEL_VTUNE_DIR) message(STATUS "INTEL_VTUNE_DIR = ${INTEL_VTUNE_DIR}") find_path(ITT_INCLUDE_DIR ittnotify.h - PATHS "${INTEL_VTUNE_DIR}/include/") + PATHS "${INTEL_VTUNE_DIR}/include/") - find_library(ITT_LIB - "libittnotify${CMAKE_STATIC_LIBRARY_SUFFIX}" - PATHS ${INTEL_VTUNE_DIR}/lib64) + find_library(ITT_LIB "${CMAKE_STATIC_LIBRARY_PREFIX}ittnotify${CMAKE_STATIC_LIBRARY_SUFFIX}" + PATHS "${INTEL_VTUNE_DIR}/lib64") set(Located_ITT_LIBS ${ITT_LIB}) set(Located_ITT_INCLUDE_DIRS ${ITT_INCLUDE_DIR}) diff --git a/src/plugins/intel_gna/CMakeLists.txt b/src/plugins/intel_gna/CMakeLists.txt index 08b075e66ca..8095a365dc3 100644 --- a/src/plugins/intel_gna/CMakeLists.txt +++ b/src/plugins/intel_gna/CMakeLists.txt @@ -35,7 +35,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") ie_add_compiler_flags(/wd4297) endif() - file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) @@ -44,9 +43,10 @@ file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) find_package(libGNA REQUIRED - NO_MODULE + CONFIG PATHS "${CMAKE_CURRENT_SOURCE_DIR}/cmake" - NO_DEFAULT_PATH) + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH) # # Shared plugin library diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 95d80a6fbd4..a4343cfac2d 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -172,7 +172,7 @@ endif() # if(ENABLE_SAMPLES OR ENABLE_TESTS) - find_package(ZLIB QUIET NO_MODULE) + find_package(ZLIB QUIET CONFIG) if(ZLIB_FOUND) # need to make it global to use outside of the current sub-directory set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_GLOBAL ON) @@ -466,7 +466,7 @@ endif() if(ENABLE_OV_TF_LITE_FRONTEND) if(ENABLE_SYSTEM_FLATBUFFERS) - if(CMAKE_HOST_LINUX AND EMSCRIPTEN) + if(CMAKE_HOST_LINUX) set(_old_flat_CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE}) # without this WA cmake does not search in subfolder # see https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure