Merge pull request #10936 from TellowKrinkle/FixIncludeDirs
CMake: Actually use the include directories specified by dependencies
This commit is contained in:
commit
1eb69ea0a0
|
@ -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()
|
|
@ -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()
|
||||
message(STATUS "Shared lzma not found, falling back to the static library")
|
||||
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()
|
||||
|
||||
|
|
|
@ -68,8 +68,8 @@ target_link_libraries(discio
|
|||
PUBLIC
|
||||
core
|
||||
BZip2::BZip2
|
||||
lzma
|
||||
zstd
|
||||
LibLZMA::LibLZMA
|
||||
zstd::zstd
|
||||
|
||||
PRIVATE
|
||||
fmt::fmt
|
||||
|
|
Loading…
Reference in New Issue