diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake index c9ad5f1e2f..a628e3fc89 100644 --- a/CMakeModules/CPMUtil.cmake +++ b/CMakeModules/CPMUtil.cmake @@ -552,7 +552,6 @@ macro(parse_object object) get_json_element("${object}" repo repo) get_json_element("${object}" ci ci OFF) get_json_element("${object}" version version) - get_json_element("${object}" min_version min_version) get_json_element("${object}" git_host git_host "github.com") if (NOT version) @@ -571,8 +570,8 @@ macro(parse_object object) set(disabled_platforms "") endif() else() - # TODO: correct hash if missing get_json_element("${object}" hash hash) + get_json_element("${object}" min_version min_version) get_json_element("${object}" url url) get_json_element("${object}" artifact artifact) get_json_element("${object}" source_subdir source_subdir) @@ -945,8 +944,8 @@ function(AddCIPackage) REPO PACKAGE EXTENSION - MIN_VERSION - GIT_HOST) + GIT_HOST + PKGNAME) set(multiValueArgs DISABLED_PLATFORMS) @@ -996,9 +995,104 @@ function(AddCIPackage) set(ARTIFACT_REPO ${PKG_ARGS_REPO}) set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE}) - # TODO: Use amd64/aarch64 naming for everything. - # Also drop macos universal + # plat/archname + if (DEFINED PKG_ARGS_PKGNAME) + set(pkgname ${PKG_ARGS_PKGNAME}) + else() + if (MSVC) + set(platname windows) + elseif(MINGW) + set(platname mingw) + elseif(ANDROID) + set(platname android) + elseif(LINUX) + set(platname linux) + elseif(IOS) + set(platname ios) + elseif(APPLE) + set(platname macos) + else() + cpm_utils_message(WARNING + "Unsupported platform ${CMAKE_SYSTEM_NAME} for CI packages") + endif() + if (CPMUTIL_AMD64) + set(archname amd64) + elseif(CPMUTIL_ARM64) + set(archname aarch64) + elseif(CPMUTIL_RISCV64) + set(archname riscv64) + endif() + + if (APPLE AND NOT CPMUTIL_ARM64) + cpm_utils_message(WARNING + "Unsupported platform/arch combo for CI packages") + endif() + + if (DEFINED platname AND DEFINED archname) + set(pkgname ${platname}-${archname}) + endif() + endif() + + if (DEFINED pkgname + AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS) + set(ARTIFACT + "${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}") + + if (PKG_ARGS_MODULE_PATH) + set(EXTRA_ARGS MODULE_PATH) + endif() + + # download sha512sum file + # TODO: CI pkgs + set(sha512sum_url + "https://${ARTIFACT_GIT_HOST}/${ARTIFACT_REPO}/releases/download/${ARTIFACT_VERSION}/${ARTIFACT}.sha512sum") + set(sha512sum_file + "${CMAKE_CURRENT_BINARY_DIR}/.cpmutil_${ARTIFACT}_sha512sum") + + file(DOWNLOAD "${sha512sum_url}" "${sha512sum_file}" + STATUS sha512sum_status) + list(GET sha512sum_status 0 sha512sum_error) + + if(sha512sum_error) + message(FATAL_ERROR "[CPMUtil] Failed to download sha512sum " + "for ${ARTIFACT_NAME} from ${sha512sum_url}") + endif() + + file(READ "${sha512sum_file}" sha512sum_hash) + string(STRIP "${sha512sum_hash}" sha512sum_hash) + file(REMOVE "${sha512sum_file}") + + AddPackage( + NAME ${ARTIFACT_PACKAGE} + REPO ${ARTIFACT_REPO} + VERSION ${ARTIFACT_VERSION} + ARTIFACT ${ARTIFACT} + CUSTOM_KEY "${ARTIFACT_VERSION}-${pkgname}" + HASH ${sha512sum_hash} + FORCE_BUNDLED_PACKAGE ON + ${EXTRA_ARGS}) + + set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) + Propagate(${ARTIFACT_PACKAGE}_SOURCE_DIR) + Propagate(CMAKE_PREFIX_PATH) + else() + cpm_utils_message(FATAL_ERROR "${ARTIFACT_NAME}:" + "Unsupported platform ${pkgname} for CI package") + endif() +endfunction() + +# Utility function for Qt +function(AddQt repo version) + if (NOT DEFINED repo) + message(FATAL_ERROR "[CPMUtil] AddQt: repo is required") + endif() + + if (NOT DEFINED version) + message(FATAL_ERROR "[CPMUtil] AddQt: version is required") + endif() + + # TODO: update Qt if (MSVC) set(platname windows) elseif(MINGW) @@ -1035,64 +1129,6 @@ function(AddCIPackage) set(pkgname ${platname}-${archname}) endif() - if (DEFINED pkgname - AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS) - set(ARTIFACT - "${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}") - - if (PKG_ARGS_MODULE_PATH) - set(EXTRA_ARGS MODULE_PATH) - endif() - - # download sha512sum file - # TODO: CI pkgs - set(sha512sum_url - "https://${ARTIFACT_GIT_HOST}/${ARTIFACT_REPO}/releases/download/v${ARTIFACT_VERSION}/${ARTIFACT}.sha512sum") - set(sha512sum_file - "${CMAKE_CURRENT_BINARY_DIR}/.cpmutil_${ARTIFACT}_sha512sum") - - file(DOWNLOAD "${sha512sum_url}" "${sha512sum_file}" - STATUS sha512sum_status) - list(GET sha512sum_status 0 sha512sum_error) - - if(sha512sum_error) - message(FATAL_ERROR "[CPMUtil] Failed to download sha512sum " - "for ${ARTIFACT_NAME} from ${sha512sum_url}") - endif() - - file(READ "${sha512sum_file}" sha512sum_hash) - string(STRIP "${sha512sum_hash}" sha512sum_hash) - file(REMOVE "${sha512sum_file}") - - AddPackage( - NAME ${ARTIFACT_PACKAGE} - REPO ${ARTIFACT_REPO} - VERSION "v${ARTIFACT_VERSION}" - ARTIFACT ${ARTIFACT} - CUSTOM_KEY "${ARTIFACT_VERSION}-${pkgname}" - HASH ${sha512sum_hash} - FORCE_BUNDLED_PACKAGE ON - ${EXTRA_ARGS}) - - set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) - Propagate(${ARTIFACT_PACKAGE}_SOURCE_DIR) - Propagate(CMAKE_PREFIX_PATH) - else() - cpm_utils_message(FATAL_ERROR "${ARTIFACT_NAME}:" - "Unsupported platform ${pkgname} for CI package") - endif() -endfunction() - -# Utility function for Qt -function(AddQt repo version) - if (NOT DEFINED repo) - message(FATAL_ERROR "[CPMUtil] AddQt: repo is required") - endif() - - if (NOT DEFINED version) - message(FATAL_ERROR "[CPMUtil] AddQt: version is required") - endif() - AddCIPackage( NAME qt PACKAGE Qt6 @@ -1100,7 +1136,8 @@ function(AddQt repo version) REPO ${repo} DISABLED_PLATFORMS android-x86_64 android-aarch64 - MODULE_PATH) + MODULE_PATH + PKGNAME ${pkgname}) find_package(Qt6 REQUIRED PATHS ${Qt6_SOURCE_DIR} NO_DEFAULT_PATH) diff --git a/cpmfile.json b/cpmfile.json index ce6275fb99..c0d879f838 100644 --- a/cpmfile.json +++ b/cpmfile.json @@ -1,4 +1,12 @@ { + "": { + "ci": true, + "hash": "9f50d993c39529e022ad456163de91ac5934e16faf8fc348f305355fc0a643c534f87ded707e11bd03bcbc0a1760bd20852b6533a67ac0558a078385181cb184", + "name": "SDL3", + "package": "SDL3", + "repo": "crueter-ci/SDL3", + "version": "3.4.14-1788231389-147a8ee32d" + }, "biscuit": { "hash": "1229f345b014f7ca544dedb4edb3311e41ba736f9aa9a67f88b5f26f3c983288c6bb6cdedcfb0b8a02c63088a37e6a0d7ba97d9c2a4d721b213916327cffe28a", "min_version": "0.9.1", @@ -79,11 +87,10 @@ }, "ffmpeg-ci": { "ci": true, - "min_version": "4.1", "name": "ffmpeg", "package": "FFmpeg", "repo": "crueter-ci/FFmpeg", - "version": "8.0.1-c7b5f1537d" + "version": "9.0.1-1788120736-bf1b838f2a" }, "fmt": { "hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2", @@ -197,11 +204,10 @@ }, "openssl-ci": { "ci": true, - "min_version": "3.0.0", "name": "openssl", "package": "OpenSSL", "repo": "crueter-ci/OpenSSL", - "version": "4.0.0-11b7b6ea3b" + "version": "4.0.1-1788234794-b64f68a94e" }, "openssl-cmake": { "bundled": true, @@ -255,11 +261,10 @@ }, "sdl3-ci": { "ci": true, - "min_version": "3.2.10", "name": "SDL3", "package": "SDL3", "repo": "crueter-ci/SDL3", - "version": "3.4.8-d57c3b685c" + "version": "3.4.14-1788231389-147a8ee32d" }, "simpleini": { "find_args": "MODULE", @@ -282,7 +287,7 @@ "name": "sirit", "package": "sirit", "repo": "eden-emulator/sirit", - "version": "1.0.5" + "version": "v1.0.7" }, "spirv-headers": { "hash": "d624371dd455c66a300344c89812598ffe11b5eedba555779f789e85c29dc67317741858c60e0744a1e6755cc0d2759b8659f0674f4cc31479c4cb6fc25ed23b", diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index e89a766106..6e324ce9f6 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -161,9 +161,6 @@ if (NOT ANDROID) AddJsonPackage(sdl3) else() message(STATUS "Using bundled SDL3") - if (FREEBSD) - set(BUILD_SHARED_LIBS ON) - endif() AddJsonPackage(sdl3-ci) endif() diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 6e3f675f2b..f1bf099c10 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -4,8 +4,6 @@ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later -# TODO(crueter, MaranBr): Externals FFmpeg 8.0 - set(FFmpeg_HWACCEL_LIBRARIES) set(FFmpeg_HWACCEL_FLAGS) set(FFmpeg_HWACCEL_INCLUDE_DIRS)