mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-10 14:07:25 +00:00
ed566919f4
Very self-explanatory; implementation of the feature for post-processing shaders for Android (at least for now); will allow users to enhance the graphic quality of video games based on the use of multiple shaders adjustable, presets and more, inspired on the PPSSPP implementation, this feature adds 22 customizable shaders (1 pass) that lives on the overlay of the screen, which means that aside of the capability to chain multiple shaders on the screen, this doesn't have depths (pixel/ depth z-buffer) so it ensures the performance with it's use. Few shaders were a faithful port from PPSSPP with their respective attribution on the shader headers for their respective owners; and there are adaptations from public references/ cinematographic (Anime4K) and the rest are my own addition. _Special Credits:_ 1.- PPSSPP Team for their contribution on the public references for shaders: Henrik Rydgard, ShadX, SimoneT, KillaMaaki and guest(r). 2.- Niklas Haas. 3.- bloc97. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4348 Reviewed-by: lizzie <lizzie@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com>
446 lines
15 KiB
CMake
Vendored
446 lines
15 KiB
CMake
Vendored
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# TODO(crueter): A lot of this should be moved to the root.
|
|
# otherwise we have to do weird shenanigans with library linking and stuff
|
|
# Or just add a CPMUtil thing to propagate packages
|
|
|
|
# Explicitly declare this option here to propagate to the oaknut CPM call
|
|
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
|
|
|
# Dynarmic has cmake_minimum_required(3.12) and we may want to override
|
|
# some of its variables, which is only possible in 3.13+
|
|
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
|
|
|
# Disable tests/tools in all externals supporting the standard option name
|
|
set(BUILD_TESTING OFF)
|
|
|
|
# Build only static externals
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
|
|
# Skip install rules for all externals
|
|
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON)
|
|
|
|
# Xbyak
|
|
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
|
AddJsonPackage(xbyak)
|
|
endif()
|
|
|
|
# enet
|
|
AddJsonPackage(enet)
|
|
|
|
if (enet_ADDED)
|
|
target_include_directories(enet INTERFACE ${enet_SOURCE_DIR}/include)
|
|
endif()
|
|
|
|
if (NOT TARGET enet::enet)
|
|
add_library(enet::enet ALIAS enet)
|
|
endif()
|
|
|
|
# stb
|
|
add_library(stb stb/stb_dxt.cpp)
|
|
target_include_directories(stb PUBLIC ./stb)
|
|
|
|
if (NOT TARGET stb::headers)
|
|
add_library(stb::headers ALIAS stb)
|
|
endif()
|
|
|
|
# ItaniumDemangle (Windows only)
|
|
if (WIN32 AND NOT TARGET LLVM::Demangle)
|
|
add_library(demangle demangle/ItaniumDemangle.cpp)
|
|
target_include_directories(demangle PUBLIC ./demangle)
|
|
if (NOT MSVC)
|
|
target_compile_options(demangle PRIVATE -Wno-deprecated-declarations) # std::is_pod
|
|
endif()
|
|
add_library(LLVM::Demangle ALIAS demangle)
|
|
endif()
|
|
|
|
# httplib
|
|
if (IOS)
|
|
set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
|
|
endif()
|
|
AddJsonPackage(httplib)
|
|
|
|
if (YUZU_STATIC_ROOM)
|
|
return()
|
|
endif()
|
|
|
|
# Oaknut
|
|
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
|
AddJsonPackage(oaknut)
|
|
endif()
|
|
|
|
# biscuit
|
|
if (ARCHITECTURE_riscv64)
|
|
AddJsonPackage(biscuit)
|
|
endif()
|
|
|
|
# Lagoon
|
|
if (ARCHITECTURE_loongarch64)
|
|
AddJsonPackage(lagoon)
|
|
endif()
|
|
|
|
# Vulkan stuff
|
|
AddDependentPackages(vulkan-headers vulkan-utility-libraries)
|
|
|
|
# frozen
|
|
AddJsonPackage(frozen)
|
|
|
|
# DiscordRPC
|
|
if (USE_DISCORD_PRESENCE)
|
|
if (ARCHITECTURE_arm64)
|
|
add_compile_definitions(RAPIDJSON_ENDIAN=RAPIDJSON_LITTLEENDIAN)
|
|
endif()
|
|
|
|
AddJsonPackage(discord-rpc)
|
|
|
|
if (DiscordRPC_ADDED)
|
|
target_include_directories(discord-rpc INTERFACE ${DiscordRPC_SOURCE_DIR}/include)
|
|
add_library(DiscordRPC::discord-rpc ALIAS discord-rpc)
|
|
endif()
|
|
endif()
|
|
|
|
# SimpleIni
|
|
AddJsonPackage(simpleini)
|
|
|
|
# Most linux distros don't package cubeb, so enable regardless of cpm settings
|
|
if(ENABLE_CUBEB)
|
|
AddJsonPackage(cubeb)
|
|
|
|
if (cubeb_ADDED)
|
|
if (NOT MSVC)
|
|
if (TARGET speex)
|
|
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
|
|
$<$<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
|
|
/wd4456
|
|
/wd4458
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT TARGET cubeb::cubeb)
|
|
add_library(cubeb::cubeb ALIAS cubeb)
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT YUZU_USE_BUNDLED_SDL3)
|
|
if (NOT WIN32)
|
|
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
|
|
# Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095)
|
|
# Yuzu-cmd also needs: Video (depends on Loadso/Dlopen)
|
|
# CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809)
|
|
set(SDL_UNUSED_SUBSYSTEMS
|
|
File Filesystem
|
|
Locale Power Render)
|
|
foreach(_SUB ${SDL_UNUSED_SUBSYSTEMS})
|
|
string(TOUPPER ${_SUB} _OPT)
|
|
set(SDL_${_OPT} OFF)
|
|
endforeach()
|
|
|
|
set(HIDAPI ON)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
set(SDL_FILE ON)
|
|
endif()
|
|
|
|
AddJsonPackage(sdl3)
|
|
else()
|
|
message(STATUS "Using bundled SDL3")
|
|
AddJsonPackage(sdl3-ci)
|
|
|
|
# copy sdl java sources for consumption by Gradle
|
|
if (ANDROID)
|
|
file(COPY ${SDL3_SOURCE_DIR}/java DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/generated/sdl)
|
|
endif()
|
|
endif()
|
|
|
|
# Normalize SDL3 link target across package variants.
|
|
# Some SDL3 packages export only SDL3::SDL3-shared or SDL3::SDL3-static.
|
|
if (NOT TARGET SDL3::SDL3)
|
|
if (TARGET SDL3::SDL3-shared)
|
|
add_library(SDL3::SDL3 ALIAS SDL3::SDL3-shared)
|
|
elseif (TARGET SDL3::SDL3-static)
|
|
add_library(SDL3::SDL3 ALIAS SDL3::SDL3-static)
|
|
else()
|
|
message(FATAL_ERROR "SDL3 package found, but no usable SDL3 target was exported")
|
|
endif()
|
|
endif()
|
|
|
|
# SPIRV Headers
|
|
AddJsonPackage(spirv-headers)
|
|
|
|
# Sirit
|
|
if (YUZU_USE_BUNDLED_SIRIT)
|
|
AddJsonPackage(sirit-ci)
|
|
else()
|
|
AddJsonPackage(sirit)
|
|
if(MSVC AND CXX_CLANG)
|
|
target_compile_options(siritobj PRIVATE
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error=unused-command-line-argument>
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# reshadefx
|
|
if (ENABLE_RESHADE)
|
|
AddJsonPackage(NAME reshade DOWNLOAD_ONLY)
|
|
|
|
set(RESHADEFX_SHIM_DIR ${CMAKE_CURRENT_BINARY_DIR}/reshadefx_shim)
|
|
file(WRITE ${RESHADEFX_SHIM_DIR}/spirv.hpp "#include <spirv/unified1/spirv.hpp>\n")
|
|
file(WRITE ${RESHADEFX_SHIM_DIR}/GLSL.std.450.h "#include <spirv/unified1/GLSL.std.450.h>\n")
|
|
if (APPLE)
|
|
file(WRITE ${RESHADEFX_SHIM_DIR}/malloc.h "#include <stdlib.h>\n#include <alloca.h>\n")
|
|
endif()
|
|
|
|
add_library(reshadefx STATIC
|
|
${reshade_SOURCE_DIR}/source/effect_codegen_spirv.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_expression.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_lexer.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_parser_exp.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_parser_stmt.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_preprocessor.cpp
|
|
${reshade_SOURCE_DIR}/source/effect_symbol_table.cpp
|
|
)
|
|
|
|
target_include_directories(reshadefx SYSTEM PUBLIC ${reshade_SOURCE_DIR}/source)
|
|
target_include_directories(reshadefx PRIVATE ${RESHADEFX_SHIM_DIR})
|
|
target_link_libraries(reshadefx PUBLIC SPIRV-Headers::SPIRV-Headers)
|
|
|
|
if (NOT MSVC)
|
|
target_compile_options(reshadefx PRIVATE -w -fno-char8_t)
|
|
else()
|
|
target_compile_options(reshadefx PRIVATE /w /Zc:char8_t-)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
if (NOT MSVC)
|
|
target_compile_options(reshadefx PRIVATE -include share.h)
|
|
else()
|
|
target_compile_options(reshadefx PRIVATE /FIshare.h)
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT TARGET reshadefx::reshadefx)
|
|
add_library(reshadefx::reshadefx ALIAS reshadefx)
|
|
endif()
|
|
endif()
|
|
|
|
# Catch2
|
|
if (YUZU_TESTS OR DYNARMIC_TESTS)
|
|
AddJsonPackage(catch2)
|
|
endif()
|
|
|
|
# getopt
|
|
if (MSVC)
|
|
add_subdirectory(getopt)
|
|
endif()
|
|
|
|
# Glad
|
|
add_subdirectory(glad)
|
|
|
|
# libusb
|
|
if (ENABLE_LIBUSB)
|
|
add_subdirectory(libusb)
|
|
endif()
|
|
|
|
# VMA
|
|
AddJsonPackage(vulkan-memory-allocator)
|
|
|
|
if (VulkanMemoryAllocator_ADDED)
|
|
if (CXX_CLANG)
|
|
target_compile_options(VulkanMemoryAllocator INTERFACE
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
|
|
)
|
|
elseif(MSVC)
|
|
target_compile_options(VulkanMemoryAllocator INTERFACE
|
|
/wd4189
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# cpp-jwt
|
|
if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER)
|
|
AddJsonPackage(cpp-jwt)
|
|
endif()
|
|
|
|
# FFMpeg
|
|
if (YUZU_USE_EXTERNAL_FFMPEG OR YUZU_USE_BUNDLED_FFMPEG)
|
|
add_subdirectory(ffmpeg)
|
|
|
|
set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE)
|
|
set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE)
|
|
set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE)
|
|
set(FFmpeg_LIBRARY_DIR "${FFmpeg_LIBRARY_DIR}" PARENT_SCOPE)
|
|
set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE)
|
|
|
|
message(STATUS "FFmpeg Libraries: ${FFmpeg_LIBRARIES}")
|
|
endif()
|
|
|
|
# TZDB (Time Zone Database)
|
|
add_subdirectory(nx_tzdb)
|
|
|
|
add_library(tz tz/tz/tz.cpp)
|
|
target_include_directories(tz PUBLIC ./tz)
|
|
|
|
add_library(bc_decoder bc_decoder/bc_decoder.cpp)
|
|
target_include_directories(bc_decoder PUBLIC ./bc_decoder)
|
|
|
|
if (NOT TARGET RenderDoc::API)
|
|
add_library(renderdoc INTERFACE)
|
|
target_include_directories(renderdoc SYSTEM INTERFACE ./renderdoc)
|
|
add_library(RenderDoc::API ALIAS renderdoc)
|
|
endif()
|
|
|
|
if (ANDROID AND ARCHITECTURE_arm64)
|
|
AddJsonPackage(libadrenotools)
|
|
endif()
|
|
|
|
AddJsonPackage(gamemode)
|
|
|
|
if (gamemode_ADDED)
|
|
add_library(gamemode INTERFACE)
|
|
target_include_directories(gamemode INTERFACE ${gamemode_SOURCE_DIR}/lib)
|
|
add_library(gamemode::headers ALIAS gamemode)
|
|
endif()
|
|
|
|
# Breakpad
|
|
# TODO(crueter): Breakpad needs additional fetches
|
|
# https://github.com/google/breakpad/blob/main/DEPS
|
|
# https://github.com/microsoft/vcpkg/blob/master/ports/breakpad/CMakeLists.txt
|
|
if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client)
|
|
set(BREAKPAD_WIN32_DEFINES
|
|
NOMINMAX
|
|
UNICODE
|
|
WIN32_LEAN_AND_MEAN
|
|
_CRT_SECURE_NO_WARNINGS
|
|
_CRT_SECURE_NO_DEPRECATE
|
|
_CRT_NONSTDC_NO_DEPRECATE
|
|
)
|
|
|
|
# TODO
|
|
AddPackage(
|
|
NAME breakpad
|
|
URL "google/breakpad"
|
|
SHA f80f288803
|
|
HASH 4a87ee88cea99bd633d52a5b00135a649f1475e3b65db325a6df9c804ab82b054ad7e62419b35f6e22cc5dfbbb569214041d7ad5d10fab10106e700bb5050e1d
|
|
DOWNLOAD_ONLY YES
|
|
)
|
|
|
|
# libbreakpad
|
|
add_library(libbreakpad STATIC)
|
|
file(GLOB_RECURSE LIBBREAKPAD_SOURCES ${breakpad_SOURCE_DIR}/src/processor/*.cc)
|
|
file(GLOB_RECURSE LIBDISASM_SOURCES ${breakpad_SOURCE_DIR}/src/third_party/libdisasm/*.c)
|
|
list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "_unittest|_selftest|synth_minidump|/tests|/testdata|/solaris|microdump_stackwalk|minidump_dump|minidump_stackwalk")
|
|
if (WIN32)
|
|
list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/linux|/mac|/android")
|
|
target_compile_definitions(libbreakpad PRIVATE ${BREAKPAD_WIN32_DEFINES})
|
|
target_include_directories(libbreakpad PRIVATE "${CMAKE_GENERATOR_INSTANCE}/DIA SDK/include")
|
|
elseif (APPLE)
|
|
list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/linux|/windows|/android")
|
|
else()
|
|
list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/mac|/windows|/android")
|
|
endif()
|
|
target_sources(libbreakpad PRIVATE ${LIBBREAKPAD_SOURCES} ${LIBDISASM_SOURCES})
|
|
target_include_directories(libbreakpad
|
|
PUBLIC
|
|
${breakpad_SOURCE_DIR}/src
|
|
${breakpad_SOURCE_DIR}/src/third_party/libdisasm
|
|
)
|
|
|
|
# libbreakpad_client
|
|
add_library(libbreakpad_client STATIC)
|
|
file(GLOB LIBBREAKPAD_COMMON_SOURCES ${breakpad_SOURCE_DIR}/src/common/*.cc ${breakpad_SOURCE_DIR}/src/common/*.c ${breakpad_SOURCE_DIR}/src/client/*.cc)
|
|
|
|
if (WIN32)
|
|
file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/client/windows/*.cc ${breakpad_SOURCE_DIR}/src/common/windows/*.cc)
|
|
list(FILTER LIBBREAKPAD_COMMON_SOURCES EXCLUDE REGEX "language.cc|path_helper.cc|stabs_to_module.cc|stabs_reader.cc|minidump_file_writer.cc")
|
|
target_include_directories(libbreakpad_client PRIVATE "${CMAKE_GENERATOR_INSTANCE}/DIA SDK/include")
|
|
target_compile_definitions(libbreakpad_client PRIVATE ${BREAKPAD_WIN32_DEFINES})
|
|
elseif (APPLE)
|
|
target_compile_definitions(libbreakpad_client PRIVATE HAVE_MACH_O_NLIST_H)
|
|
file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/client/mac/*.cc ${breakpad_SOURCE_DIR}/src/common/mac/*.cc)
|
|
list(APPEND LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/common/mac/MachIPC.mm)
|
|
else()
|
|
target_compile_definitions(libbreakpad_client PUBLIC HAVE_A_OUT_H)
|
|
file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/client/linux/*.cc ${breakpad_SOURCE_DIR}/src/common/linux/*.cc)
|
|
endif()
|
|
list(APPEND LIBBREAKPAD_CLIENT_SOURCES ${LIBBREAKPAD_COMMON_SOURCES})
|
|
list(FILTER LIBBREAKPAD_CLIENT_SOURCES EXCLUDE REGEX "/sender|/tests|/unittests|/testcases|_unittest|_test")
|
|
target_sources(libbreakpad_client PRIVATE ${LIBBREAKPAD_CLIENT_SOURCES})
|
|
target_include_directories(libbreakpad_client PRIVATE ${breakpad_SOURCE_DIR}/src)
|
|
|
|
if (WIN32)
|
|
target_link_libraries(libbreakpad_client PRIVATE wininet.lib)
|
|
elseif (APPLE)
|
|
find_library(CoreFoundation_FRAMEWORK CoreFoundation)
|
|
target_link_libraries(libbreakpad_client PRIVATE ${CoreFoundation_FRAMEWORK})
|
|
else()
|
|
find_library(PTHREAD_LIBRARIES pthread)
|
|
target_compile_definitions(libbreakpad_client PRIVATE HAVE_GETCONTEXT=1)
|
|
if (PTHREAD_LIBRARIES)
|
|
target_link_libraries(libbreakpad_client PRIVATE ${PTHREAD_LIBRARIES})
|
|
endif()
|
|
endif()
|
|
|
|
# Host tools for symbol processing
|
|
if (LINUX)
|
|
find_package(ZLIB REQUIRED)
|
|
|
|
add_executable(minidump_stackwalk ${breakpad_SOURCE_DIR}/src/processor/minidump_stackwalk.cc)
|
|
target_link_libraries(minidump_stackwalk PRIVATE libbreakpad libbreakpad_client)
|
|
|
|
add_executable(dump_syms
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf_cfi_to_module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf_cu_to_module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf_line_to_module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf_range_list_handler.cc
|
|
${breakpad_SOURCE_DIR}/src/common/language.cc
|
|
${breakpad_SOURCE_DIR}/src/common/module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/path_helper.cc
|
|
${breakpad_SOURCE_DIR}/src/common/stabs_reader.cc
|
|
${breakpad_SOURCE_DIR}/src/common/stabs_to_module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf/bytereader.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf/dwarf2diehandler.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf/dwarf2reader.cc
|
|
${breakpad_SOURCE_DIR}/src/common/dwarf/elf_reader.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/crc32.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/dump_symbols.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/elf_symbols_to_module.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/elfutils.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/file_id.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/linux_libc_support.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/memory_mapped_file.cc
|
|
${breakpad_SOURCE_DIR}/src/common/linux/safe_readlink.cc
|
|
${breakpad_SOURCE_DIR}/src/tools/linux/dump_syms/dump_syms.cc)
|
|
target_link_libraries(dump_syms PRIVATE libbreakpad_client)
|
|
endif()
|
|
endif()
|
|
|
|
if (APPLE)
|
|
# moltenvk
|
|
if (NOT YUZU_USE_BUNDLED_MOLTENVK)
|
|
find_library(MOLTENVK_LIBRARY MoltenVK)
|
|
endif()
|
|
|
|
# TODO: kosmickrisp?
|
|
if (NOT MOLTENVK_LIBRARY OR YUZU_USE_BUNDLED_MOLTENVK)
|
|
AddJsonPackage(moltenvk)
|
|
|
|
set(MOLTENVK_LIBRARY "${moltenvk_SOURCE_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" CACHE STRING "" FORCE)
|
|
endif()
|
|
endif()
|