CMake reorg, use my updated modules, CI vvl
Some checks failed
eden-license / license-header (pull_request) Failing after 24s
Some checks failed
eden-license / license-header (pull_request) Failing after 24s
Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
parent
d086d75cab
commit
21302cbc3e
13 changed files with 174 additions and 427 deletions
|
@ -31,7 +31,6 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
|
||||||
|
|
||||||
# NB: this does not account for SPARC
|
# NB: this does not account for SPARC
|
||||||
# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails
|
# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails
|
||||||
|
@ -64,36 +63,7 @@ endif()
|
||||||
# Detect current compilation architecture and create standard definitions
|
# Detect current compilation architecture and create standard definitions
|
||||||
# =======================================================================
|
# =======================================================================
|
||||||
|
|
||||||
include(CheckSymbolExists)
|
include(DetectArchitecture)
|
||||||
function(detect_architecture symbol arch)
|
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
|
||||||
set(CMAKE_REQUIRED_QUIET 1)
|
|
||||||
check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch})
|
|
||||||
unset(CMAKE_REQUIRED_QUIET)
|
|
||||||
|
|
||||||
# The output variable needs to be unique across invocations otherwise
|
|
||||||
# CMake's crazy scope rules will keep it defined
|
|
||||||
if (ARCHITECTURE_${arch})
|
|
||||||
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
|
||||||
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
|
|
||||||
add_definitions(-DARCHITECTURE_${arch}=1)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
if (NOT ENABLE_GENERIC)
|
|
||||||
if (MSVC)
|
|
||||||
detect_architecture("_M_AMD64" x86_64)
|
|
||||||
detect_architecture("_M_IX86" x86)
|
|
||||||
detect_architecture("_M_ARM" arm)
|
|
||||||
detect_architecture("_M_ARM64" arm64)
|
|
||||||
else()
|
|
||||||
detect_architecture("__x86_64__" x86_64)
|
|
||||||
detect_architecture("__i386__" x86)
|
|
||||||
detect_architecture("__arm__" arm)
|
|
||||||
detect_architecture("__aarch64__" arm64)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
if (NOT DEFINED ARCHITECTURE)
|
||||||
set(ARCHITECTURE "GENERIC")
|
set(ARCHITECTURE "GENERIC")
|
||||||
|
@ -101,7 +71,7 @@ if (NOT DEFINED ARCHITECTURE)
|
||||||
add_definitions(-DARCHITECTURE_GENERIC=1)
|
add_definitions(-DARCHITECTURE_GENERIC=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "Target architecture: ${ARCHITECTURE}")
|
message(STATUS "Target architecture(s): ${ARCHITECTURE}")
|
||||||
|
|
||||||
if (MSVC AND ARCHITECTURE_x86)
|
if (MSVC AND ARCHITECTURE_x86)
|
||||||
message(FATAL_ERROR "Attempting to build with the x86 environment is not supported. \
|
message(FATAL_ERROR "Attempting to build with the x86 environment is not supported. \
|
||||||
|
@ -134,7 +104,8 @@ endif()
|
||||||
|
|
||||||
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
||||||
|
|
||||||
include(DownloadExternals)
|
include(DownloadQt)
|
||||||
|
include(CPMUtil)
|
||||||
include(CMakeDependentOption)
|
include(CMakeDependentOption)
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
|
||||||
|
@ -198,6 +169,7 @@ if (YUZU_USE_PRECOMPILED_HEADERS)
|
||||||
message(STATUS "Using Precompiled Headers.")
|
message(STATUS "Using Precompiled Headers.")
|
||||||
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
|
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
||||||
if(YUZU_ENABLE_LTO)
|
if(YUZU_ENABLE_LTO)
|
||||||
include(CheckIPOSupported)
|
include(CheckIPOSupported)
|
||||||
|
@ -208,8 +180,10 @@ if(YUZU_ENABLE_LTO)
|
||||||
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO})
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
option(USE_CCACHE "Use ccache for compilation" OFF)
|
||||||
set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary")
|
set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary")
|
||||||
|
|
||||||
if(USE_CCACHE)
|
if(USE_CCACHE)
|
||||||
find_program(CCACHE_BINARY ${CCACHE_PATH})
|
find_program(CCACHE_BINARY ${CCACHE_PATH})
|
||||||
if(CCACHE_BINARY)
|
if(CCACHE_BINARY)
|
||||||
|
@ -264,29 +238,14 @@ if (ENABLE_OPENSSL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
||||||
# TODO(crueter): CPM this
|
AddJsonPackage(vulkan-validation-layers)
|
||||||
set(vvl_version "1.4.321.0")
|
|
||||||
set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip")
|
|
||||||
if (NOT EXISTS "${vvl_zip_file}")
|
|
||||||
# Download and extract validation layer release to externals directory
|
|
||||||
set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download")
|
|
||||||
file(DOWNLOAD "${vvl_base_url}/vulkan-sdk-${vvl_version}/android-binaries-${vvl_version}.zip"
|
|
||||||
"${vvl_zip_file}" SHOW_PROGRESS)
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Copy the arm64 binary to src/android/app/main/jniLibs
|
# Copy the arm64 binary to src/android/app/main/jniLibs
|
||||||
set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/")
|
set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/")
|
||||||
file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so"
|
file(COPY "${VVL_SOURCE_DIR}/arm64-v8a/libVkLayer_khronos_validation.so"
|
||||||
DESTINATION "${vvl_lib_path}")
|
DESTINATION "${vvl_lib_path}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID)
|
|
||||||
set(CMAKE_SKIP_INSTALL_RULES ON)
|
|
||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Default to a Release build
|
# Default to a Release build
|
||||||
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
||||||
|
@ -399,8 +358,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||||
# System imported libraries
|
# System imported libraries
|
||||||
# =======================================================================
|
# =======================================================================
|
||||||
|
|
||||||
include(CPMUtil)
|
|
||||||
|
|
||||||
# openssl funniness
|
# openssl funniness
|
||||||
if (ENABLE_OPENSSL)
|
if (ENABLE_OPENSSL)
|
||||||
if (YUZU_USE_BUNDLED_OPENSSL)
|
if (YUZU_USE_BUNDLED_OPENSSL)
|
||||||
|
@ -686,17 +643,17 @@ if(ENABLE_QT)
|
||||||
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
|
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32 AND YUZU_CRASH_DUMPS)
|
# if (WIN32 AND YUZU_CRASH_DUMPS)
|
||||||
set(BREAKPAD_VER "breakpad-c89f9dd")
|
# set(BREAKPAD_VER "breakpad-c89f9dd")
|
||||||
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
# download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
||||||
|
|
||||||
set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
# set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
||||||
set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
# set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
||||||
|
|
||||||
add_library(libbreakpad_client INTERFACE IMPORTED)
|
# add_library(libbreakpad_client INTERFACE IMPORTED)
|
||||||
target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}")
|
# target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}")
|
||||||
target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}")
|
# target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}")
|
||||||
endif()
|
# endif()
|
||||||
|
|
||||||
# Prefer the -pthread flag on Linux.
|
# Prefer the -pthread flag on Linux.
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
|
|
@ -1,22 +1,56 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
## DetectArchitecture ##
|
||||||
|
#[[
|
||||||
|
Does exactly as it sounds. Detects common symbols defined for different architectures and
|
||||||
|
adds compile definitions thereof. Namely:
|
||||||
|
- arm64
|
||||||
|
- arm
|
||||||
|
- x86_64
|
||||||
|
- x86
|
||||||
|
- ia64
|
||||||
|
- mips
|
||||||
|
- ppc64
|
||||||
|
- ppc
|
||||||
|
- riscv
|
||||||
|
- wasm
|
||||||
|
|
||||||
|
This file is based off of Yuzu and Dynarmic.
|
||||||
|
TODO: add SPARC
|
||||||
|
]]
|
||||||
include(CheckSymbolExists)
|
include(CheckSymbolExists)
|
||||||
|
|
||||||
|
# multiarch builds are a special case and also very difficult
|
||||||
|
# this is what I have for now, but it's not ideal
|
||||||
|
|
||||||
|
# Do note that situations where multiple architectures are defined
|
||||||
|
# should NOT be too dependent on the architecture
|
||||||
|
# otherwise, you may end up with duplicate code
|
||||||
if (CMAKE_OSX_ARCHITECTURES)
|
if (CMAKE_OSX_ARCHITECTURES)
|
||||||
set(DYNARMIC_MULTIARCH_BUILD 1)
|
set(MULTIARCH_BUILD 1)
|
||||||
set(ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}")
|
set(ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}")
|
||||||
|
|
||||||
|
# hope and pray the architecture names match
|
||||||
|
foreach(ARCH IN ${CMAKE_OSX_ARCHITECTURES})
|
||||||
|
set(ARCHITECTURE_${ARCH} 1 PARENT_SCOPE)
|
||||||
|
add_definitions(-DARCHITECTURE_${ARCH}=1)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(detect_architecture symbol arch)
|
function(detect_architecture symbol arch)
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
if (NOT DEFINED ARCHITECTURE)
|
||||||
set(CMAKE_REQUIRED_QUIET YES)
|
set(CMAKE_REQUIRED_QUIET 1)
|
||||||
check_symbol_exists("${symbol}" "" DETECT_ARCHITECTURE_${arch})
|
check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch})
|
||||||
unset(CMAKE_REQUIRED_QUIET)
|
unset(CMAKE_REQUIRED_QUIET)
|
||||||
|
|
||||||
if (DETECT_ARCHITECTURE_${arch})
|
if (ARCHITECTURE_${arch})
|
||||||
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
||||||
|
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
|
||||||
|
add_definitions(-DARCHITECTURE_${arch}=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
unset(DETECT_ARCHITECTURE_${arch} CACHE)
|
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
|
@ -1,62 +1,6 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# This function downloads a binary library package from our external repo.
|
|
||||||
# Params:
|
|
||||||
# remote_path: path to the file to download, relative to the remote repository root
|
|
||||||
# prefix_var: name of a variable which will be set with the path to the extracted contents
|
|
||||||
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
function(download_bundled_external remote_path lib_name cpm_key prefix_var version)
|
|
||||||
set(package_base_url "https://github.com/eden-emulator/")
|
|
||||||
set(package_repo "no_platform")
|
|
||||||
set(package_extension "no_platform")
|
|
||||||
set(CACHE_KEY "")
|
|
||||||
|
|
||||||
# TODO(crueter): Need to convert ffmpeg to a CI.
|
|
||||||
if (WIN32 OR FORCE_WIN_ARCHIVES)
|
|
||||||
if (ARCHITECTURE_arm64)
|
|
||||||
set(CACHE_KEY "windows")
|
|
||||||
set(package_repo "ext-windows-arm64-bin/raw/master/")
|
|
||||||
set(package_extension ".zip")
|
|
||||||
elseif(ARCHITECTURE_x86_64)
|
|
||||||
set(CACHE_KEY "windows")
|
|
||||||
set(package_repo "ext-windows-bin/raw/master/")
|
|
||||||
set(package_extension ".7z")
|
|
||||||
endif()
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
||||||
set(CACHE_KEY "linux")
|
|
||||||
set(package_repo "ext-linux-bin/raw/master/")
|
|
||||||
set(package_extension ".tar.xz")
|
|
||||||
elseif (ANDROID)
|
|
||||||
set(CACHE_KEY "android")
|
|
||||||
set(package_repo "ext-android-bin/raw/master/")
|
|
||||||
set(package_extension ".tar.xz")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "No package available for this platform")
|
|
||||||
endif()
|
|
||||||
string(CONCAT package_url "${package_base_url}" "${package_repo}")
|
|
||||||
string(CONCAT full_url "${package_url}" "${remote_path}" "${lib_name}" "${package_extension}")
|
|
||||||
message(STATUS "Resolved bundled URL: ${full_url}")
|
|
||||||
|
|
||||||
# TODO(crueter): DELETE THIS ENTIRELY, GLORY BE TO THE CI!
|
|
||||||
AddPackage(
|
|
||||||
NAME ${cpm_key}
|
|
||||||
VERSION ${version}
|
|
||||||
URL ${full_url}
|
|
||||||
DOWNLOAD_ONLY YES
|
|
||||||
KEY ${CACHE_KEY}
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
# TODO(crueter): hash
|
|
||||||
)
|
|
||||||
|
|
||||||
if (DEFINED ${cpm_key}_SOURCE_DIR)
|
|
||||||
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
|
||||||
message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "AddPackage did not set ${cpm_key}_SOURCE_DIR")
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Determine installation parameters for OS, architecture, and compiler
|
# Determine installation parameters for OS, architecture, and compiler
|
||||||
function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out)
|
function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
@ -237,69 +181,3 @@ function(download_qt target)
|
||||||
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
||||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(download_moltenvk platform version)
|
|
||||||
if(NOT version)
|
|
||||||
message(FATAL_ERROR "download_moltenvk: version argument is required")
|
|
||||||
endif()
|
|
||||||
if(NOT platform)
|
|
||||||
message(FATAL_ERROR "download_moltenvk: platform argument is required")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK")
|
|
||||||
set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar")
|
|
||||||
|
|
||||||
message(STATUS "Using bundled MoltenVK")
|
|
||||||
|
|
||||||
if(NOT EXISTS "${MOLTENVK_DIR}")
|
|
||||||
if(NOT EXISTS "${MOLTENVK_TAR}")
|
|
||||||
message(STATUS "Downloading MoltenVK ${version}")
|
|
||||||
file(DOWNLOAD "https://github.com/KhronosGroup/MoltenVK/releases/download/${version}/MoltenVK-${platform}.tar"
|
|
||||||
"${MOLTENVK_TAR}" SHOW_PROGRESS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Extracting MoltenVK tarball at ${MOLTENVK_TAR}")
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals"
|
|
||||||
RESULT_VARIABLE tar_res
|
|
||||||
ERROR_VARIABLE tar_err
|
|
||||||
)
|
|
||||||
if(NOT tar_res EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Extracting MoltenVK failed: ${tar_err}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TODO: is this portable?
|
|
||||||
set(MVK_STATIC "${MOLTENVK_DIR}/MoltenVK/static/MoltenVK.xcframework/macos-arm64_x86_64/libMoltenVK.a")
|
|
||||||
set(MVK_DYLIB "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}/libMoltenVK.dylib")
|
|
||||||
|
|
||||||
# prefer static lib if it exists for smaller executable size
|
|
||||||
if (EXISTS "${MVK_STATIC}")
|
|
||||||
# Using static MoltenVK requires linking to a few extra libraries
|
|
||||||
find_library(IOSURFACE_LIBRARY IOSurface)
|
|
||||||
if(NOT IOSURFACE_LIBRARY)
|
|
||||||
message(FATAL_ERROR "IOSurface not found, did you install XCode tools?")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library(QUARTZCORE_LIBRARY QuartzCore)
|
|
||||||
if(NOT QUARTZCORE_LIBRARY)
|
|
||||||
message(FATAL_ERROR "QuartzCore not found, did you install XCode tools?")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(moltenvk STATIC IMPORTED)
|
|
||||||
set_target_properties(moltenvk PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${MVK_STATIC}"
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(moltenvk INTERFACE ${IOSURFACE_LIBRARY} ${QUARTZCORE_LIBRARY})
|
|
||||||
else()
|
|
||||||
add_library(moltenvk SHARED IMPORTED)
|
|
||||||
set_target_properties(moltenvk PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${MVK_DYLIB}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(MoltenVK::MoltenVK ALIAS moltenvk)
|
|
||||||
endfunction()
|
|
|
@ -1,11 +1,41 @@
|
||||||
# SPDX-FileCopyrightText: 2025 crueter
|
# SPDX-FileCopyrightText: 2025 crueter
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
include(GetGitRevisionDescription)
|
# loosely based on Ryan Pavlik's work
|
||||||
|
find_package(Git QUIET)
|
||||||
|
|
||||||
|
# commit: git rev-parse HEAD
|
||||||
|
# tag: git describe --tags --abbrev=0
|
||||||
|
# branch: git rev-parse --abbrev-ref=HEAD
|
||||||
|
|
||||||
|
function(run_git_command variable)
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
set(${variable} "GIT-NOTFOUND" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND
|
||||||
|
"${GIT_EXECUTABLE}"
|
||||||
|
${ARGN}
|
||||||
|
WORKING_DIRECTORY
|
||||||
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE
|
||||||
|
res
|
||||||
|
OUTPUT_VARIABLE
|
||||||
|
out
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
if(NOT res EQUAL 0)
|
||||||
|
set(out "${out}-${res}-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${variable} "${out}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function(trim var)
|
function(trim var)
|
||||||
string(REGEX REPLACE "\n" "" new "${${var}}")
|
string(REGEX REPLACE "\n" "" new "${${var}}")
|
||||||
set(${var} ${new} PARENT_SCOPE)
|
set(${var} ${new} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG)
|
set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG)
|
||||||
|
@ -14,36 +44,37 @@ set(COMMIT_FILE ${CMAKE_SOURCE_DIR}/GIT-COMMIT)
|
||||||
set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE)
|
set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE)
|
||||||
|
|
||||||
if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE})
|
if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE})
|
||||||
file(READ ${REF_FILE} GIT_REFSPEC)
|
file(READ ${REF_FILE} GIT_REFSPEC)
|
||||||
file(READ ${COMMIT_FILE} GIT_COMMIT)
|
file(READ ${COMMIT_FILE} GIT_COMMIT)
|
||||||
else()
|
else()
|
||||||
get_git_head_revision(GIT_REFSPEC GIT_COMMIT)
|
run_git_command(GIT_COMMIT rev-parse HEAD)
|
||||||
git_branch_name(GIT_REFSPEC)
|
run_git_command(GIT_REFSPEC rev-parse --abbrev-ref HEAD)
|
||||||
if (GIT_REFSPEC MATCHES "NOTFOUND")
|
|
||||||
set(GIT_REFSPEC 1.0.0)
|
if (GIT_REFSPEC MATCHES "NOTFOUND")
|
||||||
set(GIT_COMMIT stable)
|
set(GIT_REFSPEC 1.0.0)
|
||||||
endif()
|
set(GIT_COMMIT stable)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (EXISTS ${TAG_FILE})
|
if (EXISTS ${TAG_FILE})
|
||||||
file(READ ${TAG_FILE} GIT_TAG)
|
file(READ ${TAG_FILE} GIT_TAG)
|
||||||
else()
|
else()
|
||||||
git_describe(GIT_TAG --tags --abbrev=0)
|
run_git_command(GIT_TAG describe --tags --abbrev=0)
|
||||||
if (GIT_TAG MATCHES "NOTFOUND")
|
if (GIT_TAG MATCHES "NOTFOUND")
|
||||||
set(GIT_TAG "${GIT_REFSPEC}")
|
set(GIT_TAG "${GIT_REFSPEC}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (EXISTS ${RELEASE_FILE})
|
if (EXISTS ${RELEASE_FILE})
|
||||||
file(READ ${RELEASE_FILE} GIT_RELEASE)
|
file(READ ${RELEASE_FILE} GIT_RELEASE)
|
||||||
trim(GIT_RELEASE)
|
trim(GIT_RELEASE)
|
||||||
message(STATUS "Git release: ${GIT_RELEASE}")
|
message(STATUS "[GetSCMRev] Git release: ${GIT_RELEASE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
trim(GIT_REFSPEC)
|
trim(GIT_REFSPEC)
|
||||||
trim(GIT_COMMIT)
|
trim(GIT_COMMIT)
|
||||||
trim(GIT_TAG)
|
trim(GIT_TAG)
|
||||||
|
|
||||||
message(STATUS "Git commit: ${GIT_COMMIT}")
|
message(STATUS "[GetSCMRev] Git commit: ${GIT_COMMIT}")
|
||||||
message(STATUS "Git tag: ${GIT_TAG}")
|
message(STATUS "[GetSCMRev] Git tag: ${GIT_TAG}")
|
||||||
message(STATUS "Git refspec: ${GIT_REFSPEC}")
|
message(STATUS "[GetSCMRev] Git refspec: ${GIT_REFSPEC}")
|
||||||
|
|
|
@ -94,5 +94,13 @@
|
||||||
"version": "20250828",
|
"version": "20250828",
|
||||||
"artifact": "clang-rt-builtins.tar.zst",
|
"artifact": "clang-rt-builtins.tar.zst",
|
||||||
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
"hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181"
|
||||||
|
},
|
||||||
|
"vulkan-validation-layers": {
|
||||||
|
"package": "VVL",
|
||||||
|
"repo": "KhronosGroup/Vulkan-ValidationLayers",
|
||||||
|
"tag": "vulkan-sdk-%VERSION%",
|
||||||
|
"git_version": "1.4.321.0",
|
||||||
|
"artifact": "android-binaries-%VERSION%.zip",
|
||||||
|
"hash": "0a977711101c8f82a9762cee919e05fc48968e41e9c93a6c006971d3b4e348707c98c6f9c865fa2b97eb12654906ee659f29867f40cf643eb5dca1e93d8af73d"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
40
externals/CMakeLists.txt
vendored
40
externals/CMakeLists.txt
vendored
|
@ -398,3 +398,43 @@ if (ARCHITECTURE_arm64 AND NOT TARGET sse2neon)
|
||||||
add_library(sse2neon INTERFACE)
|
add_library(sse2neon INTERFACE)
|
||||||
target_include_directories(sse2neon INTERFACE sse2neon)
|
target_include_directories(sse2neon INTERFACE sse2neon)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# MoltenVK
|
||||||
|
if (APPLE)
|
||||||
|
find_library(MOLTENVK_LIBRARY MoltenVK)
|
||||||
|
|
||||||
|
if (NOT MOLTENVK_LIBRARY OR YUZU_USE_BUNDLED_MOLTENVK)
|
||||||
|
message(STATUS "Using bundled MoltenVK")
|
||||||
|
|
||||||
|
# TODO: is this portable?
|
||||||
|
set(MVK_STATIC "${MOLTENVK_DIR}/MoltenVK/static/MoltenVK.xcframework/macos-arm64_x86_64/libMoltenVK.a")
|
||||||
|
set(MVK_DYLIB "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}/libMoltenVK.dylib")
|
||||||
|
|
||||||
|
# prefer static lib if it exists for smaller executable size
|
||||||
|
if (EXISTS "${MVK_STATIC}")
|
||||||
|
# Using static MoltenVK requires linking to a few Apple frameworks
|
||||||
|
find_library(IOSURFACE_LIBRARY IOSurface REQUIRED)
|
||||||
|
find_library(QUARTZCORE_LIBRARY QuartzCore REQUIRED)
|
||||||
|
|
||||||
|
add_library(MoltenVK::MoltenVK STATIC IMPORTED)
|
||||||
|
set_target_properties(MoltenVK::MoltenVK PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${MVK_STATIC}"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(MoltenVK::MoltenVK INTERFACE ${IOSURFACE_LIBRARY} ${QUARTZCORE_LIBRARY})
|
||||||
|
else()
|
||||||
|
add_library(MoltenVK::MoltenVK SHARED IMPORTED)
|
||||||
|
set_target_properties(MoltenVK::MoltenVK PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${MVK_DYLIB}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(yuzu PRIVATE MoltenVK::MoltenVK)
|
||||||
|
else()
|
||||||
|
message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.")
|
||||||
|
set_source_files_properties(${MOLTENVK_LIBRARY} PROPERTIES MACOSX_PACKAGE_LOCATION Frameworks
|
||||||
|
XCODE_FILE_ATTRIBUTES "CodeSignOnCopy")
|
||||||
|
|
||||||
|
target_sources(yuzu ${MOLTENVK_LIBRARY})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
|
@ -1,162 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2009 Iowa State University
|
|
||||||
# SPDX-FileContributor: Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
||||||
# SPDX-License-Identifier: BSL-1.0
|
|
||||||
|
|
||||||
# - Returns a version string from Git
|
|
||||||
#
|
|
||||||
# These functions force a re-configure on each git commit so that you can
|
|
||||||
# trust the values of the variables in your build system.
|
|
||||||
#
|
|
||||||
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
|
|
||||||
#
|
|
||||||
# Returns the refspec and sha hash of the current head revision
|
|
||||||
#
|
|
||||||
# git_describe(<var> [<additional arguments to git describe> ...])
|
|
||||||
#
|
|
||||||
# Returns the results of git describe on the source tree, and adjusting
|
|
||||||
# the output so that it tests false if an error occurs.
|
|
||||||
#
|
|
||||||
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
|
|
||||||
#
|
|
||||||
# Returns the results of git describe --exact-match on the source tree,
|
|
||||||
# and adjusting the output so that it tests false if there was no exact
|
|
||||||
# matching tag.
|
|
||||||
#
|
|
||||||
# Requires CMake 2.6 or newer (uses the 'function' command)
|
|
||||||
#
|
|
||||||
# Original Author:
|
|
||||||
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
||||||
# http://academic.cleardefinition.com
|
|
||||||
# Iowa State University HCI Graduate Program/VRAC
|
|
||||||
#
|
|
||||||
# Copyright Iowa State University 2009-2010.
|
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
|
||||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
# http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
if(__get_git_revision_description)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set(__get_git_revision_description YES)
|
|
||||||
|
|
||||||
# We must run the following at "include" time, not at function call time,
|
|
||||||
# to find the path to this module rather than the path to a calling list file
|
|
||||||
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
|
|
||||||
|
|
||||||
function(get_git_head_revision _refspecvar _hashvar)
|
|
||||||
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
||||||
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
|
|
||||||
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
|
|
||||||
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
|
|
||||||
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
|
|
||||||
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
|
|
||||||
# We have reached the root directory, we are not in git
|
|
||||||
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
|
||||||
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
|
|
||||||
endwhile()
|
|
||||||
# check if this is a submodule
|
|
||||||
if(NOT IS_DIRECTORY ${GIT_DIR})
|
|
||||||
file(READ ${GIT_DIR} submodule)
|
|
||||||
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
|
|
||||||
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
|
|
||||||
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
|
|
||||||
endif()
|
|
||||||
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
|
|
||||||
if(NOT EXISTS "${GIT_DATA}")
|
|
||||||
file(MAKE_DIRECTORY "${GIT_DATA}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${GIT_DIR}/HEAD")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set(HEAD_FILE "${GIT_DATA}/HEAD")
|
|
||||||
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
|
|
||||||
|
|
||||||
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
|
|
||||||
"${GIT_DATA}/grabRef.cmake"
|
|
||||||
@ONLY)
|
|
||||||
include("${GIT_DATA}/grabRef.cmake")
|
|
||||||
|
|
||||||
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
|
|
||||||
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(git_branch_name _var)
|
|
||||||
if(NOT GIT_FOUND)
|
|
||||||
find_package(Git QUIET)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT GIT_FOUND)
|
|
||||||
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(COMMAND
|
|
||||||
"${GIT_EXECUTABLE}"
|
|
||||||
rev-parse --abbrev-ref HEAD
|
|
||||||
WORKING_DIRECTORY
|
|
||||||
"${CMAKE_SOURCE_DIR}"
|
|
||||||
RESULT_VARIABLE
|
|
||||||
res
|
|
||||||
OUTPUT_VARIABLE
|
|
||||||
out
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
if(NOT res EQUAL 0)
|
|
||||||
set(out "${out}-${res}-NOTFOUND")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${_var} "${out}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(git_describe _var)
|
|
||||||
if(NOT GIT_FOUND)
|
|
||||||
find_package(Git QUIET)
|
|
||||||
endif()
|
|
||||||
#get_git_head_revision(refspec hash)
|
|
||||||
if(NOT GIT_FOUND)
|
|
||||||
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
#if(NOT hash)
|
|
||||||
# set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
|
|
||||||
# return()
|
|
||||||
#endif()
|
|
||||||
|
|
||||||
# TODO sanitize
|
|
||||||
#if((${ARGN}" MATCHES "&&") OR
|
|
||||||
# (ARGN MATCHES "||") OR
|
|
||||||
# (ARGN MATCHES "\\;"))
|
|
||||||
# message("Please report the following error to the project!")
|
|
||||||
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
|
|
||||||
#endif()
|
|
||||||
|
|
||||||
#message(STATUS "Arguments to execute_process: ${ARGN}")
|
|
||||||
|
|
||||||
execute_process(COMMAND
|
|
||||||
"${GIT_EXECUTABLE}"
|
|
||||||
describe
|
|
||||||
${hash}
|
|
||||||
${ARGN}
|
|
||||||
WORKING_DIRECTORY
|
|
||||||
"${CMAKE_SOURCE_DIR}"
|
|
||||||
RESULT_VARIABLE
|
|
||||||
res
|
|
||||||
OUTPUT_VARIABLE
|
|
||||||
out
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
if(NOT res EQUAL 0)
|
|
||||||
set(out "${out}-${res}-NOTFOUND")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${_var} "${out}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(git_get_exact_tag _var)
|
|
||||||
git_describe(out --exact-match ${ARGN})
|
|
||||||
set(${_var} "${out}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
|
@ -1,45 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2009 Iowa State University
|
|
||||||
# SPDX-FileContributor: Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
||||||
# SPDX-License-Identifier: BSL-1.0
|
|
||||||
|
|
||||||
# Internal file for GetGitRevisionDescription.cmake
|
|
||||||
#
|
|
||||||
# Requires CMake 2.6 or newer (uses the 'function' command)
|
|
||||||
#
|
|
||||||
# Original Author:
|
|
||||||
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
||||||
# http://academic.cleardefinition.com
|
|
||||||
# Iowa State University HCI Graduate Program/VRAC
|
|
||||||
#
|
|
||||||
# Copyright Iowa State University 2009-2010.
|
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
|
||||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
||||||
# http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
set(HEAD_HASH)
|
|
||||||
|
|
||||||
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
|
|
||||||
|
|
||||||
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
|
|
||||||
if(HEAD_CONTENTS MATCHES "ref")
|
|
||||||
# named branch
|
|
||||||
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
|
|
||||||
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
|
|
||||||
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
|
|
||||||
elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
|
|
||||||
configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
|
|
||||||
set(HEAD_HASH "${HEAD_REF}")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# detached HEAD
|
|
||||||
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT HEAD_HASH)
|
|
||||||
if(EXISTS "@GIT_DATA@/head-ref")
|
|
||||||
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
|
|
||||||
string(STRIP "${HEAD_HASH}" HEAD_HASH)
|
|
||||||
else()
|
|
||||||
set(HEAD_HASH "Unknown")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
7
externals/cpmfile.json
vendored
7
externals/cpmfile.json
vendored
|
@ -198,5 +198,12 @@
|
||||||
"key": "steamdeck",
|
"key": "steamdeck",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"skip_updates": "true"
|
"skip_updates": "true"
|
||||||
|
},
|
||||||
|
"moltenvk": {
|
||||||
|
"repo": "KhronosGroup/MoltenVK",
|
||||||
|
"tag": "v%VERSION%",
|
||||||
|
"git_version": "1.4.0",
|
||||||
|
"artifact": "MoltenVK-macOS.tar",
|
||||||
|
"hash": "63721377503bbfaa9c8df79e7ebc3dc43577d38fa0f4a986c50a56a3904f9629b4cf9001d9c95c184228b574cd06608ff29ab89c14549cb6be8a7fb9cbe1e95a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ option(DYNARMIC_ENABLE_LTO "Enable LTO" OFF)
|
||||||
# Default to a Release build
|
# Default to a Release build
|
||||||
if (NOT CMAKE_BUILD_TYPE)
|
if (NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||||
message(STATUS "Defaulting to a Release build")
|
message(STATUS "[dynarmic] Defaulting to a Release build")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set hard requirements for C++
|
# Set hard requirements for C++
|
||||||
|
@ -58,11 +58,10 @@ endif()
|
||||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules")
|
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules")
|
||||||
|
|
||||||
# Arch detection
|
# Arch detection
|
||||||
include(DetectArchitecture)
|
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
if (NOT DEFINED ARCHITECTURE)
|
||||||
message(FATAL_ERROR "Unsupported architecture encountered. Ending CMake generation.")
|
message(FATAL_ERROR "[dynarmic] Unsupported architecture encountered. Ending CMake generation.")
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Target architecture: ${ARCHITECTURE}")
|
message(STATUS "[dynarmic] Target architecture(s): ${ARCHITECTURE}")
|
||||||
|
|
||||||
# Compiler flags
|
# Compiler flags
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
@ -143,8 +142,8 @@ else()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Boost 1.57 REQUIRED)
|
find_package(Boost 1.57 CONFIG REQUIRED)
|
||||||
find_package(fmt 9 CONFIG)
|
find_package(fmt 8 CONFIG)
|
||||||
|
|
||||||
# Pull in externals CMakeLists for libs where available
|
# Pull in externals CMakeLists for libs where available
|
||||||
add_subdirectory(externals)
|
add_subdirectory(externals)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
function(target_architecture_specific_sources project arch)
|
function(target_architecture_specific_sources project arch)
|
||||||
if (NOT DYNARMIC_MULTIARCH_BUILD)
|
if (NOT MULTIARCH_BUILD)
|
||||||
target_sources("${project}" PRIVATE ${ARGN})
|
target_sources("${project}" PRIVATE ${ARGN})
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -313,7 +313,7 @@ elseif (APPLE)
|
||||||
message(WARNING "macOS fastmem disabled: unable to find mach/mach_exc.defs")
|
message(WARNING "macOS fastmem disabled: unable to find mach/mach_exc.defs")
|
||||||
target_sources(dynarmic PRIVATE backend/exception_handler_generic.cpp)
|
target_sources(dynarmic PRIVATE backend/exception_handler_generic.cpp)
|
||||||
else()
|
else()
|
||||||
message(STATUS "mach/mach_exc.defs location: ${MACH_EXC_DEFS_DIR}")
|
message(STATUS "[dynarmic] mach/mach_exc.defs location: ${MACH_EXC_DEFS_DIR}")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND
|
COMMAND
|
||||||
mkdir -p "${CMAKE_CURRENT_SOURCE_DIR}/backend/x64/mig"
|
mkdir -p "${CMAKE_CURRENT_SOURCE_DIR}/backend/x64/mig"
|
||||||
|
|
|
@ -57,7 +57,7 @@ if ("x86_64" IN_LIST ARCHITECTURE)
|
||||||
native/preserve_xmm.cpp
|
native/preserve_xmm.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT MSVC AND NOT DYNARMIC_MULTIARCH_BUILD)
|
if (NOT MSVC AND NOT MULTIARCH_BUILD)
|
||||||
target_sources(dynarmic_tests PRIVATE
|
target_sources(dynarmic_tests PRIVATE
|
||||||
rsqrt_test.cpp
|
rsqrt_test.cpp
|
||||||
rsqrt_test_fn.s
|
rsqrt_test_fn.s
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue