diff options
| author | crueter <crueter@eden-emu.dev> | 2026-06-16 16:15:49 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-06-16 16:15:49 +0200 |
| commit | 02eaf3c5a7ff24be27ebc9674576d956e7c68da6 (patch) | |
| tree | 783674dc349a6d1ff41879d4542bff9c65210e5e /CMakeModules/find | |
| parent | c8c61a12c39a0e2df7c38b21a035b0c03759dc1e (diff) | |
[cmake, docs] Reorganize CMakeModules directory and add GentooCross toolchain (#4088)
Lightly inspired by my earlier toolchain and writeup from the PowerPC
PR.
Closes #3793
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4088
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Diffstat (limited to 'CMakeModules/find')
| -rw-r--r-- | CMakeModules/find/FindDiscordRPC.cmake | 33 | ||||
| -rw-r--r-- | CMakeModules/find/FindFFmpeg.cmake | 198 | ||||
| -rw-r--r-- | CMakeModules/find/FindLLVM.cmake | 30 | ||||
| -rw-r--r-- | CMakeModules/find/FindOpus.cmake | 22 | ||||
| -rw-r--r-- | CMakeModules/find/FindRenderDoc.cmake | 22 | ||||
| -rw-r--r-- | CMakeModules/find/FindSimpleIni.cmake | 24 | ||||
| -rw-r--r-- | CMakeModules/find/Findenet.cmake | 23 | ||||
| -rw-r--r-- | CMakeModules/find/Findgamemode.cmake | 18 | ||||
| -rw-r--r-- | CMakeModules/find/Findhttplib.cmake | 34 | ||||
| -rw-r--r-- | CMakeModules/find/Findlibiw.cmake | 29 | ||||
| -rw-r--r-- | CMakeModules/find/Findlibusb.cmake | 23 | ||||
| -rw-r--r-- | CMakeModules/find/Findlz4.cmake | 34 | ||||
| -rw-r--r-- | CMakeModules/find/Findstb.cmake | 34 | ||||
| -rw-r--r-- | CMakeModules/find/Findzstd.cmake | 41 |
14 files changed, 565 insertions, 0 deletions
diff --git a/CMakeModules/find/FindDiscordRPC.cmake b/CMakeModules/find/FindDiscordRPC.cmake new file mode 100644 index 0000000000..a498cb0f26 --- /dev/null +++ b/CMakeModules/find/FindDiscordRPC.cmake @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_package(DiscordRPC CONFIG QUIET) + +if (NOT DiscordRPC_FOUND) + find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h) + find_library(DiscordRPC_LIBRARY discord-rpc) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(DiscordRPC + REQUIRED_VARS + DiscordRPC_LIBRARY + DiscordRPC_INCLUDE_DIR + ) + + if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc) + add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED) + set_target_properties(DiscordRPC::discord-rpc PROPERTIES + IMPORTED_LOCATION "${DiscordRPC_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}" + ) + endif() + + mark_as_advanced( + DiscordRPC_INCLUDE_DIR + DiscordRPC_LIBRARY + ) +endif() diff --git a/CMakeModules/find/FindFFmpeg.cmake b/CMakeModules/find/FindFFmpeg.cmake new file mode 100644 index 0000000000..11dd08acd5 --- /dev/null +++ b/CMakeModules/find/FindFFmpeg.cmake @@ -0,0 +1,198 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2019 Citra Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +# FindFFmpeg +# ---------- +# +# Find the native FFmpeg includes and libraries +# +# This module defines the following variables: +# +# FFmpeg_INCLUDE_<component>: where to find <component>.h +# FFmpeg_LIBRARY_<component>: where to find the <component> library +# FFmpeg_INCLUDE_DIR: aggregate all the include paths +# FFmpeg_LIBRARIES: aggregate all the paths to the libraries +# FFmpeg_FOUND: True if all components have been found +# +# This module defines the following targets, which are preferred over variables: +# +# FFmpeg::<component>: Target to use <component> directly, with include path, +# library and dependencies set up. If you are using a static build, you are +# responsible for adding any external dependencies (such as zlib, bzlib...). +# +# <component> can be one of: +# avcodec +# avdevice +# avfilter +# avformat +# avutil +# postproc +# swresample +# swscale +# + +set(_FFmpeg_ALL_COMPONENTS + avcodec + avdevice + avfilter + avformat + avutil + postproc + swresample + swscale +) + +set(_FFmpeg_DEPS_avcodec avutil) +set(_FFmpeg_DEPS_avdevice avcodec avformat avutil) +set(_FFmpeg_DEPS_avfilter avutil) +set(_FFmpeg_DEPS_avformat avcodec avutil) +set(_FFmpeg_DEPS_postproc avutil) +set(_FFmpeg_DEPS_swresample avutil) +set(_FFmpeg_DEPS_swscale avutil) + +function(find_ffmpeg LIBNAME) + if(DEFINED ENV{FFMPEG_DIR}) + set(FFMPEG_DIR $ENV{FFMPEG_DIR}) + endif() + + if(FFMPEG_DIR) + list(APPEND INCLUDE_PATHS + ${FFMPEG_DIR} + ${FFMPEG_DIR}/ffmpeg + ${FFMPEG_DIR}/lib${LIBNAME} + ${FFMPEG_DIR}/include/lib${LIBNAME} + ${FFMPEG_DIR}/include/ffmpeg + ${FFMPEG_DIR}/include + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH + ) + list(APPEND LIB_PATHS + ${FFMPEG_DIR} + ${FFMPEG_DIR}/lib + ${FFMPEG_DIR}/lib${LIBNAME} + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH + ) + else() + list(APPEND INCLUDE_PATHS + ${CMAKE_SYSROOT}/usr/local/include/ffmpeg + ${CMAKE_SYSROOT}/usr/local/include/lib${LIBNAME} + ${CMAKE_SYSROOT}/usr/include/ffmpeg + ${CMAKE_SYSROOT}/usr/include/lib${LIBNAME} + ${CMAKE_SYSROOT}/usr/include/ffmpeg/lib${LIBNAME} + ) + + list(APPEND LIB_PATHS + ${CMAKE_SYSROOT}/usr/local/lib + ${CMAKE_SYSROOT}/usr/lib + ) + endif() + + find_path(FFmpeg_INCLUDE_${LIBNAME} lib${LIBNAME}/${LIBNAME}.h + HINTS ${INCLUDE_PATHS} + ) + + find_library(FFmpeg_LIBRARY_${LIBNAME} ${LIBNAME} + HINTS ${LIB_PATHS} + ) + + if(NOT FFMPEG_DIR AND (NOT FFmpeg_LIBRARY_${LIBNAME} OR NOT FFmpeg_INCLUDE_${LIBNAME})) + # Didn't find it in the usual paths, try pkg-config + find_package(PkgConfig QUIET) + pkg_check_modules(FFmpeg_PKGCONFIG_${LIBNAME} QUIET lib${LIBNAME}) + + find_path(FFmpeg_INCLUDE_${LIBNAME} lib${LIBNAME}/${LIBNAME}.h + ${FFmpeg_PKGCONFIG_${LIBNAME}_INCLUDE_DIRS} + ) + + find_library(FFmpeg_LIBRARY_${LIBNAME} ${LIBNAME} + ${FFmpeg_PKGCONFIG_${LIBNAME}_LIBRARY_DIRS} + ) + endif() + + if(FFmpeg_INCLUDE_${LIBNAME} AND FFmpeg_LIBRARY_${LIBNAME}) + set(FFmpeg_INCLUDE_${LIBNAME} "${FFmpeg_INCLUDE_${LIBNAME}}" PARENT_SCOPE) + set(FFmpeg_LIBRARY_${LIBNAME} "${FFmpeg_LIBRARY_${LIBNAME}}" PARENT_SCOPE) + + # Extract FFmpeg version from version.h + foreach(v MAJOR MINOR MICRO) + set(FFmpeg_${LIBNAME}_VERSION_${v} 0) + endforeach() + string(TOUPPER ${LIBNAME} LIBNAME_UPPER) + file(STRINGS "${FFmpeg_INCLUDE_${LIBNAME}}/lib${LIBNAME}/version.h" _FFmpeg_VERSION_H_CONTENTS REGEX "#define LIB${LIBNAME_UPPER}_VERSION_(MAJOR|MINOR|MICRO) ") + set(_FFmpeg_VERSION_REGEX "([0-9]+)") + foreach(v MAJOR MINOR MICRO) + if("${_FFmpeg_VERSION_H_CONTENTS}" MATCHES "#define LIB${LIBNAME_UPPER}_VERSION_${v}[\\t ]+${_FFmpeg_VERSION_REGEX}") + set(FFmpeg_${LIBNAME}_VERSION_${v} "${CMAKE_MATCH_1}") + endif() + endforeach() + set(FFmpeg_${LIBNAME}_VERSION "${FFmpeg_${LIBNAME}_VERSION_MAJOR}.${FFmpeg_${LIBNAME}_VERSION_MINOR}.${FFmpeg_${LIBNAME}_VERSION_MICRO}") + set(FFmpeg_${c}_VERSION "${FFmpeg_${LIBNAME}_VERSION}" PARENT_SCOPE) + unset(_FFmpeg_VERSION_REGEX) + unset(_FFmpeg_VERSION_H_CONTENTS) + + set(FFmpeg_${c}_FOUND TRUE PARENT_SCOPE) + if(NOT FFmpeg_FIND_QUIETLY) + message("-- Found ${LIBNAME}: ${FFmpeg_INCLUDE_${LIBNAME}} ${FFmpeg_LIBRARY_${LIBNAME}} (version: ${FFmpeg_${LIBNAME}_VERSION})") + endif() + endif() +endfunction() + +foreach(c ${_FFmpeg_ALL_COMPONENTS}) + find_ffmpeg(${c}) +endforeach() + +foreach(c ${_FFmpeg_ALL_COMPONENTS}) + if(FFmpeg_${c}_FOUND) + list(APPEND FFmpeg_INCLUDE_DIR ${FFmpeg_INCLUDE_${c}}) + list(APPEND FFmpeg_LIBRARIES ${FFmpeg_LIBRARY_${c}}) + + add_library(FFmpeg::${c} IMPORTED UNKNOWN) + set_target_properties(FFmpeg::${c} PROPERTIES + IMPORTED_LOCATION ${FFmpeg_LIBRARY_${c}} + INTERFACE_INCLUDE_DIRECTORIES ${FFmpeg_INCLUDE_${c}} + ) + if(_FFmpeg_DEPS_${c}) + set(deps) + foreach(dep ${_FFmpeg_DEPS_${c}}) + list(APPEND deps FFmpeg::${dep}) + endforeach() + + set_target_properties(FFmpeg::${c} PROPERTIES + INTERFACE_LINK_LIBRARIES "${deps}" + ) + unset(deps) + endif() + endif() +endforeach() + +if(FFmpeg_INCLUDE_DIR) + list(REMOVE_DUPLICATES FFmpeg_INCLUDE_DIR) +endif() + +foreach(c ${FFmpeg_FIND_COMPONENTS}) + list(APPEND _FFmpeg_REQUIRED_VARS FFmpeg_INCLUDE_${c} FFmpeg_LIBRARY_${c}) +endforeach() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FFmpeg + REQUIRED_VARS ${_FFmpeg_REQUIRED_VARS} + HANDLE_COMPONENTS +) + +foreach(c ${_FFmpeg_ALL_COMPONENTS}) + unset(_FFmpeg_DEPS_${c}) +endforeach() +unset(_FFmpeg_ALL_COMPONENTS) +unset(_FFmpeg_REQUIRED_VARS) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FFmpeg + REQUIRED_VARS + FFmpeg_LIBRARIES + FFmpeg_INCLUDE_DIR + HANDLE_COMPONENTS +) diff --git a/CMakeModules/find/FindLLVM.cmake b/CMakeModules/find/FindLLVM.cmake new file mode 100644 index 0000000000..f169f134d5 --- /dev/null +++ b/CMakeModules/find/FindLLVM.cmake @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_package(LLVM QUIET COMPONENTS CONFIG) +if (LLVM_FOUND) + separate_arguments(LLVM_DEFINITIONS) + if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS) + set(LLVM_Demangle_FOUND TRUE) + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE) + +# Demangle only for Windows targets +if (WIN32 AND LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle) + add_library(LLVM::Demangle INTERFACE IMPORTED) + target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS}) + target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) + # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593 + # but use ugly hack because llvm_config doesn't support interface library + add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL ${CMAKE_SOURCE_DIR}/src/yuzu/main.cpp) + llvm_config(_dummy_lib USE_SHARED demangle) + get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES) + target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) +endif() diff --git a/CMakeModules/find/FindOpus.cmake b/CMakeModules/find/FindOpus.cmake new file mode 100644 index 0000000000..a4247f06db --- /dev/null +++ b/CMakeModules/find/FindOpus.cmake @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(OPUS QUIET IMPORTED_TARGET opus) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Opus + REQUIRED_VARS OPUS_LINK_LIBRARIES + VERSION_VAR OPUS_VERSION +) + +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::OPUS) +endif() + +if (Opus_FOUND AND NOT TARGET Opus::opus) + add_library(Opus::opus ALIAS PkgConfig::OPUS) +endif() diff --git a/CMakeModules/find/FindRenderDoc.cmake b/CMakeModules/find/FindRenderDoc.cmake new file mode 100644 index 0000000000..8ac4271a36 --- /dev/null +++ b/CMakeModules/find/FindRenderDoc.cmake @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_path(RenderDoc_INCLUDE_DIR renderdoc_app.h) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(RenderDoc + REQUIRED_VARS RenderDoc_INCLUDE_DIR +) + +if (RenderDoc_FOUND AND NOT TARGET RenderDoc::API) + add_library(RenderDoc::API INTERFACE IMPORTED) + set_target_properties(RenderDoc::API PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${RenderDoc_INCLUDE_DIR}" + ) +endif() + +mark_as_advanced(RenderDoc_INCLUDE_DIR) diff --git a/CMakeModules/find/FindSimpleIni.cmake b/CMakeModules/find/FindSimpleIni.cmake new file mode 100644 index 0000000000..1d2379fc82 --- /dev/null +++ b/CMakeModules/find/FindSimpleIni.cmake @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +include(FindPackageHandleStandardArgs) + +find_package(SimpleIni QUIET CONFIG) +if (SimpleIni_CONSIDERED_CONFIGS) + find_package_handle_standard_args(SimpleIni CONFIG_MODE) +else() + find_package(PkgConfig QUIET) + pkg_search_module(SIMPLEINI QUIET IMPORTED_TARGET simpleini) + find_package_handle_standard_args(SimpleIni + REQUIRED_VARS SIMPLEINI_INCLUDEDIR + VERSION_VAR SIMPLEINI_VERSION + ) +endif() + +if (SimpleIni_FOUND AND NOT TARGET SimpleIni::SimpleIni) + add_library(SimpleIni::SimpleIni ALIAS PkgConfig::SIMPLEINI) +endif() diff --git a/CMakeModules/find/Findenet.cmake b/CMakeModules/find/Findenet.cmake new file mode 100644 index 0000000000..2a2d1d807d --- /dev/null +++ b/CMakeModules/find/Findenet.cmake @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(ENET QUIET IMPORTED_TARGET libenet) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(enet + REQUIRED_VARS ENET_LINK_LIBRARIES + VERSION_VAR ENET_VERSION +) + +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::ENET) +endif() + +if (enet_FOUND AND NOT TARGET enet::enet) + add_library(enet::enet ALIAS PkgConfig::ENET) +endif() diff --git a/CMakeModules/find/Findgamemode.cmake b/CMakeModules/find/Findgamemode.cmake new file mode 100644 index 0000000000..3ec966c82d --- /dev/null +++ b/CMakeModules/find/Findgamemode.cmake @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(GAMEMODE QUIET IMPORTED_TARGET gamemode) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(gamemode + REQUIRED_VARS GAMEMODE_INCLUDEDIR + VERSION_VAR GAMEMODE_VERSION +) + +if (gamemode_FOUND AND NOT TARGET gamemode::headers) + add_library(gamemode::headers ALIAS PkgConfig::GAMEMODE) +endif() diff --git a/CMakeModules/find/Findhttplib.cmake b/CMakeModules/find/Findhttplib.cmake new file mode 100644 index 0000000000..e92a9be63f --- /dev/null +++ b/CMakeModules/find/Findhttplib.cmake @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it> +# +# SPDX-License-Identifier: GPL-2.0-or-later + +include(FindPackageHandleStandardArgs) + +find_package(httplib QUIET CONFIG) +if (httplib_CONSIDERED_CONFIGS) + find_package_handle_standard_args(httplib HANDLE_COMPONENTS CONFIG_MODE) +else() + find_package(PkgConfig QUIET) + pkg_search_module(HTTPLIB QUIET IMPORTED_TARGET cpp-httplib) + if ("-DCPPHTTPLIB_OPENSSL_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) + set(httplib_OpenSSL_FOUND TRUE) + endif() + if ("-DCPPHTTPLIB_ZLIB_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) + set(httplib_ZLIB_FOUND TRUE) + endif() + if ("-DCPPHTTPLIB_BROTLI_SUPPORT" IN_LIST HTTPLIB_CFLAGS_OTHER) + set(httplib_Brotli_FOUND TRUE) + endif() + find_package_handle_standard_args(httplib + REQUIRED_VARS HTTPLIB_INCLUDEDIR + VERSION_VAR HTTPLIB_VERSION + HANDLE_COMPONENTS + ) +endif() + +if (httplib_FOUND AND NOT TARGET httplib::httplib) + add_library(httplib::httplib ALIAS PkgConfig::HTTPLIB) +endif() diff --git a/CMakeModules/find/Findlibiw.cmake b/CMakeModules/find/Findlibiw.cmake new file mode 100644 index 0000000000..3381db0f08 --- /dev/null +++ b/CMakeModules/find/Findlibiw.cmake @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(IW QUIET IMPORTED_TARGET iw) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libiw + REQUIRED_VARS IW_LIBRARIES IW_INCLUDE_DIRS + VERSION_VAR IW_VERSION + FAIL_MESSAGE "libiw (Wireless Tools library) not found. Please install libiw-dev (Debian/Ubuntu), wireless-tools-devel (Fedora), wireless_tools (Arch), or net-wireless/iw (Gentoo)." +) + +if (Libiw_FOUND AND TARGET PkgConfig::IW AND NOT TARGET iw::iw) + add_library(iw::iw ALIAS PkgConfig::IW) +endif() + +if(Libiw_FOUND) + mark_as_advanced( + IW_INCLUDE_DIRS + IW_LIBRARIES + IW_LIBRARY_DIRS + IW_LINK_LIBRARIES # Often set by pkg-config + IW_LDFLAGS + IW_CFLAGS + IW_CFLAGS_OTHER + IW_VERSION + ) +endif() diff --git a/CMakeModules/find/Findlibusb.cmake b/CMakeModules/find/Findlibusb.cmake new file mode 100644 index 0000000000..dee8187d81 --- /dev/null +++ b/CMakeModules/find/Findlibusb.cmake @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(LIBUSB QUIET IMPORTED_TARGET libusb-1.0) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(libusb + REQUIRED_VARS LIBUSB_LINK_LIBRARIES + VERSION_VAR LIBUSB_VERSION +) + +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::LIBUSB) +endif() + +if (libusb_FOUND AND NOT TARGET libusb::usb) + add_library(libusb::usb ALIAS PkgConfig::LIBUSB) +endif() diff --git a/CMakeModules/find/Findlz4.cmake b/CMakeModules/find/Findlz4.cmake new file mode 100644 index 0000000000..13235d7ac8 --- /dev/null +++ b/CMakeModules/find/Findlz4.cmake @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +include(FindPackageHandleStandardArgs) + +find_package(lz4 QUIET CONFIG) +if (lz4_CONSIDERED_CONFIGS) + find_package_handle_standard_args(lz4 CONFIG_MODE) +else() + find_package(PkgConfig QUIET) + pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4) + + if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::LZ4) + endif() + + find_package_handle_standard_args(lz4 + REQUIRED_VARS LZ4_LINK_LIBRARIES + VERSION_VAR LZ4_VERSION + ) +endif() + +if (lz4_FOUND AND NOT TARGET lz4::lz4) + if (TARGET LZ4::lz4_shared) + add_library(lz4::lz4 ALIAS LZ4::lz4_shared) + elseif (TARGET LZ4::lz4_static) + add_library(lz4::lz4 ALIAS LZ4::lz4_static) + else() + add_library(lz4::lz4 ALIAS PkgConfig::LZ4) + endif() +endif() diff --git a/CMakeModules/find/Findstb.cmake b/CMakeModules/find/Findstb.cmake new file mode 100644 index 0000000000..4808c45397 --- /dev/null +++ b/CMakeModules/find/Findstb.cmake @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +find_path(stb_image_INCLUDE_DIR stb_image.h PATH_SUFFIXES stb) +find_path(stb_image_resize_INCLUDE_DIR stb_image_resize.h PATH_SUFFIXES stb) +find_path(stb_image_write_INCLUDE_DIR stb_image_write.h PATH_SUFFIXES stb) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(stb + REQUIRED_VARS + stb_image_INCLUDE_DIR + stb_image_resize_INCLUDE_DIR + stb_image_write_INCLUDE_DIR +) + +if (stb_FOUND AND NOT TARGET stb::headers) + add_library(stb::headers INTERFACE IMPORTED) + set_property(TARGET stb::headers PROPERTY + INTERFACE_INCLUDE_DIRECTORIES + "${stb_image_INCLUDE_DIR}" + "${stb_image_resize_INCLUDE_DIR}" + "${stb_image_write_INCLUDE_DIR}" + ) +endif() + +mark_as_advanced( + stb_image_INCLUDE_DIR + stb_image_resize_INCLUDE_DIR + stb_image_write_INCLUDE_DIR +) diff --git a/CMakeModules/find/Findzstd.cmake b/CMakeModules/find/Findzstd.cmake new file mode 100644 index 0000000000..58f0aa6117 --- /dev/null +++ b/CMakeModules/find/Findzstd.cmake @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +include(FindPackageHandleStandardArgs) + +find_package(zstd QUIET CONFIG) +if (zstd_CONSIDERED_CONFIGS) + find_package_handle_standard_args(zstd CONFIG_MODE) +else() + find_package(PkgConfig QUIET) + pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd) + find_package_handle_standard_args(zstd + REQUIRED_VARS ZSTD_LINK_LIBRARIES + VERSION_VAR ZSTD_VERSION) +endif() + +if (zstd_FOUND AND NOT TARGET zstd::zstd) + if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD) + add_library(zstd::zstd ALIAS zstd::libzstd_shared) + elseif (TARGET zstd::libzstd_static) + add_library(zstd::zstd ALIAS zstd::libzstd_static) + else() + add_library(zstd::zstd ALIAS PkgConfig::ZSTD) + endif() +endif() + +get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET) + +if (NOT TARGET zstd::libzstd) + if (ZSTD_TARGET) + add_library(zstd::libzstd ALIAS ${ZSTD_TARGET}) + else() + add_library(zstd::libzstd ALIAS zstd::zstd) + endif() +elseif(YUZU_STATIC_BUILD AND TARGET zstd::libzstd_static) + # zstd::libzstd links to shared zstd by default + set_target_properties(zstd::libzstd PROPERTIES INTERFACE_LINK_LIBRARIES zstd::libzstd_static) +endif() |
