aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-03-26 04:46:43 +0100
committercrueter <crueter@eden-emu.dev>2026-03-26 04:46:43 +0100
commit9cb700165634a271437abed723a53888eeb6be9c (patch)
treeb398a3765217901c0969147b69fa36d462a9aaff
parentf0d77e86e34cde3813f7b1dbfc4d1a9e8940b21b (diff)
[cmake] fixes for XCode when having languages other than C/C++ (#3772)
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>
-rw-r--r--CMakeLists.txt20
-rw-r--r--externals/CMakeLists.txt19
-rw-r--r--externals/libusb/CMakeLists.txt4
-rw-r--r--src/CMakeLists.txt54
-rw-r--r--src/audio_core/CMakeLists.txt6
-rw-r--r--src/common/CMakeLists.txt5
-rw-r--r--src/core/CMakeLists.txt8
-rw-r--r--src/dynarmic/src/dynarmic/CMakeLists.txt1
-rw-r--r--src/hid_core/CMakeLists.txt14
-rw-r--r--src/input_common/CMakeLists.txt4
-rw-r--r--src/shader_recompiler/CMakeLists.txt5
-rw-r--r--src/tests/CMakeLists.txt10
-rw-r--r--src/video_core/CMakeLists.txt10
-rw-r--r--src/yuzu/CMakeLists.txt8
-rw-r--r--src/yuzu/user_data_migration.h2
-rw-r--r--src/yuzu_cmd/CMakeLists.txt10
16 files changed, 87 insertions, 93 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ab08739f7..9f74d561cf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -143,8 +143,8 @@ if (MSVC AND ARCHITECTURE_x86)
endif()
if (CXX_CLANG_CL)
+ # clang-cl prints literally 10000+ warnings without this
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-unsafe-buffer-usage>
$<$<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-cast-function-type-mismatch>
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc>)
-
# REQUIRED CPU features IN Windows-amd64
if (ARCHITECTURE_x86_64)
add_compile_options(
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
- $<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>)
+ $<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>
+ )
endif()
endif()
@@ -395,13 +395,15 @@ if (Boost_ADDED)
if (NOT MSVC OR CXX_CLANG)
# boost sucks
if (PLATFORM_SUN)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthreads")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthreads")
+ add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-pthreads>)
endif()
- target_compile_options(boost_heap INTERFACE -Wno-shadow)
- target_compile_options(boost_icl INTERFACE -Wno-shadow)
- target_compile_options(boost_asio INTERFACE -Wno-conversion -Wno-implicit-fallthrough)
+ target_compile_options(boost_heap INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>)
+ target_compile_options(boost_icl INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>)
+ target_compile_options(boost_asio INTERFACE
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-fallthrough>
+ )
endif()
endif()
@@ -440,7 +442,7 @@ if (NOT YUZU_STATIC_ROOM)
if (Opus_ADDED)
if (MSVC AND CXX_CLANG)
target_compile_options(opus PRIVATE
- -Wno-implicit-function-declaration
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-function-declaration>
)
endif()
endif()
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 7b4c481ba5..1ab537f44d 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -109,16 +109,15 @@ if(ENABLE_CUBEB)
if (cubeb_ADDED)
if (NOT MSVC)
if (TARGET speex)
- target_compile_options(speex PRIVATE -Wno-sign-compare)
+ target_compile_options(speex PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-compare>)
endif()
-
set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "")
target_compile_options(cubeb INTERFACE
- -Wno-implicit-const-int-float-conversion
- -Wno-shadow
- -Wno-missing-declarations
- -Wno-return-type
- -Wno-uninitialized
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-const-int-float-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-declarations>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-return-type>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-uninitialized>
)
else()
target_compile_options(cubeb PRIVATE
@@ -184,7 +183,9 @@ if (YUZU_USE_BUNDLED_SIRIT)
else()
AddJsonPackage(sirit)
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()
@@ -220,7 +221,7 @@ AddJsonPackage(vulkan-memory-allocator)
if (VulkanMemoryAllocator_ADDED)
if (CXX_CLANG)
target_compile_options(VulkanMemoryAllocator INTERFACE
- -Wno-unused-variable
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
)
elseif(MSVC)
target_compile_options(VulkanMemoryAllocator INTERFACE
diff --git a/externals/libusb/CMakeLists.txt b/externals/libusb/CMakeLists.txt
index 7eae81d3b6..47b54f43cc 100644
--- a/externals/libusb/CMakeLists.txt
+++ b/externals/libusb/CMakeLists.txt
@@ -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-FileCopyrightText: 2020 yuzu Emulator Project
@@ -232,7 +232,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
)
find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG)
- target_compile_options(usb PUBLIC "-pthread")
+ target_compile_options(usb PUBLIC $<$<COMPILE_LANGUAGE:C,CXX>:-pthread>)
endif()
if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a9fa5314b7..600b985609 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -118,47 +118,42 @@ if (MSVC AND NOT CXX_CLANG)
else()
if (NOT MSVC)
add_compile_options(
- -fwrapv
- -fno-rtti # Disable RTTI
- -pipe
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-fwrapv>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-pipe>
+ # Disable RTTI (C++ only)
+ $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>)
endif()
add_compile_options(
- -Werror=all
- -Werror=extra
- -Werror=missing-declarations
- -Werror=shadow
- -Werror=unused
-
- -Wno-attributes
- -Wno-invalid-offsetof
- -Wno-unused-parameter
- -Wno-missing-field-initializers
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=all>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=extra>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unused>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-attributes>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-invalid-offsetof>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
if (CXX_CLANG OR CXX_ICC OR CXX_APPLE) # Clang, AppleClang, or Intel C++
if (NOT MSVC)
add_compile_options(
- -Werror=shadow-uncaptured-local
- -Werror=implicit-fallthrough
- -Werror=type-limits
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow-uncaptured-local>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=implicit-fallthrough>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=type-limits>)
endif()
-
add_compile_options(
- -Wno-braced-scalar-init
- -Wno-unused-private-field
- -Wno-nullability-completeness
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-braced-scalar-init>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-private-field>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-nullability-completeness>)
endif()
if (ARCHITECTURE_x86_64)
- add_compile_options("-mcx16")
+ add_compile_options(-mcx16)
endif()
if (APPLE AND CXX_CLANG)
- add_compile_options("-stdlib=libc++")
+ add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-stdlib=libc++>)
endif()
# GCC bugs
@@ -166,10 +161,9 @@ else()
# These diagnostics would be great if they worked, but are just completely broken
# and produce bogus errors on external libraries like fmt.
add_compile_options(
- -Wno-array-bounds
- -Wno-stringop-overread
- -Wno-stringop-overflow
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-array-bounds>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-stringop-overread>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-stringop-overflow>)
endif()
# Set file offset size to 64 bits.
diff --git a/src/audio_core/CMakeLists.txt b/src/audio_core/CMakeLists.txt
index 4f8cc7d1ca..e31fd2c5b9 100644
--- a/src/audio_core/CMakeLists.txt
+++ b/src/audio_core/CMakeLists.txt
@@ -222,10 +222,8 @@ if (MSVC)
)
else()
target_compile_options(audio_core PRIVATE
- -Werror=conversion
-
- -Wno-sign-conversion
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>)
endif()
target_include_directories(audio_core PRIVATE ${OPUS_INCLUDE_DIRS})
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index fc3d9b59d8..1ee4794272 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -225,8 +225,9 @@ else()
endif()
if(CXX_CLANG)
- target_compile_options(common PRIVATE -fsized-deallocation
- -Werror=unreachable-code-aggressive)
+ target_compile_options(common PRIVATE
+ $<$<COMPILE_LANGUAGE:C,CXX>:-fsized-deallocation>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unreachable-code-aggressive>)
target_compile_definitions(
common
PRIVATE
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 7566372b51..08a2d0e2db 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1195,13 +1195,13 @@ if (MSVC)
)
else()
target_compile_options(core PRIVATE
- -Werror=conversion
- -Wno-sign-conversion
- -Wno-cast-function-type
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type>
$<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>)
# pre-clang19 will spam with "OH DID YOU MEAN THIS?" otherwise...
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()
diff --git a/src/dynarmic/src/dynarmic/CMakeLists.txt b/src/dynarmic/src/dynarmic/CMakeLists.txt
index 50bf5a4604..2f05d8a34b 100644
--- a/src/dynarmic/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/src/dynarmic/CMakeLists.txt
@@ -68,6 +68,7 @@ add_library(dynarmic STATIC
frontend/decoder/matcher.h
frontend/imm.cpp
frontend/imm.h
+ interface/halt_reason.h
interface/exclusive_monitor.h
interface/optimization_flags.h
ir/acc_type.h
diff --git a/src/hid_core/CMakeLists.txt b/src/hid_core/CMakeLists.txt
index 26d9ec1d3f..c740cdbe7f 100644
--- a/src/hid_core/CMakeLists.txt
+++ b/src/hid_core/CMakeLists.txt
@@ -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-License-Identifier: GPL-2.0-or-later
@@ -148,13 +151,10 @@ if (MSVC)
)
else()
target_compile_options(hid_core PRIVATE
- -Werror=conversion
-
- -Wno-sign-conversion
- -Wno-cast-function-type
-
- $<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>
- )
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type>
+ $<$<CXX_COMPILER_ID:Clang>:-fsized-deallocation>)
endif()
create_target_directory_groups(hid_core)
diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt
index ef1308b1d0..406ee967b0 100644
--- a/src/input_common/CMakeLists.txt
+++ b/src/input_common/CMakeLists.txt
@@ -44,9 +44,7 @@ if (MSVC)
/we4800 # Implicit conversion from 'type' to bool. Possible information loss
)
else()
- target_compile_options(input_common PRIVATE
- -Werror=conversion
- )
+ target_compile_options(input_common PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>)
endif()
if (ANDROID)
diff --git a/src/shader_recompiler/CMakeLists.txt b/src/shader_recompiler/CMakeLists.txt
index c385951318..e91803c8c6 100644
--- a/src/shader_recompiler/CMakeLists.txt
+++ b/src/shader_recompiler/CMakeLists.txt
@@ -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-FileCopyrightText: 2018 yuzu Emulator Project
@@ -253,8 +253,7 @@ if (MSVC)
)
else()
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.
# And this in turns limits the size of a std::array.
$<$<CXX_COMPILER_ID:Clang>:-fbracket-depth=1024>
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 43745af429..875c40604c 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -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-FileCopyrightText: 2018 yuzu Emulator Project
@@ -32,8 +32,8 @@ add_test(NAME tests COMMAND tests)
# needed for vma
if (NOT MSVC)
target_compile_options(tests PRIVATE
- -Wno-conversion
- -Wno-unused-variable
- -Wno-unused-parameter
- -Wno-missing-field-initializers)
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif()
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index 3324682639..362b068656 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -363,14 +363,14 @@ else()
if (APPLE)
# 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')
- 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()
- target_compile_options(video_core PRIVATE -Werror=conversion)
+ target_compile_options(video_core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>)
endif()
- target_compile_options(video_core PRIVATE
- -Wno-sign-conversion
- )
+ target_compile_options(video_core PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>)
# xbyak
set_source_files_properties(macro/macro_jit_x64.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-shadow")
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 982c0eb196..79642711ac 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -443,10 +443,10 @@ endif()
if (NOT MSVC AND (APPLE OR NOT YUZU_STATIC_BUILD))
# needed for vma
target_compile_options(yuzu PRIVATE
- -Wno-conversion
- -Wno-unused-variable
- -Wno-unused-parameter
- -Wno-missing-field-initializers)
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif()
# Remember that the linker is incredibly stupid.
diff --git a/src/yuzu/user_data_migration.h b/src/yuzu/user_data_migration.h
index df8057eaa5..3b404a1a14 100644
--- a/src/yuzu/user_data_migration.h
+++ b/src/yuzu/user_data_migration.h
@@ -8,7 +8,7 @@
#pragma once
#include <QMainWindow>
-#include "../yuzu/migration_worker.h"
+#include "yuzu/migration_worker.h"
// TODO(crueter): Quick implementation
class UserDataMigrator {
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt
index a1f16be75c..8f92525ad6 100644
--- a/src/yuzu_cmd/CMakeLists.txt
+++ b/src/yuzu_cmd/CMakeLists.txt
@@ -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-FileCopyrightText: 2018 yuzu Emulator Project
@@ -60,8 +60,8 @@ create_target_directory_groups(yuzu-cmd)
# needed for vma
if (NOT MSVC)
target_compile_options(yuzu-cmd PRIVATE
- -Wno-conversion
- -Wno-unused-variable
- -Wno-unused-parameter
- -Wno-missing-field-initializers)
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
+ $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
endif()