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.