diff --git a/.ci/actool.sh b/.ci/actool.sh
new file mode 100755
index 0000000000..5be658d2bb
--- /dev/null
+++ b/.ci/actool.sh
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# SPDX-FileCopyrightText: Copyright 2026 crueter
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+_svg=dev.eden_emu.eden.svg
+_icon=dist/eden.icon
+_composed="$_icon/Assets/$_svg"
+_svg="dist/$_svg"
+
+rm "$_composed"
+cp "$_svg" "$_composed"
+
+xcrun actool "$_icon" \
+ --compile dist \
+ --platform macosx \
+ --minimum-deployment-target 11.0 \
+ --app-icon eden \
+ --output-partial-info-plist /dev/null
diff --git a/.ci/ios/build.sh b/.ci/ios/build.sh
index f199b66582..5537214cf9 100755
--- a/.ci/ios/build.sh
+++ b/.ci/ios/build.sh
@@ -6,9 +6,9 @@
WORK_DIR="$PWD"
xcrun --sdk iphoneos --show-sdk-path
-# TODO(crueter): FFmpeg for iOS
+# TODO: support iphonesimulator sdk
-cmake -G Xcode -B build \
+cmake -G Xcode -B build/ios \
-DCMAKE_TOOLCHAIN_FILE="$WORK_DIR/.ci/ios/ios-toolchain.cmake" \
-DPLATFORM=OS64 \
-DARCHS="arm64" \
@@ -19,8 +19,7 @@ cmake -G Xcode -B build \
-DENABLE_QT=OFF \
-DENABLE_WEB_SERVICE=OFF \
-DENABLE_CUBEB=OFF \
- -DYUZU_USE_EXTERNAL_FFMPEG=ON \
- -DYUZU_USE_EXTERNAL_SDL2=ON \
- -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_BUILD_TYPE=Release \
+ "$@"
-cmake --build build -t eden-ios
+cmake --build build/ios -t eden-ios --config Release
diff --git a/.ci/ios/ios-toolchain.cmake b/.ci/ios/ios-toolchain.cmake
index b0defa25aa..5eed07b32f 100644
--- a/.ci/ios/ios-toolchain.cmake
+++ b/.ci/ios/ios-toolchain.cmake
@@ -157,7 +157,7 @@
# command.
#
-cmake_minimum_required(VERSION 3.8.0)
+cmake_minimum_required(VERSION 3.10)
# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds.
# NOTE: To improve single-library build-times, provide the flag "OS_SINGLE_BUILD" as a build argument.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 271ab34baf..25da075e09 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -170,24 +170,24 @@ if (MSVC AND NOT CXX_CLANG)
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} /W3 /WX-")
endif()
-# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
-cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "NOT MSVC;NOT ANDROID" OFF)
-cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "NOT ANDROID" OFF)
-
-option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
-
set(EXT_DEFAULT OFF)
if (MSVC OR ANDROID OR IOS)
set(EXT_DEFAULT ON)
endif()
+# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
+cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "NOT MSVC;NOT ANDROID" OFF)
+cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${EXT_DEFAULT}" "NOT ANDROID" OFF)
+
+option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
+
# ffmpeg
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
# sirit
set(BUNDLED_SIRIT_DEFAULT OFF)
-if ((MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Deb")) OR ANDROID)
+if ((MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Deb")) OR ANDROID OR IOS)
set(BUNDLED_SIRIT_DEFAULT ON)
endif()
@@ -488,15 +488,17 @@ endfunction()
# Put these BEFORE EXTERNALS or Boost WILL die
# =============================================
if (APPLE)
- find_library(IOKIT_LIBRARY IOKit REQUIRED)
+ set(_libs Metal IOKit CoreVideo CoreMedia)
if (IOS)
- find_library(OBJC_LIBRARY objc REQUIRED)
- set(PLATFORM_LIBRARIES ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY} ${OBJC_LIBRARY})
+ list(APPEND _libs objc)
else()
- # Umbrella framework for everything GUI-related
- find_library(COCOA_LIBRARY Cocoa REQUIRED)
- set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
+ list(APPEND _libs Carbon Cocoa)
endif()
+
+ foreach(fw ${_libs})
+ find_library(${fw}_LIBRARY ${fw} REQUIRED)
+ list(APPEND PLATFORM_LIBRARIES ${${fw}_LIBRARY})
+ endforeach()
elseif (WIN32)
# Target Windows 10
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)
diff --git a/dist/Assets.car b/dist/Assets.car
index eb54881fac..9ae9bca8a4 100644
Binary files a/dist/Assets.car and b/dist/Assets.car differ
diff --git a/dist/eden.icns b/dist/eden.icns
index 680800951d..82529ba224 100644
Binary files a/dist/eden.icns and b/dist/eden.icns differ
diff --git a/dist/eden.icon/Assets/dev.eden_emu.eden.svg b/dist/eden.icon/Assets/dev.eden_emu.eden.svg
new file mode 100644
index 0000000000..f88b52f625
--- /dev/null
+++ b/dist/eden.icon/Assets/dev.eden_emu.eden.svg
@@ -0,0 +1,230 @@
+
+
diff --git a/dist/eden.icon/icon.json b/dist/eden.icon/icon.json
new file mode 100644
index 0000000000..1f1e7da516
--- /dev/null
+++ b/dist/eden.icon/icon.json
@@ -0,0 +1,37 @@
+{
+ "fill" : {
+ "automatic-gradient" : "srgb:0.00000,0.00000,0.00000,1.00000"
+ },
+ "groups" : [
+ {
+ "layers" : [
+ {
+ "fill" : "none",
+ "image-name" : "dev.eden_emu.eden.svg",
+ "name" : "dev.eden_emu.eden",
+ "position" : {
+ "scale" : 1.8,
+ "translation-in-points" : [
+ 0,
+ 0
+ ]
+ }
+ }
+ ],
+ "shadow" : {
+ "kind" : "neutral",
+ "opacity" : 0.5
+ },
+ "translucency" : {
+ "enabled" : true,
+ "value" : 0.5
+ }
+ }
+ ],
+ "supported-platforms" : {
+ "circles" : [
+ "watchOS"
+ ],
+ "squares" : "shared"
+ }
+}
\ No newline at end of file
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 1ab537f44d..7f80bb5d43 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -231,6 +231,10 @@ if (VulkanMemoryAllocator_ADDED)
endif()
# httplib
+if (IOS)
+ set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
+endif()
+
AddJsonPackage(httplib)
# cpp-jwt
diff --git a/externals/cmake-modules/DetectArchitecture.cmake b/externals/cmake-modules/DetectArchitecture.cmake
index a2f78b86de..c4fd9e1ec3 100644
--- a/externals/cmake-modules/DetectArchitecture.cmake
+++ b/externals/cmake-modules/DetectArchitecture.cmake
@@ -41,12 +41,12 @@ if (CMAKE_OSX_ARCHITECTURES)
if (IOS)
# TODO: Right... the toolchain file won't properly accomodate OSX_ARCHITECTURE
# they aren't defining it as a list properly I assume?
- set(ARCHITECTURE_arm64 1 PARENT_SCOPE)
+ set(ARCHITECTURE_arm64 1)
add_definitions(-DARCHITECTURE_arm64=1)
else ()
# hope and pray the architecture names match
- foreach(ARCH IN ${CMAKE_OSX_ARCHITECTURES})
- set(ARCHITECTURE_${ARCH} 1 PARENT_SCOPE)
+ foreach(ARCH ${CMAKE_OSX_ARCHITECTURES})
+ set(ARCHITECTURE_${ARCH} 1)
add_definitions(-DARCHITECTURE_${ARCH}=1)
endforeach()
endif()
@@ -223,4 +223,4 @@ if (NOT DEFINED ARCHITECTURE)
add_definitions(-DARCHITECTURE_GENERIC=1)
endif()
-message(STATUS "[DetectArchitecture] Target architecture: ${ARCHITECTURE}")
\ No newline at end of file
+message(STATUS "[DetectArchitecture] Target architecture: ${ARCHITECTURE}")
diff --git a/externals/cpmfile.json b/externals/cpmfile.json
index b98c726132..99aee2a396 100644
--- a/externals/cpmfile.json
+++ b/externals/cpmfile.json
@@ -23,10 +23,7 @@
"package": "sirit",
"name": "sirit",
"repo": "eden-emulator/sirit",
- "version": "1.0.4",
- "disabled_platforms": [
- "ios-aarch64"
- ]
+ "version": "1.0.5"
},
"httplib": {
"repo": "yhirose/cpp-httplib",
@@ -39,7 +36,8 @@
"0002-fix-zstd.patch"
],
"options": [
- "HTTPLIB_REQUIRE_OPENSSL ON"
+ "HTTPLIB_REQUIRE_OPENSSL ON",
+ "HTTPLIB_DISABLE_MACOSX_AUTOMATIC_ROOT_CERTIFICATES ON"
]
},
"cpp-jwt": {
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 1ee4794272..00a25a5744 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -144,7 +144,8 @@ add_library(
zstd_compression.cpp
zstd_compression.h
fs/ryujinx_compat.h fs/ryujinx_compat.cpp
- fs/symlink.h fs/symlink.cpp)
+ fs/symlink.h fs/symlink.cpp
+ httplib.h)
if(WIN32)
target_sources(common PRIVATE windows/timer_resolution.cpp
@@ -242,7 +243,7 @@ else()
target_link_libraries(common PUBLIC Boost::headers)
endif()
-target_link_libraries(common PUBLIC Boost::filesystem Boost::context)
+target_link_libraries(common PUBLIC Boost::filesystem Boost::context httplib::httplib)
if (lz4_ADDED)
target_include_directories(common PRIVATE ${lz4_SOURCE_DIR}/lib)
diff --git a/src/common/httplib.h b/src/common/httplib.h
new file mode 100644
index 0000000000..2f971bd5f3
--- /dev/null
+++ b/src/common/httplib.h
@@ -0,0 +1,9 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#define CPPHTTPLIB_DISABLE_MACOSX_AUTOMATIC_ROOT_CERTIFICATES
+#define CPPHTTPLIB_OPENSSL_SUPPORT
+
+#include
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index a2f595540d..aad42b883b 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1273,9 +1273,6 @@ endif()
target_sources(core PRIVATE hle/service/ssl/ssl_backend_openssl.cpp)
target_link_libraries(core PRIVATE OpenSSL::SSL OpenSSL::Crypto)
-if (NOT IOS)
- target_compile_definitions(core PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
-endif()
# TODO
diff --git a/src/core/hle/service/bcat/news/builtin_news.cpp b/src/core/hle/service/bcat/news/builtin_news.cpp
index f7cc6c5a23..ad7aafa4e3 100644
--- a/src/core/hle/service/bcat/news/builtin_news.cpp
+++ b/src/core/hle/service/bcat/news/builtin_news.cpp
@@ -15,9 +15,7 @@
#include
#include
-#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
-#include
-#endif
+#include "common/httplib.h"
#include
#include
@@ -104,7 +102,6 @@ std::vector TryLoadFromDisk(const std::filesystem::path& path) {
std::vector DownloadImage(const std::string& url_path, const std::filesystem::path& cache_path) {
LOG_INFO(Service_BCAT, "Downloading image: https://eden-emu.dev{}", url_path);
-#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
try {
httplib::Client cli("https://eden-emu.dev");
cli.set_follow_location(true);
@@ -128,7 +125,6 @@ std::vector DownloadImage(const std::string& url_path, const std::filesystem
} catch (...) {
LOG_WARNING(Service_BCAT, "Failed to download: {}", url_path);
}
-#endif
return {};
}
@@ -233,7 +229,6 @@ void WriteCachedJson(std::string_view json) {
std::optional DownloadReleasesJson() {
-#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
try {
httplib::SSLClient cli{"api.github.com", 443};
cli.set_connection_timeout(10);
@@ -255,7 +250,7 @@ std::optional DownloadReleasesJson() {
} catch (...) {
LOG_WARNING(Service_BCAT, " failed to download releases");
}
-#endif
+
return std::nullopt;
}
diff --git a/src/frontend_common/CMakeLists.txt b/src/frontend_common/CMakeLists.txt
index b1554d7dba..f9b3805939 100644
--- a/src/frontend_common/CMakeLists.txt
+++ b/src/frontend_common/CMakeLists.txt
@@ -23,9 +23,6 @@ if (ENABLE_UPDATE_CHECKER)
update_checker.cpp
update_checker.h)
target_link_libraries(frontend_common PRIVATE OpenSSL::SSL OpenSSL::Crypto)
- if (NOT IOS)
- target_compile_definitions(frontend_common PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT)
- endif()
endif()
create_target_directory_groups(frontend_common)
diff --git a/src/frontend_common/update_checker.cpp b/src/frontend_common/update_checker.cpp
index 75b1dc00cc..3e5a832ba0 100644
--- a/src/frontend_common/update_checker.cpp
+++ b/src/frontend_common/update_checker.cpp
@@ -13,7 +13,7 @@
#include "common/scm_rev.h"
#include "update_checker.h"
-#include
+#include "common/httplib.h"
#ifdef YUZU_BUNDLED_OPENSSL
#include
diff --git a/src/ios/CMakeLists.txt b/src/ios/CMakeLists.txt
index 54ff956a36..6e6c13db2d 100644
--- a/src/ios/CMakeLists.txt
+++ b/src/ios/CMakeLists.txt
@@ -15,6 +15,7 @@ add_executable(eden-ios
EmulationSession.mm
EmulationWindow.h
EmulationWindow.mm
+ VMA.cpp
)
# Keep bundle identifier as-is, for compatibility sake
set_target_properties(eden-ios PROPERTIES
@@ -26,5 +27,5 @@ set_target_properties(eden-ios PROPERTIES
)
target_link_libraries(eden-ios PRIVATE common core input_common frontend_common video_core sirit::sirit)
target_link_libraries(eden-ios PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
-target_link_libraries(eden-ios PRIVATE SDL2::SDL2 glad)
+target_link_libraries(eden-ios PRIVATE SDL2::SDL2 glad stb::headers)
create_target_directory_groups(eden-ios)
diff --git a/src/ios/VMA.cpp b/src/ios/VMA.cpp
new file mode 100644
index 0000000000..7e2ea49c28
--- /dev/null
+++ b/src/ios/VMA.cpp
@@ -0,0 +1,5 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#define VMA_IMPLEMENTATION
+#include "video_core/vulkan_common/vma.h"
diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt
index f7614c506a..399fbe67a0 100644
--- a/src/qt_common/CMakeLists.txt
+++ b/src/qt_common/CMakeLists.txt
@@ -50,9 +50,6 @@ if (USE_DISCORD_PRESENCE)
if (YUZU_USE_BUNDLED_OPENSSL)
target_link_libraries(qt_common PUBLIC OpenSSL::SSL OpenSSL::Crypto)
- if (NOT IOS)
- target_compile_definitions(qt_common PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
- endif()
endif()
target_compile_definitions(qt_common PUBLIC USE_DISCORD_PRESENCE)
diff --git a/src/qt_common/discord/discord_impl.cpp b/src/qt_common/discord/discord_impl.cpp
index 37b24cdd57..c1cb5319dc 100644
--- a/src/qt_common/discord/discord_impl.cpp
+++ b/src/qt_common/discord/discord_impl.cpp
@@ -9,7 +9,7 @@
#include
#include
-#include
+#include "common/httplib.h"
#include
#include
diff --git a/src/video_core/vulkan_common/vma.h b/src/video_core/vulkan_common/vma.h
index e022b2bf7d..514ff4501c 100644
--- a/src/video_core/vulkan_common/vma.h
+++ b/src/video_core/vulkan_common/vma.h
@@ -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: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,9 +13,14 @@
#ifdef _MSC_VER
#pragma warning( push )
#pragma warning( disable : 4189 )
+#elif defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-variable"
#endif
#include "vk_mem_alloc.h"
#ifdef _MSC_VER
#pragma warning( pop )
+#elif defined(__clang__)
+#pragma clang diagnostic pop
#endif
diff --git a/src/web_service/CMakeLists.txt b/src/web_service/CMakeLists.txt
index 0b749bb216..a3acdfcf0f 100644
--- a/src/web_service/CMakeLists.txt
+++ b/src/web_service/CMakeLists.txt
@@ -20,27 +20,6 @@ create_target_directory_groups(web_service)
target_include_directories(web_service PUBLIC ${cpp-jwt_SOURCE_DIR}/include)
target_link_libraries(web_service PRIVATE common network nlohmann_json::nlohmann_json httplib::httplib cpp-jwt::cpp-jwt)
-if (IOS)
- # TODO: this is horrific
- find_package(OpenSSL 3 QUIET)
- if (OpenSSL_FOUND)
- target_link_libraries(web_service PRIVATE OpenSSL::SSL OpenSSL::Crypto)
- if (NOT IOS)
- target_compile_definitions(web_service PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
- endif()
- else()
- find_package(OpenSSL 3 QUIET PATHS /usr/local/opt/openssl /opt/homebrew/opt/openssl NO_DEFAULT_PATH)
- if (OpenSSL_FOUND)
- target_link_libraries(web_service PRIVATE OpenSSL::SSL OpenSSL::Crypto)
- if (NOT IOS)
- target_compile_definitions(web_service PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
- endif()
- else()
- message(WARNING "OpenSSL not found or version is less than 3. Some features in web_service may be disabled.")
- endif()
- endif()
-else()
- find_package(OpenSSL REQUIRED)
- target_link_libraries(web_service PRIVATE OpenSSL::SSL OpenSSL::Crypto)
- target_compile_definitions(web_service PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
-endif()
+find_package(OpenSSL REQUIRED)
+target_link_libraries(web_service PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+target_compile_definitions(web_service PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp
index 60b11fff5a..1e71406989 100644
--- a/src/web_service/web_backend.cpp
+++ b/src/web_service/web_backend.cpp
@@ -16,7 +16,7 @@
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
#endif
-#include
+#include "common/httplib.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 79642711ac..1ed1fdff2a 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -362,16 +362,27 @@ target_sources(yuzu
${LANGUAGES}
${THEMES})
+# TODO(crueter): Move Assets.car/icon/icns handling to its own Module.
if (APPLE)
- # Normal icns
- set(MACOSX_ICON "${CMAKE_SOURCE_DIR}/dist/eden.icns")
- set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
- target_sources(yuzu PRIVATE ${MACOSX_ICON})
+ # Xcode will automatically generate the Assets.car and icns file for us.
+ set(_dist "${CMAKE_SOURCE_DIR}/dist")
+ if (CMAKE_GENERATOR MATCHES "Xcode")
+ set(_icons "${_dist}/eden.icon")
- # Liquid glass
- set(MACOSX_LIQUID_GLASS_ICON "${CMAKE_SOURCE_DIR}/dist/Assets.car")
- set_source_files_properties(${MACOSX_LIQUID_GLASS_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
- target_sources(yuzu PRIVATE ${MACOSX_LIQUID_GLASS_ICON})
+ set_target_properties(eden PROPERTIES
+ XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME eden
+ MACOSX_BUNDLE_ICON_FILE eden
+ # Also force xcode to manage signing for us.
+ XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED ON
+ XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED ON)
+ # Otherwise, we'll use our own.
+ else()
+ set(_icons "${_dist}/eden.icns" "${_dist}/Assets.car")
+ endif()
+
+ set_source_files_properties(${_icons} PROPERTIES
+ MACOSX_PACKAGE_LOCATION Resources)
+ target_sources(yuzu PRIVATE ${_icons})
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)