X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=Makefile;h=01b6643bdfd87ae57052a0545a733d4e11ba5136;hb=2777ef76be7174f698b3f53cc4ff38b4118de320;hp=0efb0b65654de91e2e2308343b4c9d4e58711d88;hpb=0890098780f295f2a58658d1f6b6627e40426c72;p=git.git diff --git a/Makefile b/Makefile index 0efb0b65..01b6643b 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +# The default target of this Makefile is... +all: + # Define MOZILLA_SHA1 environment variable when running make to make use of # a bundled SHA1 routine coming from Mozilla. It is GPL'd and should be fast # on non-x86 architectures (e.g. PowerPC), while the OpenSSL version (default @@ -18,6 +21,8 @@ # # Define NO_STRCASESTR if you don't have strcasestr. # +# Define NO_SETENV if you don't have setenv in the C library. +# # Define PPC_SHA1 environment variable when running make to make use of # a bundled SHA1 routine optimized for PowerPC. # @@ -102,6 +107,11 @@ SCRIPT_PERL = \ SCRIPT_PYTHON = \ git-merge-recursive.py +SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ + $(patsubst %.perl,%,$(SCRIPT_PERL)) \ + $(patsubst %.py,%,$(SCRIPT_PYTHON)) \ + gitk git-cherry-pick + # The ones that do not have to link with lcrypto nor lz. SIMPLE_PROGRAMS = \ git-get-tar-commit-id$X git-mailinfo$X git-mailsplit$X \ @@ -125,32 +135,34 @@ PROGRAMS = \ git-unpack-objects$X git-update-index$X git-update-server-info$X \ git-upload-pack$X git-verify-pack$X git-write-tree$X \ git-update-ref$X git-symbolic-ref$X git-check-ref-format$X \ - git-name-rev$X git-pack-redundant$X git-var$X $(SIMPLE_PROGRAMS) + git-name-rev$X git-pack-redundant$X git-repo-config$X git-var$X + +# what 'all' will build and 'install' will install. +ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS) git$X # Backward compatibility -- to be removed after 1.0 PROGRAMS += git-ssh-pull$X git-ssh-push$X -GIT_LIST_TWEAK = +# Set paths to tools early so that they can be used for version tests. +ifndef SHELL_PATH + SHELL_PATH = /bin/sh +endif +ifndef PERL_PATH + PERL_PATH = /usr/bin/perl +endif +ifndef PYTHON_PATH + PYTHON_PATH = /usr/bin/python +endif PYMODULES = \ gitMergeCommon.py -ifdef WITH_OWN_SUBPROCESS_PY - PYMODULES += compat/subprocess.py -endif - -ifdef WITH_SEND_EMAIL - SCRIPT_PERL += git-send-email.perl -else - GIT_LIST_TWEAK += -e '/^send-email$$/d' -endif - LIB_FILE=libgit.a LIB_H = \ blob.h cache.h commit.h count-delta.h csum-file.h delta.h \ diff.h epoch.h object.h pack.h pkt-line.h quote.h refs.h \ - run-command.h strbuf.h tag.h tree.h + run-command.h strbuf.h tag.h tree.h git-compat-util.h DIFF_OBJS = \ diff.o diffcore-break.o diffcore-order.o diffcore-pathspec.o \ @@ -184,6 +196,7 @@ shellquote = '$(call shq,$(1))' uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') +uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not') ifeq ($(uname_S),Darwin) NEEDS_SSL_WITH_CRYPTO = YesPlease @@ -201,6 +214,9 @@ ifeq ($(uname_S),SunOS) NEEDS_LIBICONV = YesPlease SHELL_PATH = /bin/bash NO_STRCASESTR = YesPlease + ifeq ($(uname_R),5.8) + NO_SETENV = YesPlease + endif INSTALL = ginstall TAR = gtar ALL_CFLAGS += -D__EXTENSIONS__ @@ -227,12 +243,28 @@ ifeq ($(uname_S),NetBSD) ALL_CFLAGS += -I/usr/pkg/include ALL_LDFLAGS += -L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib endif +ifeq ($(uname_S),AIX) + NO_STRCASESTR=YesPlease + NEEDS_LIBICONV=YesPlease +endif ifneq (,$(findstring arm,$(uname_M))) ARM_SHA1 = YesPlease endif -include config.mak +ifdef WITH_OWN_SUBPROCESS_PY + PYMODULES += compat/subprocess.py +else + ifneq ($(shell $(PYTHON_PATH) -c 'import subprocess;print"OK"' 2>/dev/null),OK) + PYMODULES += compat/subprocess.py + endif +endif + +ifdef WITH_SEND_EMAIL + SCRIPT_PERL += git-send-email.perl +endif + ifndef NO_CURL ifdef CURLDIR # This is still problematic -- gcc does not always want -R. @@ -251,16 +283,6 @@ ifndef NO_CURL endif endif -ifndef SHELL_PATH - SHELL_PATH = /bin/sh -endif -ifndef PERL_PATH - PERL_PATH = /usr/bin/perl -endif -ifndef PYTHON_PATH - PYTHON_PATH = /usr/bin/python -endif - ifndef NO_OPENSSL LIB_OBJS += epoch.o OPENSSL_LIBSSL = -lssl @@ -302,12 +324,16 @@ ifdef NEEDS_NSL SIMPLE_LIB += -lnsl endif ifdef NO_STRCASESTR - ALL_CFLAGS += -Dstrcasestr=gitstrcasestr -DNO_STRCASESTR=1 - LIB_OBJS += compat/strcasestr.o + COMPAT_CFLAGS += -DNO_STRCASESTR + COMPAT_OBJS += compat/strcasestr.o +endif +ifdef NO_SETENV + COMPAT_CFLAGS += -DNO_SETENV + COMPAT_OBJS += compat/setenv.o endif ifdef NO_MMAP - ALL_CFLAGS += -Dmmap=gitfakemmap -Dmunmap=gitfakemunmap -DNO_MMAP - LIB_OBJS += compat/mmap.o + COMPAT_CFLAGS += -DNO_MMAP + COMPAT_OBJS += compat/mmap.o endif ifdef NO_IPV6 ALL_CFLAGS += -DNO_IPV6 -Dsockaddr_storage=sockaddr_in @@ -331,27 +357,21 @@ endif endif endif -ALL_CFLAGS += -DSHA1_HEADER=$(call shellquote,$(SHA1_HEADER)) - -SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ - $(patsubst %.perl,%,$(SCRIPT_PERL)) \ - $(patsubst %.py,%,$(SCRIPT_PYTHON)) \ - gitk git-cherry-pick - +ALL_CFLAGS += -DSHA1_HEADER=$(call shellquote,$(SHA1_HEADER)) $(COMPAT_CFLAGS) +LIB_OBJS += $(COMPAT_OBJS) export prefix TAR INSTALL DESTDIR SHELL_PATH template_dir ### Build rules -all: $(PROGRAMS) $(SCRIPTS) git +all: $(ALL_PROGRAMS) all: $(MAKE) -C templates -# Only use $(CFLAGS). We don't need anything else. -git: git.c Makefile +git$X: git.c $(LIB_FILE) Makefile $(CC) -DGIT_EXEC_PATH='"$(bindir)"' -DGIT_VERSION='"$(GIT_VERSION)"' \ - $(CFLAGS) $@.c -o $@ + $(CFLAGS) $(COMPAT_CFLAGS) -o $@ $(filter %.c,$^) $(LIB_FILE) -$(filter-out git,$(patsubst %.sh,%,$(SCRIPT_SH))) : % : %.sh +$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh rm -f $@ sed -e '1s|#!.*/sh|#!$(call shq,$(SHELL_PATH))|' \ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ @@ -435,9 +455,9 @@ check: ### Installation rules -install: $(PROGRAMS) $(SCRIPTS) git +install: all $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(bindir)) - $(INSTALL) git $(PROGRAMS) $(SCRIPTS) $(call shellquote,$(DESTDIR)$(bindir)) + $(INSTALL) $(ALL_PROGRAMS) $(call shellquote,$(DESTDIR)$(bindir)) $(MAKE) -C templates install $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(GIT_PYTHON_DIR)) $(INSTALL) $(PYMODULES) $(call shellquote,$(DESTDIR)$(GIT_PYTHON_DIR)) @@ -474,7 +494,8 @@ deb: dist ### Cleaning rules clean: - rm -f *.o mozilla-sha1/*.o arm/*.o ppc/*.o compat/*.o git $(PROGRAMS) $(LIB_FILE) + rm -f *.o mozilla-sha1/*.o arm/*.o ppc/*.o compat/*.o $(LIB_FILE) + rm -f $(PROGRAMS) $(SIMPLE_PROGRAMS) git$X rm -f $(filter-out gitk,$(SCRIPTS)) rm -f *.spec *.pyc *.pyo rm -rf $(GIT_TARNAME)