Merge pull request #14793 from JoshuaVandaele/auto-off-warns

CMake: Automatically disable warnings for Externals
This commit is contained in:
JosJuice authored and GitHub committed 2026-10-18 12:12:01 +02:00
commit b869a2ab20
36 files changed
+60 -89

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
function(dolphin_disable_warnings target)
get_target_property(target_flags ${target} COMPILE_OPTIONS)
set(new_flags)
foreach(flag IN LISTS target_flags)
# all warning flags start with "/W" or "/w" or "-W" or "-w"
if (NOT flag MATCHES "^[-/][Ww]")
list(APPEND new_flags "${flag}")
endif()
endforeach()
set_target_properties(${target} PROPERTIES COMPILE_OPTIONS "${new_flags}")
if (MSVC)
target_compile_options(${target} PRIVATE "/W0")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(${target} PRIVATE "-w")
endif()
endfunction()
-20
View File
@@ -1,20 +0,0 @@
include(RemoveCompileFlag)
macro(dolphin_disable_warnings _target)
get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
if (_target_cxx_flags)
set(new_flags "")
foreach(flag IN LISTS _target_cxx_flags)
# all warning flags start with "/W" or "/w" or "-W" or "-w"
if (NOT "${flag}" MATCHES "^[-/][Ww]")
list(APPEND new_flags "${flag}")
endif()
endforeach()
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${new_flags}")
endif()
if (MSVC)
target_compile_options(${_target} PRIVATE "/W0")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(${_target} PRIVATE "-w")
endif()
endmacro()
+26 -4
View File
@@ -41,8 +41,21 @@ function(dolphin_optional_system_library out_use_system library)
endif()
endfunction()
function(dolphin_add_bundled_library library use_system bundled_path)
if (${use_system} STREQUAL "AUTO")
function(dolphin_find_directory_targets dir result)
get_directory_property(targets DIRECTORY ${dir} BUILDSYSTEM_TARGETS)
get_property(subdirs DIRECTORY ${dir} PROPERTY SUBDIRECTORIES)
foreach(subdir IN LISTS subdirs)
dolphin_find_directory_targets(${subdir} sub_targets)
list(APPEND targets ${sub_targets})
endforeach()
set(${result} "${targets}" PARENT_SCOPE)
endfunction()
function(dolphin_add_bundled_library library bundled_path)
set(use_system "${ARGV2}")
if (use_system STREQUAL "AUTO")
message(STATUS "No system ${library} was found. Using static ${library} from Externals.")
else()
message(STATUS "Using static ${library} from Externals")
@@ -51,6 +64,15 @@ function(dolphin_add_bundled_library library use_system bundled_path)
message(FATAL_ERROR "No bundled ${library} was found. Did you forget to checkout submodules?")
endif()
add_subdirectory(${bundled_path} EXCLUDE_FROM_ALL)
dolphin_find_directory_targets(${bundled_path} bundled_targets)
foreach(target IN LISTS bundled_targets)
get_target_property(type ${target} TYPE)
get_target_property(imported ${target} IMPORTED)
if(imported OR type STREQUAL "INTERFACE_LIBRARY" OR type STREQUAL "UTILITY")
continue()
endif()
dolphin_disable_warnings(${target})
endforeach()
endfunction()
function(dolphin_set_library_type library type)
@@ -119,7 +141,7 @@ function(dolphin_find_optional_system_library library bundled_path)
message(STATUS "Using system ${library}")
else()
dolphin_set_library_type(${library} "Bundled")
dolphin_add_bundled_library(${library} ${use_system} ${bundled_path})
dolphin_add_bundled_library(${library} ${bundled_path} ${use_system})
endif()
endfunction()
@@ -138,7 +160,7 @@ function(dolphin_find_optional_system_library_pkgconfig library search alias bun
dolphin_alias_library(${alias} PkgConfig::${library})
else()
dolphin_set_library_type(${library} "Bundled")
dolphin_add_bundled_library(${library} ${use_system} ${bundled_path})
dolphin_add_bundled_library(${library} ${bundled_path} ${use_system})
endif()
endfunction()
+17 -20
View File
@@ -30,7 +30,7 @@ include(CheckAndAddFlag)
include(CheckCCompilerFlag)
include(CheckSymbolExists)
include(DolphinCompileDefinitions)
include(DolphinDisableWarningsMSVC)
include(DolphinDisableWarnings)
include(DolphinLibraryTools)
include(GNUInstallDirs)
include(RemoveCompileFlag)
@@ -614,36 +614,36 @@ endif()
# Externals/zlib/CMakeLists.txt (that is: NOT in some Src/ subdirectory)
#
if (_M_X86_64)
add_subdirectory(Externals/Bochs_disasm)
dolphin_add_bundled_library(Bochs_disasm Externals/Bochs_disasm)
endif()
add_subdirectory(Externals/cpp-optparse)
dolphin_add_bundled_library(cpp-optparse Externals/cpp-optparse)
dolphin_find_optional_system_library_pkgconfig(FMT
fmt>=10.1 fmt::fmt Externals/fmt
)
add_subdirectory(Externals/imgui)
add_subdirectory(Externals/implot)
dolphin_add_bundled_library(ImGui Externals/imgui)
dolphin_add_bundled_library(ImPlot Externals/implot)
dolphin_find_optional_system_library(glslang Externals/glslang DOLPHIN_TRY_VERSIONS 15 16)
# SPIRV-Cross is used on Windows for GLSL to HLSL conversion for the Direct3D 11 and Direct3D 12
# video backends, and on Apple devices for the Metal video backend.
if(WIN32 OR APPLE)
add_subdirectory(Externals/spirv_cross)
dolphin_add_bundled_library(SPIRV-Cross Externals/spirv_cross)
endif()
add_subdirectory(Externals/tinygltf)
dolphin_add_bundled_library(TinyGLTF Externals/tinygltf)
if(ENABLE_VULKAN)
add_definitions(-DHAS_VULKAN)
if(APPLE AND USE_BUNDLED_MOLTENVK)
add_subdirectory(Externals/MoltenVK)
dolphin_add_bundled_library(MoltenVK Externals/MoltenVK)
endif()
if (ANDROID AND _M_ARM_64)
add_subdirectory(Externals/libadrenotools)
dolphin_add_bundled_library(libadrenotools Externals/libadrenotools)
endif()
endif()
@@ -685,14 +685,12 @@ dolphin_find_optional_system_library_pkgconfig(lz4 liblz4>=1.8 LZ4::LZ4 External
dolphin_find_optional_system_library_pkgconfig(SPNG spng spng::spng Externals/libspng)
# Using static FreeSurround from Externals
# There is no system FreeSurround library.
message(STATUS "Using static FreeSurround from Externals")
add_subdirectory(Externals/FreeSurround)
dolphin_add_bundled_library(FreeSurround Externals/FreeSurround)
if (APPLE OR WIN32)
message(STATUS "Using ed25519 from Externals")
add_subdirectory(Externals/ed25519)
dolphin_add_bundled_library(ed25519 Externals/ed25519)
include_directories(Externals/ed25519)
endif()
@@ -727,8 +725,7 @@ if(NOT ANDROID)
endif()
if(USE_DISCORD_PRESENCE)
message(STATUS "Using static DiscordRPC from Externals")
add_subdirectory(Externals/discord-rpc EXCLUDE_FROM_ALL)
dolphin_add_bundled_library(DiscordRPC Externals/discord-rpc)
include_directories(Externals/discord-rpc/include)
endif()
@@ -751,19 +748,19 @@ endif()
include_directories(Externals/picojson)
add_subdirectory(Externals/expr)
dolphin_add_bundled_library(expr Externals/expr)
add_subdirectory(Externals/FatFs)
dolphin_add_bundled_library(FatFs Externals/FatFs)
if (USE_RETRO_ACHIEVEMENTS)
add_subdirectory(Externals/rcheevos)
dolphin_add_bundled_library(rcheevos Externals/rcheevos)
endif()
add_subdirectory(Externals/watcher)
dolphin_add_bundled_library(watcher Externals/watcher)
# Any other platform or BSD is currently unsupported by cpp-ipc
if(WIN32 OR LINUX OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "QNX")
add_subdirectory(Externals/cpp-ipc)
dolphin_add_bundled_library(cpp-ipc Externals/cpp-ipc)
add_definitions(-DHAVE_CPPIPC)
endif()
-1
View File
@@ -4,7 +4,6 @@ add_library(bdisasm STATIC
resolve.cc
syntax.cc
)
dolphin_disable_warnings(bdisasm)
if (WIN32)
target_sources(bdisasm
-1
View File
@@ -12,6 +12,5 @@ set(SRCS
)
add_library(FreeSurround STATIC ${SRCS})
dolphin_disable_warnings(FreeSurround)
target_include_directories(FreeSurround PUBLIC include)
target_compile_options(FreeSurround PRIVATE -w)
-1
View File
@@ -1,7 +1,6 @@
add_library(lzo2 STATIC
minilzo.c
)
dolphin_disable_warnings(lzo2)
target_include_directories(lzo2
PUBLIC
-7
View File
@@ -26,10 +26,3 @@ if(LibUSB_TYPE STREQUAL Bundled)
endif()
add_subdirectory(SDL)
if (TARGET SDL3)
dolphin_disable_warnings(SDL3)
endif()
if (TARGET SDL3-static)
dolphin_disable_warnings(SDL3-static)
endif()
-2
View File
@@ -30,5 +30,3 @@ target_compile_definitions(sfml-system PUBLIC SFML_STATIC)
target_include_directories(sfml-system PUBLIC SFML/include PRIVATE SFML/src)
target_include_directories(sfml-network PUBLIC SFML/include PRIVATE SFML/src)
target_link_libraries(sfml-network PUBLIC sfml-system)
dolphin_disable_warnings(sfml-network)
dolphin_disable_warnings(sfml-system)
-1
View File
@@ -71,7 +71,6 @@ set(BZIP2_SRCS
add_library(bzip2 STATIC ${BZIP2_SRCS} ${BZIP2_PUBLIC_HDRS} ${BZIP2_PRIVATE_HDRS})
add_library(BZip2::BZip2 ALIAS bzip2)
dolphin_disable_warnings(bzip2)
target_include_directories(bzip2
PUBLIC
-1
View File
@@ -1,6 +1,5 @@
add_subdirectory(cpp-ipc EXCLUDE_FROM_ALL)
dolphin_disable_warnings(ipc)
if (NOT MSVC)
target_compile_options(ipc PRIVATE "-fexceptions")
-1
View File
@@ -6,7 +6,6 @@ set(SRCS
add_library(cpp-optparse STATIC ${SRCS})
target_compile_features(cpp-optparse PUBLIC cxx_std_11)
target_compile_options(cpp-optparse PRIVATE -fexceptions)
dolphin_disable_warnings(cpp-optparse)
target_include_directories(cpp-optparse
PUBLIC
-2
View File
@@ -69,7 +69,6 @@ add_library(cubeb
cubeb/src/cubeb_strings.c
cubeb/src/cubeb_utils.cpp
)
dolphin_disable_warnings(cubeb)
target_include_directories(cubeb
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/cubeb/include> $<INSTALL_INTERFACE:include>
)
@@ -127,7 +126,6 @@ endif()
if(NOT TARGET speex)
add_library(speex OBJECT cubeb/subprojects/speex/resample.c)
dolphin_disable_warnings(speex)
set_target_properties(speex PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
target_include_directories(speex INTERFACE cubeb/subprojects)
target_compile_definitions(speex PUBLIC
-1
View File
@@ -31,7 +31,6 @@ if(WIN32)
add_definitions(-DDISCORD_WINDOWS)
set(BASE_RPC_SRC ${BASE_RPC_SRC} connection_win.cpp discord_register_win.cpp)
add_library(discord-rpc ${BASE_RPC_SRC})
dolphin_disable_warnings(discord-rpc)
if (MSVC)
if(USE_STATIC_CRT)
foreach(CompilerFlag
-1
View File
@@ -11,4 +11,3 @@ add_library(ed25519
sc.c
sha512.c
verify.c)
dolphin_disable_warnings(ed25519)
-1
View File
@@ -1,5 +1,4 @@
add_subdirectory(enet)
dolphin_disable_warnings(enet)
add_library(enet::enet ALIAS enet)
target_include_directories(enet PUBLIC enet/include)
-1
View File
@@ -1,2 +1 @@
add_subdirectory(fmt)
dolphin_disable_warnings(fmt)
-1
View File
@@ -17,5 +17,4 @@ if (TARGET glslang)
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}"
)
dolphin_disable_warnings(glslang)
endif()
-1
View File
@@ -1,7 +1,6 @@
project(hidapi)
add_library(hidapi STATIC hidapi-src/hidapi/hidapi.h)
dolphin_disable_warnings(hidapi)
target_include_directories(hidapi PUBLIC hidapi-src/hidapi)
if(APPLE)
-1
View File
@@ -13,7 +13,6 @@ set(SRCS
)
add_library(imgui STATIC ${SRCS})
dolphin_disable_warnings(imgui)
target_include_directories(imgui
PUBLIC
-1
View File
@@ -10,7 +10,6 @@ set(SRCS
)
add_library(implot STATIC ${SRCS})
dolphin_disable_warnings(implot)
target_include_directories(implot
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/implot"
PRIVATE imgui
-1
View File
@@ -13,5 +13,4 @@ target_include_directories(iconv
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/lib>
)
dolphin_disable_warnings(iconv)
add_library(Iconv::Iconv ALIAS iconv)
-1
View File
@@ -206,7 +206,6 @@ set(LZMA_SRCS
add_library(lzma STATIC ${LZMA_SRCS} ${LZMA_PUBLIC_HDRS})
add_library(LibLZMA::LibLZMA ALIAS lzma)
dolphin_disable_warnings(lzma)
target_compile_definitions(lzma PUBLIC LZMA_API_STATIC)
-1
View File
@@ -6,7 +6,6 @@ add_library(usb STATIC EXCLUDE_FROM_ALL
libusb/libusb/strerror.c
libusb/libusb/sync.c
)
dolphin_disable_warnings(usb)
set_target_properties(usb PROPERTIES VERSION 1.0.26)
if(WIN32)
-1
View File
@@ -8,6 +8,5 @@ set(LZ4_BUNDLED_MODE ON)
add_subdirectory(lz4/build/cmake)
dolphin_disable_warnings(lz4_static)
add_library(LZ4::LZ4 ALIAS lz4_static)
target_compile_definitions(lz4_static PRIVATE XXH_NAMESPACE=LZ4_)
-1
View File
@@ -1,7 +1,6 @@
set(LIBMGBA_ONLY ON)
set(USE_LZMA ON)
add_subdirectory(mgba EXCLUDE_FROM_ALL)
dolphin_disable_warnings(mgba)
target_compile_definitions(mgba PUBLIC HAVE_CRC32 ENABLE_VFS ENABLE_DIRECTORIES)
target_link_libraries(mgba ZLIB::ZLIB)
-6
View File
@@ -189,34 +189,28 @@ endif()
if(USE_STATIC_MBEDTLS_LIBRARY)
add_library(${mbedcrypto_static_target} STATIC ${src_crypto})
dolphin_disable_warnings(${mbedcrypto_static_target})
set_target_properties(${mbedcrypto_static_target} PROPERTIES OUTPUT_NAME mbedcrypto)
target_link_libraries(${mbedcrypto_static_target} PUBLIC ${libs})
add_library(${mbedx509_static_target} STATIC ${src_x509})
dolphin_disable_warnings(${mbedx509_static_target})
set_target_properties(${mbedx509_static_target} PROPERTIES OUTPUT_NAME mbedx509)
target_link_libraries(${mbedx509_static_target} PUBLIC ${libs} ${mbedcrypto_static_target})
add_library(${mbedtls_static_target} STATIC ${src_tls})
dolphin_disable_warnings(${mbedtls_static_target})
set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls)
target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target})
endif(USE_STATIC_MBEDTLS_LIBRARY)
if(USE_SHARED_MBEDTLS_LIBRARY)
add_library(${mbedcrypto_target} SHARED ${src_crypto})
dolphin_disable_warnings(${mbedcrypto_target})
set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 2.28.0 SOVERSION 7)
target_link_libraries(${mbedcrypto_target} PUBLIC ${libs})
add_library(${mbedx509_target} SHARED ${src_x509})
dolphin_disable_warnings(${mbedx509_target})
set_target_properties(${mbedx509_target} PROPERTIES VERSION 2.28.0 SOVERSION 1)
target_link_libraries(${mbedx509_target} PUBLIC ${libs} ${mbedcrypto_target})
add_library(${mbedtls_target} SHARED ${src_tls})
dolphin_disable_warnings(${mbedtls_target})
set_target_properties(${mbedtls_target} PROPERTIES VERSION 2.28.0 SOVERSION 14)
target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target})
endif(USE_SHARED_MBEDTLS_LIBRARY)
-1
View File
@@ -5,6 +5,5 @@ set(UPNPC_BUILD_SAMPLE OFF)
set(UPNPC_NO_INSTALL ON)
add_subdirectory(miniupnp/miniupnpc)
dolphin_disable_warnings(libminiupnpc-static)
add_library(Miniupnpc::miniupnpc ALIAS libminiupnpc-static)
-1
View File
@@ -41,4 +41,3 @@ set(CMAKE_DISABLE_FIND_PACKAGE_PkgConfig TRUE)
set(PKGCONFIG_FOUND FALSE)
add_subdirectory(minizip-ng)
dolphin_disable_warnings(minizip-ng)
-1
View File
@@ -4,4 +4,3 @@ set(PUGIXML_BUILD_DEFINES OFF)
set(PUGIXML_INSTALL OFF)
add_subdirectory(pugixml)
dolphin_disable_warnings(pugixml-static)
-1
View File
@@ -57,7 +57,6 @@ add_library(rcheevos
rcheevos/src/rc_version.c
rcheevos/src/rc_version.h
)
dolphin_disable_warnings(rcheevos)
target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include")
target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
-1
View File
@@ -47,7 +47,6 @@ endif()
endif()
add_library(spirv_cross STATIC ${SRCS})
dolphin_disable_warnings(spirv_cross)
target_compile_definitions(spirv_cross PUBLIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
target_include_directories(spirv_cross PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross/include ${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Cross)
-1
View File
@@ -8,4 +8,3 @@ endif()
target_sources(tinygltf PRIVATE
tinygltf/tiny_gltf.cc)
target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
dolphin_disable_warnings(tinygltf)
-1
View File
@@ -1,7 +1,6 @@
project(xxhash C)
add_library(xxhash STATIC xxHash/xxhash.c)
dolphin_disable_warnings(xxhash)
target_include_directories(xxhash
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/xxHash
-1
View File
@@ -12,4 +12,3 @@ set(ZLIB_LIBRARY ZLIB::ZLIB CACHE STRING "Path to zlib library")
# Setup zlib alias project so FindZLIB doesn't recreate it
add_library(ZLIB::ZLIB ALIAS zlib)
dolphin_disable_warnings(zlib)
-1
View File
@@ -6,5 +6,4 @@ set(ZSTD_BUILD_SHARED OFF)
add_subdirectory(zstd EXCLUDE_FROM_ALL)
dolphin_disable_warnings(libzstd_static)
add_library(zstd::zstd ALIAS libzstd_static)