mirror of
https://github.com/azahar-emu/azahar
synced 2025-11-06 15:09:58 +01:00
cmake: Corrected widespread incorrect usage of the SYSTEM property
This commit is contained in:
parent
20d577f9e3
commit
485db276e3
95
externals/CMakeLists.txt
vendored
95
externals/CMakeLists.txt
vendored
@ -1,24 +1,37 @@
|
||||
# Definitions for all external bundled libraries
|
||||
|
||||
# Suppress warnings from external libraries
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
if (MSVC)
|
||||
add_compile_options(/W0)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
|
||||
function(target_disable_warnings target)
|
||||
if (MSVC)
|
||||
target_compile_options(${target} INTERFACE /W0)
|
||||
else()
|
||||
target_compile_options(${target} INTERFACE -w)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
|
||||
include(DownloadExternals)
|
||||
include(ExternalProject)
|
||||
|
||||
# Boost
|
||||
if (NOT USE_SYSTEM_BOOST)
|
||||
if (USE_SYSTEM_BOOST)
|
||||
unset(BOOST_ROOT CACHE)
|
||||
unset(Boost_INCLUDE_DIR CACHE)
|
||||
set(Boost_NO_SYSTEM_PATHS OFF CACHE BOOL "" FORCE)
|
||||
else()
|
||||
message(STATUS "Including vendored Boost library")
|
||||
set(BOOST_ROOT "${CMAKE_SOURCE_DIR}/externals/boost" CACHE STRING "")
|
||||
set(Boost_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/boost" CACHE STRING "")
|
||||
set(Boost_NO_SYSTEM_PATHS ON CACHE BOOL "")
|
||||
add_library(boost INTERFACE)
|
||||
target_include_directories(boost SYSTEM INTERFACE ${Boost_INCLUDE_DIR})
|
||||
target_include_directories(boost INTERFACE ${Boost_INCLUDE_DIR})
|
||||
target_disable_warnings(boost)
|
||||
|
||||
# Boost::serialization
|
||||
file(GLOB boost_serialization_SRC "${CMAKE_SOURCE_DIR}/externals/boost/libs/serialization/src/*.cpp")
|
||||
@ -33,11 +46,7 @@ if (NOT USE_SYSTEM_BOOST)
|
||||
${CMAKE_SOURCE_DIR}/externals/boost/libs/iostreams/src/mapped_file.cpp
|
||||
)
|
||||
target_link_libraries(boost_iostreams PUBLIC boost)
|
||||
# Add additional boost libs here; remember to ALIAS them in the root CMakeLists!
|
||||
else()
|
||||
unset(BOOST_ROOT CACHE)
|
||||
unset(Boost_INCLUDE_DIR CACHE)
|
||||
set(Boost_NO_SYSTEM_PATHS OFF CACHE BOOL "" FORCE)
|
||||
# Add additional boost libs here; remember to ALIAS them in the root CMakeLists!
|
||||
endif()
|
||||
|
||||
# Catch2
|
||||
@ -55,7 +64,7 @@ target_link_libraries(catch2 INTERFACE Catch2::Catch2WithMain)
|
||||
if(USE_SYSTEM_CRYPTOPP)
|
||||
find_package(cryptopp REQUIRED)
|
||||
add_library(cryptopp INTERFACE)
|
||||
target_link_libraries(cryptopp INTERFACE cryptopp::cryptopp)
|
||||
target_link_libraries(cryptopp SYSTEM INTERFACE cryptopp::cryptopp)
|
||||
else()
|
||||
if (WIN32 AND NOT MSVC AND "arm64" IN_LIST ARCHITECTURE)
|
||||
# TODO: CryptoPP ARM64 ASM does not seem to support Windows unless compiled with MSVC.
|
||||
@ -73,13 +82,14 @@ endif()
|
||||
# dds-ktx
|
||||
add_library(dds-ktx INTERFACE)
|
||||
target_include_directories(dds-ktx INTERFACE ./dds-ktx)
|
||||
target_disable_warnings(dds-ktx)
|
||||
|
||||
# fmt and Xbyak need to be added before dynarmic
|
||||
# libfmt
|
||||
if(USE_SYSTEM_FMT)
|
||||
add_library(fmt INTERFACE)
|
||||
find_package(fmt REQUIRED)
|
||||
target_link_libraries(fmt INTERFACE fmt::fmt)
|
||||
target_link_libraries(fmt SYSTEM INTERFACE fmt::fmt)
|
||||
else()
|
||||
option(FMT_INSTALL "" ON)
|
||||
add_subdirectory(fmt EXCLUDE_FROM_ALL)
|
||||
@ -91,7 +101,7 @@ if ("x86_64" IN_LIST ARCHITECTURE)
|
||||
if(USE_SYSTEM_XBYAK)
|
||||
find_package(xbyak REQUIRED)
|
||||
add_library(xbyak INTERFACE)
|
||||
target_link_libraries(xbyak INTERFACE xbyak::xbyak)
|
||||
target_link_libraries(xbyak SYSTEM INTERFACE xbyak::xbyak)
|
||||
else()
|
||||
add_subdirectory(xbyak EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
@ -107,7 +117,7 @@ if ("x86_64" IN_LIST ARCHITECTURE OR "arm64" IN_LIST ARCHITECTURE)
|
||||
if(USE_SYSTEM_DYNARMIC)
|
||||
find_package(dynarmic REQUIRED)
|
||||
add_library(dynarmic INTERFACE)
|
||||
target_link_libraries(dynarmic INTERFACE dynarmic::dynarmic)
|
||||
target_link_libraries(dynarmic SYSTEM INTERFACE dynarmic::dynarmic)
|
||||
# The dynarmic package's cmake files are helpfully completely silent
|
||||
# so we have to inform the user of its status ourselves
|
||||
if(TARGET dynarmic::dynarmic)
|
||||
@ -130,14 +140,15 @@ endif()
|
||||
if(USE_SYSTEM_INIH)
|
||||
find_package(inih REQUIRED COMPONENTS inih inir)
|
||||
add_library(inih INTERFACE)
|
||||
target_link_libraries(inih INTERFACE inih::inih inih::inir)
|
||||
target_link_libraries(inih SYSTEM INTERFACE inih::inih inih::inir)
|
||||
else()
|
||||
add_subdirectory(inih)
|
||||
endif()
|
||||
|
||||
# MicroProfile
|
||||
add_library(microprofile INTERFACE)
|
||||
target_include_directories(microprofile SYSTEM INTERFACE ./microprofile)
|
||||
target_include_directories(microprofile INTERFACE ./microprofile)
|
||||
target_disable_warnings(microprofile)
|
||||
if (ENABLE_MICROPROFILE)
|
||||
target_compile_definitions(microprofile INTERFACE MICROPROFILE_ENABLED=1)
|
||||
else()
|
||||
@ -146,10 +157,11 @@ endif()
|
||||
|
||||
# Nihstro
|
||||
add_library(nihstro-headers INTERFACE)
|
||||
target_include_directories(nihstro-headers SYSTEM INTERFACE ./nihstro/include)
|
||||
if (MSVC)
|
||||
# TODO: For some reason MSVC still applies this warning even with /W0 for externals.
|
||||
target_compile_options(nihstro-headers INTERFACE /wd4715)
|
||||
target_include_directories(nihstro-headers INTERFACE ./nihstro/include)
|
||||
target_disable_warnings(nihstro-headers)
|
||||
if (NOT MSVC)
|
||||
# TODO: For some reason MSYS2 still applied this warnin even with -w
|
||||
target_compile_options(nihstro-headers INTERFACE -Wno-invalid-specialization)
|
||||
endif()
|
||||
|
||||
# Open Source Archives
|
||||
@ -173,7 +185,8 @@ if (USE_SYSTEM_FFMPEG_HEADERS)
|
||||
endif()
|
||||
if (NOT FOUND_FFMPEG_HEADERS)
|
||||
message(STATUS "Using bundled ffmpeg headers.")
|
||||
target_include_directories(library-headers SYSTEM INTERFACE ./library-headers/ffmpeg/include)
|
||||
target_include_directories(library-headers INTERFACE ./library-headers/ffmpeg/include)
|
||||
target_disable_warnings(library-headers)
|
||||
endif()
|
||||
|
||||
# SoundTouch
|
||||
@ -208,7 +221,7 @@ if(USE_SYSTEM_ZSTD)
|
||||
if(TARGET zstd::libzstd_shared)
|
||||
message(STATUS "Found system Zstandard")
|
||||
endif()
|
||||
target_link_libraries(zstd INTERFACE zstd::libzstd_shared)
|
||||
target_link_libraries(zstd SYSTEM INTERFACE zstd::libzstd_shared)
|
||||
else()
|
||||
set(ZSTD_LEGACY_SUPPORT OFF)
|
||||
set(ZSTD_BUILD_PROGRAMS OFF)
|
||||
@ -243,7 +256,7 @@ endif()
|
||||
if(USE_SYSTEM_ENET)
|
||||
find_package(libenet REQUIRED)
|
||||
add_library(enet INTERFACE)
|
||||
target_link_libraries(enet INTERFACE libenet::libenet)
|
||||
target_link_libraries(enet SYSTEM INTERFACE libenet::libenet)
|
||||
else()
|
||||
add_subdirectory(enet)
|
||||
target_include_directories(enet INTERFACE ./enet/include)
|
||||
@ -254,7 +267,7 @@ if (ENABLE_CUBEB)
|
||||
if(USE_SYSTEM_CUBEB)
|
||||
find_package(cubeb REQUIRED)
|
||||
add_library(cubeb INTERFACE)
|
||||
target_link_libraries(cubeb INTERFACE cubeb::cubeb)
|
||||
target_link_libraries(cubeb SYSTEM INTERFACE cubeb::cubeb)
|
||||
if(TARGET cubeb::cubeb)
|
||||
message(STATUS "Found system cubeb")
|
||||
endif()
|
||||
@ -294,7 +307,8 @@ if (USE_SYSTEM_JSON)
|
||||
# Citra uses "#include <json.hpp>" so we have to add this manually
|
||||
target_include_directories(json-headers SYSTEM INTERFACE "${NLOHMANN_PREFIX}/nlohmann")
|
||||
else()
|
||||
target_include_directories(json-headers SYSTEM INTERFACE ./json)
|
||||
target_include_directories(json-headers INTERFACE ./json)
|
||||
target_disable_warnings(json-headers)
|
||||
endif()
|
||||
|
||||
# OpenSSL
|
||||
@ -310,7 +324,8 @@ if (NOT OPENSSL_FOUND)
|
||||
set(LIBRESSL_SKIP_INSTALL ON CACHE BOOL "")
|
||||
set(OPENSSLDIR "/etc/ssl/")
|
||||
add_subdirectory(libressl EXCLUDE_FROM_ALL)
|
||||
target_include_directories(ssl SYSTEM INTERFACE ./libressl/include)
|
||||
target_include_directories(ssl INTERFACE ./libressl/include)
|
||||
target_disable_warnings(ssl)
|
||||
target_compile_definitions(ssl PRIVATE -DHAVE_INET_NTOP)
|
||||
get_directory_property(OPENSSL_LIBRARIES
|
||||
DIRECTORY libressl
|
||||
@ -327,17 +342,20 @@ if(USE_SYSTEM_CPP_HTTPLIB)
|
||||
get_target_property(HTTP_LIBS httplib::httplib INTERFACE_LINK_LIBRARIES)
|
||||
if(HTTP_LIBS)
|
||||
message(WARNING "Shared cpp-http (${HTTP_LIBS}) not supported. Falling back to bundled...")
|
||||
target_include_directories(httplib SYSTEM INTERFACE ./httplib)
|
||||
target_include_directories(httplib INTERFACE ./httplib)
|
||||
target_disable_warnings(httplib)
|
||||
else()
|
||||
if(CppHttp_FOUND)
|
||||
target_link_libraries(httplib INTERFACE httplib::httplib)
|
||||
target_link_libraries(httplib SYSTEM INTERFACE httplib::httplib)
|
||||
else()
|
||||
message(STATUS "Cpp-httplib not found or not suitable version! Falling back to bundled...")
|
||||
target_include_directories(httplib SYSTEM INTERFACE ./httplib)
|
||||
endif()
|
||||
target_include_directories(httplib INTERFACE ./httplib)
|
||||
target_disable_warnings(httplib)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(httplib SYSTEM INTERFACE ./httplib)
|
||||
target_include_directories(httplib INTERFACE ./httplib)
|
||||
target_disable_warnings(httplib)
|
||||
endif()
|
||||
target_compile_options(httplib INTERFACE -DCPPHTTPLIB_OPENSSL_SUPPORT)
|
||||
target_link_libraries(httplib INTERFACE ${OPENSSL_LIBRARIES})
|
||||
@ -351,10 +369,11 @@ if (ENABLE_WEB_SERVICE)
|
||||
if (USE_SYSTEM_CPP_JWT)
|
||||
find_package(cpp-jwt REQUIRED)
|
||||
add_library(cpp-jwt INTERFACE)
|
||||
target_link_libraries(cpp-jwt INTERFACE cpp-jwt::cpp-jwt)
|
||||
target_link_libraries(cpp-jwt SYSTEM INTERFACE cpp-jwt::cpp-jwt)
|
||||
else()
|
||||
add_library(cpp-jwt INTERFACE)
|
||||
target_include_directories(cpp-jwt SYSTEM INTERFACE ./cpp-jwt/include)
|
||||
target_include_directories(cpp-jwt INTERFACE ./cpp-jwt/include)
|
||||
target_disable_warnings(cpp-jwt)
|
||||
target_compile_definitions(cpp-jwt INTERFACE CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
|
||||
endif()
|
||||
endif()
|
||||
@ -363,7 +382,7 @@ endif()
|
||||
if(USE_SYSTEM_LODEPNG)
|
||||
add_library(lodepng INTERFACE)
|
||||
find_package(lodepng REQUIRED)
|
||||
target_link_libraries(lodepng INTERFACE lodepng::lodepng)
|
||||
target_link_libraries(lodepng SYSTEM INTERFACE lodepng::lodepng)
|
||||
else()
|
||||
add_subdirectory(lodepng)
|
||||
endif()
|
||||
@ -380,7 +399,7 @@ if (ENABLE_OPENAL)
|
||||
if(USE_SYSTEM_OPENAL)
|
||||
add_library(OpenAL INTERFACE)
|
||||
find_package(OpenAL REQUIRED)
|
||||
target_link_libraries(OpenAL INTERFACE OpenAL::OpenAL)
|
||||
target_link_libraries(OpenAL SYSTEM INTERFACE OpenAL::OpenAL)
|
||||
else()
|
||||
set(ALSOFT_EMBED_HRTF_DATA OFF CACHE BOOL "")
|
||||
set(ALSOFT_EXAMPLES OFF CACHE BOOL "")
|
||||
@ -449,11 +468,12 @@ if (ENABLE_VULKAN)
|
||||
find_package(VulkanMemoryAllocator REQUIRED)
|
||||
if(TARGET GPUOpen::VulkanMemoryAllocator)
|
||||
message(STATUS "Found VulkanMemoryAllocator")
|
||||
target_link_libraries(vma INTERFACE GPUOpen::VulkanMemoryAllocator)
|
||||
target_link_libraries(vma SYSTEM INTERFACE GPUOpen::VulkanMemoryAllocator)
|
||||
endif()
|
||||
else()
|
||||
add_library(vma INTERFACE)
|
||||
target_include_directories(vma SYSTEM INTERFACE ./vma/include)
|
||||
target_include_directories(vma INTERFACE ./vma/include)
|
||||
target_disable_warnings(vma)
|
||||
endif()
|
||||
|
||||
# vulkan-headers
|
||||
@ -462,10 +482,11 @@ if (ENABLE_VULKAN)
|
||||
find_package(Vulkan REQUIRED)
|
||||
if(TARGET Vulkan::Headers)
|
||||
message(STATUS "Found Vulkan headers")
|
||||
target_link_libraries(vulkan-headers INTERFACE Vulkan::Headers)
|
||||
target_link_libraries(vulkan-headers SYSTEM INTERFACE Vulkan::Headers)
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(vulkan-headers SYSTEM INTERFACE ./vulkan-headers/include)
|
||||
target_include_directories(vulkan-headers INTERFACE ./vulkan-headers/include)
|
||||
target_disable_warnings(vulkan-headers)
|
||||
endif()
|
||||
|
||||
# adrenotools
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user