John Keeping | 5f323c1 | 2013-03-06 21:22:06 +0000 | [diff] [blame] | 1 | # This Makefile is run in the "git" directory in order to re-use Git's |
| 2 | # build variables and operating system detection. Hence all files in |
| 3 | # CGit's directory must be prefixed with "../". |
| 4 | include Makefile |
| 5 | |
| 6 | CGIT_PREFIX = ../ |
| 7 | |
John Keeping | cfb77e9 | 2013-04-01 14:14:12 +0100 | [diff] [blame^] | 8 | -include $(CGIT_PREFIX)cgit.conf |
| 9 | |
John Keeping | 5f323c1 | 2013-03-06 21:22:06 +0000 | [diff] [blame] | 10 | # The CGIT_* variables are inherited when this file is called from the |
| 11 | # main Makefile - they are defined there. |
| 12 | |
| 13 | $(CGIT_PREFIX)VERSION: force-version |
John Keeping | 7669f7f | 2013-03-06 21:22:09 +0000 | [diff] [blame] | 14 | @cd $(CGIT_PREFIX) && '$(SHELL_PATH_SQ)' ./gen-version.sh "$(CGIT_VERSION)" |
John Keeping | 5f323c1 | 2013-03-06 21:22:06 +0000 | [diff] [blame] | 15 | -include $(CGIT_PREFIX)VERSION |
| 16 | .PHONY: force-version |
| 17 | |
| 18 | # CGIT_CFLAGS is a separate variable so that we can track it separately |
| 19 | # and avoid rebuilding all of Git when these variables change. |
John Keeping | 5f323c1 | 2013-03-06 21:22:06 +0000 | [diff] [blame] | 20 | CGIT_CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"' |
| 21 | CGIT_CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"' |
| 22 | CGIT_CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' |
| 23 | |
| 24 | ifdef NO_C99_FORMAT |
| 25 | CFLAGS += -DNO_C99_FORMAT |
| 26 | endif |
| 27 | |
| 28 | CGIT_OBJ_NAMES += cgit.o |
| 29 | CGIT_OBJ_NAMES += cache.o |
| 30 | CGIT_OBJ_NAMES += cmd.o |
| 31 | CGIT_OBJ_NAMES += configfile.o |
| 32 | CGIT_OBJ_NAMES += html.o |
| 33 | CGIT_OBJ_NAMES += parsing.o |
| 34 | CGIT_OBJ_NAMES += scan-tree.o |
| 35 | CGIT_OBJ_NAMES += shared.o |
| 36 | CGIT_OBJ_NAMES += ui-atom.o |
| 37 | CGIT_OBJ_NAMES += ui-blob.o |
| 38 | CGIT_OBJ_NAMES += ui-clone.o |
| 39 | CGIT_OBJ_NAMES += ui-commit.o |
| 40 | CGIT_OBJ_NAMES += ui-diff.o |
| 41 | CGIT_OBJ_NAMES += ui-log.o |
| 42 | CGIT_OBJ_NAMES += ui-patch.o |
| 43 | CGIT_OBJ_NAMES += ui-plain.o |
| 44 | CGIT_OBJ_NAMES += ui-refs.o |
| 45 | CGIT_OBJ_NAMES += ui-repolist.o |
| 46 | CGIT_OBJ_NAMES += ui-shared.o |
| 47 | CGIT_OBJ_NAMES += ui-snapshot.o |
| 48 | CGIT_OBJ_NAMES += ui-ssdiff.o |
| 49 | CGIT_OBJ_NAMES += ui-stats.o |
| 50 | CGIT_OBJ_NAMES += ui-summary.o |
| 51 | CGIT_OBJ_NAMES += ui-tag.o |
| 52 | CGIT_OBJ_NAMES += ui-tree.o |
| 53 | CGIT_OBJ_NAMES += vector.o |
| 54 | |
| 55 | CGIT_OBJS := $(addprefix $(CGIT_PREFIX),$(CGIT_OBJ_NAMES)) |
| 56 | |
John Keeping | d6768a6 | 2013-03-06 21:22:08 +0000 | [diff] [blame] | 57 | # Only cgit.c reference CGIT_VERSION so we only rebuild its objects when the |
| 58 | # version changes. |
| 59 | CGIT_VERSION_OBJS := $(addprefix $(CGIT_PREFIX),cgit.o) |
| 60 | $(CGIT_VERSION_OBJS): $(CGIT_PREFIX)VERSION |
| 61 | $(CGIT_VERSION_OBJS): EXTRA_CPPFLAGS = \ |
| 62 | -DCGIT_VERSION='"$(CGIT_VERSION)"' |
| 63 | |
| 64 | |
John Keeping | 5f323c1 | 2013-03-06 21:22:06 +0000 | [diff] [blame] | 65 | ifeq ($(wildcard $(CGIT_PREFIX).depend),) |
| 66 | missing_dep_dirs += $(CGIT_PREFIX).depend |
| 67 | endif |
| 68 | |
| 69 | $(CGIT_PREFIX).depend: |
| 70 | @mkdir -p $@ |
| 71 | |
| 72 | $(CGIT_PREFIX)CGIT-CFLAGS: FORCE |
| 73 | @FLAGS='$(subst ','\'',$(CGIT_CFLAGS))'; \ |
| 74 | if test x"$$FLAGS" != x"`cat ../CGIT-CFLAGS 2>/dev/null`" ; then \ |
| 75 | echo 1>&2 " * new CGit build flags"; \ |
| 76 | echo "$$FLAGS" >$(CGIT_PREFIX)CGIT-CFLAGS; \ |
| 77 | fi |
| 78 | |
| 79 | $(CGIT_OBJS): %.o: %.c GIT-CFLAGS $(CGIT_PREFIX)CGIT-CFLAGS $(missing_dep_dirs) |
| 80 | $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $(CGIT_CFLAGS) $< |
| 81 | |
| 82 | $(CGIT_PREFIX)cgit: $(CGIT_OBJS) GIT-LDFLAGS $(GITLIBS) |
| 83 | $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) |