Add git sha1 info to the binary.

This commit is contained in:
King_DuckZ 2020-03-21 11:29:21 +01:00
parent 23010d032b
commit 6dfeeba7f9
7 changed files with 25 additions and 1 deletions

View file

@ -26,6 +26,12 @@ project_config_file = configure_file(
output: 'config.h',
configuration: conf
)
gitrev_config_file = vcs_tag(
command: ['git', 'rev-parse', 'HEAD'],
input: 'src/git_version.h.in',
output: 'git_version.h',
fallback: 'n/a'
)
app_config_model = files('src/app_config.h.in')
cxxopts_incl = include_directories('subprojects/cxxopts/include', '.')

View file

@ -18,6 +18,7 @@
#include "memcard.hpp"
#include "config.h"
#include "app_config.h"
#include "git_version.h"
#include <iostream>
#include <cxxopts.hpp>
#include <string>
@ -50,6 +51,7 @@ int main(int argc, char* argv[]) {
if (command.count("version")) {
std::cout << PROJECT_NAME << " v" << project_ver()
<< (sizeof(PROJECT_GIT_SHA1) > 1 ? " git revision " PROJECT_GIT_SHA1 : "")
<< " built with " COMPILER_NAME " " COMPILER_VERSION
<< '\n';
std::cout << "Copyright (C) " COPYRIGHT_YEAR " Michele Santullo\n";

View file

@ -13,6 +13,7 @@ executable(app_name,
'memcard.cpp',
project_config_file,
config_file,
gitrev_config_file,
dependencies: [
memcard_dep
],

3
src/git_version.h.in Normal file
View file

@ -0,0 +1,3 @@
#pragma once
#define PROJECT_GIT_SHA1 "@VCS_TAG@"

View file

@ -37,6 +37,7 @@ executable(app_name,
'command_line.cpp',
config_file,
project_config_file,
gitrev_config_file,
'run_gui.cpp',
'main_window.cpp',
'version_window.cpp',

View file

@ -1,6 +1,7 @@
#include "version_window.hpp"
#include "app_config.h"
#include "config.h"
#include "git_version.h"
#include <string>
namespace mc {
@ -28,6 +29,7 @@ VersionWindow::VersionWindow(nana::window owner) :
nana::form(owner, nana::size{615, 505}),
m_top_label(*this),
m_short_desc(*this),
m_git_revision(*this),
m_repo_link_1(*this),
m_repo_link_2(*this),
m_main_text(*this),
@ -41,6 +43,10 @@ VersionWindow::VersionWindow(nana::window owner) :
m_short_desc.format(true);
m_short_desc.caption(std::string("is part of <bold>" PROJECT_NAME "</> v") + project_ver());
if constexpr (sizeof(PROJECT_GIT_SHA1) > 1) {
m_git_revision.caption("git revision " PROJECT_GIT_SHA1);
}
m_repo_link_1.format(true);
m_repo_link_1.caption("Official source code repository is available here:");
m_repo_link_2.format(true);
@ -53,7 +59,11 @@ VersionWindow::VersionWindow(nana::window owner) :
m_close.events().click([this]() { this->close(); });
this->div("< vert margin=10 <vert top_label fit> <max=15> <main_text min=300> <max=15> <max=35 min=25 <><close><>> >");
(*this)["top_label"] << m_top_label << m_short_desc << m_repo_link_1 << m_repo_link_2;
(*this)["top_label"] << m_top_label << m_short_desc;
if constexpr (sizeof(PROJECT_GIT_SHA1) > 1) {
(*this)["top_label"] << m_git_revision;
}
(*this)["top_label"] << m_repo_link_1 << m_repo_link_2;
(*this)["main_text"] << m_main_text;
(*this)["close"] << m_close;
this->collocate();

View file

@ -14,6 +14,7 @@ public:
private:
nana::label m_top_label;
nana::label m_short_desc;
nana::label m_git_revision;
nana::label m_repo_link_1;
nana::label m_repo_link_2;
nana::textbox m_main_text;