mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-04 05:51:19 +12:00
This is a big rework of how dependencies are handled internally. All the calls to CMake functions changing directory-wide properties that were previously used to link to external and internal dependencies have been replaced with their "target_" counterparts. This makes it possible to express more clearly the relationships between different targets and should also make the build script more robust in general. In doing this, I've also made it possible to link to system libraries if so desired; the versioned calls to find_package() will make sure that the found dependencies are compatible with the ones required by Cemu, and will abort the build otherwise. Cemu's internal targets are deeply interconnected, making it hard to fully benefit from a target-based approach. Nonetheless, I did my best to mark PUBLIC dependencies as such, for example when an internal target like CemuGui exposes a dependency as part of its API, i.e. it includes a third party header in one of its public headers. This will significantly help with improving the build experience on Linux, thus helping a bit with the resolution of #1.
27 lines
662 B
CMake
27 lines
662 B
CMake
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
|
|
# SPDX-License-Identifier: ISC
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
find_package(imgui CONFIG)
|
|
if (imgui_FOUND)
|
|
# Use upstream imguiConfig.cmake if possible
|
|
find_package_handle_standard_args(imgui CONFIG_MODE)
|
|
else()
|
|
# Fallback to pkg-config otherwise
|
|
find_package(PkgConfig)
|
|
if (PKG_CONFIG_FOUND)
|
|
pkg_search_module(imgui IMPORTED_TARGET GLOBAL imgui)
|
|
if (imgui_FOUND)
|
|
add_library(imgui::imgui ALIAS PkgConfig::imgui)
|
|
endif()
|
|
endif()
|
|
|
|
find_package_handle_standard_args(imgui
|
|
REQUIRED_VARS
|
|
imgui_LINK_LIBRARIES
|
|
imgui_FOUND
|
|
VERSION_VAR
|
|
imgui_VERSION
|
|
)
|
|
endif()
|