aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2025-09-20 22:58:33 +0200
committercrueter <crueter@eden-emu.dev>2025-09-20 22:58:33 +0200
commit06dabbadcbdb7291d9e238da46b81eb0b7fc1e83 (patch)
tree12663433f06e4432b4ffa2ec3ed6ad60bf11ec1b
parent8c9cdf0d70eebd92933f7120c36069fec996f85d (diff)
[cmake] fix OpenGL, git rev identifier (#2530)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2530 Reviewed-by: MaranBr <maranbr@eden-emu.dev>
-rw-r--r--CMakeLists.txt11
-rw-r--r--CMakeModules/CPMUtil.cmake5
-rw-r--r--CMakeModules/GenerateSCMRev.cmake35
-rw-r--r--CMakeModules/GetSCMRev.cmake49
-rw-r--r--src/common/scm_rev.cpp.in6
-rw-r--r--src/common/scm_rev.h4
-rw-r--r--src/dynarmic/CMakeLists.txt2
-rw-r--r--src/qt_common/CMakeLists.txt5
-rw-r--r--src/yuzu/CMakeLists.txt4
-rw-r--r--src/yuzu/about_dialog.cpp16
-rw-r--r--src/yuzu/main.cpp13
11 files changed, 93 insertions, 57 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 673aab9e6e..6d8739fb00 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -187,9 +187,7 @@ option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android"
option(FORCE_DOWNLOAD_WIN_BUNDLES "Forcefully download bundled Windows dependencies (useful for CI)" OFF)
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
-if (YUZU_USE_CPM AND ENABLE_SDL2)
- option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}")
-endif()
+CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "ENABLE_SDL2" OFF)
CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF)
@@ -209,6 +207,8 @@ CMAKE_DEPENDENT_OPTION(USE_SYSTEM_MOLTENVK "Use the system MoltenVK lib (instead
set(YUZU_TZDB_PATH "" CACHE STRING "Path to a pre-downloaded timezone database")
+option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" OFF)
+
set(DEFAULT_ENABLE_OPENSSL ON)
if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN)
# - Windows defaults to the Schannel backend.
@@ -483,7 +483,10 @@ if (YUZU_USE_CPM)
else()
# Enforce the search mode of non-required packages for better and shorter failure messages
find_package(fmt 8 REQUIRED)
- find_package(LLVM MODULE COMPONENTS Demangle)
+ if (NOT YUZU_DISABLE_LLVM)
+ find_package(LLVM MODULE COMPONENTS Demangle)
+ endif()
+
find_package(nlohmann_json 3.8 REQUIRED)
find_package(lz4 REQUIRED)
find_package(RenderDoc MODULE)
diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake
index f76a16c103..6a1384e730 100644
--- a/CMakeModules/CPMUtil.cmake
+++ b/CMakeModules/CPMUtil.cmake
@@ -598,11 +598,6 @@ function(AddCIPackage)
if (DEFINED ARTIFACT_DIR)
include(${ARTIFACT_DIR}/${ARTIFACT_CMAKE}.cmake)
-
- set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${ARTIFACT_NAME})
- 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)
else()
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake
index bcb5dc466a..2d7081b7db 100644
--- a/CMakeModules/GenerateSCMRev.cmake
+++ b/CMakeModules/GenerateSCMRev.cmake
@@ -1,38 +1,35 @@
+# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+# SPDX-License-Identifier: GPL-3.0-or-later
+
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
-# Gets a UTC timestamp and sets the provided variable to it
+# generate git/build information
+include(GetSCMRev)
+
function(get_timestamp _var)
string(TIMESTAMP timestamp UTC)
set(${_var} "${timestamp}" PARENT_SCOPE)
endfunction()
-# generate git/build information
-include(GetGitRevisionDescription)
-if(NOT GIT_REF_SPEC)
- get_git_head_revision(GIT_REF_SPEC GIT_REV)
-endif()
-if(NOT GIT_DESC)
- git_describe(GIT_DESC --always --long --dirty)
-endif()
-if (NOT GIT_BRANCH)
- git_branch_name(GIT_BRANCH)
-endif()
get_timestamp(BUILD_DATE)
-git_get_exact_tag(GIT_TAG --tags)
-if (GIT_TAG MATCHES "NOTFOUND")
- set(BUILD_VERSION "${GIT_DESC}")
- set(IS_DEV_BUILD true)
-else()
- set(BUILD_VERSION ${GIT_TAG})
+if (DEFINED GIT_RELEASE)
+ set(BUILD_VERSION "${GIT_TAG}")
+ set(GIT_REFSPEC "${GIT_RELEASE}")
set(IS_DEV_BUILD false)
+else()
+ string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION)
+ set(BUILD_VERSION "${BUILD_VERSION}-${GIT_REFSPEC}")
+ set(IS_DEV_BUILD true)
endif()
+set(GIT_DESC ${BUILD_VERSION})
+
# Generate cpp with Git revision from template
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
set(REPO_NAME "Eden")
-set(BUILD_ID ${GIT_BRANCH})
+set(BUILD_ID ${GIT_REFSPEC})
set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ")
set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
diff --git a/CMakeModules/GetSCMRev.cmake b/CMakeModules/GetSCMRev.cmake
new file mode 100644
index 0000000000..ee5ce6a91c
--- /dev/null
+++ b/CMakeModules/GetSCMRev.cmake
@@ -0,0 +1,49 @@
+# SPDX-FileCopyrightText: 2025 crueter
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+include(GetGitRevisionDescription)
+
+function(trim var)
+ string(REGEX REPLACE "\n" "" new "${${var}}")
+ set(${var} ${new} PARENT_SCOPE)
+endfunction()
+
+set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG)
+set(REF_FILE ${CMAKE_SOURCE_DIR}/GIT-REFSPEC)
+set(COMMIT_FILE ${CMAKE_SOURCE_DIR}/GIT-COMMIT)
+set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE)
+
+if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE})
+ file(READ ${REF_FILE} GIT_REFSPEC)
+ file(READ ${COMMIT_FILE} GIT_COMMIT)
+else()
+ get_git_head_revision(GIT_REFSPEC GIT_COMMIT)
+ git_branch_name(GIT_REFSPEC)
+ if (GIT_REFSPEC MATCHES "NOTFOUND")
+ set(GIT_REFSPEC 1.0.0)
+ set(GIT_COMMIT stable)
+ endif()
+endif()
+
+if (EXISTS ${TAG_FILE})
+ file(READ ${TAG_FILE} GIT_TAG)
+else()
+ git_describe(GIT_TAG --tags --abbrev=0)
+ if (GIT_TAG MATCHES "NOTFOUND")
+ set(GIT_TAG "${GIT_REFSPEC}")
+ endif()
+endif()
+
+if (EXISTS ${RELEASE_FILE})
+ file(READ ${RELEASE_FILE} GIT_RELEASE)
+ trim(GIT_RELEASE)
+ message(STATUS "Git release: ${GIT_RELEASE}")
+endif()
+
+trim(GIT_REFSPEC)
+trim(GIT_COMMIT)
+trim(GIT_TAG)
+
+message(STATUS "Git commit: ${GIT_COMMIT}")
+message(STATUS "Git tag: ${GIT_TAG}")
+message(STATUS "Git refspec: ${GIT_REFSPEC}")
diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in
index a157d03878..1630ceae83 100644
--- a/src/common/scm_rev.cpp.in
+++ b/src/common/scm_rev.cpp.in
@@ -6,8 +6,8 @@
#include "common/scm_rev.h"
-#define GIT_REV "@GIT_REV@"
-#define GIT_BRANCH "@GIT_BRANCH@"
+#define GIT_REV "@GIT_COMMIT@"
+#define GIT_BRANCH "@GIT_REFSPEC@"
#define GIT_DESC "@GIT_DESC@"
#define BUILD_NAME "@REPO_NAME@"
#define BUILD_DATE "@BUILD_DATE@"
@@ -31,7 +31,7 @@ constexpr const char g_build_version[] = BUILD_VERSION;
constexpr const char g_build_id[] = BUILD_ID;
constexpr const char g_title_bar_format_idle[] = TITLE_BAR_FORMAT_IDLE;
constexpr const char g_title_bar_format_running[] = TITLE_BAR_FORMAT_RUNNING;
-constexpr const bool g_is_dev_build = IS_DEV_BUILD;
constexpr const char g_compiler_id[] = COMPILER_ID;
+constexpr const bool g_is_dev_build = IS_DEV_BUILD;
} // namespace Common
diff --git a/src/common/scm_rev.h b/src/common/scm_rev.h
index 84356ad64a..8f48241557 100644
--- a/src/common/scm_rev.h
+++ b/src/common/scm_rev.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
@@ -19,7 +19,7 @@ extern const char g_build_id[];
extern const char g_title_bar_format_idle[];
extern const char g_title_bar_format_running[];
extern const char g_shader_cache_version[];
-extern const bool g_is_dev_build;
extern const char g_compiler_id[];
+extern const bool g_is_dev_build;
} // namespace Common
diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt
index 38457deb50..a9808391ae 100644
--- a/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/CMakeLists.txt
@@ -27,7 +27,7 @@ endif()
option(DYNARMIC_FATAL_ERRORS "Errors are fatal" OFF)
option(DYNARMIC_IGNORE_ASSERTS "Ignore asserts" OFF)
option(DYNARMIC_TESTS_USE_UNICORN "Enable fuzzing tests against unicorn" OFF)
-option(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 code using LLVM" OFF)
+CMAKE_DEPENDENT_OPTION(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 code using LLVM" OFF "NOT YUZU_DISABLE_LLVM" OFF)
if (PLATFORM_OPENBSD)
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt
index 9d292da401..eb36de4cf2 100644
--- a/src/qt_common/CMakeLists.txt
+++ b/src/qt_common/CMakeLists.txt
@@ -40,7 +40,10 @@ endif()
add_subdirectory(externals)
target_link_libraries(qt_common PRIVATE core Qt6::Core SimpleIni::SimpleIni QuaZip::QuaZip frozen::frozen)
-target_link_libraries(qt_common PRIVATE Qt6::Core)
+
+if (NOT APPLE AND ENABLE_OPENGL)
+ target_compile_definitions(qt_common PUBLIC HAS_OPENGL)
+endif()
if (NOT WIN32)
target_include_directories(qt_common PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index 8a1d760c50..b16c1d99ce 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -480,10 +480,6 @@ if (MSVC)
copy_yuzu_FFmpeg_deps(yuzu)
endif()
-if (NOT APPLE AND ENABLE_OPENGL)
- target_compile_definitions(yuzu PRIVATE HAS_OPENGL)
-endif()
-
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
target_link_libraries(yuzu PRIVATE dynarmic::dynarmic)
endif()
diff --git a/src/yuzu/about_dialog.cpp b/src/yuzu/about_dialog.cpp
index c8edb90268..b7c0cd58d5 100644
--- a/src/yuzu/about_dialog.cpp
+++ b/src/yuzu/about_dialog.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,16 +14,11 @@ AboutDialog::AboutDialog(QWidget* parent)
: QDialog(parent)
, ui{std::make_unique<Ui::AboutDialog>()}
{
- static const std::string description = std::string(Common::g_build_version);
- static const std::string build_id = std::string(Common::g_build_id);
- static const std::string compiler = std::string(Common::g_compiler_id);
+ static const std::string description = std::string{Common::g_build_version};
+ static const std::string build_id = std::string{Common::g_build_id};
+ static const std::string compiler = std::string{Common::g_compiler_id};
- std::string yuzu_build;
- if (Common::g_is_dev_build) {
- yuzu_build = fmt::format("Eden Nightly | {}-{} | {}", description, build_id, compiler);
- } else {
- yuzu_build = fmt::format("Eden | {} | {}", description, compiler);
- }
+ static const std::string yuzu_build = fmt::format("Eden | {} | {}", description, compiler);
const auto override_build = fmt::format(fmt::runtime(
std::string(Common::g_title_bar_format_idle)),
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index d7d4e94ab7..19162a4ab7 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -4205,16 +4205,11 @@ void GMainWindow::OnEmulatorUpdateAvailable() {
void GMainWindow::UpdateWindowTitle(std::string_view title_name, std::string_view title_version,
std::string_view gpu_vendor) {
- static const std::string description = std::string(Common::g_build_version);
- static const std::string build_id = std::string(Common::g_build_id);
- static const std::string compiler = std::string(Common::g_compiler_id);
+ static const std::string description = std::string{Common::g_build_version};
+ static const std::string build_id = std::string{Common::g_build_id};
+ static const std::string compiler = std::string{Common::g_compiler_id};
- std::string yuzu_title;
- if (Common::g_is_dev_build) {
- yuzu_title = fmt::format("Eden Nightly | {}-{} | {}", description, build_id, compiler);
- } else {
- yuzu_title = fmt::format("Eden | {} | {}", description, compiler);
- }
+ static const std::string yuzu_title = fmt::format("Eden | {} | {}", description, compiler);
const auto override_title =
fmt::format(fmt::runtime(std::string(Common::g_title_bar_format_idle)), build_id);