[cmake] refactor: cpmfile, deps prefetch, force system and more #322
18 changed files with 698 additions and 445 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -52,3 +52,4 @@ Thumbs.db
|
||||||
eden-windows-msvc
|
eden-windows-msvc
|
||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
|
/install*
|
||||||
|
|
201
CMakeLists.txt
201
CMakeLists.txt
|
@ -99,7 +99,6 @@ option(FORCE_DOWNLOAD_WIN_BUNDLES "Forcefully download bundled Windows dependenc
|
||||||
|
|
||||||
if (YUZU_USE_CPM AND ENABLE_SDL2)
|
if (YUZU_USE_CPM AND ENABLE_SDL2)
|
||||||
option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}")
|
option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}")
|
||||||
CMAKE_DEPENDENT_OPTION(FORCE_DOWNLOAD_SDL2 "Forcefully download all bundled SDL2 builds (useful for CI)" OFF "YUZU_USE_BUNDLED_SDL2" OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
|
CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
|
||||||
|
@ -110,11 +109,7 @@ CMAKE_DEPENDENT_OPTION(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROI
|
||||||
|
|
||||||
CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
|
CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
|
||||||
|
|
||||||
if (PLATFORM_FREEBSD)
|
option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ${EXT_DEFAULT})
|
||||||
option(YUZU_CHECK_SUBMODULES "Check if submodules are present" OFF)
|
|
||||||
else()
|
|
||||||
option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
||||||
|
|
||||||
|
@ -145,7 +140,6 @@ option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENAB
|
||||||
|
|
||||||
if (YUZU_USE_CPM AND ENABLE_OPENSSL)
|
if (YUZU_USE_CPM AND ENABLE_OPENSSL)
|
||||||
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" "${MSVC}" "NOT ANDROID" ON)
|
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" "${MSVC}" "NOT ANDROID" ON)
|
||||||
CMAKE_DEPENDENT_OPTION(FORCE_DOWNLOAD_OPENSSL "Forcefully download all bundled OpenSSL builds (useful for CI)" OFF "YUZU_USE_BUNDLED_OPENSSL" OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
||||||
|
@ -180,12 +174,12 @@ if (YUZU_USE_PRECOMPILED_HEADERS)
|
||||||
set(YUZU_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
|
set(YUZU_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (YUZU_USE_PRECOMPILED_HEADERS)
|
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()
|
||||||
|
|
||||||
|
|
||||||
# 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)
|
||||||
|
@ -246,20 +240,24 @@ endfunction()
|
||||||
if(EXISTS ${PROJECT_SOURCE_DIR}/.gitmodules AND YUZU_CHECK_SUBMODULES)
|
if(EXISTS ${PROJECT_SOURCE_DIR}/.gitmodules AND YUZU_CHECK_SUBMODULES)
|
||||||
check_submodules_present()
|
check_submodules_present()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
|
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
|
||||||
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
|
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
|
||||||
COPYONLY)
|
COPYONLY)
|
||||||
|
|
||||||
if (EXISTS ${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json)
|
if (EXISTS ${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json)
|
||||||
configure_file("${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json"
|
configure_file("${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json"
|
||||||
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json"
|
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json"
|
||||||
COPYONLY)
|
COPYONLY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
||||||
message(STATUS "Downloading compatibility list for yuzu...")
|
message(STATUS "Downloading compatibility list for yuzu...")
|
||||||
file(DOWNLOAD
|
file(DOWNLOAD
|
||||||
https://api.yuzu-emu.org/gamedb/
|
https://api.yuzu-emu.org/gamedb/
|
||||||
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS)
|
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
||||||
file(WRITE ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json "")
|
file(WRITE ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json "")
|
||||||
endif()
|
endif()
|
||||||
|
@ -303,6 +301,7 @@ if (NOT DEFINED ARCHITECTURE)
|
||||||
set(ARCHITECTURE_GENERIC 1)
|
set(ARCHITECTURE_GENERIC 1)
|
||||||
add_definitions(-DARCHITECTURE_GENERIC=1)
|
add_definitions(-DARCHITECTURE_GENERIC=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "Target architecture: ${ARCHITECTURE}")
|
message(STATUS "Target architecture: ${ARCHITECTURE}")
|
||||||
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
|
@ -378,14 +377,7 @@ if (YUZU_USE_CPM)
|
||||||
# openssl funniness
|
# openssl funniness
|
||||||
if (ENABLE_OPENSSL)
|
if (ENABLE_OPENSSL)
|
||||||
if (YUZU_USE_BUNDLED_OPENSSL)
|
if (YUZU_USE_BUNDLED_OPENSSL)
|
||||||
AddCIPackage(
|
AddJsonPackage(openssl)
|
||||||
PACKAGE OpenSSL
|
|
||||||
NAME openssl
|
|
||||||
REPO crueter-ci/OpenSSL
|
|
||||||
VERSION 3.5.2
|
|
||||||
MIN_VERSION 1.1.1
|
|
||||||
FORCE_DOWNLOAD ${FORCE_DOWNLOAD_OPENSSL}
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(OpenSSL 1.1.1 REQUIRED)
|
find_package(OpenSSL 1.1.1 REQUIRED)
|
||||||
|
@ -393,18 +385,7 @@ if (YUZU_USE_CPM)
|
||||||
|
|
||||||
# boost
|
# boost
|
||||||
set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant)
|
set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant)
|
||||||
AddPackage(
|
AddJsonPackage(boost)
|
||||||
NAME Boost
|
|
||||||
REPO boostorg/boost
|
|
||||||
TAG boost-1.88.0
|
|
||||||
ARTIFACT boost-1.88.0-cmake.7z
|
|
||||||
|
|
||||||
HASH e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01
|
|
||||||
|
|
||||||
GIT_VERSION 1.88.0
|
|
||||||
VERSION 1.57
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
# really annoying thing where boost::headers doesn't work with cpm
|
# really annoying thing where boost::headers doesn't work with cpm
|
||||||
# TODO(crueter) investigate
|
# TODO(crueter) investigate
|
||||||
|
@ -426,128 +407,45 @@ if (YUZU_USE_CPM)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# fmt
|
# fmt
|
||||||
AddPackage(
|
AddJsonPackage(fmt)
|
||||||
NAME fmt
|
|
||||||
REPO fmtlib/fmt
|
|
||||||
SHA 40626af88b
|
|
||||||
HASH d59f06c24339f223de4ec2afeba1c67b5835a0f350a1ffa86242a72fc3e616a6b8b21798355428d4200c75287308b66634619ffa0b52ba5bd74cc01772ea1a8a
|
|
||||||
VERSION 8
|
|
||||||
OPTIONS
|
|
||||||
"FMT_INSTALL OFF"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
# lz4
|
# lz4
|
||||||
AddPackage(
|
AddJsonPackage(lz4)
|
||||||
NAME lz4
|
|
||||||
REPO lz4/lz4
|
|
||||||
SHA ebb370ca83
|
|
||||||
HASH 43600e87b35256005c0f2498fa56a77de6783937ba4cfce38c099f27c03188d097863e8a50c5779ca0a7c63c29c4f7ed0ae526ec798c1fd2e3736861b62e0a37
|
|
||||||
SOURCE_SUBDIR build/cmake
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
if (lz4_ADDED)
|
if (lz4_ADDED)
|
||||||
add_library(lz4::lz4 ALIAS lz4_static)
|
add_library(lz4::lz4 ALIAS lz4_static)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# nlohmann
|
# nlohmann
|
||||||
AddPackage(
|
AddJsonPackage(nlohmann)
|
||||||
NAME nlohmann_json
|
|
||||||
REPO nlohmann/json
|
|
||||||
SHA 55f93686c0
|
|
||||||
HASH b739749b066800e21154506ea150d2c5cbce8a45344177f46f884547a1399d26753166fd0df8135269ce28cf223552b1b65cd625b88c844d54753f2434900486
|
|
||||||
VERSION 3.8
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
# zlib
|
# zlib
|
||||||
AddPackage(
|
AddJsonPackage(zlib)
|
||||||
NAME ZLIB
|
|
||||||
REPO madler/zlib
|
|
||||||
SHA 51b7f2abda
|
|
||||||
HASH 16eaf1f3752489d12fd9ce30f7b5f7cbd5cb8ff53d617005a9847ae72d937f65e01e68be747f62d7ac19fd0c9aeba9956e60f16d6b465c5fdc2f3d08b4db2e6c
|
|
||||||
VERSION 1.2
|
|
||||||
OPTIONS
|
|
||||||
"ZLIB_BUILD_SHARED OFF"
|
|
||||||
"ZLIB_INSTALL OFF"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
if (ZLIB_ADDED)
|
if (ZLIB_ADDED)
|
||||||
add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# zstd
|
# zstd
|
||||||
AddPackage(
|
AddJsonPackage(zstd)
|
||||||
NAME zstd
|
|
||||||
REPO facebook/zstd
|
|
||||||
SHA f8745da6ff
|
|
||||||
HASH 3037007f990040fe32573b46f9bef8762fd5dbeeb07ffffcbfeba51ec98167edae39bb9c87f9299efcd61c4e467c5e84f7c19f0df7799bc1fc04864a278792ee
|
|
||||||
VERSION 1.5
|
|
||||||
SOURCE_SUBDIR build/cmake
|
|
||||||
OPTIONS
|
|
||||||
"ZSTD_BUILD_SHARED OFF"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
# Catch2
|
# Catch2
|
||||||
if (YUZU_TESTS OR DYNARMIC_TESTS)
|
if (YUZU_TESTS OR DYNARMIC_TESTS)
|
||||||
AddPackage(
|
AddJsonPackage(catch2)
|
||||||
NAME Catch2
|
|
||||||
REPO catchorg/Catch2
|
|
||||||
SHA 644821ce28
|
|
||||||
HASH f8795f98acf2c02c0db8e734cc866d5caebab4b4a306e93598b97cb3c0c728dafe8283dce27ffe8d42460e5ae7302f3f32e7e274a7f991b73511ac88eef21b1f
|
|
||||||
VERSION 3.0.1
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# ENet
|
# ENet
|
||||||
AddPackage(
|
AddJsonPackage(enet)
|
||||||
NAME enet
|
|
||||||
REPO lsalzman/enet
|
|
||||||
SHA 2662c0de09
|
|
||||||
VERSION 1.3
|
|
||||||
HASH 3de1beb4fa3d6b1e03eda8dd1e7580694f854af3ed3975dcdabfdcdf76b97f322b9734d35ea7f185855bb490d957842b938b26da4dd2dfded509390f8d2794dd
|
|
||||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
if (enet_ADDED)
|
if (enet_ADDED)
|
||||||
target_include_directories(enet INTERFACE ${enet_SOURCE_DIR}/include)
|
target_include_directories(enet INTERFACE ${enet_SOURCE_DIR}/include)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Opus
|
# Opus
|
||||||
AddPackage(
|
AddJsonPackage(opus)
|
||||||
NAME Opus
|
|
||||||
VERSION 1.3
|
|
||||||
REPO "xiph/opus"
|
|
||||||
SHA 5ded705cf4
|
|
||||||
HASH 0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203
|
|
||||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
|
||||||
OPTIONS
|
|
||||||
"OPUS_BUILD_TESTING OFF"
|
|
||||||
"OPUS_BUILD_PROGRAMS OFF"
|
|
||||||
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF"
|
|
||||||
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_CUBEB)
|
if(ENABLE_CUBEB)
|
||||||
AddPackage(
|
AddJsonPackage(cubeb)
|
||||||
NAME cubeb
|
|
||||||
REPO "mozilla/cubeb"
|
|
||||||
SHA fa02160712
|
|
||||||
HASH 82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG" # not sure this works outside of gentoo
|
|
||||||
OPTIONS
|
|
||||||
"USE_SANITIZERS OFF"
|
|
||||||
"BUILD_TESTS OFF"
|
|
||||||
"BUILD_TOOLS OFF"
|
|
||||||
"BUNDLE_SPEEX ON"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
if (cubeb_ADDED)
|
if (cubeb_ADDED)
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
|
@ -602,14 +500,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT TARGET Boost::headers)
|
if(NOT TARGET Boost::headers)
|
||||||
AddPackage(
|
AddJsonPackage(boost_headers)
|
||||||
NAME boost_headers
|
|
||||||
REPO "boostorg/headers"
|
|
||||||
SHA 0456900fad
|
|
||||||
HASH 50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_LIBUSB)
|
if (ENABLE_LIBUSB)
|
||||||
|
@ -622,33 +513,14 @@ endif()
|
||||||
|
|
||||||
# DiscordRPC
|
# DiscordRPC
|
||||||
if (USE_DISCORD_PRESENCE)
|
if (USE_DISCORD_PRESENCE)
|
||||||
AddPackage(
|
AddJsonPackage(discord_rpc)
|
||||||
NAME discord-rpc
|
|
||||||
REPO "discord/discord-rpc"
|
|
||||||
SHA 963aa9f3e5
|
|
||||||
HASH 386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde
|
|
||||||
OPTIONS
|
|
||||||
"BUILD_EXAMPLES OFF"
|
|
||||||
PATCHES
|
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0001-cmake-version.patch
|
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0002-no-clang-format.patch
|
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0003-fix-cpp17.patch
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include)
|
target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include)
|
||||||
add_library(DiscordRPC::discord-rpc ALIAS discord-rpc)
|
add_library(DiscordRPC::discord-rpc ALIAS discord-rpc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# SimpleIni
|
# SimpleIni
|
||||||
AddPackage(
|
AddJsonPackage(simpleini)
|
||||||
NAME SimpleIni
|
|
||||||
REPO brofield/simpleini
|
|
||||||
SHA 09c21bda1d
|
|
||||||
HASH 99779ca9b6e040d36558cadf484f9ffdab5b47bcc8fc72e4d33639d1d60c0ceb4410d335ba445d72a4324e455167fd6769d99b459943aa135bec085dff2d4b7c
|
|
||||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
|
|
||||||
# TODO(crueter): Work around this
|
# TODO(crueter): Work around this
|
||||||
if (NOT YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
if (NOT YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
||||||
|
@ -658,9 +530,7 @@ endif()
|
||||||
|
|
||||||
# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the YUZU_find_package
|
# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the YUZU_find_package
|
||||||
if (ENABLE_SDL2)
|
if (ENABLE_SDL2)
|
||||||
# this was hard to get right, but ultimately I decided to make it so that FORCE_DOWNLOAD_SDL2 also downloads the
|
if (YUZU_USE_EXTERNAL_SDL2)
|
||||||
# external one. Really silly behavior imo but in the interest of getting something out there I'm leaving it for now
|
|
||||||
if (YUZU_USE_EXTERNAL_SDL2 OR FORCE_DOWNLOAD_SDL2)
|
|
||||||
message(STATUS "Using SDL2 from externals.")
|
message(STATUS "Using SDL2 from externals.")
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
|
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
|
||||||
|
@ -683,37 +553,16 @@ if (ENABLE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck")
|
if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck")
|
||||||
set(SDL_HASH cc016b0046)
|
|
||||||
set(SDL_PIPEWIRE OFF) # build errors out with this on
|
set(SDL_PIPEWIRE OFF) # build errors out with this on
|
||||||
set(SDL_SHA512SUM 34d5ef58da6a4f9efa6689c82f67badcbd741f5a4f562a9c2c30828fa839830fb07681c5dc6a7851520e261c8405a416ac0a2c2513b51984fb3b4fa4dcb3e20b)
|
AddJsonPackage("sdl2_steamdeck")
|
||||||
else()
|
else()
|
||||||
set(SDL_HASH 54772f345a)
|
AddJsonPackage("sdl2_generic")
|
||||||
set(SDL_SHA512SUM 2a68a0e01c390043aa9d9df63d8a20a52076c88bb460ac4e0f33194ca7d9bc8fadbbcc04e7506872ac4b6354a73fbc267c036f82200da59465789b87c7d9e3a4)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
|
||||||
NAME SDL2
|
|
||||||
REPO "libsdl-org/SDL"
|
|
||||||
SHA ${SDL_HASH}
|
|
||||||
HASH ${SDL_SHA512SUM}
|
|
||||||
KEY ${YUZU_SYSTEM_PROFILE}
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (YUZU_USE_BUNDLED_SDL2)
|
if (YUZU_USE_BUNDLED_SDL2)
|
||||||
message(STATUS "Using bundled SDL2")
|
message(STATUS "Using bundled SDL2")
|
||||||
AddCIPackage(
|
AddJsonPackage(sdl2)
|
||||||
PACKAGE SDL2
|
|
||||||
NAME SDL2
|
|
||||||
REPO crueter-ci/SDL2
|
|
||||||
VERSION 2.32.8
|
|
||||||
MIN_VERSION 2.26.4
|
|
||||||
CMAKE_FILENAME sdl2
|
|
||||||
FORCE_DOWNLOAD ${FORCE_DOWNLOAD_SDL2}
|
|
||||||
TARGET "SDL2::SDL2"
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(SDL2 2.26.4 REQUIRED)
|
find_package(SDL2 2.26.4 REQUIRED)
|
||||||
|
|
|
@ -1,10 +1,17 @@
|
||||||
# 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
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# Created-By: crueter
|
# Created-By: crueter
|
||||||
# Docs will come at a later date, mostly this is to just reduce boilerplate
|
# Docs will come at a later date, mostly this is to just reduce boilerplate
|
||||||
# and some cmake magic to allow for runtime viewing of dependency versions
|
# and some cmake magic to allow for runtime viewing of dependency versions
|
||||||
|
|
||||||
|
# Future crueter: Wow this was a lie and a half, at this point I might as well make my own CPN
|
||||||
|
# haha just kidding... unless?
|
||||||
|
|
||||||
|
# TODO(crueter): Better solution for separate cpmfiles e.g. per-directory
|
||||||
include(CMakeDependentOption)
|
include(CMakeDependentOption)
|
||||||
if (MSVC OR ANDROID)
|
if (MSVC OR ANDROID)
|
||||||
set(SYSTEM_DEFAULT OFF)
|
set(SYSTEM_DEFAULT OFF)
|
||||||
|
@ -62,12 +69,12 @@ function(get_json_element object out member default)
|
||||||
set("${out}" "${outvar}" PARENT_SCOPE)
|
set("${out}" "${outvar}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# Kinda cancerous but whatever
|
# Kinda cancerous but whatever
|
||||||
function(AddJsonPackage name)
|
function(AddJsonPackage)
|
||||||
|
|
||||||
# these are overrides that can be generated at runtime, so can be defined separately from the json
|
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
|
NAME
|
||||||
|
|
||||||
|
# these are overrides that can be generated at runtime, so can be defined separately from the json
|
||||||
DOWNLOAD_ONLY
|
DOWNLOAD_ONLY
|
||||||
SYSTEM_PACKAGE
|
SYSTEM_PACKAGE
|
||||||
BUNDLED_PACKAGE
|
BUNDLED_PACKAGE
|
||||||
|
@ -78,25 +85,67 @@ function(AddJsonPackage name)
|
||||||
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
"${ARGN}")
|
"${ARGN}")
|
||||||
|
|
||||||
|
list(LENGTH ARGN argnLength)
|
||||||
|
# single name argument
|
||||||
|
if(argnLength EQUAL 1)
|
||||||
|
set(JSON_NAME "${ARGV0}")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED CPMFILE_CONTENT)
|
if (NOT DEFINED CPMFILE_CONTENT)
|
||||||
cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op")
|
cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(JSON object ERROR_VARIABLE err GET "${CPMFILE_CONTENT}" "${name}")
|
if (NOT DEFINED JSON_NAME)
|
||||||
|
cpm_utils_message(FATAL_ERROR "json package" "No name specified")
|
||||||
if (err)
|
|
||||||
cpm_utils_message(FATAL_ERROR ${name} "Not found in cpmfile")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "JSON: ${object}")
|
string(JSON object ERROR_VARIABLE err GET "${CPMFILE_CONTENT}" "${JSON_NAME}")
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_json_element("${object}" package package ${JSON_NAME})
|
||||||
|
get_json_element("${object}" repo repo "")
|
||||||
|
get_json_element("${object}" ci ci OFF)
|
||||||
|
get_json_element("${object}" version version "")
|
||||||
|
|
||||||
|
if (ci)
|
||||||
|
get_json_element("${object}" name name "${JSON_NAME}")
|
||||||
|
get_json_element("${object}" extension extension "tar.zst")
|
||||||
|
get_json_element("${object}" min_version min_version "")
|
||||||
|
get_json_element("${object}" cmake_filename cmake_filename "")
|
||||||
|
get_json_element("${object}" target target "")
|
||||||
|
get_json_element("${object}" raw_disabled disabled_platforms "")
|
||||||
|
|
||||||
|
if (raw_disabled)
|
||||||
|
array_to_list("${raw_disabled}" ${raw_disabled_LENGTH} disabled_platforms)
|
||||||
|
else()
|
||||||
|
set(disabled_platforms "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
AddCIPackage(
|
||||||
|
VERSION ${version}
|
||||||
|
NAME ${name}
|
||||||
|
REPO ${repo}
|
||||||
|
PACKAGE ${package}
|
||||||
|
EXTENSION ${extension}
|
||||||
|
MIN_VERSION ${min_version}
|
||||||
|
DISABLED_PLATFORMS ${disabled_platforms}
|
||||||
|
CMAKE_FILENAME ${cmake_filename}
|
||||||
|
TARGET ${target}
|
||||||
|
)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
get_json_element("${object}" package package ${name})
|
|
||||||
get_json_element("${object}" hash hash "")
|
get_json_element("${object}" hash hash "")
|
||||||
get_json_element("${object}" sha sha "")
|
get_json_element("${object}" sha sha "")
|
||||||
get_json_element("${object}" repo repo "")
|
get_json_element("${object}" tag tag "")
|
||||||
|
get_json_element("${object}" artifact artifact "")
|
||||||
|
get_json_element("${object}" git_version git_version "")
|
||||||
|
get_json_element("${object}" source_subdir source_subdir "")
|
||||||
get_json_element("${object}" bundled bundled "unset")
|
get_json_element("${object}" bundled bundled "unset")
|
||||||
get_json_element("${object}" version version "")
|
|
||||||
get_json_element("${object}" find_args find_args "")
|
get_json_element("${object}" find_args find_args "")
|
||||||
get_json_element("${object}" raw_patches patches "")
|
get_json_element("${object}" raw_patches patches "")
|
||||||
|
|
||||||
|
@ -107,9 +156,9 @@ function(AddJsonPackage name)
|
||||||
foreach(IDX RANGE ${range})
|
foreach(IDX RANGE ${range})
|
||||||
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
string(JSON _patch GET "${raw_patches}" "${IDX}")
|
||||||
|
|
||||||
set(full_patch "${CMAKE_SOURCE_DIR}/.patch/${name}/${_patch}")
|
set(full_patch "${CMAKE_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}")
|
||||||
if (NOT EXISTS ${full_patch})
|
if (NOT EXISTS ${full_patch})
|
||||||
cpm_utils_message(FATAL_ERROR ${name} "specifies patch ${full_patch} which does not exist")
|
cpm_utils_message(FATAL_ERROR ${JSON_NAME} "specifies patch ${full_patch} which does not exist")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND patches "${full_patch}")
|
list(APPEND patches "${full_patch}")
|
||||||
|
@ -128,7 +177,6 @@ function(AddJsonPackage name)
|
||||||
# end options
|
# end options
|
||||||
|
|
||||||
# system/bundled
|
# system/bundled
|
||||||
cpm_utils_message(STATUS ${name} "system: ${system} bundled: ${bundled}")
|
|
||||||
if (bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
if (bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE)
|
||||||
set(bundled ${JSON_BUNDLED_PACKAGE})
|
set(bundled ${JSON_BUNDLED_PACKAGE})
|
||||||
else()
|
else()
|
||||||
|
@ -145,6 +193,11 @@ function(AddJsonPackage name)
|
||||||
OPTIONS "${options}"
|
OPTIONS "${options}"
|
||||||
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
FIND_PACKAGE_ARGUMENTS "${find_args}"
|
||||||
BUNDLED_PACKAGE "${bundled}"
|
BUNDLED_PACKAGE "${bundled}"
|
||||||
|
SOURCE_SUBDIR "${source_subdir}"
|
||||||
|
|
||||||
|
GIT_VERSION ${git_version}
|
||||||
|
ARTIFACT ${artifact}
|
||||||
|
TAG ${tag}
|
||||||
)
|
)
|
||||||
|
|
||||||
# pass stuff to parent scope
|
# pass stuff to parent scope
|
||||||
|
@ -177,8 +230,6 @@ function(AddPackage)
|
||||||
* technically this is unsafe since a hacker can attack that url
|
* technically this is unsafe since a hacker can attack that url
|
||||||
|
|
||||||
NOTE: hash algo defaults to sha512
|
NOTE: hash algo defaults to sha512
|
||||||
|
|
||||||
patches are in ${CMAKE_SOURCE_DIR}/.patch/{name}/${patchname}
|
|
||||||
#]]
|
#]]
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
NAME
|
NAME
|
||||||
|
@ -260,11 +311,13 @@ function(AddPackage)
|
||||||
cpm_utils_message(STATUS ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
cpm_utils_message(STATUS ${PKG_ARGS_NAME} "Download URL is ${pkg_url}")
|
||||||
|
|
||||||
if (DEFINED PKG_ARGS_GIT_VERSION)
|
if (DEFINED PKG_ARGS_GIT_VERSION)
|
||||||
set(git_version ${PKG_ARGS_VERSION})
|
|
||||||
elseif(DEFINED PKG_ARGS_VERSION)
|
|
||||||
set(git_version ${PKG_ARGS_GIT_VERSION})
|
set(git_version ${PKG_ARGS_GIT_VERSION})
|
||||||
|
elseif(DEFINED PKG_ARGS_VERSION)
|
||||||
|
set(git_version ${PKG_ARGS_VERSION})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "PKG GIT VERSION: ${git_version}")
|
||||||
|
|
||||||
if (NOT DEFINED PKG_ARGS_KEY)
|
if (NOT DEFINED PKG_ARGS_KEY)
|
||||||
if (DEFINED PKG_ARGS_SHA)
|
if (DEFINED PKG_ARGS_SHA)
|
||||||
string(SUBSTRING ${PKG_ARGS_SHA} 0 4 pkg_key)
|
string(SUBSTRING ${PKG_ARGS_SHA} 0 4 pkg_key)
|
||||||
|
@ -314,9 +367,15 @@ function(AddPackage)
|
||||||
if (DEFINED hash_url)
|
if (DEFINED hash_url)
|
||||||
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_NAME}.hash)
|
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_NAME}.hash)
|
||||||
|
|
||||||
file(DOWNLOAD ${hash_url} ${outfile})
|
# TODO(crueter): This is kind of a bad solution
|
||||||
|
# because "technically" the hash is invalidated each week
|
||||||
|
# but it works for now kjsdnfkjdnfjksdn
|
||||||
|
string(TOLOWER ${PKG_ARGS_NAME} lowername)
|
||||||
|
if (NOT EXISTS ${outfile} AND NOT EXISTS ${CPM_SOURCE_CACHE}/${lowername}/${pkg_key})
|
||||||
|
file(DOWNLOAD ${hash_url} ${outfile})
|
||||||
|
endif()
|
||||||
|
|
||||||
file(READ ${outfile} pkg_hash_tmp)
|
file(READ ${outfile} pkg_hash_tmp)
|
||||||
file(REMOVE ${outfile})
|
|
||||||
|
|
||||||
set(pkg_hash "${hash_algo}=${pkg_hash_tmp}")
|
set(pkg_hash "${hash_algo}=${pkg_hash_tmp}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -345,6 +404,7 @@ function(AddPackage)
|
||||||
|
|
||||||
OPTIONS ${PKG_ARGS_OPTIONS}
|
OPTIONS ${PKG_ARGS_OPTIONS}
|
||||||
PATCHES ${PKG_ARGS_PATCHES}
|
PATCHES ${PKG_ARGS_PATCHES}
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
|
||||||
${PKG_ARGS_UNPARSED_ARGUMENTS}
|
${PKG_ARGS_UNPARSED_ARGUMENTS}
|
||||||
)
|
)
|
||||||
|
@ -392,7 +452,7 @@ function(add_ci_package key)
|
||||||
set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT})
|
set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT})
|
||||||
|
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME ${ARTIFACT_PACKAGE}-${key}
|
NAME ${ARTIFACT_PACKAGE}
|
||||||
REPO ${ARTIFACT_REPO}
|
REPO ${ARTIFACT_REPO}
|
||||||
TAG v${ARTIFACT_VERSION}
|
TAG v${ARTIFACT_VERSION}
|
||||||
VERSION ${ARTIFACT_VERSION}
|
VERSION ${ARTIFACT_VERSION}
|
||||||
|
@ -401,15 +461,13 @@ function(add_ci_package key)
|
||||||
KEY ${key}
|
KEY ${key}
|
||||||
HASH_SUFFIX sha512sum
|
HASH_SUFFIX sha512sum
|
||||||
BUNDLED_PACKAGE ON
|
BUNDLED_PACKAGE ON
|
||||||
DOWNLOAD_ONLY ON
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT ARTIFACT_FORCE_DOWNLOAD OR ARTIFACT_OVERRIDE)
|
set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}_SOURCE_DIR} PARENT_SCOPE)
|
||||||
set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}-${key}_SOURCE_DIR} PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# TODO(crueter): doc
|
# TODO(crueter): doc
|
||||||
|
# name is the artifact name, package is for find_package override
|
||||||
function(AddCIPackage)
|
function(AddCIPackage)
|
||||||
set(oneValueArgs
|
set(oneValueArgs
|
||||||
VERSION
|
VERSION
|
||||||
|
@ -417,7 +475,6 @@ function(AddCIPackage)
|
||||||
REPO
|
REPO
|
||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
FORCE_DOWNLOAD
|
|
||||||
MIN_VERSION
|
MIN_VERSION
|
||||||
DISABLED_PLATFORMS
|
DISABLED_PLATFORMS
|
||||||
CMAKE_FILENAME
|
CMAKE_FILENAME
|
||||||
|
@ -451,12 +508,6 @@ function(AddCIPackage)
|
||||||
set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION})
|
set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_FORCE_DOWNLOAD)
|
|
||||||
set(ARTIFACT_FORCE_DOWNLOAD OFF)
|
|
||||||
else()
|
|
||||||
set(ARTIFACT_FORCE_DOWNLOAD ${PKG_ARGS_FORCE_DOWNLOAD})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (DEFINED PKG_ARGS_MIN_VERSION)
|
if (DEFINED PKG_ARGS_MIN_VERSION)
|
||||||
set(ARTIFACT_MIN_VERSION ${PKG_ARGS_MIN_VERSION})
|
set(ARTIFACT_MIN_VERSION ${PKG_ARGS_MIN_VERSION})
|
||||||
endif()
|
endif()
|
||||||
|
@ -471,86 +522,42 @@ function(AddCIPackage)
|
||||||
set(ARTIFACT_REPO ${PKG_ARGS_REPO})
|
set(ARTIFACT_REPO ${PKG_ARGS_REPO})
|
||||||
set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE})
|
set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE})
|
||||||
|
|
||||||
if ((MSVC AND ARCHITECTURE_x86_64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
|
if ((MSVC AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
# kinda hacky
|
|
||||||
if(MSVC AND ARCHITECTURE_x86_64)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(windows-amd64)
|
add_ci_package(windows-amd64)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if ((MSVC AND ARCHITECTURE_arm64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
|
if ((MSVC AND ARCHITECTURE_arm64) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(MSVC AND ARCHITECTURE_arm64)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(windows-arm64)
|
add_ci_package(windows-arm64)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID OR ARTIFACT_FORCE_DOWNLOAD AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(ANDROID)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(android)
|
add_ci_package(android)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PLATFORM_SUN OR ARTIFACT_FORCE_DOWNLOAD AND NOT "solaris" IN_LIST DISABLED_PLATFORMS)
|
if(PLATFORM_SUN AND NOT "solaris" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(PLATFORM_SUN)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(solaris)
|
add_ci_package(solaris)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PLATFORM_FREEBSD OR ARTIFACT_FORCE_DOWNLOAD AND NOT "freebsd" IN_LIST DISABLED_PLATFORMS)
|
if(PLATFORM_FREEBSD AND NOT "freebsd" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(PLATFORM_FREEBSD)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(freebsd)
|
add_ci_package(freebsd)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "linux" IN_LIST DISABLED_PLATFORMS)
|
if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) AND NOT "linux" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(PLATFORM_LINUX AND ARCHITECTURE_x86_64)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(linux)
|
add_ci_package(linux)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((PLATFORM_LINUX AND ARCHITECTURE_arm64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS)
|
if((PLATFORM_LINUX AND ARCHITECTURE_arm64) AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS)
|
||||||
if(PLATFORM_LINUX AND ARCHITECTURE_arm64)
|
|
||||||
set(ARTIFACT_OVERRIDE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_ci_package(linux-aarch64)
|
add_ci_package(linux-aarch64)
|
||||||
set(ARTIFACT_OVERRIDE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (DEFINED ARTIFACT_DIR)
|
if (DEFINED ARTIFACT_DIR)
|
||||||
if (NOT DEFINED PKG_ARGS_TARGET OR NOT TARGET "${PKG_ARGS_TARGET}")
|
include(${ARTIFACT_DIR}/${ARTIFACT_CMAKE}.cmake)
|
||||||
include(${ARTIFACT_DIR}/${ARTIFACT_CMAKE}.cmake)
|
|
||||||
|
|
||||||
# Overrides find package
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${ARTIFACT_NAME})
|
||||||
CPMAddPackage(
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS "https://github.com/${ARTIFACT_REPO}") # TODO(crueter) other hosts?
|
||||||
NAME ${ARTIFACT_PACKAGE}
|
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${ARTIFACT_VERSION})
|
||||||
SOURCE_DIR ${ARTIFACT_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${ARTIFACT_NAME})
|
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS "https://github.com/${ARTIFACT_REPO}") # TODO(crueter) other hosts?
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${ARTIFACT_VERSION})
|
|
||||||
|
|
||||||
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -29,6 +29,7 @@ function(download_bundled_external remote_path lib_name cpm_key prefix_var versi
|
||||||
set(package_url "${package_base_url}${package_repo}")
|
set(package_url "${package_base_url}${package_repo}")
|
||||||
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
||||||
|
|
||||||
|
# TODO(crueter): DELETE THIS ENTIRELY, GLORY BE TO THE CI!
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME ${cpm_key}
|
NAME ${cpm_key}
|
||||||
VERSION ${version}
|
VERSION ${version}
|
||||||
|
|
173
cpmfile.json
173
cpmfile.json
|
@ -1,45 +1,156 @@
|
||||||
{
|
{
|
||||||
"mbedtls": {
|
"openssl": {
|
||||||
"repo": "Mbed-TLS/mbedtls",
|
"ci": true,
|
||||||
"sha": "8c88150ca1",
|
"package": "OpenSSL",
|
||||||
"hash": "769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966",
|
"name": "openssl",
|
||||||
"patches": [
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"0001-cmake-version.patch"
|
"version": "3.5.2",
|
||||||
]
|
"min_version": "1.1.1"
|
||||||
},
|
},
|
||||||
"spirv-headers": {
|
"boost": {
|
||||||
"package": "SPIRV-Headers",
|
"package": "Boost",
|
||||||
"repo": "KhronosGroup/SPIRV-Headers",
|
"repo": "boostorg/boost",
|
||||||
"sha": "4e209d3d7e",
|
"tag": "boost-1.88.0",
|
||||||
"hash": "f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4"
|
"artifact": "boost-1.88.0-cmake.7z",
|
||||||
|
"hash": "e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01",
|
||||||
|
"git_version": "1.88.0",
|
||||||
|
"version": "1.57"
|
||||||
},
|
},
|
||||||
"sirit": {
|
"fmt": {
|
||||||
"repo": "eden-emulator/sirit",
|
"repo": "fmtlib/fmt",
|
||||||
"sha": "db1f1e8ab5",
|
"sha": "40626af88b",
|
||||||
"hash": "73eb3a042848c63a10656545797e85f40d142009dfb7827384548a385e1e28e1ac72f42b25924ce530d58275f8638554281e884d72f9c7aaf4ed08690a414b05",
|
"hash": "d59f06c24339f223de4ec2afeba1c67b5835a0f350a1ffa86242a72fc3e616a6b8b21798355428d4200c75287308b66634619ffa0b52ba5bd74cc01772ea1a8a",
|
||||||
|
"version": "8",
|
||||||
"options": [
|
"options": [
|
||||||
"SIRIT_USE_SYSTEM_SPIRV_HEADERS ON"
|
"FMT_INSTALL OFF"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"httplib": {
|
"lz4": {
|
||||||
"repo": "yhirose/cpp-httplib",
|
"name": "lz4",
|
||||||
"sha": "a609330e4c",
|
"repo": "lz4/lz4",
|
||||||
"hash": "dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2"
|
"sha": "ebb370ca83",
|
||||||
|
"hash": "43600e87b35256005c0f2498fa56a77de6783937ba4cfce38c099f27c03188d097863e8a50c5779ca0a7c63c29c4f7ed0ae526ec798c1fd2e3736861b62e0a37",
|
||||||
|
"source_subdir": "build/cmake"
|
||||||
},
|
},
|
||||||
"cpp-jwt": {
|
"nlohmann": {
|
||||||
"version": "1.4",
|
"package": "nlohmann_json",
|
||||||
"repo": "arun11299/cpp-jwt",
|
"repo": "nlohmann/json",
|
||||||
"sha": "a54fa08a3b",
|
"sha": "55f93686c0",
|
||||||
"hash": "a90f7e594ada0c7e49d5ff9211c71097534e7742a8e44bf0851b0362642a7271d53f5d83d04eeaae2bad17ef3f35e09e6818434d8eaefa038f3d1f7359d0969a",
|
"hash": "b739749b066800e21154506ea150d2c5cbce8a45344177f46f884547a1399d26753166fd0df8135269ce28cf223552b1b65cd625b88c844d54753f2434900486",
|
||||||
|
"version": "3.8"
|
||||||
|
},
|
||||||
|
"zlib": {
|
||||||
|
"package": "ZLIB",
|
||||||
|
"repo": "madler/zlib",
|
||||||
|
"sha": "51b7f2abda",
|
||||||
|
"hash": "16eaf1f3752489d12fd9ce30f7b5f7cbd5cb8ff53d617005a9847ae72d937f65e01e68be747f62d7ac19fd0c9aeba9956e60f16d6b465c5fdc2f3d08b4db2e6c",
|
||||||
|
"version": "1.2",
|
||||||
|
"options": [
|
||||||
|
"ZLIB_BUILD_SHARED OFF",
|
||||||
|
"ZLIB_INSTALL OFF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"zstd": {
|
||||||
|
"repo": "facebook/zstd",
|
||||||
|
"sha": "f8745da6ff",
|
||||||
|
"hash": "3037007f990040fe32573b46f9bef8762fd5dbeeb07ffffcbfeba51ec98167edae39bb9c87f9299efcd61c4e467c5e84f7c19f0df7799bc1fc04864a278792ee",
|
||||||
|
"version": "1.5",
|
||||||
|
"source_subdir": "build/cmake",
|
||||||
|
"find_args": "MODULE",
|
||||||
|
"options": [
|
||||||
|
"ZSTD_BUILD_SHARED OFF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"catch2": {
|
||||||
|
"package": "Catch2",
|
||||||
|
"repo": "catchorg/Catch2",
|
||||||
|
"sha": "644821ce28",
|
||||||
|
"hash": "f8795f98acf2c02c0db8e734cc866d5caebab4b4a306e93598b97cb3c0c728dafe8283dce27ffe8d42460e5ae7302f3f32e7e274a7f991b73511ac88eef21b1f",
|
||||||
|
"version": "3.0.1"
|
||||||
|
},
|
||||||
|
"enet": {
|
||||||
|
"repo": "lsalzman/enet",
|
||||||
|
"sha": "2662c0de09",
|
||||||
|
"hash": "3de1beb4fa3d6b1e03eda8dd1e7580694f854af3ed3975dcdabfdcdf76b97f322b9734d35ea7f185855bb490d957842b938b26da4dd2dfded509390f8d2794dd",
|
||||||
|
"version": "1.3",
|
||||||
|
"find_args": "MODULE"
|
||||||
|
},
|
||||||
|
"opus": {
|
||||||
|
"package": "Opus",
|
||||||
|
"repo": "xiph/opus",
|
||||||
|
"sha": "5ded705cf4",
|
||||||
|
"hash": "0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203",
|
||||||
|
"version": "1.3",
|
||||||
|
"find_args": "MODULE",
|
||||||
|
"options": [
|
||||||
|
"OPUS_BUILD_TESTING OFF",
|
||||||
|
"OPUS_BUILD_PROGRAMS OFF",
|
||||||
|
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF",
|
||||||
|
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cubeb": {
|
||||||
|
"repo": "mozilla/cubeb",
|
||||||
|
"sha": "fa02160712",
|
||||||
|
"hash": "82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61",
|
||||||
"find_args": "CONFIG",
|
"find_args": "CONFIG",
|
||||||
"options": [
|
"options": [
|
||||||
"CPP_JWT_BUILD_EXAMPLES OFF",
|
"USE_SANITIZERS OFF",
|
||||||
"CPP_JWT_BUILD_TESTS OFF",
|
"BUILD_TESTS OFF",
|
||||||
"CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF"
|
"BUILD_TOOLS OFF",
|
||||||
|
"BUNDLE_SPEEX ON"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"boost_headers": {
|
||||||
|
"repo": "boostorg/headers",
|
||||||
|
"sha": "0456900fad",
|
||||||
|
"hash": "50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"discord_rpc": {
|
||||||
|
"repo": "discord/discord-rpc",
|
||||||
|
"sha": "963aa9f3e5",
|
||||||
|
"hash": "386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde",
|
||||||
|
"options": [
|
||||||
|
"BUILD_EXAMPLES OFF"
|
||||||
],
|
],
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-no-install.patch",
|
"0001-cmake-version.patch",
|
||||||
"0002-missing-decl.patch"
|
"0002-no-clang-format.patch",
|
||||||
|
"0003-fix-cpp17.patch"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"simpleini": {
|
||||||
|
"package": "SimpleIni",
|
||||||
|
"repo": "brofield/simpleini",
|
||||||
|
"sha": "09c21bda1d",
|
||||||
|
"hash": "99779ca9b6e040d36558cadf484f9ffdab5b47bcc8fc72e4d33639d1d60c0ceb4410d335ba445d72a4324e455167fd6769d99b459943aa135bec085dff2d4b7c",
|
||||||
|
"find_args": "MODULE"
|
||||||
|
},
|
||||||
|
"sdl2_generic": {
|
||||||
|
"package": "SDL2",
|
||||||
|
"repo": "libsdl-org/SDL",
|
||||||
|
"sha": "54772f345a",
|
||||||
|
"hash": "2a68a0e01c390043aa9d9df63d8a20a52076c88bb460ac4e0f33194ca7d9bc8fadbbcc04e7506872ac4b6354a73fbc267c036f82200da59465789b87c7d9e3a4",
|
||||||
|
"key": "generic",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"sdl2_steamdeck": {
|
||||||
|
"package": "SDL2",
|
||||||
|
"repo": "libsdl-org/SDL",
|
||||||
|
"sha": "cc016b0046",
|
||||||
|
"hash": "34d5ef58da6a4f9efa6689c82f67badcbd741f5a4f562a9c2c30828fa839830fb07681c5dc6a7851520e261c8405a416ac0a2c2513b51984fb3b4fa4dcb3e20b",
|
||||||
|
"key": "steamdeck",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"sdl2": {
|
||||||
|
"ci": true,
|
||||||
|
"package": "SDL2",
|
||||||
|
"name": "SDL2",
|
||||||
|
"repo": "crueter-ci/SDL2",
|
||||||
|
"version": "2.32.8",
|
||||||
|
"min_version": "2.26.4",
|
||||||
|
"cmake_filename": "sdl2",
|
||||||
|
"target": "SDL2::SDL2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
95
externals/CMakeLists.txt
vendored
95
externals/CMakeLists.txt
vendored
|
@ -7,6 +7,10 @@
|
||||||
# TODO(crueter): A lot of this should be moved to the root.
|
# TODO(crueter): A lot of this should be moved to the root.
|
||||||
# otherwise we have to do weird shenanigans with library linking and stuff
|
# otherwise we have to do weird shenanigans with library linking and stuff
|
||||||
|
|
||||||
|
# Explicitly include CPMUtil here since we have a separate cpmfile for externals
|
||||||
|
set(CPMUTIL_JSON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json)
|
||||||
|
include(CPMUtil)
|
||||||
|
|
||||||
# Explicitly declare this option here to propagate to the oaknut CPM call
|
# Explicitly declare this option here to propagate to the oaknut CPM call
|
||||||
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
||||||
|
|
||||||
|
@ -30,32 +34,15 @@ endif()
|
||||||
# Xbyak (also used by Dynarmic, so needs to be added first)
|
# Xbyak (also used by Dynarmic, so needs to be added first)
|
||||||
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
||||||
if (PLATFORM_SUN)
|
if (PLATFORM_SUN)
|
||||||
# Fix regset.h collisions
|
AddJsonPackage(xbyak_sun)
|
||||||
set(XBYAK_HASH 51f507b0b3)
|
|
||||||
set(XBYAK_SHA512SUM 4a29a3c2f97f7d5adf667a21a008be03c951fb6696b0d7ba27e7e4afa037bc76eb5e059bb84860e01baf741d4d3ac851b840cd54c99d038812fbe0f1fa6d38a4)
|
|
||||||
else()
|
else()
|
||||||
set(XBYAK_HASH 4e44f4614d)
|
AddJsonPackage(xbyak)
|
||||||
set(XBYAK_SHA512SUM 5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
|
||||||
NAME xbyak
|
|
||||||
REPO "Lizzie841/xbyak"
|
|
||||||
SHA ${XBYAK_HASH}
|
|
||||||
HASH ${XBYAK_SHA512SUM}
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Oaknut (also used by Dynarmic, so needs to be added first)
|
# Oaknut (also used by Dynarmic, so needs to be added first)
|
||||||
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
||||||
AddPackage(
|
AddJsonPackage(oaknut)
|
||||||
NAME oaknut
|
|
||||||
VERSION 2.0.1
|
|
||||||
REPO "merryhime/oaknut"
|
|
||||||
SHA 94c726ce03
|
|
||||||
HASH d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# getopt
|
# getopt
|
||||||
|
@ -87,11 +74,9 @@ endif()
|
||||||
# Sirit
|
# Sirit
|
||||||
# TODO(crueter): spirv-tools doesn't work w/ system
|
# TODO(crueter): spirv-tools doesn't work w/ system
|
||||||
set(SPIRV_WERROR OFF)
|
set(SPIRV_WERROR OFF)
|
||||||
AddJsonPackage("spirv-headers")
|
AddJsonPackage(spirv_headers)
|
||||||
|
|
||||||
AddJsonPackage("sirit")
|
AddJsonPackage(sirit)
|
||||||
|
|
||||||
message(STATUS "Sirit added: ${sirit_ADDED}")
|
|
||||||
|
|
||||||
if(MSVC AND USE_CCACHE AND sirit_ADDED)
|
if(MSVC AND USE_CCACHE AND sirit_ADDED)
|
||||||
get_target_property(_opts sirit COMPILE_OPTIONS)
|
get_target_property(_opts sirit COMPILE_OPTIONS)
|
||||||
|
@ -102,12 +87,12 @@ endif()
|
||||||
|
|
||||||
# httplib
|
# httplib
|
||||||
if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER)
|
if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER)
|
||||||
AddJsonPackage("httplib")
|
AddJsonPackage(httplib)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# cpp-jwt
|
# cpp-jwt
|
||||||
if (ENABLE_WEB_SERVICE)
|
if (ENABLE_WEB_SERVICE)
|
||||||
AddJsonPackage("cpp-jwt")
|
AddJsonPackage(cpp-jwt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# unordered_dense
|
# unordered_dense
|
||||||
|
@ -134,47 +119,25 @@ endif()
|
||||||
|
|
||||||
# TODO(crueter): Vk1.4 impl
|
# TODO(crueter): Vk1.4 impl
|
||||||
|
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME VulkanHeaders
|
NAME vulkan-headers
|
||||||
VERSION 1.3.274
|
|
||||||
REPO "KhronosGroup/Vulkan-Headers"
|
|
||||||
SHA 89268a6d17
|
|
||||||
HASH 3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8
|
|
||||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_HEADERS}
|
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_HEADERS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Vulkan-Utility-Libraries
|
# Vulkan-Utility-Libraries
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME VulkanUtilityLibraries
|
NAME vulkan-utility-libraries
|
||||||
REPO "KhronosGroup/Vulkan-Utility-Libraries"
|
|
||||||
SHA df2e358152
|
|
||||||
HASH 3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79
|
|
||||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES}
|
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
# SPIRV-Tools
|
# SPIRV Tools
|
||||||
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
AddJsonPackage(spirv-tools)
|
||||||
AddPackage(
|
|
||||||
NAME SPIRV-Tools
|
|
||||||
REPO "KhronosGroup/SPIRV-Tools"
|
|
||||||
SHA 40eb301f32
|
|
||||||
HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa
|
|
||||||
OPTIONS
|
|
||||||
"SPIRV_SKIP_EXECUTABLES ON"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TZDB (Time Zone Database)
|
# TZDB (Time Zone Database)
|
||||||
add_subdirectory(nx_tzdb)
|
add_subdirectory(nx_tzdb)
|
||||||
|
|
||||||
# VMA
|
# VMA
|
||||||
AddPackage(
|
AddJsonPackage(vulkan-memory-allocator)
|
||||||
NAME VulkanMemoryAllocator
|
|
||||||
REPO "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator"
|
|
||||||
SHA 1076b348ab
|
|
||||||
HASH a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT TARGET LLVM::Demangle)
|
if (NOT TARGET LLVM::Demangle)
|
||||||
add_library(demangle demangle/ItaniumDemangle.cpp)
|
add_library(demangle demangle/ItaniumDemangle.cpp)
|
||||||
|
@ -204,17 +167,8 @@ if (NOT TARGET RenderDoc::API)
|
||||||
add_library(RenderDoc::API ALIAS renderdoc)
|
add_library(RenderDoc::API ALIAS renderdoc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ANDROID)
|
if (ANDROID AND ARCHITECTURE_arm64)
|
||||||
if (ARCHITECTURE_arm64)
|
AddJsonPackage(libadrenotools)
|
||||||
AddPackage(
|
|
||||||
NAME libadrenotools
|
|
||||||
REPO "bylaws/libadrenotools"
|
|
||||||
SHA 8fae8ce254
|
|
||||||
HASH c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb
|
|
||||||
PATCHES
|
|
||||||
${CMAKE_SOURCE_DIR}/.patch/libadrenotools/0001-linkerns-cpm.patch
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers)
|
if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers)
|
||||||
|
@ -237,6 +191,7 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client)
|
||||||
_CRT_NONSTDC_NO_DEPRECATE
|
_CRT_NONSTDC_NO_DEPRECATE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# TODO
|
||||||
AddPackage(
|
AddPackage(
|
||||||
NAME breakpad
|
NAME breakpad
|
||||||
URL "google/breakpad"
|
URL "google/breakpad"
|
||||||
|
@ -337,13 +292,7 @@ endif()
|
||||||
|
|
||||||
# oboe
|
# oboe
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
AddPackage(
|
AddJsonPackage(oboe)
|
||||||
NAME oboe
|
|
||||||
REPO "google/oboe"
|
|
||||||
SHA 2bc873e53c
|
|
||||||
HASH 02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(oboe::oboe ALIAS oboe)
|
add_library(oboe::oboe ALIAS oboe)
|
||||||
endif()
|
endif()
|
||||||
|
|
108
externals/cpmfile.json
vendored
Normal file
108
externals/cpmfile.json
vendored
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
{
|
||||||
|
"mbedtls": {
|
||||||
|
"repo": "Mbed-TLS/mbedtls",
|
||||||
|
"sha": "8c88150ca1",
|
||||||
|
"hash": "769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966",
|
||||||
|
"patches": [
|
||||||
|
"0001-cmake-version.patch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"spirv-headers": {
|
||||||
|
"package": "SPIRV-Headers",
|
||||||
|
"repo": "KhronosGroup/SPIRV-Headers",
|
||||||
|
"sha": "4e209d3d7e",
|
||||||
|
"hash": "f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4"
|
||||||
|
},
|
||||||
|
"sirit": {
|
||||||
|
"repo": "eden-emulator/sirit",
|
||||||
|
"sha": "db1f1e8ab5",
|
||||||
|
"hash": "73eb3a042848c63a10656545797e85f40d142009dfb7827384548a385e1e28e1ac72f42b25924ce530d58275f8638554281e884d72f9c7aaf4ed08690a414b05",
|
||||||
|
"options": [
|
||||||
|
"SIRIT_USE_SYSTEM_SPIRV_HEADERS ON"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"httplib": {
|
||||||
|
"repo": "yhirose/cpp-httplib",
|
||||||
|
"sha": "a609330e4c",
|
||||||
|
"hash": "dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2"
|
||||||
|
},
|
||||||
|
"cpp-jwt": {
|
||||||
|
"version": "1.4",
|
||||||
|
"repo": "arun11299/cpp-jwt",
|
||||||
|
"sha": "a54fa08a3b",
|
||||||
|
"hash": "a90f7e594ada0c7e49d5ff9211c71097534e7742a8e44bf0851b0362642a7271d53f5d83d04eeaae2bad17ef3f35e09e6818434d8eaefa038f3d1f7359d0969a",
|
||||||
|
"find_args": "CONFIG",
|
||||||
|
"options": [
|
||||||
|
"CPP_JWT_BUILD_EXAMPLES OFF",
|
||||||
|
"CPP_JWT_BUILD_TESTS OFF",
|
||||||
|
"CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF"
|
||||||
|
],
|
||||||
|
"patches": [
|
||||||
|
"0001-no-install.patch",
|
||||||
|
"0002-missing-decl.patch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"vulkan-headers": {
|
||||||
|
"package": "VulkanHeaders",
|
||||||
|
"version": "1.3.274",
|
||||||
|
"repo": "KhronosGroup/Vulkan-Headers",
|
||||||
|
"sha": "89268a6d17",
|
||||||
|
"hash": "3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8"
|
||||||
|
},
|
||||||
|
"vulkan-utility-libraries": {
|
||||||
|
"package": "VulkanUtilityLibraries",
|
||||||
|
"repo": "KhronosGroup/Vulkan-Utility-Libraries",
|
||||||
|
"sha": "df2e358152",
|
||||||
|
"hash": "3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79"
|
||||||
|
},
|
||||||
|
"vulkan-memory-allocator": {
|
||||||
|
"package": "VulkanMemoryAllocator",
|
||||||
|
"repo": "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator",
|
||||||
|
"sha": "1076b348ab",
|
||||||
|
"hash": "a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772",
|
||||||
|
"find_args": "CONFIG"
|
||||||
|
},
|
||||||
|
"spirv-tools": {
|
||||||
|
"package": "SPIRV-Tools",
|
||||||
|
"repo": "KhronosGroup/SPIRV-Tools",
|
||||||
|
"sha": "40eb301f32",
|
||||||
|
"hash": "58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa",
|
||||||
|
"options": [
|
||||||
|
"SPIRV_SKIP_EXECUTABLES ON"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xbyak_sun": {
|
||||||
|
"package": "xbyak",
|
||||||
|
"repo": "Lizzie841/xbyak",
|
||||||
|
"sha": "51f507b0b3",
|
||||||
|
"hash": "4a29a3c2f97f7d5adf667a21a008be03c951fb6696b0d7ba27e7e4afa037bc76eb5e059bb84860e01baf741d4d3ac851b840cd54c99d038812fbe0f1fa6d38a4",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"xbyak": {
|
||||||
|
"package": "xbyak",
|
||||||
|
"repo": "Lizzie841/xbyak",
|
||||||
|
"sha": "4e44f4614d",
|
||||||
|
"hash": "5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"oaknut": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"repo": "merryhime/oaknut",
|
||||||
|
"sha": "94c726ce03",
|
||||||
|
"hash": "d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac"
|
||||||
|
},
|
||||||
|
"libadrenotools": {
|
||||||
|
"repo": "bylaws/libadrenotools",
|
||||||
|
"sha": "8fae8ce254",
|
||||||
|
"hash": "c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb",
|
||||||
|
"patches": [
|
||||||
|
"0001-linkerns-cpm.patch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"oboe": {
|
||||||
|
"repo": "google/oboe",
|
||||||
|
"sha": "2bc873e53c",
|
||||||
|
"hash": "02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
12
externals/ffmpeg/CMakeLists.txt
vendored
12
externals/ffmpeg/CMakeLists.txt
vendored
|
@ -1,6 +1,10 @@
|
||||||
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Explicitly include CPMUtil here since we have a separate cpmfile for ffmpeg
|
||||||
|
set(CPMUTIL_JSON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json)
|
||||||
|
include(CPMUtil)
|
||||||
|
|
||||||
if (NOT WIN32 AND NOT ANDROID)
|
if (NOT WIN32 AND NOT ANDROID)
|
||||||
# Build FFmpeg from externals
|
# Build FFmpeg from externals
|
||||||
message(STATUS "Using FFmpeg from externals")
|
message(STATUS "Using FFmpeg from externals")
|
||||||
|
@ -19,13 +23,7 @@ if (NOT WIN32 AND NOT ANDROID)
|
||||||
message(FATAL_ERROR "Required program `autoconf` not found.")
|
message(FATAL_ERROR "Required program `autoconf` not found.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
AddJsonPackage(ffmpeg)
|
||||||
NAME ffmpeg
|
|
||||||
REPO "FFmpeg/FFmpeg"
|
|
||||||
SHA c2184b65d2
|
|
||||||
HASH 2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97
|
|
||||||
SYSTEM_PACKAGE OFF
|
|
||||||
)
|
|
||||||
|
|
||||||
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
|
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
|
||||||
set(FFmpeg_BUILD_DIR ${ffmpeg_BINARY_DIR})
|
set(FFmpeg_BUILD_DIR ${ffmpeg_BINARY_DIR})
|
||||||
|
|
8
externals/ffmpeg/cpmfile.json
vendored
Normal file
8
externals/ffmpeg/cpmfile.json
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"ffmpeg": {
|
||||||
|
"repo": "FFmpeg/FFmpeg",
|
||||||
|
"sha": "c2184b65d2",
|
||||||
|
"hash": "2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
88
src/dynarmic/externals/CMakeLists.txt
vendored
88
src/dynarmic/externals/CMakeLists.txt
vendored
|
@ -1,9 +1,11 @@
|
||||||
|
# Explicitly include CPMUtil here since we have a separate cpmfile for dynarmic
|
||||||
|
set(CPMUTIL_JSON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json)
|
||||||
|
include(CPMUtil)
|
||||||
|
|
||||||
# Always build externals as static libraries, even when dynarmic is built as shared
|
# Always build externals as static libraries, even when dynarmic is built as shared
|
||||||
if (BUILD_SHARED_LIBS)
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
set(BUILD_SHARED_LIBS OFF)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON)
|
||||||
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Allow options shadowing with normal variables when subproject use old cmake policy
|
# Allow options shadowing with normal variables when subproject use old cmake policy
|
||||||
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
||||||
|
@ -20,42 +22,32 @@ set(BUILD_TESTING OFF)
|
||||||
if ("riscv" IN_LIST ARCHITECTURE)
|
if ("riscv" IN_LIST ARCHITECTURE)
|
||||||
add_subdirectory(biscuit)
|
add_subdirectory(biscuit)
|
||||||
|
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME biscuit
|
NAME biscuit
|
||||||
VERSION 0.9.1
|
|
||||||
REPO "lioncash/biscuit"
|
|
||||||
SHA 76b0be8dae
|
|
||||||
HASH 47d55ed02d032d6cf3dc107c6c0a9aea686d5f25aefb81d1af91db027b6815bd5add1755505e19d76625feeb17aa2db6cd1668fe0dad2e6a411519bde6ca4489
|
|
||||||
BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
|
BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# catch
|
# catch
|
||||||
|
|
||||||
# TODO(crueter): dedup
|
# if (NOT TARGET Catch2::Catch2WithMain)
|
||||||
if (NOT TARGET Catch2::Catch2WithMain)
|
# if (DYNARMIC_TESTS)
|
||||||
if (DYNARMIC_TESTS)
|
# find_package(Catch2 3.0.1 REQUIRED)
|
||||||
find_package(Catch2 3.0.1 REQUIRED)
|
# endif()
|
||||||
endif()
|
# endif()
|
||||||
endif()
|
|
||||||
|
|
||||||
# fmt
|
# fmt
|
||||||
|
|
||||||
if (NOT TARGET fmt::fmt)
|
# if (NOT TARGET fmt::fmt)
|
||||||
# fmtlib formatting library
|
# # fmtlib formatting library
|
||||||
set(FMT_INSTALL ON)
|
# set(FMT_INSTALL ON)
|
||||||
add_subdirectory(fmt)
|
# add_subdirectory(fmt)
|
||||||
endif()
|
# endif()
|
||||||
|
|
||||||
# mcl
|
# mcl
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME mcl
|
NAME mcl
|
||||||
VERSION 0.1.12
|
BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
|
||||||
REPO "azahar-emu/mcl"
|
|
||||||
SHA 7b08d83418
|
|
||||||
HASH f943bac39c1879986decad7a442ff4288eaeca4a2907684c7914e115a55ecc43c2782ded85c0835763fe04e40d5c82220ce864423e489e648e408a84f54dc4f3
|
|
||||||
OPTIONS
|
|
||||||
"MCL_INSTALL OFF"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# oaknut
|
# oaknut
|
||||||
|
@ -70,14 +62,9 @@ AddPackage(
|
||||||
|
|
||||||
# unordered_dense
|
# unordered_dense
|
||||||
|
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME unordered_dense
|
NAME unordered-dense
|
||||||
REPO "Lizzie841/unordered_dense"
|
BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
|
||||||
SHA e59d30b7b1
|
|
||||||
HASH 71eff7bd9ba4b9226967bacd56a8ff000946f8813167cb5664bb01e96fb79e4e220684d824fe9c59c4d1cc98c606f13aff05b7940a1ed8ab3c95d6974ee34fa0
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
|
||||||
OPTIONS
|
|
||||||
"UNORDERED_DENSE_INSTALL OFF"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# xbyak
|
# xbyak
|
||||||
|
@ -93,31 +80,12 @@ AddPackage(
|
||||||
|
|
||||||
# TODO(crueter): maybe it's just Gentoo but zydis system package really sucks
|
# TODO(crueter): maybe it's just Gentoo but zydis system package really sucks
|
||||||
if ("x86_64" IN_LIST ARCHITECTURE)
|
if ("x86_64" IN_LIST ARCHITECTURE)
|
||||||
|
set(CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON)
|
||||||
# TODO(crueter): system zycore doesn't work with zydis
|
# TODO(crueter): system zycore doesn't work with zydis
|
||||||
AddPackage(
|
AddJsonPackage(zycore)
|
||||||
NAME Zycore
|
|
||||||
REPO "zyantific/zycore-c"
|
|
||||||
SHA 75a36c45ae
|
|
||||||
HASH 15aa399f39713e042c4345bc3175c82f14dca849fde2a21d4f591f62c43e227b70d868d8bb86beb5f4eb68b1d6bd3792cdd638acf89009e787e3d10ee7401924
|
|
||||||
OPTIONS
|
|
||||||
"CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
BUNDLED_PACKAGE ON
|
|
||||||
)
|
|
||||||
|
|
||||||
AddPackage(
|
AddJsonPackage(
|
||||||
NAME Zydis
|
NAME zydis
|
||||||
VERSION 4
|
BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
|
||||||
REPO "zyantific/zydis"
|
|
||||||
SHA c2d2bab025
|
|
||||||
HASH 7b48f213ff7aab2926f8c9c65195959143bebbfb2b9a25051ffd8b8b0f1baf1670d9739781de674577d955925f91ac89376e16b476a03828c84e2fd765d45020
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
|
||||||
OPTIONS
|
|
||||||
"ZYDIS_BUILD_TOOLS OFF"
|
|
||||||
"ZYDIS_BUILD_EXAMPLES OFF"
|
|
||||||
"ZYDIS_BUILD_DOXYGEN OFF"
|
|
||||||
"ZYAN_SYSTEM_ZYCORE ON"
|
|
||||||
"CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON"
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
47
src/dynarmic/externals/cpmfile.json
vendored
Normal file
47
src/dynarmic/externals/cpmfile.json
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"biscuit": {
|
||||||
|
"version": "0.9.1",
|
||||||
|
"repo": "lioncash/biscuit",
|
||||||
|
"sha": "76b0be8dae",
|
||||||
|
"hash": "47d55ed02d032d6cf3dc107c6c0a9aea686d5f25aefb81d1af91db027b6815bd5add1755505e19d76625feeb17aa2db6cd1668fe0dad2e6a411519bde6ca4489"
|
||||||
|
},
|
||||||
|
"mcl": {
|
||||||
|
"version": "0.1.12",
|
||||||
|
"repo": "azahar-emu/mcl",
|
||||||
|
"sha": "7b08d83418",
|
||||||
|
"hash": "f943bac39c1879986decad7a442ff4288eaeca4a2907684c7914e115a55ecc43c2782ded85c0835763fe04e40d5c82220ce864423e489e648e408a84f54dc4f3",
|
||||||
|
"options": [
|
||||||
|
"MCL_INSTALL OFF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unordered-dense": {
|
||||||
|
"package": "unordered_dense",
|
||||||
|
"repo": "Lizzie841/unordered_dense",
|
||||||
|
"sha": "e59d30b7b1",
|
||||||
|
"hash": "71eff7bd9ba4b9226967bacd56a8ff000946f8813167cb5664bb01e96fb79e4e220684d824fe9c59c4d1cc98c606f13aff05b7940a1ed8ab3c95d6974ee34fa0",
|
||||||
|
"find_args": "CONFIG",
|
||||||
|
"options": [
|
||||||
|
"UNORDERED_DENSE_INSTALL OFF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"zycore": {
|
||||||
|
"package": "Zycore",
|
||||||
|
"repo": "zyantific/zycore-c",
|
||||||
|
"sha": "75a36c45ae",
|
||||||
|
"hash": "15aa399f39713e042c4345bc3175c82f14dca849fde2a21d4f591f62c43e227b70d868d8bb86beb5f4eb68b1d6bd3792cdd638acf89009e787e3d10ee7401924",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"zydis": {
|
||||||
|
"package": "Zydis",
|
||||||
|
"version": "4",
|
||||||
|
"repo": "zyantific/zydis",
|
||||||
|
"sha": "c2d2bab025",
|
||||||
|
"hash": "7b48f213ff7aab2926f8c9c65195959143bebbfb2b9a25051ffd8b8b0f1baf1670d9739781de674577d955925f91ac89376e16b476a03828c84e2fd765d45020",
|
||||||
|
"options": [
|
||||||
|
"ZYDIS_BUILD_TOOLS OFF",
|
||||||
|
"ZYDIS_BUILD_EXAMPLES OFF",
|
||||||
|
"ZYDIS_BUILD_DOXYGEN OFF",
|
||||||
|
"ZYAN_SYSTEM_ZYCORE ON"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
14
src/yuzu/externals/CMakeLists.txt
vendored
14
src/yuzu/externals/CMakeLists.txt
vendored
|
@ -1,6 +1,10 @@
|
||||||
# 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
|
||||||
|
|
||||||
|
# Explicitly include CPMUtil here since we have a separate cpmfile for Qt externals
|
||||||
|
set(CPMUTIL_JSON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json)
|
||||||
|
include(CPMUtil)
|
||||||
|
|
||||||
# Disable tests/tools in all externals supporting the standard option name
|
# Disable tests/tools in all externals supporting the standard option name
|
||||||
set(BUILD_TESTING OFF)
|
set(BUILD_TESTING OFF)
|
||||||
|
|
||||||
|
@ -11,12 +15,4 @@ set(BUILD_SHARED_LIBS OFF)
|
||||||
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON)
|
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON)
|
||||||
|
|
||||||
# QuaZip
|
# QuaZip
|
||||||
AddPackage(
|
AddJsonPackage(quazip)
|
||||||
NAME QuaZip-Qt6
|
|
||||||
VERSION 1.3
|
|
||||||
REPO "crueter/quazip-qt6"
|
|
||||||
SHA f838774d63
|
|
||||||
HASH 9f629a438699801244a106c8df6d5f8f8d19e80df54f530a89403a10c8c4e37a6e95606bbdd307f23636961e8ce34eb37a2186d589a1f227ac9c8e2c678e326e
|
|
||||||
OPTIONS
|
|
||||||
"QUAZIP_INSTALL OFF"
|
|
||||||
)
|
|
||||||
|
|
12
src/yuzu/externals/cpmfile.json
vendored
Normal file
12
src/yuzu/externals/cpmfile.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"quazip": {
|
||||||
|
"package": "QuaZip-Qt6",
|
||||||
|
"repo": "crueter/quazip-qt6",
|
||||||
|
"sha": "f838774d63",
|
||||||
|
"hash": "9f629a438699801244a106c8df6d5f8f8d19e80df54f530a89403a10c8c4e37a6e95606bbdd307f23636961e8ce34eb37a2186d589a1f227ac9c8e2c678e326e",
|
||||||
|
"version": "1.3",
|
||||||
|
"options": [
|
||||||
|
"QUAZIP_INSTALL OFF"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
10
tools/cpm-fetch-all.sh
Executable file
10
tools/cpm-fetch-all.sh
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
LIBS=$(find . externals src/yuzu/externals externals/ffmpeg src/dynarmic/externals -maxdepth 1 -name cpmfile.json -exec jq -j 'keys_unsorted | join(" ")' {} \; -printf " ")
|
||||||
|
tools/cpm-fetch.sh $LIBS
|
188
tools/cpm-fetch.sh
Executable file
188
tools/cpm-fetch.sh
Executable file
|
@ -0,0 +1,188 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2025 crueter
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
[ -z "$CPM_SOURCE_CACHE" ] && CPM_SOURCE_CACHE=$PWD/.cache/cpm
|
||||||
|
|
||||||
|
mkdir -p $CPM_SOURCE_CACHE
|
||||||
|
|
||||||
|
ROOTDIR="$PWD"
|
||||||
|
|
||||||
|
TMP=$(mktemp -d)
|
||||||
|
|
||||||
|
download_package() {
|
||||||
|
FILENAME=$(basename "$DOWNLOAD")
|
||||||
|
|
||||||
|
OUTFILE="$TMP/$FILENAME"
|
||||||
|
|
||||||
|
LOWER_PACKAGE=$(tr '[:upper:]' '[:lower:]' <<< "$PACKAGE_NAME")
|
||||||
|
OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}"
|
||||||
|
[ -d "$OUTDIR" ] && return
|
||||||
|
|
||||||
|
curl "$DOWNLOAD" -s -L -o "$OUTFILE"
|
||||||
|
echo $OUTFILE
|
||||||
|
|
||||||
|
mkdir -p "$OUTDIR"
|
||||||
|
|
||||||
|
pushd "$OUTDIR"
|
||||||
|
|
||||||
|
case "$FILENAME" in
|
||||||
|
(*.7z)
|
||||||
|
7z x "$OUTFILE"
|
||||||
|
;;
|
||||||
|
(*.tar*)
|
||||||
|
tar xf "$OUTFILE"
|
||||||
|
;;
|
||||||
|
(*.zip)
|
||||||
|
unzip "$OUTFILE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# basically if only one real item exists at the top we just move everything from there
|
||||||
|
# since github and some vendors hate me
|
||||||
|
DIRS=$(find -maxdepth 1 -type d -o -type f)
|
||||||
|
|
||||||
|
# thanks gnu
|
||||||
|
if [ $(wc -l <<< "$DIRS") -eq 2 ]; then
|
||||||
|
SUBDIR=$(find . -maxdepth 1 -type d -not -name ".")
|
||||||
|
mv "$SUBDIR"/* .
|
||||||
|
mv "$SUBDIR"/.* . || true
|
||||||
|
rmdir "$SUBDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -e "patches" <<< "$JSON"; then
|
||||||
|
PATCHES=$(jq -r '.patches | join(" ")' <<< "$JSON")
|
||||||
|
for patch in $PATCHES; do
|
||||||
|
patch -p1 < "$ROOTDIR"/.patch/$package/$patch
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
ci_package() {
|
||||||
|
REPO=$(jq -r ".repo" <<< "$JSON")
|
||||||
|
EXT=$(jq -r '.extension' <<< "$JSON")
|
||||||
|
[ "$EXT" == null ] && EXT="tar.zst"
|
||||||
|
|
||||||
|
VERSION=$(jq -r ".version" <<< "$JSON")
|
||||||
|
NAME=$(jq -r ".name | \"$package\"" <<< "$JSON")
|
||||||
|
PACKAGE=$(jq -r ".package | \"$package\"" <<< "$JSON")
|
||||||
|
|
||||||
|
# TODO(crueter)
|
||||||
|
# DISABLED=$(jq -j '.disabled_platforms | join(" ")' <<< "$JSON")
|
||||||
|
|
||||||
|
[ "$REPO" == null ] && echo "No repo defined for CI package $package" && return
|
||||||
|
|
||||||
|
for platform in windows-amd64 windows-arm64 android solaris freebsd linux linux-aarch64; do
|
||||||
|
FILENAME="${NAME}-${platform}-${VERSION}.${EXT}"
|
||||||
|
DOWNLOAD="https://github.com/${REPO}/releases/download/v${VERSION}/${FILENAME}"
|
||||||
|
PACKAGE_NAME="$PACKAGE"
|
||||||
|
KEY=$platform
|
||||||
|
echo $DOWNLOAD
|
||||||
|
|
||||||
|
download_package
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
for package in $@
|
||||||
|
do
|
||||||
|
# prepare for cancer
|
||||||
|
JSON=$(find . externals src/yuzu/externals externals/ffmpeg src/dynarmic/externals -maxdepth 1 -name cpmfile.json -exec jq -r ".\"$package\" | select( . != null )" {} \;)
|
||||||
|
|
||||||
|
[ -z "$JSON" ] && echo "No cpmfile definition for $package" && continue
|
||||||
|
echo $JSON
|
||||||
|
|
||||||
|
PACKAGE_NAME=$(jq -r ".package" <<< "$JSON")
|
||||||
|
[ "$PACKAGE_NAME" == null ] && PACKAGE_NAME="$package"
|
||||||
|
|
||||||
|
CI=$(jq -r ".ci" <<< "$JSON")
|
||||||
|
if [ "$CI" != null ]; then
|
||||||
|
ci_package
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# url parsing WOOOHOOHOHOOHOHOH
|
||||||
|
URL=$(jq -r ".url" <<< "$JSON")
|
||||||
|
REPO=$(jq -r ".repo" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$URL" != "null" ]; then
|
||||||
|
DOWNLOAD="$URL"
|
||||||
|
elif [ "$REPO" != "null" ]; then
|
||||||
|
GIT_URL="https://github.com/$REPO"
|
||||||
|
|
||||||
|
TAG=$(jq -r ".tag" <<< "$JSON")
|
||||||
|
ARTIFACT=$(jq -r ".artifact" <<< "$JSON")
|
||||||
|
SHA=$(jq -r ".sha" <<< "$JSON")
|
||||||
|
BRANCH=$(jq -r ".branch" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$TAG" != "null" ]; then
|
||||||
|
if [ "$ARTIFACT" != "null" ]; then
|
||||||
|
DOWNLOAD="${GIT_URL}/releases/download/${TAG}/${ARTIFACT}"
|
||||||
|
else
|
||||||
|
DOWNLOAD="${GIT_URL}/archive/refs/tags/${TAG}.tar.gz"
|
||||||
|
fi
|
||||||
|
elif [ "$SHA" != "null" ]; then
|
||||||
|
DOWNLOAD="${GIT_URL}/archive/${SHA}.zip"
|
||||||
|
else
|
||||||
|
if [ "$BRANCH" == null ]; then
|
||||||
|
BRANCH=master
|
||||||
|
fi
|
||||||
|
|
||||||
|
DOWNLOAD="${GIT_URL}/archive/refs/heads/${BRANCH}.zip"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No repo or URL defined for $package"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# key parsing
|
||||||
|
KEY=$(jq -r ".key" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$KEY" == null ]; then
|
||||||
|
VERSION=$(jq -r ".version" <<< "$JSON")
|
||||||
|
GIT_VERSION=$(jq -r ".git_version" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$SHA" != null ]; then
|
||||||
|
KEY=$(cut -c1-4 - <<< "$SHA")
|
||||||
|
elif [ "$GIT_VERSION" != null ]; then
|
||||||
|
KEY="$GIT_VERSION"
|
||||||
|
elif [ "$VERSION" != null ]; then
|
||||||
|
KEY="$VERSION"
|
||||||
|
else
|
||||||
|
echo "No valid key could be determined for $package. Must define one of: key, sha, version, git_version"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$package download URL: $DOWNLOAD, with key $KEY"
|
||||||
|
|
||||||
|
# hash parsing
|
||||||
|
HASH_ALGO=$(jq -r ".hash_algo" <<< "$JSON")
|
||||||
|
[ "$HASH_ALGO" == null ] && HASH_ALGO=sha512
|
||||||
|
|
||||||
|
HASH=$(jq -r ".hash" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$HASH" == null ]; then
|
||||||
|
HASH_SUFFIX="${HASH_ALGO}sum"
|
||||||
|
HASH_URL=$(jq -r ".hash_url" <<< "$JSON")
|
||||||
|
|
||||||
|
if [ "$HASH_URL" == null ]; then
|
||||||
|
HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
HASH=$(curl "$HASH_URL" -L -o -)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# TODO(crueter): Hash verification
|
||||||
|
|
||||||
|
echo "$package hash is $HASH"
|
||||||
|
|
||||||
|
download_package
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf $TMP
|
Loading…
Add table
Add a link
Reference in a new issue