aboutsummaryrefslogtreecommitdiff
path: root/CMakeModules
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 /CMakeModules
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>
Diffstat (limited to 'CMakeModules')
-rw-r--r--CMakeModules/CPMUtil.cmake5
-rw-r--r--CMakeModules/GenerateSCMRev.cmake35
-rw-r--r--CMakeModules/GetSCMRev.cmake49
3 files changed, 65 insertions, 24 deletions
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}")