From e0e4478e7b4812f822d60a13a33525f8e529e1e8 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Mar 2008 01:09:39 +0100 Subject: Add command dispatcher This simplifies the code in cgit.c and makes it easier to extend cgit with new pages/commands. Signed-off-by: Lars Hjemli --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 7102908..d9ff7d8 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \ ui-summary.o ui-log.o ui-tree.o ui-commit.o ui-diff.o \ - ui-snapshot.o ui-blob.o ui-tag.o ui-refs.o ui-patch.o + ui-snapshot.o ui-blob.o ui-tag.o ui-refs.o ui-patch.o cmd.o ifdef NEEDS_LIBICONV -- cgit From 271818693d6803b5df25ee87570808c2a9dbd7e7 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Mar 2008 20:49:41 +0100 Subject: Initial Makefile cleanup Sort the list of object files to improve readability/mergeability and remove manual dependency information which will soon be generated automatically. Signed-off-by: Lars Hjemli --- Makefile | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index d9ff7d8..d1950cb 100644 --- a/Makefile +++ b/Makefile @@ -14,10 +14,25 @@ GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto -OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \ - ui-summary.o ui-log.o ui-tree.o ui-commit.o ui-diff.o \ - ui-snapshot.o ui-blob.o ui-tag.o ui-refs.o ui-patch.o cmd.o - +OBJECTS = +OBJECTS += cache.o +OBJECTS += cgit.o +OBJECTS += cmd.o +OBJECTS += html.o +OBJECTS += parsing.o +OBJECTS += shared.o +OBJECTS += ui-blob.o +OBJECTS += ui-commit.o +OBJECTS += ui-diff.o +OBJECTS += ui-log.o +OBJECTS += ui-patch.o +OBJECTS += ui-refs.o +OBJECTS += ui-repolist.o +OBJECTS += ui-shared.o +OBJECTS += ui-snapshot.o +OBJECTS += ui-summary.o +OBJECTS += ui-tag.o +OBJECTS += ui-tree.o ifdef NEEDS_LIBICONV EXTLIBS += -liconv @@ -41,10 +56,10 @@ CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"' CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' -cgit: cgit.c $(OBJECTS) - $(CC) $(CFLAGS) cgit.c -o cgit $(OBJECTS) $(EXTLIBS) +cgit: $(OBJECTS) + $(CC) $(CFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) -$(OBJECTS): cgit.h git/xdiff/lib.a git/libgit.a VERSION +$(OBJECTS): git/xdiff/lib.a git/libgit.a VERSION git/xdiff/lib.a: | git -- cgit From df90b51bafec24336cf30339b2978ff6df22b075 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Mar 2008 23:01:44 +0100 Subject: Makefile: autobuild dependency rules This uses gcc to generate dependency rules for each `.o` file, based on the corresponding `.c` file, into a new set of `.d` files (which are also defined to depend on the same set of source files as their `.o` files). Result: * all objectfile dependencies are correctly calculated * only the necessary dependencies are recalculated when a sourcefile is updated Inspiration for the build rules: * http://www.gnu.org/software/make/manual/make.html#Automatic-Prerequisites * http://make.paulandlesley.org/autodep.html Signed-off-by: Lars Hjemli --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index d1950cb..faf7b98 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,13 @@ GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 -include cgit.conf +# +# Define a pattern rule for automatic dependency building +# +%.d: %.c + $(CC) $(CFLAGS) -MM $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@ + + EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto OBJECTS = OBJECTS += cache.o @@ -61,6 +68,8 @@ cgit: $(OBJECTS) $(OBJECTS): git/xdiff/lib.a git/libgit.a VERSION +-include $(OBJECTS:.o=.d) + git/xdiff/lib.a: | git git/libgit.a: | git @@ -84,7 +93,7 @@ uninstall: rm -f $(CGIT_SCRIPT_PATH)/cgit.png clean: - rm -f cgit VERSION *.o + rm -f cgit VERSION *.o *.d cd git && $(MAKE) clean distclean: clean -- cgit From 92908af4558d7362c7deeb05254343a5a5f11a05 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 24 Mar 2008 23:10:59 +0100 Subject: Move cgit_version from shared.c to cgit.c With the matching Makefile change, this makes sure that only cgit.o and cgit proper needs to be rebuildt when VERSION has been modified. Signed-off-by: Lars Hjemli --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index faf7b98..c9be8fa 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,9 @@ CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' cgit: $(OBJECTS) $(CC) $(CFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) -$(OBJECTS): git/xdiff/lib.a git/libgit.a VERSION +$(OBJECTS): git/xdiff/lib.a git/libgit.a + +cgit.o: VERSION -include $(OBJECTS:.o=.d) -- cgit From c60781d677ee3b2e53b1f3078fef763622e5effe Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Tue, 25 Mar 2008 01:41:10 +0100 Subject: Makefile: copy the QUIET constructs from the Makefile in git.git These constructs were introduced by Shawn O. Pearce in commit 74f2b2a8d006a49e1be7e30731c2f7365d2741d1. Signed-off-by: Lars Hjemli --- Makefile | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index c9be8fa..223765d 100644 --- a/Makefile +++ b/Makefile @@ -12,12 +12,38 @@ GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 # -include cgit.conf +# +# Define a way to invoke make in subdirs quietly, shamelessly ripped +# from git.git +# +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir +QUIET_SUBDIR1 = + +ifneq ($(findstring $(MAKEFLAGS),w),w) +PRINT_DIR = --no-print-directory +else # "make -w" +NO_SUBDIR = : +endif + +ifndef V + QUIET_CC = @echo ' ' CC $@; + QUIET_MM = @echo ' ' MM $@; + QUIET_SUBDIR0 = +@subdir= + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + $(MAKE) $(PRINT_DIR) -C $$subdir +endif # # Define a pattern rule for automatic dependency building # %.d: %.c - $(CC) $(CFLAGS) -MM $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@ + $(QUIET_MM)$(CC) $(CFLAGS) -MM $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@ + +# +# Define a pattern rule for silent object building +# +%.o: %.c + $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto @@ -64,7 +90,7 @@ CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' cgit: $(OBJECTS) - $(CC) $(CFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) + $(QUIET_CC)$(CC) $(CFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) $(OBJECTS): git/xdiff/lib.a git/libgit.a @@ -77,11 +103,11 @@ git/xdiff/lib.a: | git git/libgit.a: | git git: - cd git && $(MAKE) xdiff/lib.a - cd git && $(MAKE) libgit.a + $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) xdiff/lib.a + $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) libgit.a test: all - $(MAKE) -C tests + $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all install: all mkdir -p $(DESTDIR)$(CGIT_SCRIPT_PATH) -- cgit From 20a33548b9a87a6eb23162ee5d137daa46d78613 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Fri, 28 Mar 2008 00:09:11 +0100 Subject: Move function for configfile parsing into configfile.[ch] This is a generic function which wanted its own little object file. Signed-off-by: Lars Hjemli --- Makefile | 1 + 1 file changed, 1 insertion(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 223765d..355186e 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,7 @@ OBJECTS = OBJECTS += cache.o OBJECTS += cgit.o OBJECTS += cmd.o +OBJECTS += configfile.o OBJECTS += html.o OBJECTS += parsing.o OBJECTS += shared.o -- cgit