[PATCH] Make the test more shell generic and fix missing Solaris find option
[gitweb.git] / Makefile
index 8a1a06f36aa8756419ea5cf70c8d8701d29bda1e..9920467d9060a434e96a38136bf3caf56c19ca8d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -9,6 +9,9 @@
 # Define NO_CURL if you do not have curl installed.  git-http-pull is not
 # built, and you cannot use http:// and https:// transports.
 #
+# Define CURLDIR=/foo/bar if your curl header and library files are in
+# /foo/bar/include and /foo/bar/lib directories.
+#
 # Define NO_STRCASESTR if you don't have strcasestr.
 #
 # Define PPC_SHA1 environment variable when running make to make use of
@@ -24,8 +27,6 @@
 # Define NEEDS_SOCKET if linking with libc is not enough (SunOS,
 # Patrick Mauritz).
 #
-# Define NO_GETDOMAINNAME if your library lack it (SunOS, Patrick Mauritz).
-#
 # Define WITH_OWN_SUBPROCESS_PY if you want to use with python 2.3.
 #
 # Define COLLISION_CHECK below if you believe that SHA1's
@@ -47,7 +48,7 @@
 
 # DEFINES += -DUSE_STDEV
 
-GIT_VERSION = 0.99.7
+GIT_VERSION = 0.99.7.GIT
 
 CFLAGS = -g -O2 -Wall
 ALL_CFLAGS = $(CFLAGS) $(PLATFORM_DEFINES) $(DEFINES)
@@ -60,6 +61,7 @@ GIT_PYTHON_DIR = $(prefix)/share/git-core/python
 
 CC = gcc
 AR = ar
+TAR = tar
 INSTALL = install
 RPMBUILD = rpmbuild
 
@@ -114,6 +116,7 @@ PROGRAMS = \
        git-ssh-upload git-tar-tree git-unpack-file \
        git-unpack-objects git-update-index git-update-server-info \
        git-upload-pack git-verify-pack git-write-tree \
+       git-update-ref \
        $(SIMPLE_PROGRAMS)
 
 # Backward compatibility -- to be removed in 0.99.8
@@ -130,10 +133,6 @@ ifdef WITH_SEND_EMAIL
        SCRIPT_PERL += git-send-email.perl
 endif
 
-ifndef NO_CURL
-       PROGRAMS += git-http-fetch
-endif
-
 LIB_FILE=libgit.a
 
 LIB_H = \
@@ -156,6 +155,9 @@ LIB_OBJS = \
 LIBS = $(LIB_FILE)
 LIBS += -lz
 
+#
+# Platform specific tweaks
+#
 ifeq ($(shell uname -s),Darwin)
        NEEDS_SSL_WITH_CRYPTO = YesPlease
        NEEDS_LIBICONV = YesPlease
@@ -163,12 +165,28 @@ endif
 ifeq ($(shell uname -s),SunOS)
        NEEDS_SOCKET = YesPlease
        NEEDS_NSL = YesPlease
+       SHELL_PATH = /bin/bash
+       NO_STRCASESTR = YesPlease
+       CURLDIR = /opt/sfw
+       INSTALL = ginstall
+       TAR = gtar
        PLATFORM_DEFINES += -D__EXTENSIONS__
 endif
 ifneq (,$(findstring arm,$(shell uname -m)))
        ARM_SHA1 = YesPlease
 endif
 
+ifndef NO_CURL
+       ifdef CURLDIR
+               # This is still problematic -- gcc does not want -R.
+               CFLAGS += -I$(CURLDIR)/include
+               CURL_LIBCURL = -L$(CURLDIR)/lib -R$(CURLDIR)/lib -lcurl
+       else
+               CURL_LIBCURL = -lcurl
+       endif
+       PROGRAMS += git-http-fetch
+endif
+
 ifndef SHELL_PATH
        SHELL_PATH = /bin/sh
 endif
@@ -235,6 +253,7 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
          $(patsubst %.py,%,$(SCRIPT_PYTHON)) \
          gitk
 
+export TAR INSTALL DESTDIR SHELL_PATH
 ### Build rules
 
 all: $(PROGRAMS) $(SCRIPTS)
@@ -244,7 +263,8 @@ all:
 
 git: git.sh Makefile
        rm -f $@+ $@
-       sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.sh >$@+
+       sed -e '1s|#!.*/sh|#!$(SHELL_PATH)|' \
+           -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.sh >$@+
        chmod +x $@+
        mv $@+ $@
 
@@ -285,7 +305,7 @@ git-ssh-upload: rsh.o
 git-ssh-pull: rsh.o fetch.o
 git-ssh-push: rsh.o
 
-git-http-fetch: LIBS += -lcurl
+git-http-fetch: LIBS += $(CURL_LIBCURL)
 git-rev-list: LIBS += $(OPENSSL_LIBSSL)
 
 init-db.o: init-db.c
@@ -325,7 +345,6 @@ install: $(PROGRAMS) $(SCRIPTS)
        $(INSTALL) -d -m755 $(DESTDIR)$(bindir)
        $(INSTALL) $(PROGRAMS) $(SCRIPTS) $(DESTDIR)$(bindir)
        $(INSTALL) git-revert $(DESTDIR)$(bindir)/git-cherry-pick
-       sh ./cmd-rename.sh $(DESTDIR)$(bindir)
        $(MAKE) -C templates install
        $(INSTALL) -d -m755 $(DESTDIR)$(GIT_PYTHON_DIR)
        $(INSTALL) $(PYMODULES) $(DESTDIR)$(GIT_PYTHON_DIR)
@@ -346,7 +365,7 @@ dist: git-core.spec git-tar-tree
        ./git-tar-tree HEAD $(GIT_TARNAME) > $(GIT_TARNAME).tar
        @mkdir -p $(GIT_TARNAME)
        @cp git-core.spec $(GIT_TARNAME)
-       tar rf $(GIT_TARNAME).tar $(GIT_TARNAME)/git-core.spec
+       $(TAR) rf $(GIT_TARNAME).tar $(GIT_TARNAME)/git-core.spec
        @rm -rf $(GIT_TARNAME)
        gzip -f -9 $(GIT_TARNAME).tar
 
@@ -355,20 +374,20 @@ rpm: dist
 
 deb: dist
        rm -rf $(GIT_TARNAME)
-       tar zxf $(GIT_TARNAME).tar.gz
+       $(TAR) zxf $(GIT_TARNAME).tar.gz
        dpkg-source -b $(GIT_TARNAME)
        cd $(GIT_TARNAME) && fakeroot debian/rules binary
 
 ### Cleaning rules
 
 clean:
-       rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROGRAMS) $(LIB_FILE)
+       rm -f *.o mozilla-sha1/*.o ppc/*.o compat/*.o $(PROGRAMS) $(LIB_FILE)
        rm -f $(filter-out gitk,$(SCRIPTS))
-       rm -f git-core.spec
+       rm -f git-core.spec *.pyc *.pyo
        rm -rf $(GIT_TARNAME)
        rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
        rm -f git-core_$(GIT_VERSION)-*.deb git-core_$(GIT_VERSION)-*.dsc
        rm -f git-tk_$(GIT_VERSION)-*.deb
        $(MAKE) -C Documentation/ clean
-       $(MAKE) -C templates/ clean
+       $(MAKE) -C templates clean
        $(MAKE) -C t/ clean