shl: move githead into a source file
This moves githead.h to shl_githead.c so we can skip recompilations on GIT-HEAD changes. We only need to relink now (which we cannot skip). This speeds up build-processes considerably on slower machines. Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
This commit is contained in:
parent
0249b2cb0b
commit
9c2375b6d4
2
.gitignore
vendored
2
.gitignore
vendored
@ -32,7 +32,7 @@ genshader
|
||||
genunifont
|
||||
src/static_shaders.c
|
||||
src/genshader.c
|
||||
src/githead.h
|
||||
src/shl_githead.c
|
||||
src/font_unifont_data.bin
|
||||
docs/reference/*.txt
|
||||
docs/reference/*.bak
|
||||
|
37
Makefile.am
37
Makefile.am
@ -112,12 +112,13 @@ endif
|
||||
|
||||
#
|
||||
# GIT-HEAD helper
|
||||
# The file ./src/githead.h contains a constant BUILD_GIT_HEAD which is defined
|
||||
# to the string returned by "git describe". We need to adjust this string for
|
||||
# every build and correctly rebuild any sources that depend on it. Therefore,
|
||||
# you should use this file rarely as it causes rebuilds on every git-commit.
|
||||
# The file ./src/shl_githead.c contains a constant "shl_git_head" which is
|
||||
# defined to the string returned by "git describe". We need to adjust this
|
||||
# string for every build and correctly rebuild any sources that depend on it.
|
||||
# Therefore, you should use this file rarely as it causes rebuilds on every
|
||||
# git-commit.
|
||||
#
|
||||
# We have a helper-script ./src/genversion.sh that takes as argument the header
|
||||
# We have a helper-script ./src/genversion.sh that takes as argument the source
|
||||
# file and creates it if necessary. It updates it only if the new git-describe
|
||||
# string is different to the old one. So the file is only modified on changes.
|
||||
# Hence, we can use it as normal dependency in this Makefile.
|
||||
@ -126,17 +127,17 @@ endif
|
||||
# "simply expanded" variable (:=) so the shell command is executed on
|
||||
# variable-declaration and not during expansion.
|
||||
#
|
||||
# Note that we must not clean ./src/githead.h ever! If we would, a distribution
|
||||
# tarball might delete that file and have no way to recreate it.
|
||||
# Note that we must not clean ./src/shl_githead.c ever! If we would, a
|
||||
# distribution tarball might delete that file and have no way to recreate it.
|
||||
# We could delete it on something like "make maintainerclean", but then again,
|
||||
# it seems unnecessary so lets simply not clean it at all.
|
||||
#
|
||||
# If the helper-script is executed in a directory that is not a git-repository
|
||||
# (like a distribution tarball) and githead.h exists, then it does nothing as it
|
||||
# expects githead.h to be correctly written by "make dist".
|
||||
# However, if githead.h does not exist, it will print a warning and write
|
||||
# "<unknown>" as git-revision.
|
||||
# This guarantees, that githead.h is always present and has the most correct
|
||||
# (like a distribution tarball) and shl_githead.c exists, then it does nothing
|
||||
# as it expects shl_githead.c to be correctly written by "make dist".
|
||||
# However, if shl_githead.c does not exist, it will print a warning and write
|
||||
# an unknown random git-revision.
|
||||
# This guarantees, that shl_githead.c is always present and has the most correct
|
||||
# value that we can get under any conditions.
|
||||
#
|
||||
# The $(emptyvariable) expansion below is used for broken $(shell ...)
|
||||
@ -144,7 +145,7 @@ endif
|
||||
#
|
||||
|
||||
EXTRA_DIST += src/genversion.sh
|
||||
GITHEAD:=$(shell $(emptyvariable)"$(srcdir)/src/genversion.sh" "$(srcdir)/src/githead.h")
|
||||
GITHEAD:=$(shell $(emptyvariable)"$(srcdir)/src/genversion.sh" "$(srcdir)/src/shl_githead.c")
|
||||
|
||||
#
|
||||
# SHL - Static Helper Library
|
||||
@ -155,6 +156,8 @@ GITHEAD:=$(shell $(emptyvariable)"$(srcdir)/src/genversion.sh" "$(srcdir)/src/gi
|
||||
noinst_LTLIBRARIES += libshl.la
|
||||
|
||||
libshl_la_SOURCES = \
|
||||
src/shl_githead.h \
|
||||
src/shl_githead.c \
|
||||
src/shl_dlist.h \
|
||||
src/shl_array.h \
|
||||
src/shl_hashtable.h \
|
||||
@ -445,7 +448,6 @@ endif
|
||||
|
||||
mod_unifont_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/font_unifont.c \
|
||||
src/kmscon_mod_unifont.c
|
||||
EXTRA_mod_unifont_la_DEPENDENCIES = $(UNIFONT_BIN)
|
||||
@ -463,7 +465,6 @@ endif
|
||||
|
||||
mod_freetype2_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/font_freetype2.c \
|
||||
src/kmscon_mod_freetype2.c
|
||||
mod_freetype2_la_CPPFLAGS = \
|
||||
@ -485,7 +486,6 @@ endif
|
||||
|
||||
mod_pango_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/font_pango.c \
|
||||
src/kmscon_mod_pango.c
|
||||
mod_pango_la_CPPFLAGS = \
|
||||
@ -507,7 +507,6 @@ endif
|
||||
|
||||
mod_bbulk_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/text_bbulk.c \
|
||||
src/kmscon_mod_bbulk.c
|
||||
mod_bbulk_la_LIBADD = libshl.la
|
||||
@ -523,7 +522,6 @@ endif
|
||||
|
||||
mod_gltex_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/text_gltex.c \
|
||||
src/static_gl.h \
|
||||
src/static_gl_math.c \
|
||||
@ -548,7 +546,6 @@ endif
|
||||
|
||||
mod_cairo_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/text_cairo.c \
|
||||
src/kmscon_mod_cairo.c
|
||||
mod_cairo_la_CPPFLAGS = \
|
||||
@ -568,7 +565,6 @@ endif
|
||||
|
||||
mod_pixman_la_SOURCES = \
|
||||
src/kmscon_module_interface.h \
|
||||
src/githead.h \
|
||||
src/text_pixman.c \
|
||||
src/kmscon_mod_pixman.c
|
||||
mod_pixman_la_CPPFLAGS = \
|
||||
@ -600,7 +596,6 @@ MANPAGES += docs/man/kmscon.1
|
||||
endif
|
||||
|
||||
kmscon_SOURCES = \
|
||||
src/githead.h \
|
||||
src/conf.h \
|
||||
src/conf.c \
|
||||
src/pty.h \
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#
|
||||
# Generate $1 with:
|
||||
# #define BUILD_GIT_HEAD "<git-head-revision>"
|
||||
# const char shl_git_head[] = "<git-head-revision>";
|
||||
# But do not touch $1 if the git-revision is already up-to-date.
|
||||
#
|
||||
|
||||
@ -31,7 +31,7 @@ if test -f "$1" ; then
|
||||
else
|
||||
if test $ISGIT = 0 ; then
|
||||
echo "WARNING: version file $1 is missing"
|
||||
echo "#define BUILD_GIT_HEAD \"unknown-revision\""
|
||||
echo "const char shl_git_head[] = \"UnknownRevision\";" >"$1"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@ -48,7 +48,7 @@ if test $ISGIT = 0 ; then
|
||||
fi
|
||||
|
||||
NEWREV=`git describe`
|
||||
NEWREV="#define BUILD_GIT_HEAD \"$NEWREV\""
|
||||
NEWREV="const char shl_git_head[] = \"$NEWREV\";"
|
||||
|
||||
#
|
||||
# Exit if the file is already up to date.
|
||||
|
@ -30,10 +30,10 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include "githead.h"
|
||||
#include "kmscon_module.h"
|
||||
#include "kmscon_module_interface.h"
|
||||
#include "shl_dlist.h"
|
||||
#include "shl_githead.h"
|
||||
#include "shl_log.h"
|
||||
#include "shl_misc.h"
|
||||
|
||||
@ -66,9 +66,9 @@ int kmscon_module_open(struct kmscon_module **out, const char *file)
|
||||
goto err_unload;
|
||||
}
|
||||
|
||||
if (strcmp(module->info.githead, BUILD_GIT_HEAD)) {
|
||||
if (strcmp(module->info.githead, shl_git_head)) {
|
||||
log_error("incompatible module %s (%s != %s)",
|
||||
file, module->info.githead, BUILD_GIT_HEAD);
|
||||
file, module->info.githead, shl_git_head);
|
||||
ret = -EFAULT;
|
||||
goto err_unload;
|
||||
}
|
||||
|
@ -32,9 +32,9 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include "githead.h"
|
||||
#include "kmscon_module.h"
|
||||
#include "shl_dlist.h"
|
||||
#include "shl_githead.h"
|
||||
#include "shl_misc.h"
|
||||
|
||||
struct kmscon_module_info {
|
||||
@ -59,7 +59,7 @@ struct kmscon_module {
|
||||
#define KMSCON_MODULE(_init, _load, _unload, _exit) \
|
||||
struct kmscon_module module = { \
|
||||
.info = { \
|
||||
.githead = BUILD_GIT_HEAD, \
|
||||
.githead = shl_git_head, \
|
||||
.date = __DATE__, \
|
||||
.time = __TIME__, \
|
||||
.init = _init, \
|
||||
|
31
src/shl_githead.h
Normal file
31
src/shl_githead.h
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* shl - GIT-HEAD
|
||||
*
|
||||
* Copyright (c) 2011-2013 David Herrmann <dh.herrmann@googlemail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files
|
||||
* (the "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef SHL_GITHEAD_H
|
||||
#define SHL_GITHEAD_H
|
||||
|
||||
extern const char shl_git_head[];
|
||||
|
||||
#endif /* SHL_GITHEAD_H */
|
@ -19,7 +19,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include "githead.h"
|
||||
#include "shl_githead.h"
|
||||
#include "shl_log.h"
|
||||
#include "shl_misc.h"
|
||||
|
||||
@ -505,5 +505,5 @@ void log_print_init(const char *appname)
|
||||
appname = "<unknown>";
|
||||
log_format(LOG_DEFAULT_CONF, NULL, LOG_NOTICE,
|
||||
"%s Revision %s %s %s", appname,
|
||||
BUILD_GIT_HEAD, __DATE__, __TIME__);
|
||||
shl_git_head, __DATE__, __TIME__);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user