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

View File

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