diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2021-05-03 00:11:17 +0200 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2021-05-08 23:46:50 +0200 |
commit | 24104a514a8a07e3d74ec7cc8b177f4db4aed428 (patch) | |
tree | 6c636b2ac5f56ac7425e629844d5547e267d40dc | |
parent | 896b64acef6584f26faa8247a06203767f7c3c97 (diff) |
Added GitInfoStore class depending on mixxx-lib to calculate the dirty state
-rw-r--r-- | CMakeLists.txt | 15 | ||||
-rw-r--r-- | cmake/modules/GitInfo.cmake | 2 | ||||
-rw-r--r-- | src/buildinfo.h.in | 0 | ||||
-rw-r--r-- | src/gitinfo.h.in | 4 | ||||
-rw-r--r-- | src/mixxx.rc.include.in (renamed from src/mixxx.rc.include.template) | 2 | ||||
-rw-r--r-- | src/util/gitinfostore.cpp | 37 | ||||
-rw-r--r-- | src/util/gitinfostore.h | 10 | ||||
-rw-r--r-- | src/util/versionstore.cpp | 16 |
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; |