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(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()
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue