Merge pull request #10936 from TellowKrinkle/FixIncludeDirs

CMake: Actually use the include directories specified by dependencies
This commit is contained in:
Admiral H. Curtiss 2023-01-30 09:19:06 +01:00 committed by GitHub
commit 1eb69ea0a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 17 deletions

View File

@ -0,0 +1,20 @@
# 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()
# Makes an imported target if it doesn't exist. Useful for when find scripts from older versions of cmake don't make the targets you need
function(dolphin_make_imported_target_if_missing target lib)
if(${lib}_FOUND AND NOT TARGET ${target})
add_library(_${lib} INTERFACE)
target_link_libraries(_${lib} INTERFACE "${${lib}_LIBRARIES}")
target_include_directories(_${lib} INTERFACE "${${lib}_INCLUDE_DIRS}")
add_library(${target} ALIAS _${lib})
endif()
endfunction()

View File

@ -127,6 +127,7 @@ include(CheckCCompilerFlag)
include(CheckVendoringApproved)
include(DolphinCompileDefinitions)
include(DolphinDisableWarningsMSVC)
include(DolphinLibraryTools)
include(RemoveCompileFlag)
# Enable folders for IDE
@ -751,30 +752,23 @@ endif()
# macOS ships with liblzma.dylib but no headers, so check for the headers too
find_package(LibLZMA)
check_include_file(lzma.h HAVE_LZMA_H)
if(LIBLZMA_FOUND AND HAVE_LZMA_H)
if(LIBLZMA_FOUND)
# Imported target added in CMake 3.14
dolphin_make_imported_target_if_missing(LibLZMA::LibLZMA LIBLZMA)
message(STATUS "Using shared lzma")
else()
check_vendoring_approved(lzma)
if(LIBLZMA_FOUND AND NOT HAVE_LZMA_H)
message(STATUS "Shared lzma found but lacks headers, falling back to the static library")
else()
message(STATUS "Shared lzma not found, falling back to the static library")
endif()
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()
add_subdirectory(Externals/zstd)
endif()

View File

@ -68,8 +68,8 @@ target_link_libraries(discio
PUBLIC
core
BZip2::BZip2
lzma
zstd
LibLZMA::LibLZMA
zstd::zstd
PRIVATE
fmt::fmt