[cmake] fixes for XCode when having languages other than C/C++ (#3772)
Some checks are pending
tx-src / sources (push) Waiting to run
Check Strings / check-strings (push) Waiting to run

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3772
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie 2026-03-26 04:46:43 +01:00 committed by crueter
parent f0d77e86e3
commit 9cb7001656
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
16 changed files with 87 additions and 93 deletions

View file

@ -143,8 +143,8 @@ if (MSVC AND ARCHITECTURE_x86)
endif() endif()
if (CXX_CLANG_CL) if (CXX_CLANG_CL)
# clang-cl prints literally 10000+ warnings without this
add_compile_options( add_compile_options(
# clang-cl prints literally 10000+ warnings without this
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-command-line-argument> $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-command-line-argument>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unsafe-buffer-usage> $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unsafe-buffer-usage>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-value> $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-value>
@ -154,12 +154,12 @@ if (CXX_CLANG_CL)
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-deprecated-declarations> $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-deprecated-declarations>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch> $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch>
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc>) $<$<COMPILE_LANGUAGE:C,CXX>:/EHsc>)
# REQUIRED CPU features IN Windows-amd64 # REQUIRED CPU features IN Windows-amd64
if (ARCHITECTURE_x86_64) if (ARCHITECTURE_x86_64)
add_compile_options( add_compile_options(
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1> $<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
$<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>) $<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>
)
endif() endif()
endif() endif()
@ -395,13 +395,15 @@ if (Boost_ADDED)
if (NOT MSVC OR CXX_CLANG) if (NOT MSVC OR CXX_CLANG)
# boost sucks # boost sucks
if (PLATFORM_SUN) if (PLATFORM_SUN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthreads") add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-pthreads>)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthreads")
endif() endif()
target_compile_options(boost_heap INTERFACE -Wno-shadow) target_compile_options(boost_heap INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>)
target_compile_options(boost_icl INTERFACE -Wno-shadow) target_compile_options(boost_icl INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>)
target_compile_options(boost_asio INTERFACE -Wno-conversion -Wno-implicit-fallthrough) target_compile_options(boost_asio INTERFACE
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-fallthrough>
)
endif() endif()
endif() endif()
@ -440,7 +442,7 @@ if (NOT YUZU_STATIC_ROOM)
if (Opus_ADDED) if (Opus_ADDED)
if (MSVC AND CXX_CLANG) if (MSVC AND CXX_CLANG)
target_compile_options(opus PRIVATE target_compile_options(opus PRIVATE
-Wno-implicit-function-declaration $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-function-declaration>
) )
endif() endif()
endif() endif()

View file

@ -109,16 +109,15 @@ if(ENABLE_CUBEB)
if (cubeb_ADDED) if (cubeb_ADDED)
if (NOT MSVC) if (NOT MSVC)
if (TARGET speex) if (TARGET speex)
target_compile_options(speex PRIVATE -Wno-sign-compare) target_compile_options(speex PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-compare>)
endif() endif()
set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "") set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "")
target_compile_options(cubeb INTERFACE target_compile_options(cubeb INTERFACE
-Wno-implicit-const-int-float-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-const-int-float-conversion>
-Wno-shadow $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>
-Wno-missing-declarations $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-declarations>
-Wno-return-type $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-return-type>
-Wno-uninitialized $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-uninitialized>
) )
else() else()
target_compile_options(cubeb PRIVATE target_compile_options(cubeb PRIVATE
@ -184,7 +183,9 @@ if (YUZU_USE_BUNDLED_SIRIT)
else() else()
AddJsonPackage(sirit) AddJsonPackage(sirit)
if(MSVC AND CXX_CLANG) if(MSVC AND CXX_CLANG)
target_compile_options(siritobj PRIVATE -Wno-error=unused-command-line-argument) target_compile_options(siritobj PRIVATE
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error=unused-command-line-argument>
)
endif() endif()
endif() endif()
@ -220,7 +221,7 @@ AddJsonPackage(vulkan-memory-allocator)
if (VulkanMemoryAllocator_ADDED) if (VulkanMemoryAllocator_ADDED)
if (CXX_CLANG) if (CXX_CLANG)
target_compile_options(VulkanMemoryAllocator INTERFACE target_compile_options(VulkanMemoryAllocator INTERFACE
-Wno-unused-variable $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
) )
elseif(MSVC) elseif(MSVC)
target_compile_options(VulkanMemoryAllocator INTERFACE target_compile_options(VulkanMemoryAllocator INTERFACE

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project # SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project # SPDX-FileCopyrightText: 2020 yuzu Emulator Project
@ -232,7 +232,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
) )
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG) if(THREADS_HAVE_PTHREAD_ARG)
target_compile_options(usb PUBLIC "-pthread") target_compile_options(usb PUBLIC $<$<COMPILE_LANGUAGE:C,CXX>:-pthread>)
endif() endif()
if(CMAKE_THREAD_LIBS_INIT) if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}")

View file

@ -118,47 +118,42 @@ if (MSVC AND NOT CXX_CLANG)
else() else()
if (NOT MSVC) if (NOT MSVC)
add_compile_options( add_compile_options(
-fwrapv $<$<COMPILE_LANGUAGE:C,CXX>:-fwrapv>
-fno-rtti # Disable RTTI $<$<COMPILE_LANGUAGE:C,CXX>:-pipe>
-pipe # Disable RTTI (C++ only)
) $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>)
endif() endif()
add_compile_options( add_compile_options(
-Werror=all $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=all>
-Werror=extra $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=extra>
-Werror=missing-declarations $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations>
-Werror=shadow $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow>
-Werror=unused $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unused>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-attributes>
-Wno-attributes $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-invalid-offsetof>
-Wno-invalid-offsetof $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
-Wno-unused-parameter $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
-Wno-missing-field-initializers
)
if (CXX_CLANG OR CXX_ICC OR CXX_APPLE) # Clang, AppleClang, or Intel C++ if (CXX_CLANG OR CXX_ICC OR CXX_APPLE) # Clang, AppleClang, or Intel C++
if (NOT MSVC) if (NOT MSVC)
add_compile_options( add_compile_options(
-Werror=shadow-uncaptured-local $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow-uncaptured-local>
-Werror=implicit-fallthrough $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=implicit-fallthrough>
-Werror=type-limits $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=type-limits>)
)
endif() endif()
add_compile_options( add_compile_options(
-Wno-braced-scalar-init $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-braced-scalar-init>
-Wno-unused-private-field $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-private-field>
-Wno-nullability-completeness $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-nullability-completeness>)
)
endif() endif()
if (ARCHITECTURE_x86_64) if (ARCHITECTURE_x86_64)
add_compile_options("-mcx16") add_compile_options(-mcx16)
endif() endif()
if (APPLE AND CXX_CLANG) if (APPLE AND CXX_CLANG)
add_compile_options("-stdlib=libc++") add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-stdlib=libc++>)
endif() endif()
# GCC bugs # GCC bugs
@ -166,10 +161,9 @@ else()
# These diagnostics would be great if they worked, but are just completely broken # These diagnostics would be great if they worked, but are just completely broken
# and produce bogus errors on external libraries like fmt. # and produce bogus errors on external libraries like fmt.
add_compile_options( add_compile_options(
-Wno-array-bounds $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-array-bounds>
-Wno-stringop-overread $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-stringop-overread>
-Wno-stringop-overflow $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-stringop-overflow>)
)
endif() endif()
# Set file offset size to 64 bits. # Set file offset size to 64 bits.

View file

@ -222,10 +222,8 @@ if (MSVC)
) )
else() else()
target_compile_options(audio_core PRIVATE target_compile_options(audio_core PRIVATE
-Werror=conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>)
-Wno-sign-conversion
)
endif() endif()
target_include_directories(audio_core PRIVATE ${OPUS_INCLUDE_DIRS}) target_include_directories(audio_core PRIVATE ${OPUS_INCLUDE_DIRS})

View file

@ -225,8 +225,9 @@ else()
endif() endif()
if(CXX_CLANG) if(CXX_CLANG)
target_compile_options(common PRIVATE -fsized-deallocation target_compile_options(common PRIVATE
-Werror=unreachable-code-aggressive) $<$<COMPILE_LANGUAGE:C,CXX>:-fsized-deallocation>
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unreachable-code-aggressive>)
target_compile_definitions( target_compile_definitions(
common common
PRIVATE PRIVATE

View file

@ -1195,13 +1195,13 @@ if (MSVC)
) )
else() else()
target_compile_options(core PRIVATE target_compile_options(core PRIVATE
-Werror=conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
-Wno-sign-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>
-Wno-cast-function-type $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type>
$<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>) $<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>)
# pre-clang19 will spam with "OH DID YOU MEAN THIS?" otherwise... # pre-clang19 will spam with "OH DID YOU MEAN THIS?" otherwise...
if (CXX_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19) if (CXX_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19)
target_compile_options(core PRIVATE -Wno-cast-function-type-mismatch) target_compile_options(core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch>)
endif() endif()
endif() endif()

View file

@ -68,6 +68,7 @@ add_library(dynarmic STATIC
frontend/decoder/matcher.h frontend/decoder/matcher.h
frontend/imm.cpp frontend/imm.cpp
frontend/imm.h frontend/imm.h
interface/halt_reason.h
interface/exclusive_monitor.h interface/exclusive_monitor.h
interface/optimization_flags.h interface/optimization_flags.h
ir/acc_type.h ir/acc_type.h

View file

@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
@ -148,13 +151,10 @@ if (MSVC)
) )
else() else()
target_compile_options(hid_core PRIVATE target_compile_options(hid_core PRIVATE
-Werror=conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>
-Wno-sign-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type>
-Wno-cast-function-type $<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>)
$<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>
)
endif() endif()
create_target_directory_groups(hid_core) create_target_directory_groups(hid_core)

View file

@ -44,9 +44,7 @@ if (MSVC)
/we4800 # Implicit conversion from 'type' to bool. Possible information loss /we4800 # Implicit conversion from 'type' to bool. Possible information loss
) )
else() else()
target_compile_options(input_common PRIVATE target_compile_options(input_common PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>)
-Werror=conversion
)
endif() endif()
if (ANDROID) if (ANDROID)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project # SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
@ -253,8 +253,7 @@ if (MSVC)
) )
else() else()
target_compile_options(shader_recompiler PRIVATE target_compile_options(shader_recompiler PRIVATE
-Werror=conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
# Bracket depth determines maximum size of a fold expression in Clang since 9c9974c3ccb6. # Bracket depth determines maximum size of a fold expression in Clang since 9c9974c3ccb6.
# And this in turns limits the size of a std::array. # And this in turns limits the size of a std::array.
$<$<CXX_COMPILER_ID:Clang>:-fbracket-depth=1024> $<$<CXX_COMPILER_ID:Clang>:-fbracket-depth=1024>

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project # SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
@ -32,8 +32,8 @@ add_test(NAME tests COMMAND tests)
# needed for vma # needed for vma
if (NOT MSVC) if (NOT MSVC)
target_compile_options(tests PRIVATE target_compile_options(tests PRIVATE
-Wno-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
-Wno-unused-variable $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
-Wno-unused-parameter $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
-Wno-missing-field-initializers) $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif() endif()

View file

@ -363,14 +363,14 @@ else()
if (APPLE) if (APPLE)
# error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>' # error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>'
# error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char') # error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char')
target_compile_options(video_core PRIVATE -Wno-shadow -Wno-unused-local-typedef) target_compile_options(video_core PRIVATE
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-local-typedef>)
else() else()
target_compile_options(video_core PRIVATE -Werror=conversion) target_compile_options(video_core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>)
endif() endif()
target_compile_options(video_core PRIVATE target_compile_options(video_core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>)
-Wno-sign-conversion
)
# xbyak # xbyak
set_source_files_properties(macro/macro_jit_x64.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-shadow") set_source_files_properties(macro/macro_jit_x64.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-shadow")

View file

@ -443,10 +443,10 @@ endif()
if (NOT MSVC AND (APPLE OR NOT YUZU_STATIC_BUILD)) if (NOT MSVC AND (APPLE OR NOT YUZU_STATIC_BUILD))
# needed for vma # needed for vma
target_compile_options(yuzu PRIVATE target_compile_options(yuzu PRIVATE
-Wno-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
-Wno-unused-variable $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
-Wno-unused-parameter $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
-Wno-missing-field-initializers) $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif() endif()
# Remember that the linker is incredibly stupid. # Remember that the linker is incredibly stupid.

View file

@ -8,7 +8,7 @@
#pragma once #pragma once
#include <QMainWindow> #include <QMainWindow>
#include "../yuzu/migration_worker.h" #include "yuzu/migration_worker.h"
// TODO(crueter): Quick implementation // TODO(crueter): Quick implementation
class UserDataMigrator { class UserDataMigrator {

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project # SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
@ -60,8 +60,8 @@ create_target_directory_groups(yuzu-cmd)
# needed for vma # needed for vma
if (NOT MSVC) if (NOT MSVC)
target_compile_options(yuzu-cmd PRIVATE target_compile_options(yuzu-cmd PRIVATE
-Wno-conversion $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
-Wno-unused-variable $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
-Wno-unused-parameter $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
-Wno-missing-field-initializers) $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif() endif()