From 9814a1b78827ed73e1f2fe454465a6c45d3a2d72 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Fri, 18 Oct 2024 04:52:57 +0000 Subject: [PATCH] cmake: unbundle half library (#1393) --- CMakeLists.txt | 3 ++- cmake/Findhalf.cmake | 28 ++++++++++++++++++++++++++++ externals/CMakeLists.txt | 7 +++++-- 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 cmake/Findhalf.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 27b11aa2..9cfc0d8e 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,7 @@ find_package(Boost 1.84.0 CONFIG) find_package(FFmpeg 5.1.2 MODULE) find_package(fmt 10.2.0 CONFIG) find_package(glslang 14.2.0 CONFIG) +find_package(half 1.12.0 MODULE) find_package(magic_enum 0.9.6 CONFIG) find_package(RenderDoc 1.6.0 MODULE) find_package(SDL3 3.1.2 CONFIG) @@ -779,7 +780,7 @@ endif() create_target_directory_groups(shadps4) -target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui gcn half) +target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui gcn half::half) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::SPIRV glslang::glslang SDL3::SDL3 pugixml::pugixml) target_compile_definitions(shadps4 PRIVATE IMGUI_USER_CONFIG="imgui/imgui_config.h") diff --git a/cmake/Findhalf.cmake b/cmake/Findhalf.cmake new file mode 100644 index 00000000..f95a791d --- /dev/null +++ b/cmake/Findhalf.cmake @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +find_path(half_INCLUDE_DIR NAMES half.hpp PATH_SUFFIXES half) + +if (half_INCLUDE_DIR) + file(STRINGS "${half_INCLUDE_DIR}/half.hpp" _ver_line + REGEX "^// Version [0-9.]+$" + LIMIT_COUNT 1 + ) + string(REGEX MATCH "[0-9.]+" half_VERSION "${_ver_line}") + unset(_ver_line) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(half + REQUIRED_VARS half_INCLUDE_DIR + VERSION_VAR half_VERSION +) + +if (half_FOUND AND NOT TARGET half::half) + add_library(half::half INTERFACE IMPORTED) + set_target_properties(half::half PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${half_INCLUDE_DIR}" + ) +endif() + +mark_as_advanced(half_INCLUDE_DIR) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 9cae3438..80f49f52 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -142,8 +142,11 @@ if (WIN32) endif() # half -add_library(half INTERFACE) -target_include_directories(half INTERFACE half/include) +if (NOT TARGET half::half) + add_library(half INTERFACE) + target_include_directories(half INTERFACE half/include) + add_library(half::half ALIAS half) +endif() if (APPLE) # date