From eb2ceb95bfbcc32644fcd32ddcba818211df40a6 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 15 Mar 2009 23:15:16 +0100 Subject: [PATCH] Cleanup makefiles, add version to i3 -v and i3 startup --- Makefile | 27 +++++++++++++++++++++++++++ docs/Makefile | 4 ++++ man/Makefile | 2 ++ src/mainx.c | 7 ++++++- 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fba5af6b..74d4fb76 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ UNAME=$(shell uname) DEBUG=1 INSTALL=install MAKE=make +GIT_VERSION=$(shell git describe --tags --always) +VERSION=$(shell git describe --tags --abbrev=0) CFLAGS += -std=c99 CFLAGS += -pipe @@ -9,6 +11,7 @@ CFLAGS += -Wall CFLAGS += -Wunused CFLAGS += -Iinclude CFLAGS += -I/usr/local/include +CFLAGS += -DI3_VERSION=\"${GIT_VERSION}\" LDFLAGS += -lm LDFLAGS += -lxcb-wm @@ -16,7 +19,9 @@ LDFLAGS += -lxcb-wm LDFLAGS += -lxcb-xinerama LDFLAGS += -lX11 LDFLAGS += -L/usr/local/lib -L/usr/pkg/lib + ifeq ($(UNAME),NetBSD) +# We need -idirafter instead of -I to prefer the system’s iconv over GNU libiconv CFLAGS += -idirafter /usr/pkg/include LDFLAGS += -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/pkg/lib endif @@ -33,13 +38,23 @@ else CFLAGS += -O2 endif +# Don’t print command lines which are run +.SILENT: + +# Always remake the following targets +.PHONY: install clean dist distclean + +# Depend on the object files of all source-files in src/*.c and on all header files FILES=$(patsubst %.c,%.o,$(wildcard src/*.c)) HEADERS=$(wildcard include/*.h) +# Depend on the specific file (.c for each .o) and on all headers src/%.o: src/%.c ${HEADERS} + echo "CC $<" $(CC) $(CFLAGS) -c -o $@ $< all: ${FILES} + echo "LINK i3" $(CC) -o i3 ${FILES} $(LDFLAGS) install: all @@ -48,8 +63,20 @@ install: all $(INSTALL) -m 0755 i3 $(DESTDIR)/usr/bin/ test -e $(DESTDIR)/etc/i3/config || $(INSTALL) -m 0644 i3.config $(DESTDIR)/etc/i3/config +dist: clean + [ ! -f i3-${VERSION} ] || rm -rf i3-${VERSION} + [ ! -e i3-${VERSION}.tar.bz2 ] || rm i3-${VERSION}.tar.bz2 + mkdir i3-${VERSION} + cp Makefile DEPENDS GOALS LICENSE PACKAGE-MAINTAINER TODO i3.config i3-${VERSION} + cp -r src include docs man i3-${VERSION} + tar cf i3-${VERSION}.tar i3-${VERSION} + bzip2 -9 i3-${VERSION}.tar + rm -rf i3-${VERSION} + clean: rm -f src/*.o + $(MAKE) -C docs clean + $(MAKE) -C man clean distclean: clean rm -f i3 diff --git a/docs/Makefile b/docs/Makefile index 276cc7ca..448cd68b 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -2,3 +2,7 @@ hacking-howto.html: hacking-howto asciidoc -n $< all: hacking-howto.html + +clean: + rm -f */*.{aux,log,toc,bm,pdf,dvi} + rm -f *.log *.html diff --git a/man/Makefile b/man/Makefile index cd977dd6..dec03897 100644 --- a/man/Makefile +++ b/man/Makefile @@ -1,2 +1,4 @@ all: a2x -f manpage --asciidoc-opts="-f asciidoc.conf" i3.man +clean: + rm -f i3.xml i3.1 i3.html diff --git a/src/mainx.c b/src/mainx.c index 24e7d11c..bbd1efcd 100644 --- a/src/mainx.c +++ b/src/mainx.c @@ -340,17 +340,22 @@ int main(int argc, char *argv[], char *env[]) { application_path = sstrdup(argv[0]); - while ((opt = getopt(argc, argv, "c:")) != -1) { + while ((opt = getopt(argc, argv, "c:v")) != -1) { switch (opt) { case 'c': override_configpath = sstrdup(optarg); break; + case 'v': + printf("i3 version " I3_VERSION " © 2009 Michael Stapelberg and contributors\n"); + exit(EXIT_SUCCESS); default: fprintf(stderr, "Usage: %s [-c configfile]\n", argv[0]); exit(EXIT_FAILURE); } } + LOG("i3 version " I3_VERSION " starting\n"); + /* Initialize the table data structures for each workspace */ init_table();