summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2021-05-03 00:11:17 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2021-05-08 23:46:50 +0200
commit24104a514a8a07e3d74ec7cc8b177f4db4aed428 (patch)
tree6c636b2ac5f56ac7425e629844d5547e267d40dc
parent896b64acef6584f26faa8247a06203767f7c3c97 (diff)
Added GitInfoStore class depending on mixxx-lib to calculate the dirty state
-rw-r--r--CMakeLists.txt15
-rw-r--r--cmake/modules/GitInfo.cmake2
-rw-r--r--src/buildinfo.h.in0
-rw-r--r--src/gitinfo.h.in4
-rw-r--r--src/mixxx.rc.include.in (renamed from src/mixxx.rc.include.template)2
-rw-r--r--src/util/gitinfostore.cpp37
-rw-r--r--src/util/gitinfostore.h10
-rw-r--r--src/util/versionstore.cpp16
8 files changed, 68 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bd6214b378..d30a49ea4a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1124,7 +1124,7 @@ endif()
# The mixxx executable
add_executable(mixxx WIN32 src/main.cpp)
set_target_properties(mixxx-lib PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY}")
-target_link_libraries(mixxx PUBLIC mixxx-lib)
+target_link_libraries(mixxx PUBLIC mixxx-lib mixxx-gitinfostore)
#
# Installation and Packaging
@@ -1500,7 +1500,7 @@ add_executable(mixxx-test
src/test/wwidgetstack_test.cpp
)
set_target_properties(mixxx-test PROPERTIES AUTOMOC ON)
-target_link_libraries(mixxx-test PUBLIC mixxx-lib gtest gmock)
+target_link_libraries(mixxx-test PUBLIC mixxx-lib mixxx-gitinfostore gtest gmock)
#
# Benchmark tests
@@ -1616,7 +1616,12 @@ add_custom_target(mixxx-gitinfo
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/src/gitinfo.h"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
-add_dependencies(mixxx-lib mixxx-gitinfo)
+
+add_library(mixxx-gitinfostore STATIC EXCLUDE_FROM_ALL
+ src/util/gitinfostore.cpp
+)
+target_include_directories(mixxx-gitinfostore PUBLIC src ${CMAKE_BINARY_DIR}/src)
+add_dependencies(mixxx-gitinfostore mixxx-gitinfo)
# Windows-only resource file
if(WIN32)
@@ -1639,8 +1644,8 @@ if(WIN32)
# uses MIXXX_YEAR MIXXX_FILEVERSION MIXXX_PRODUCTVERSION MIXXX_VERSION MIXXX_DEBUG MIXXX_PRERELEASE
configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/src/mixxx.rc.include.template"
- "${CMAKE_CURRENT_BINARY_DIR}/src/mixxx.rc.include"
+ "src/mixxx.rc.include.in"
+ "src/mixxx.rc.include"
@ONLY
)
add_dependencies(mixxx mixxx-gitinfo)
diff --git a/cmake/modules/GitInfo.cmake b/cmake/modules/GitInfo.cmake
index ae74f9eb1d..9d2e78e568 100644
--- a/cmake/modules/GitInfo.cmake
+++ b/cmake/modules/GitInfo.cmake
@@ -50,6 +50,8 @@ else()
message(NOTICE "Git commit year: ${GIT_COMMIT_YEAR}")
endif()
+string(TIMESTAMP BUILD_DATE "%Y-%m-%dT%H:%M:%SZ" UTC)
+
# Get the number of commits on the working branch
execute_process(
COMMAND git rev-list --count --first-parent HEAD
diff --git a/src/buildinfo.h.in b/src/buildinfo.h.in
deleted file mode 100644
index e69de29bb2..0000000000
--- a/src/buildinfo.h.in
+++ /dev/null
diff --git a/src/gitinfo.h.in b/src/gitinfo.h.in
index 976d529959..8d354e1c37 100644
--- a/src/gitinfo.h.in
+++ b/src/gitinfo.h.in
@@ -4,8 +4,8 @@
// files that include this will be recompile very often. Therefore, this should
// only be included from versionstore.cpp.
-#ifndef VERSION_STORE
- #error "Include only from versionstore.cpp and mixxx.rc.include to avoid unnecessary recompile on every commit."
+#ifndef GIT_INFO
+ #error "Include only from gitinfostore.cpp and mixxx.rc.include to avoid unnecessary recompile on every commit."
#endif
#define GIT_BRANCH "@GIT_BRANCH@"
diff --git a/src/mixxx.rc.include.template b/src/mixxx.rc.include.in
index d00053f0a7..ccfb08f2fd 100644
--- a/src/mixxx.rc.include.template
+++ b/src/mixxx.rc.include.in
@@ -1,4 +1,4 @@
-#define VERSION_STORE
+#define GIT_INFO
#include "gitinfo.h"
#ifdef GIT_COMMIT_YEAR
diff --git a/src/util/gitinfostore.cpp b/src/util/gitinfostore.cpp
new file mode 100644
index 0000000000..49b10764b0
--- /dev/null
+++ b/src/util/gitinfostore.cpp
@@ -0,0 +1,37 @@
+#include "util/gitinfostore.h"
+
+#define GIT_INFO
+#include "gitinfo.h"
+
+//static
+const char* GitInfoStore::branch() {
+ return GIT_BRANCH;
+};
+
+//static
+const char* GitInfoStore::describe() {
+ return GIT_DESCRIBE;
+};
+
+//static
+const char* GitInfoStore::date() {
+ return GIT_COMMIT_DATE;
+};
+
+//static
+int GitInfoStore::commitCount() {
+#ifdef GIT_COMMIT_COUNT
+ return GIT_COMMIT_COUNT;
+#else
+ return 0;
+#endif
+};
+
+//static
+bool GitInfoStore::dirty() {
+#ifdef GIT_DIRTY
+ return true;
+#else
+ return false;
+#endif
+};
diff --git a/src/util/gitinfostore.h b/src/util/gitinfostore.h
new file mode 100644
index 0000000000..d72a955ed4
--- /dev/null
+++ b/src/util/gitinfostore.h
@@ -0,0 +1,10 @@
+#pragma once
+
+class GitInfoStore {
+ public:
+ static const char* branch();
+ static const char* describe();
+ static const char* date();
+ int commitCount();
+ static bool dirty();
+};
diff --git a/src/util/versionstore.cpp b/src/util/versionstore.cpp
index de86c2a3ed..5b07ef5b82 100644
--- a/src/util/versionstore.cpp
+++ b/src/util/versionstore.cpp
@@ -29,8 +29,7 @@
#include <vorbis/codec.h>
#include "version.h"
-#define VERSION_STORE
-#include "gitinfo.h"
+#include "util/gitinfostore.h"
namespace {
@@ -38,9 +37,6 @@ const QVersionNumber kMixxxVersionNumber = QVersionNumber(
MIXXX_VERSION_MAJOR, MIXXX_VERSION_MINOR, MIXXX_VERSION_PATCH);
const QString kMixxxVersionSuffix = QString(MIXXX_VERSION_SUFFIX);
const QString kMixxx = QStringLiteral("Mixxx");
-const QString kGitBranch = QString(GIT_BRANCH);
-const QString kGitDescribe = QString(GIT_DESCRIBE);
-const QDateTime kGitCommitDate = QDateTime::fromString(GIT_COMMIT_DATE, Qt::ISODate);
const QString kBuildFlags = QString(MIXXX_BUILD_FLAGS);
} // namespace
@@ -65,7 +61,7 @@ QString VersionStore::versionSuffix() {
}
QDateTime VersionStore::date() {
- return kGitCommitDate;
+ return QDateTime::fromString(GitInfoStore::date(), Qt::ISODate);
}
// static
@@ -114,24 +110,24 @@ QString VersionStore::platform() {
// static
QString VersionStore::gitBranch() {
- return kGitBranch;
+ return GitInfoStore::branch();
}
// static
QString VersionStore::gitDescribe() {
- return kGitDescribe;
+ return GitInfoStore::describe();
}
// static
QString VersionStore::gitVersion() {
- QString gitVersion = VersionStore::gitDescribe();
+ QString gitVersion = GitInfoStore::describe();
if (gitVersion.isEmpty()) {
gitVersion = QStringLiteral("unknown");
}
QString gitBranch = VersionStore::gitBranch();
if (!gitBranch.isEmpty()) {
- gitVersion.append(QStringLiteral(" (") + gitBranch + QStringLiteral(" branch)"));
+ gitVersion.append(QStringLiteral(" (") + gitBranch + QChar(')'));
}
return gitVersion;