shithub: rgbds

Download patch

ref: a4ead0c25f7451d24e0ac4b13f2c6e17d7d30ec7
parent: da66eeb40e8184a0306e09757e078c0c34ef0236
author: ISSOtm <eldredhabert0@gmail.com>
date: Thu Mar 10 14:36:05 EST 2022

Freshen version number when building with CMake

Fixes #979

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,14 +66,18 @@
 # Use versioning consistent with Makefile
 # the git revision is used but uses the fallback in an archive
 
-execute_process(COMMAND git describe --tags --dirty --always
-                OUTPUT_VARIABLE GIT_REV
-                ERROR_QUIET)
-string(STRIP "${GIT_REV}" GIT_REV)
+find_program(GIT git)
+if(GIT)
+  execute_process(COMMAND ${GIT} describe --tags --dirty --always
+                  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+                  OUTPUT_VARIABLE GIT_REV OUTPUT_STRIP_TRAILING_WHITESPACE
+                  ERROR_QUIET)
+  message(STATUS "RGBDS version: ${GIT_REV}")
+else(GIT)
+  message(STATUS "Cannot determine RGBDS version (Git not installed), falling back")
+endif(GIT)
 
 include_directories("${PROJECT_SOURCE_DIR}/include")
-
-add_definitions(-DBUILD_VERSION_STRING="${GIT_REV}")
 
 set(CMAKE_C_STANDARD 11)
 set(CMAKE_C_STANDARD_REQUIRED True)
--- /dev/null
+++ b/src/.gitignore
@@ -1,0 +1,2 @@
+# Generated by CMake
+/.version.c
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,10 +6,12 @@
 # SPDX-License-Identifier: MIT
 #
 
+configure_file(version.c _version.c ESCAPE_QUOTES)
+
 set(common_src
     "error.c"
     "extern/getopt.c"
-    "version.c"
+    "_version.c"
     )
 
 find_package(PkgConfig)
--- a/src/version.c
+++ b/src/version.c
@@ -12,6 +12,13 @@
 #include "helpers.h"
 #include "version.h"
 
+// This variable is passed via `-D` from the Makefile, but not from CMake
+// (in which `configure_file()` is used on this file to replace some syntax)
+#ifndef BUILD_VERSION_STRING
+// CMake-specific syntax here
+#define BUILD_VERSION_STRING "@GIT_REV@"
+#endif
+
 char const *get_package_version_string(void)
 {
 	// The following conditional should be simplified by the compiler.