diff --git a/CMake/DolphinLibraryTools.cmake b/CMake/DolphinLibraryTools.cmake new file mode 100644 index 0000000000..4f3a8df9f3 --- /dev/null +++ b/CMake/DolphinLibraryTools.cmake @@ -0,0 +1,10 @@ +# like add_library(new ALIAS old) but avoids add_library cannot create ALIAS target "new" because target "old" is imported but not globally visible. on older cmake +# This can be replaced with a direct alias call once our minimum is cmake 3.18 +function(dolphin_alias_library new old) + string(REPLACE "::" "" library_no_namespace ${old}) + if (NOT TARGET _alias_${library_no_namespace}) + add_library(_alias_${library_no_namespace} INTERFACE) + target_link_libraries(_alias_${library_no_namespace} INTERFACE ${old}) + endif() + add_library(${new} ALIAS _alias_${library_no_namespace}) +endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index 163ea2c943..5ca704eb48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,6 +127,7 @@ include(CheckCCompilerFlag) include(CheckVendoringApproved) include(DolphinCompileDefinitions) include(DolphinDisableWarningsMSVC) +include(DolphinLibraryTools) include(RemoveCompileFlag) # Enable folders for IDE @@ -773,17 +774,13 @@ else() add_subdirectory(Externals/liblzma) endif() -pkg_check_modules(ZSTD QUIET libzstd>=1.4.0) -check_include_file(zstd.h HAVE_ZSTD_H) -if(ZSTD_FOUND AND HAVE_ZSTD_H) +pkg_check_modules(ZSTD QUIET libzstd>=1.4.0 IMPORTED_TARGET) +if(ZSTD_FOUND) message(STATUS "Using shared zstd version: " ${ZSTD_VERSION}) + dolphin_alias_library(zstd::zstd PkgConfig::ZSTD) else() check_vendoring_approved(zstd) - if(ZSTD_FOUND AND NOT HAVE_ZSTD_H) - message(STATUS "Shared zstd found but lacks headers, falling back to the static library") - else() - message(STATUS "Shared zstd not found, falling back to the static library") - endif() + message(STATUS "Shared zstd not found, falling back to the static library") add_subdirectory(Externals/zstd) endif() diff --git a/Source/Core/DiscIO/CMakeLists.txt b/Source/Core/DiscIO/CMakeLists.txt index 61790d89d8..eddfe9e2ff 100644 --- a/Source/Core/DiscIO/CMakeLists.txt +++ b/Source/Core/DiscIO/CMakeLists.txt @@ -71,7 +71,7 @@ PUBLIC core BZip2::BZip2 lzma - zstd + zstd::zstd PRIVATE fmt::fmt