diff --git a/.gitignore b/.gitignore
index 3748015d..28e639f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@ TODO
plugins/
*_key.txt
*_fingerprints.txt
+src/gitversion.c
diff --git a/Makefile.am b/Makefile.am
index fae529e9..ed646212 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,34 +1,21 @@
-bin_PROGRAMS = profanity
-profanity_SOURCES = \
- src/contact.c src/contact.h src/log.c src/common.c \
- src/log.h src/profanity.c src/common.h \
- src/main.c src/profanity.h src/chat_session.c \
- src/chat_session.h src/muc.c src/muc.h src/jid.h src/jid.c \
- src/resource.c src/resource.h \
- src/xmpp/xmpp.h src/xmpp/capabilities.c src/xmpp/connection.c \
- src/xmpp/iq.c src/xmpp/message.c src/xmpp/presence.c src/xmpp/stanza.c \
- src/xmpp/stanza.h src/xmpp/message.h src/xmpp/iq.h src/xmpp/presence.h \
- src/xmpp/capabilities.h src/xmpp/connection.h \
- src/xmpp/roster.c src/xmpp/roster.h \
- src/xmpp/bookmark.c src/xmpp/bookmark.h \
- src/ui/ui.h src/ui/window.c src/ui/window.h src/ui/core.c \
- src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \
- src/ui/console.c src/ui/notifier.c src/ui/notifier.h \
- src/ui/windows.c src/ui/windows.h \
- src/command/command.h src/command/command.c src/command/history.c \
- src/command/history.h src/tools/parser.c \
- src/tools/parser.h \
- src/tools/autocomplete.c src/tools/autocomplete.h \
- src/tools/history.c src/tools/history.h \
- src/tools/tinyurl.c src/tools/tinyurl.h \
- src/config/accounts.c src/config/accounts.h \
- src/config/preferences.c src/config/preferences.h \
- src/config/theme.c src/config/theme.h \
- src/otr.c src/otr.h
+if INCLUDE_GIT_VERSION
-TESTS = tests/testsuite
-check_PROGRAMS = tests/testsuite
-tests_testsuite_SOURCES = \
+FORCE:
+
+src/gitversion.c: .git/HEAD .git/index FORCE
+ rm -f src/gitversion.c src/gitversion.o
+ echo "#ifndef PROF_GIT_BRANCH" >> $@
+ echo "#define PROF_GIT_BRANCH \"$(shell git rev-parse --symbolic-full-name --abbrev-ref HEAD)\"" >> $@
+ echo "#endif" >> $@
+ echo "#ifndef PROF_GIT_REVISION" >> $@
+ echo "#define PROF_GIT_REVISION \"$(shell git log --pretty=format:'%h' -n 1)\"" >> $@
+ echo "#endif" >> $@
+
+clean-local:
+ rm -f src/gitversion.c src/gitversion.o
+endif
+
+core_sources = \
src/contact.c src/contact.h src/log.c src/common.c \
src/log.h src/profanity.c src/common.h \
src/profanity.h src/chat_session.c \
@@ -53,9 +40,30 @@ tests_testsuite_SOURCES = \
src/config/accounts.c src/config/accounts.h \
src/config/preferences.c src/config/preferences.h \
src/config/theme.c src/config/theme.h \
+ src/otr.c src/otr.h
+
+test_sources = \
tests/test_roster.c tests/test_common.c tests/test_history.c \
tests/test_autocomplete.c tests/testsuite.c tests/test_parser.c \
tests/test_jid.c
+
+main_source = src/main.c
+
+git_sources = \
+ src/gitversion.c
+
+if INCLUDE_GIT_VERSION
+with_git_sources = $(git_sources) $(core_sources)
+else
+with_git_sources = $(core_sources)
+endif
+
+bin_PROGRAMS = profanity
+profanity_SOURCES = $(with_git_sources) $(main_source)
+
+TESTS = tests/testsuite
+check_PROGRAMS = tests/testsuite
+tests_testsuite_SOURCES = $(with_git_sources) $(test_sources)
tests_testsuite_LDADD = -lheadunit -lstdc++
man_MANS = docs/profanity.1
diff --git a/configure.ac b/configure.ac
index a147ae44..282f0573 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,6 +4,15 @@
AC_PREREQ([2.65])
AC_INIT([profanity], [0.4.0], [boothj5web@gmail.com])
PACKAGE_STATUS="development"
+
+## get git branch and revision if in development
+if test "x$PACKAGE_STATUS" = xdevelopment; then
+ AM_CONDITIONAL([INCLUDE_GIT_VERSION], [true])
+ AC_DEFINE_UNQUOTED([HAVE_GIT_VERSION], [1], [Include git info])
+else
+ AM_CONDITIONAL([INCLUDE_GIT_VERSION], [false])
+fi
+
AC_DEFINE_UNQUOTED([PACKAGE_STATUS], ["$PACKAGE_STATUS"], [Status of this build])
AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_HEADERS([src/config.h])
diff --git a/src/main.c b/src/main.c
index 99f71351..253c9237 100644
--- a/src/main.c
+++ b/src/main.c
@@ -19,10 +19,13 @@
* along with Profanity. If not, see .
*
*/
-
+#include
#include
#include "config.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
#include "profanity.h"
@@ -55,7 +58,17 @@ main(int argc, char **argv)
g_option_context_free(context);
if (version == TRUE) {
- g_print("Profanity, version %s\n", PACKAGE_VERSION);
+
+ if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ g_print("Profanity, version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION);
+#else
+ g_print("Profanity, version %sdev\n", PACKAGE_VERSION);
+#endif
+ } else {
+ g_print("Profanity, version %s\n", PACKAGE_VERSION);
+ }
+
g_print("Copyright (C) 2012, 2013 James Booth <%s>.\n", PACKAGE_BUGREPORT);
g_print("License GPLv3+: GNU GPL version 3 or later \n");
g_print("\n");
diff --git a/src/profanity.c b/src/profanity.c
index 4ac3ca98..3aa75538 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -21,6 +21,10 @@
*/
#include "config.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
+
#include
#include
#include
@@ -618,7 +622,11 @@ _init(const int disable_tls, char *log_level)
log_level_t prof_log_level = log_level_from_string(log_level);
log_init(prof_log_level);
if (strcmp(PACKAGE_STATUS, "development") == 0) {
- log_info("Starting Profanity (%sdev)...", PACKAGE_VERSION);
+#ifdef HAVE_GIT_VERSION
+ log_info("Starting Profanity (%sdev.%s.%s)...", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION);
+#else
+ log_info("Starting Profanity (%sdev)...", PACKAGE_VERSION);
+#endif
} else {
log_info("Starting Profanity (%s)...", PACKAGE_VERSION);
}
diff --git a/src/ui/console.c b/src/ui/console.c
index fe15d73f..17e97ca3 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -40,6 +40,10 @@
#include "xmpp/xmpp.h"
#include "xmpp/bookmark.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
+
static void _cons_splash_logo(void);
void _show_roster_contacts(GSList *list, gboolean show_groups);
@@ -167,7 +171,11 @@ cons_about(void)
win_print_time(console, '-');
if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ wprintw(console->win, "Welcome to Profanity, version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION);
+#else
wprintw(console->win, "Welcome to Profanity, version %sdev\n", PACKAGE_VERSION);
+#endif
} else {
wprintw(console->win, "Welcome to Profanity, version %s\n", PACKAGE_VERSION);
}
@@ -1395,7 +1403,11 @@ _cons_splash_logo(void)
wprintw(console->win, "\n");
win_print_time(console, '-');
if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ wprintw(console->win, "Version %sdev.%s.%s\n", PACKAGE_VERSION, PROF_GIT_BRANCH, PROF_GIT_REVISION);
+#else
wprintw(console->win, "Version %sdev\n", PACKAGE_VERSION);
+#endif
} else {
wprintw(console->win, "Version %s\n", PACKAGE_VERSION);
}
diff --git a/src/ui/core.c b/src/ui/core.c
index 16c1d2ff..6b415a2b 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -22,6 +22,10 @@
#include "config.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
+
#include
#include
#ifdef HAVE_LIBXSS
@@ -1375,7 +1379,14 @@ _ui_draw_win_title(void)
g_string_append(version_str, " ");
g_string_append(version_str, PACKAGE_VERSION);
if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ g_string_append(version_str, "dev.");
+ g_string_append(version_str, PROF_GIT_BRANCH);
+ g_string_append(version_str, ".");
+ g_string_append(version_str, PROF_GIT_REVISION);
+#else
g_string_append(version_str, "dev");
+#endif
}
}
diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c
index f38a2749..658be124 100644
--- a/src/xmpp/capabilities.c
+++ b/src/xmpp/capabilities.c
@@ -22,6 +22,10 @@
#include "config.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
+
#include
#include
@@ -238,7 +242,14 @@ caps_create_query_response_stanza(xmpp_ctx_t * const ctx)
GString *name_str = g_string_new("Profanity ");
g_string_append(name_str, PACKAGE_VERSION);
if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ g_string_append(name_str, "dev.");
+ g_string_append(name_str, PROF_GIT_BRANCH);
+ g_string_append(name_str, ".");
+ g_string_append(name_str, PROF_GIT_REVISION);
+#else
g_string_append(name_str, "dev");
+#endif
}
xmpp_stanza_set_attribute(identity, "name", name_str->str);
diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c
index 8eb4d99e..1ddfcb34 100644
--- a/src/xmpp/iq.c
+++ b/src/xmpp/iq.c
@@ -22,6 +22,10 @@
#include "config.h"
+#ifdef HAVE_GIT_VERSION
+#include "gitversion.c"
+#endif
+
#include
#include
@@ -236,7 +240,14 @@ _iq_handle_version_get(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
xmpp_stanza_t *version_txt = xmpp_stanza_new(ctx);
GString *version_str = g_string_new(PACKAGE_VERSION);
if (strcmp(PACKAGE_STATUS, "development") == 0) {
+#ifdef HAVE_GIT_VERSION
+ g_string_append(version_str, "dev.");
+ g_string_append(version_str, PROF_GIT_BRANCH);
+ g_string_append(version_str, ".");
+ g_string_append(version_str, PROF_GIT_REVISION);
+#else
g_string_append(version_str, "dev");
+#endif
}
xmpp_stanza_set_text(version_txt, version_str->str);
xmpp_stanza_add_child(version, version_txt);