From cfa37ae5f3db57d2ff9dd3313cc6dca47752cb9a Mon Sep 17 00:00:00 2001 From: Aaron Chan Date: Mon, 18 May 2026 16:03:25 +0800 Subject: [PATCH] Add find package gtest and yaml-cpp package - Check gtest, yaml-cpp package installed in system-wide distribution - Package gtest, yaml-cpp could not be found will rollback to submodules Signed-off-by: Aaron Chan --- third_party/CMakeLists.txt | 7 ++-- third_party/cmake/googletest.cmake | 52 ++++++++++++++++++++++++++++++ third_party/cmake/yaml-cpp.cmake | 19 +++++++++++ 3 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 third_party/cmake/googletest.cmake create mode 100644 third_party/cmake/yaml-cpp.cmake diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 0f7c3ad..bf37e9b 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -14,9 +14,6 @@ if (ENABLE_NPU_PERFETTO_BUILD) include(cmake/perfetto.cmake) endif() -set(INSTALL_GTEST OFF) -add_subdirectory(googletest EXCLUDE_FROM_ALL) +include(cmake/googletest.cmake) +include(cmake/yaml-cpp.cmake) -set(YAML_CPP_INSTALL OFF) -set(BUILD_SHARED_LIBS OFF) -add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL) diff --git a/third_party/cmake/googletest.cmake b/third_party/cmake/googletest.cmake new file mode 100644 index 0000000..14aad16 --- /dev/null +++ b/third_party/cmake/googletest.cmake @@ -0,0 +1,52 @@ +# +# Copyright (C) 2022-2024 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +# Try to find system-installed GoogleTest package +# Package names vary by distribution: +# - Fedora/RHEL/openSUSE Tumbleweed: gtest-devel (provides gmock-devel as well) +# - Ubuntu/Debian: libgtest-dev +find_package(GTest QUIET) + +if(NOT GTest_FOUND) + message(STATUS "System GoogleTest not found, building from submodule") + set(INSTALL_GTEST OFF) + add_subdirectory(googletest EXCLUDE_FROM_ALL) +else() + message(STATUS " Found gtest, version ${GTest_VERSION}") + # Display include directories and library paths for each target + if(TARGET GTest::gtest) + get_target_property(GTEST_INCLUDE_DIRS GTest::gtest INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(GTEST_LOCATION GTest::gtest LOCATION) + message(STATUS "GTest_INCLUDE_DIRS : ${GTEST_INCLUDE_DIRS}") + message(STATUS "GTest_LIBRARIES : ${GTEST_LOCATION}") + message(STATUS "GTest_VERSION : ${GTest_VERSION}") + endif() + + if(TARGET GTest::gmock) + get_target_property(GMOCK_INCLUDE_DIRS GTest::gmock INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(GMOCK_LOCATION GTest::gmock LOCATION) + message(STATUS "GMock_INCLUDE_DIRS : ${GMOCK_INCLUDE_DIRS}") + message(STATUS "GMock_LIBRARIES : ${GMOCK_LOCATION}") + message(STATUS "GMock_VERSION : ${GTest_VERSION}") + endif() + + # Create aliases for consistency with submodule build + # The submodule provides 'gtest' and 'gmock' targets + # System package provides 'GTest::gtest', 'GTest::gmock', etc. + if(NOT TARGET gtest) + add_library(gtest ALIAS GTest::gtest) + endif() + if(NOT TARGET gmock) + add_library(gmock ALIAS GTest::gmock) + endif() + if(NOT TARGET gtest_main AND TARGET GTest::gtest_main) + add_library(gtest_main ALIAS GTest::gtest_main) + endif() + if(NOT TARGET gmock_main AND TARGET GTest::gmock_main) + add_library(gmock_main ALIAS GTest::gmock_main) + endif() +endif() + diff --git a/third_party/cmake/yaml-cpp.cmake b/third_party/cmake/yaml-cpp.cmake new file mode 100644 index 0000000..c3a00c2 --- /dev/null +++ b/third_party/cmake/yaml-cpp.cmake @@ -0,0 +1,19 @@ +# +# Copyright (C) 2022-2024 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +# Try to find system-installed yaml-cpp package +# Package names vary by distribution: +# - Fedora/RHEL/openSUSE Tumbleweed: yaml-cpp-devel +# - Ubuntu/Debian: libyaml-cpp-dev +find_package(yaml-cpp QUIET) + +if(NOT yaml-cpp_FOUND) + message(STATUS "System yaml-cpp not found, building from submodule") + set(YAML_CPP_INSTALL OFF) + set(BUILD_SHARED_LIBS OFF) + add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL) +endif() +