112
112
# Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
113
113
# MakeMaker (e.g. using ActiveState under Cygwin).
115
# Define WITH_P4IMPORT to build and install Python git-p4import script.
117
115
# Define NO_TCLTK if you do not want Tcl/Tk GUI.
119
117
# The TCL_PATH variable governs the location of the Tcl interpreter
147
145
bindir = $(prefix)/bin
148
146
gitexecdir = $(bindir)
149
sharedir = $(prefix)/share/
150
template_dir = $(sharedir)/git-core/templates/
147
sharedir = $(prefix)/share
148
template_dir = $(sharedir)/git-core/templates
151
149
ifeq ($(prefix),/usr)
152
150
sysconfdir = /etc
154
152
sysconfdir = $(prefix)/etc
156
155
ETC_GITCONFIG = $(sysconfdir)/gitconfig
205
206
git-ls-remote.sh \
206
207
git-merge-one-file.sh git-mergetool.sh git-parse-remote.sh \
207
git-pull.sh git-rebase.sh \
208
git-pull.sh git-rebase.sh git-rebase--interactive.sh \
208
209
git-repack.sh git-request-pull.sh git-reset.sh \
209
210
git-sh-setup.sh \
210
git-tag.sh git-verify-tag.sh \
211
git-applymbox.sh git-applypatch.sh git-am.sh \
212
212
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
213
213
git-merge-resolve.sh git-merge-ours.sh \
214
git-lost-found.sh git-quiltimport.sh
214
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
215
git-filter-branch.sh \
217
219
git-add--interactive.perl \
220
222
git-svnimport.perl git-cvsexportcommit.perl \
221
223
git-send-email.perl git-svn.perl
227
SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
228
$(patsubst %.perl,%,$(SCRIPT_PERL)) \
229
$(patsubst %.py,%,$(SCRIPT_PYTHON)) \
230
git-status git-instaweb
232
SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
233
$(patsubst %.perl,%,$(SCRIPT_PERL)) \
234
git-status git-instaweb
225
SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
226
$(patsubst %.perl,%,$(SCRIPT_PERL)) \
227
git-status git-instaweb
238
229
# ... and all the rest that could be moved out of bindir to gitexecdir
240
231
git-convert-objects$X git-fetch-pack$X \
241
232
git-hash-object$X git-index-pack$X git-local-fetch$X \
242
233
git-fast-import$X \
245
235
git-merge-index$X git-mktag$X git-mktree$X git-patch-id$X \
246
236
git-peek-remote$X git-receive-pack$X \
294
281
XDIFF_LIB=xdiff/lib.a
297
archive.h blob.h cache.h commit.h csum-file.h delta.h grep.h \
284
archive.h blob.h cache.h cache-tree.h commit.h csum-file.h delta.h grep.h \
298
285
diff.h object.h pack.h pkt-line.h quote.h refs.h list-objects.h sideband.h \
299
286
run-command.h strbuf.h tag.h tree.h git-compat-util.h revision.h \
300
287
tree-walk.h log-tree.h dir.h path-list.h unpack-trees.h builtin.h \
301
utf8.h reflog-walk.h patch-ids.h attr.h decorate.h progress.h mailmap.h
288
utf8.h reflog-walk.h patch-ids.h attr.h decorate.h progress.h \
304
292
diff.o diff-lib.o diffcore-break.o diffcore-order.o \
320
308
write_or_die.o trace.o list-objects.o grep.o match-trees.o \
321
309
alloc.o merge-file.o path-list.o help.o unpack-trees.o $(DIFF_OBJS) \
322
310
color.o wt-status.o archive-zip.o archive-tar.o shallow.o utf8.o \
323
convert.o attr.o decorate.o progress.o mailmap.o symlinks.o
311
convert.o attr.o decorate.o progress.o mailmap.o symlinks.o remote.o
515
# Try "-Wl,-rpath=$(CURLDIR)/lib" in such a case.
509
# Try "-Wl,-rpath=$(CURLDIR)/$(lib)" in such a case.
516
510
BASIC_CFLAGS += -I$(CURLDIR)/include
517
CURL_LIBCURL = -L$(CURLDIR)/lib $(CC_LD_DYNPATH)$(CURLDIR)/lib -lcurl
511
CURL_LIBCURL = -L$(CURLDIR)/$(lib) $(CC_LD_DYNPATH)$(CURLDIR)/$(lib) -lcurl
519
513
CURL_LIBCURL = -lcurl
528
BASIC_CFLAGS += -I$(ZLIB_PATH)/include
529
EXTLIBS += -L$(ZLIB_PATH)/$(lib) $(CC_LD_DYNPATH)$(ZLIB_PATH)/$(lib)
533
533
ifndef NO_OPENSSL
534
534
OPENSSL_LIBSSL = -lssl
536
536
BASIC_CFLAGS += -I$(OPENSSLDIR)/include
537
OPENSSL_LINK = -L$(OPENSSLDIR)/lib $(CC_LD_DYNPATH)$(OPENSSLDIR)/lib
537
OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib)
709
709
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
710
710
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
711
PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH))
712
711
TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
714
713
LIBS = $(GITLIBS) $(EXTLIBS)
728
727
all:: $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS)
730
$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), rm -f '$p';)
729
$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$p';)
741
740
$(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X
743
742
gitk-wish: gitk GIT-GUI-VARS
744
$(QUIET_GEN)rm -f $@ $@+ && \
743
$(QUIET_GEN)$(RM) $@ $@+ && \
745
744
sed -e '1,3s|^exec .* "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' <gitk >$@+ && \
746
745
chmod +x $@+ && \
749
git$X: git.c common-cmds.h $(BUILTIN_OBJS) $(GITLIBS) GIT-CFLAGS
750
$(QUIET_LINK)$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
751
$(ALL_CFLAGS) -o $@ $(filter %.c,$^) \
748
git.o: git.c common-cmds.h GIT-CFLAGS
749
$(QUIET_CC)$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
750
$(ALL_CFLAGS) -c $(filter %.c,$^)
752
git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
753
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
752
754
$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
754
756
help.o: common-cmds.h
756
758
git-merge-subtree$X: git-merge-recursive$X
757
$(QUIET_BUILT_IN)rm -f $@ && ln git-merge-recursive$X $@
759
$(QUIET_BUILT_IN)$(RM) $@ && ln git-merge-recursive$X $@
759
761
$(BUILT_INS): git$X
760
$(QUIET_BUILT_IN)rm -f $@ && ln git$X $@
762
$(QUIET_BUILT_IN)$(RM) $@ && ln git$X $@
764
common-cmds.h: ./generate-cmdlist.sh
762
766
common-cmds.h: $(wildcard Documentation/git-*.txt)
763
767
$(QUIET_GEN)./generate-cmdlist.sh > $@+ && mv $@+ $@
765
769
$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
766
$(QUIET_GEN)rm -f $@ $@+ && \
770
$(QUIET_GEN)$(RM) $@ $@+ && \
767
771
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
768
772
-e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
769
773
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
775
779
$(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak
777
$(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py
779
sed -e '1s|#!.*/python|#!$(PYTHON_PATH_SQ)|' \
780
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
781
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
786
781
perl/perl.mak: GIT-CFLAGS
787
782
$(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' $(@F)
789
784
$(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl
790
$(QUIET_GEN)rm -f $@ $@+ && \
791
INSTLIBDIR=`$(MAKE) -C perl -s --no-print-directory instlibdir` && \
785
$(QUIET_GEN)$(RM) $@ $@+ && \
786
INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C perl -s --no-print-directory instlibdir` && \
793
788
-e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \
806
801
$(QUIET_GEN)cp $< $@+ && mv $@+ $@
808
803
gitweb/gitweb.cgi: gitweb/gitweb.perl
809
$(QUIET_GEN)rm -f $@ $@+ && \
804
$(QUIET_GEN)$(RM) $@ $@+ && \
810
805
sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
811
806
-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
812
807
-e 's|++GIT_BINDIR++|$(bindir)|g' \
831
826
git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css
832
$(QUIET_GEN)rm -f $@ $@+ && \
827
$(QUIET_GEN)$(RM) $@ $@+ && \
833
828
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
834
829
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
835
830
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
844
839
configure: configure.ac
845
$(QUIET_GEN)rm -f $@ $<+ && \
840
$(QUIET_GEN)$(RM) $@ $<+ && \
846
841
sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
848
843
autoconf -o $@ $<+ && \
851
846
# These can record GIT_VERSION
853
848
$(patsubst %.sh,%,$(SCRIPT_SH)) \
854
849
$(patsubst %.perl,%,$(SCRIPT_PERL)) \
855
850
: GIT-VERSION-FILE
857
852
%.o: %.c GIT-CFLAGS
858
853
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
855
$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<
860
857
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
907
904
xdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
909
906
$(XDIFF_LIB): $(XDIFF_OBJS)
910
$(QUIET_AR)rm -f $@ && $(AR) rcs $@ $(XDIFF_OBJS)
907
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(XDIFF_OBJS)
913
910
perl/Makefile: perl/Git.pm perl/Makefile.PL GIT-CFLAGS
918
915
$(MAKE) -C Documentation all
918
$(MAKE) -C Documentation info
922
find . -name '*.[hcS]' -print | xargs etags -a
922
$(FIND) . -name '*.[hcS]' -print | xargs etags -a
926
find . -name '*.[hcS]' -print | xargs ctags -a
926
$(FIND) . -name '*.[hcS]' -print | xargs ctags -a
928
928
### Detect prefix changes
929
929
TRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):\
966
966
$(MAKE) -C t/ all
968
test-date$X: test-date.c date.o ctype.o
969
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) test-date.c date.o ctype.o
971
test-delta$X: test-delta.o diff-delta.o patch-delta.o $(GITLIBS)
972
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
974
test-dump-cache-tree$X: dump-cache-tree.o $(GITLIBS)
975
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
977
test-sha1$X: test-sha1.o $(GITLIBS)
978
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
980
test-match-trees$X: test-match-trees.o $(GITLIBS)
981
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
983
test-chmtime$X: test-chmtime.c
984
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $<
986
test-genrandom$X: test-genrandom.c
987
$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $<
968
test-date$X: date.o ctype.o
970
test-delta$X: diff-delta.o patch-delta.o
972
.PRECIOUS: $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))
974
test-%$X: test-%.o $(GITLIBS)
975
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
989
977
check-sha1:: test-sha1$X
1014
1003
cp '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
1015
1004
'$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X'; \
1017
$(foreach p,$(BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
1006
$(foreach p,$(BUILT_INS), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
1019
$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p';)
1008
$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p';)
1023
1012
$(MAKE) -C Documentation install
1015
$(MAKE) -C Documentation install-info
1025
1017
quick-install-doc:
1026
1018
$(MAKE) -C Documentation quick-install
1036
1028
GIT_TARNAME=git-$(GIT_VERSION)
1037
dist: git.spec git-archive
1029
dist: git.spec git-archive configure
1038
1030
./git-archive --format=tar \
1039
1031
--prefix=$(GIT_TARNAME)/ HEAD^{tree} > $(GIT_TARNAME).tar
1040
1032
@mkdir -p $(GIT_TARNAME)
1041
@cp git.spec $(GIT_TARNAME)
1033
@cp git.spec configure $(GIT_TARNAME)
1042
1034
@echo $(GIT_VERSION) > $(GIT_TARNAME)/version
1043
1035
@$(MAKE) -C git-gui TARDIR=../$(GIT_TARNAME)/git-gui dist-version
1044
1036
$(TAR) rf $(GIT_TARNAME).tar \
1045
1037
$(GIT_TARNAME)/git.spec \
1038
$(GIT_TARNAME)/configure \
1046
1039
$(GIT_TARNAME)/version \
1047
1040
$(GIT_TARNAME)/git-gui/version
1048
@rm -rf $(GIT_TARNAME)
1041
@$(RM) -r $(GIT_TARNAME)
1049
1042
gzip -f -9 $(GIT_TARNAME).tar
1054
1047
htmldocs = git-htmldocs-$(GIT_VERSION)
1055
1048
manpages = git-manpages-$(GIT_VERSION)
1050
$(RM) -r .doc-tmp-dir
1058
1051
mkdir .doc-tmp-dir
1059
1052
$(MAKE) -C Documentation WEBDOC_DEST=../.doc-tmp-dir install-webdoc
1060
1053
cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar .
1061
1054
gzip -n -9 -f $(htmldocs).tar
1056
$(RM) -r .doc-tmp-dir
1064
1057
mkdir -p .doc-tmp-dir/man1 .doc-tmp-dir/man5 .doc-tmp-dir/man7
1065
1058
$(MAKE) -C Documentation DESTDIR=./ \
1066
1059
man1dir=../.doc-tmp-dir/man1 \
1070
1063
cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar .
1071
1064
gzip -n -9 -f $(manpages).tar
1065
$(RM) -r .doc-tmp-dir
1074
1067
### Cleaning rules
1077
rm -f *.o mozilla-sha1/*.o arm/*.o ppc/*.o compat/*.o xdiff/*.o \
1078
test-chmtime$X test-genrandom$X $(LIB_FILE) $(XDIFF_LIB)
1079
rm -f $(ALL_PROGRAMS) $(BUILT_INS) git$X
1080
rm -f *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags
1081
rm -rf autom4te.cache
1082
rm -f configure config.log config.mak.autogen config.mak.append config.status config.cache
1083
rm -rf $(GIT_TARNAME) .doc-tmp-dir
1084
rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
1085
rm -f $(htmldocs).tar.gz $(manpages).tar.gz
1086
rm -f gitweb/gitweb.cgi
1070
$(RM) *.o mozilla-sha1/*.o arm/*.o ppc/*.o compat/*.o xdiff/*.o \
1071
$(LIB_FILE) $(XDIFF_LIB)
1072
$(RM) $(ALL_PROGRAMS) $(BUILT_INS) git$X
1073
$(RM) $(TEST_PROGRAMS)
1074
$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags
1075
$(RM) -r autom4te.cache
1076
$(RM) configure config.log config.mak.autogen config.mak.append config.status config.cache
1077
$(RM) -r $(GIT_TARNAME) .doc-tmp-dir
1078
$(RM) $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
1079
$(RM) $(htmldocs).tar.gz $(manpages).tar.gz
1080
$(RM) gitweb/gitweb.cgi
1087
1081
$(MAKE) -C Documentation/ clean
1088
1082
$(MAKE) -C perl clean
1089
1083
$(MAKE) -C templates/ clean
1090
1084
$(MAKE) -C t/ clean
1091
1085
ifndef NO_TCLTK
1093
1087
$(MAKE) -C git-gui clean
1095
rm -f GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS
1089
$(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS
1097
1091
.PHONY: all install clean strip
1098
1092
.PHONY: .FORCE-GIT-VERSION-FILE TAGS tags .FORCE-GIT-CFLAGS