externals: Make system dynamic library headers flags instead of auto-detect. (#7065)
This commit is contained in:
parent
956b0868fd
commit
e49b3c75bd
|
@ -80,7 +80,7 @@
|
|||
path = externals/sirit
|
||||
url = https://github.com/yuzu-emu/sirit
|
||||
[submodule "library-headers"]
|
||||
path = externals/library-headers/library-headers
|
||||
path = externals/library-headers
|
||||
url = https://github.com/citra-emu/ext-library-headers.git
|
||||
[submodule "libadrenotools"]
|
||||
path = externals/libadrenotools
|
||||
|
|
|
@ -101,6 +101,8 @@ option(USE_SYSTEM_DYNARMIC "Use the system dynarmic (instead of the bundled one)
|
|||
option(USE_SYSTEM_FMT "Use the system fmt (instead of the bundled one)" OFF)
|
||||
option(USE_SYSTEM_XBYAK "Use the system xbyak (instead of the bundled one)" OFF)
|
||||
option(USE_SYSTEM_INIH "Use the system inih (instead of the bundled one)" OFF)
|
||||
option(USE_SYSTEM_FDK_AAC_HEADERS "Use the system fdk-aac headers (instead of the bundled one)" OFF)
|
||||
option(USE_SYSTEM_FFMPEG_HEADERS "Use the system FFmpeg headers (instead of the bundled one)" OFF)
|
||||
|
||||
if (CITRA_USE_PRECOMPILED_HEADERS)
|
||||
message(STATUS "Using Precompiled Headers.")
|
||||
|
|
|
@ -150,7 +150,37 @@ endif()
|
|||
add_subdirectory(open_source_archives)
|
||||
|
||||
# Dynamic library headers
|
||||
add_subdirectory(library-headers EXCLUDE_FROM_ALL)
|
||||
add_library(library-headers INTERFACE)
|
||||
|
||||
if (USE_SYSTEM_FDK_AAC_HEADERS)
|
||||
find_path(SYSTEM_FDK_AAC_INCLUDES NAMES fdk-aac/aacdecoder_lib.h)
|
||||
if (SYSTEM_FDK_AAC_INCLUDES STREQUAL "SYSTEM_FDK_AAC_INCLUDES-NOTFOUND")
|
||||
message(WARNING "System fdk-aac headers not found. Falling back on bundled headers.")
|
||||
else()
|
||||
message(STATUS "Using system fdk_aac headers.")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ${SYSTEM_FDK_AAC_INCLUDES})
|
||||
set(FOUND_FDK_AAC_HEADERS ON)
|
||||
endif()
|
||||
endif()
|
||||
if (NOT FOUND_FDK_AAC_HEADERS)
|
||||
message(STATUS "Using bundled fdk_aac headers.")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ./library-headers/fdk-aac/include)
|
||||
endif()
|
||||
|
||||
if (USE_SYSTEM_FFMPEG_HEADERS)
|
||||
find_path(SYSTEM_FFMPEG_INCLUDES NAMES libavutil/avutil.h)
|
||||
if (SYSTEM_FFMPEG_INCLUDES STREQUAL "SYSTEM_FFMPEG_INCLUDES-NOTFOUND")
|
||||
message(WARNING "System FFmpeg headers not found. Falling back on bundled headers.")
|
||||
else()
|
||||
message(STATUS "Using system FFmpeg headers.")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ${SYSTEM_FFMPEG_INCLUDES})
|
||||
set(FOUND_FFMPEG_HEADERS ON)
|
||||
endif()
|
||||
endif()
|
||||
if (NOT FOUND_FFMPEG_HEADERS)
|
||||
message(STATUS "Using bundled ffmpeg headers.")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ./library-headers/ffmpeg/include)
|
||||
endif()
|
||||
|
||||
# SoundTouch
|
||||
if(NOT USE_SYSTEM_SOUNDTOUCH)
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
add_library(library-headers INTERFACE)
|
||||
|
||||
# libfdk-aac headers
|
||||
find_path(FDK_AAC_INCLUDES NAMES fdk-aac/aacdecoder_lib.h)
|
||||
if (FDK_AAC_INCLUDES STREQUAL "FDK_AAC_INCLUDES-NOTFOUND")
|
||||
message(STATUS "fdk_aac headers not found, using bundled headers.")
|
||||
target_include_directories(library-headers INTERFACE ./library-headers/fdk-aac/include)
|
||||
else()
|
||||
message(STATUS "Using headers from system fdk_aac")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ${FDK_AAC_INCLUDES})
|
||||
endif()
|
||||
|
||||
# FFmpeg headers
|
||||
find_path(AVUTIL_INCLUDES NAMES libavutil/avutil.h)
|
||||
find_path(AVCODEC_INCLUDES NAMES libavcodec/avcodec.h)
|
||||
find_path(AVFORMAT_INCLUDES NAMES libavformat/avformat.h)
|
||||
find_path(AVFILTER_INCLUDES NAMES libavfilter/avfilter.h)
|
||||
find_path(SWRESAMPLE_INCLUDES NAMES libswresample/swresample.h)
|
||||
# Make sure all the headers are found and from the same place, so we don't
|
||||
# have missing or mismatched components.
|
||||
if (AVUTIL_INCLUDES STREQUAL "AVUTIL_INCLUDES-NOTFOUND"
|
||||
OR NOT AVCODEC_INCLUDES STREQUAL AVUTIL_INCLUDES
|
||||
OR NOT AVFORMAT_INCLUDES STREQUAL AVUTIL_INCLUDES
|
||||
OR NOT AVFILTER_INCLUDES STREQUAL AVUTIL_INCLUDES
|
||||
OR NOT SWRESAMPLE_INCLUDES STREQUAL AVUTIL_INCLUDES)
|
||||
message(STATUS "Complete FFmpeg headers not found, using bundled headers.")
|
||||
target_include_directories(library-headers INTERFACE ./library-headers/ffmpeg/include)
|
||||
else()
|
||||
# Extract libavutil version from header.
|
||||
file(STRINGS "${AVUTIL_INCLUDES}/libavutil/version.h" AVUTIL_VERSION_DATA
|
||||
REGEX "#define LIBAVUTIL_VERSION_(MAJOR|MINOR|MICRO) ")
|
||||
set(AVUTIL_VERSION_REGEX "([0-9]+)")
|
||||
foreach(v MAJOR MINOR MICRO)
|
||||
if("${AVUTIL_VERSION_DATA}" MATCHES "#define LIBAVUTIL_VERSION_${v}[\\t ]+${AVUTIL_VERSION_REGEX}")
|
||||
set(AVUTIL_VERSION_${v} "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
endforeach()
|
||||
set(AVUTIL_VERSION "${AVUTIL_VERSION_MAJOR}.${AVUTIL_VERSION_MINOR}.${AVUTIL_VERSION_MICRO}")
|
||||
|
||||
message(STATUS "Detected FFmpeg libavutil version is ${AVUTIL_VERSION}")
|
||||
if ("${AVUTIL_VERSION}" VERSION_LESS "56.30.100")
|
||||
message(WARNING "System FFmpeg version is too low (< 4.2), using bundled headers.")
|
||||
target_include_directories(library-headers INTERFACE ./library-headers/ffmpeg/include)
|
||||
else()
|
||||
message(STATUS "Using headers from system FFmpeg")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ${AVUTIL_INCLUDES})
|
||||
endif()
|
||||
endif()
|
Reference in New Issue