# Define EXPATDIR=/foo/bar if your expat header and library files are in
# /foo/bar/include and /foo/bar/lib directories.
#
+# Define EXPAT_NEEDS_XMLPARSE_H if you have an old version of expat (e.g.,
+# 1.1 or 1.2) that provides xmlparse.h instead of expat.h.
+#
# Define NO_GETTEXT if you don't want Git output to be translated.
# A translated Git requires GNU libintl or another gettext implementation,
# plus libintl-perl at runtime.
# Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks
# d_type in struct dirent (Cygwin 1.5, fixed in Cygwin 1.7).
#
+# Define HAVE_STRINGS_H if you have strings.h and need it for strcasecmp.
+#
# Define NO_STRCASESTR if you don't have strcasestr.
#
# Define NO_MEMMEM if you don't have memmem.
#
+# Define NO_GETPAGESIZE if you don't have getpagesize.
+#
# Define NO_STRLCPY if you don't have strlcpy.
#
# Define NO_STRTOUMAX if you don't have both strtoimax and strtoumax in the
#
# Define NO_MKSTEMPS if you don't have mkstemps in the C library.
#
-# Define NO_STRTOK_R if you don't have strtok_r in the C library.
-#
# Define NO_FNMATCH if you don't have fnmatch in the C library.
#
# Define NO_FNMATCH_CASEFOLD if your fnmatch function doesn't have the
# FNM_CASEFOLD GNU extension.
#
+# Define USE_WILDMATCH if you want to use Git's wildmatch
+# implementation as fnmatch
+#
# Define NO_GECOS_IN_PWENT if you don't have pw_gecos in struct passwd
# in the C library.
#
# Define NO_POLL if you do not have or don't want to use poll().
# This also implies NO_SYS_POLL_H.
#
+# Define NEEDS_SYS_PARAM_H if you need to include sys/param.h to compile,
+# *PLEASE* REPORT to git@vger.kernel.org if your platform needs this;
+# we want to know more about the issue.
+#
# Define NO_PTHREADS if you do not have or do not want to use Pthreads.
#
# Define NO_PREAD if you have a problem with pread() system call (e.g.
# apostrophes to be ASCII so that cut&pasting examples to the shell
# will work.
#
+# Define PERL_PATH to the path of your Perl binary (usually /usr/bin/perl).
+#
# Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
# MakeMaker (e.g. using ActiveState under Cygwin).
#
# Define NO_PERL if you do not want Perl scripts or libraries at all.
#
+# Define PYTHON_PATH to the path of your Python binary (often /usr/bin/python
+# but /usr/bin/python2.7 on some platforms).
+#
# Define NO_PYTHON if you do not want Python scripts or libraries at all.
#
# Define NO_TCLTK if you do not want Tcl/Tk GUI.
#
# Define NO_REGEX if you have no or inferior regex support in your C library.
#
+# Define CYGWIN_V15_WIN32API if you are using Cygwin v1.7.x but are not
+# using the current w32api packages. The recommended approach, however,
+# is to update your installation if compilation errors occur.
+#
# Define HAVE_DEV_TTY if your system can open /dev/tty to interact with the
# user.
#
@$(SHELL_PATH) ./GIT-VERSION-GEN
-include GIT-VERSION-FILE
-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')
-uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
-uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
-
-ifdef MSVC
- # avoid the MingW and Cygwin configuration sections
- uname_S := Windows
- uname_O := Windows
-endif
-
# CFLAGS and LDFLAGS are for the users to override from the command line.
CFLAGS = -g -O2 -Wall
ETC_GITCONFIG = $(sysconfdir)/gitconfig
ETC_GITATTRIBUTES = $(sysconfdir)/gitattributes
lib = lib
-# DESTDIR=
+# DESTDIR =
pathsep = :
export prefix bindir sharedir sysconfdir gitwebdir localedir
SCRIPT_PERL += git-send-email.perl
SCRIPT_PERL += git-svn.perl
-SCRIPT_PYTHON += git-remote-testgit.py
+SCRIPT_PYTHON += git-remote-testpy.py
SCRIPT_PYTHON += git-p4.py
-SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
- $(patsubst %.perl,%,$(SCRIPT_PERL)) \
- $(patsubst %.py,%,$(SCRIPT_PYTHON)) \
+# Generated files for scripts
+SCRIPT_SH_GEN = $(patsubst %.sh,%,$(SCRIPT_SH))
+SCRIPT_PERL_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL))
+SCRIPT_PYTHON_GEN = $(patsubst %.py,%,$(SCRIPT_PYTHON))
+
+# Individual rules to allow e.g.
+# "make -C ../.. SCRIPT_PERL=contrib/foo/bar.perl build-perl-script"
+# from subdirectories like contrib/*/
+.PHONY: build-perl-script build-sh-script build-python-script
+build-perl-script: $(SCRIPT_PERL_GEN)
+build-sh-script: $(SCRIPT_SH_GEN)
+build-python-script: $(SCRIPT_PYTHON_GEN)
+
+.PHONY: install-perl-script install-sh-script install-python-script
+install-sh-script: $(SCRIPT_SH_GEN)
+ $(INSTALL) $(SCRIPT_SH_GEN) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+install-perl-script: $(SCRIPT_PERL_GEN)
+ $(INSTALL) $(SCRIPT_PERL_GEN) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+install-python-script: $(SCRIPT_PYTHON_GEN)
+ $(INSTALL) $(SCRIPT_PYTHON_GEN) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+
+.PHONY: clean-perl-script clean-sh-script clean-python-script
+clean-sh-script:
+ $(RM) $(SCRIPT_SH_GEN)
+clean-perl-script:
+ $(RM) $(SCRIPT_PERL_GEN)
+clean-python-script:
+ $(RM) $(SCRIPT_PYTHON_GEN)
+
+SCRIPTS = $(SCRIPT_SH_GEN) \
+ $(SCRIPT_PERL_GEN) \
+ $(SCRIPT_PYTHON_GEN) \
git-instaweb
ETAGS_TARGET = TAGS
PROGRAM_OBJS += shell.o
PROGRAM_OBJS += show-index.o
PROGRAM_OBJS += upload-pack.o
+PROGRAM_OBJS += remote-testsvn.o
# Binary suffix, set to .exe for Windows builds
X =
TEST_PROGRAMS_NEED_X += test-string-list
TEST_PROGRAMS_NEED_X += test-subprocess
TEST_PROGRAMS_NEED_X += test-svn-fe
+TEST_PROGRAMS_NEED_X += test-wildmatch
TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))
export PERL_PATH
export PYTHON_PATH
-LIB_FILE=libgit.a
-XDIFF_LIB=xdiff/lib.a
-VCSSVN_LIB=vcs-svn/lib.a
-
-LIB_H += xdiff/xinclude.h
-LIB_H += xdiff/xmacros.h
-LIB_H += xdiff/xdiff.h
-LIB_H += xdiff/xtypes.h
-LIB_H += xdiff/xutils.h
-LIB_H += xdiff/xprepare.h
-LIB_H += xdiff/xdiffi.h
-LIB_H += xdiff/xemit.h
-
-LIB_H += vcs-svn/line_buffer.h
-LIB_H += vcs-svn/sliding_window.h
-LIB_H += vcs-svn/repo_tree.h
-LIB_H += vcs-svn/fast_export.h
-LIB_H += vcs-svn/svndiff.h
-LIB_H += vcs-svn/svndump.h
+LIB_FILE = libgit.a
+XDIFF_LIB = xdiff/lib.a
+VCSSVN_LIB = vcs-svn/lib.a
GENERATED_H += common-cmds.h
LIB_H += ll-merge.h
LIB_H += log-tree.h
LIB_H += mailmap.h
-LIB_H += merge-file.h
+LIB_H += merge-blobs.h
LIB_H += merge-recursive.h
LIB_H += mergesort.h
LIB_H += notes-cache.h
LIB_H += pack.h
LIB_H += parse-options.h
LIB_H += patch-ids.h
+LIB_H += pathspec.h
LIB_H += pkt-line.h
LIB_H += progress.h
LIB_H += prompt.h
LIB_H += userdiff.h
LIB_H += utf8.h
LIB_H += varint.h
+LIB_H += vcs-svn/fast_export.h
+LIB_H += vcs-svn/line_buffer.h
+LIB_H += vcs-svn/repo_tree.h
+LIB_H += vcs-svn/sliding_window.h
+LIB_H += vcs-svn/svndiff.h
+LIB_H += vcs-svn/svndump.h
LIB_H += walker.h
+LIB_H += wildmatch.h
LIB_H += wt-status.h
LIB_H += xdiff-interface.h
LIB_H += xdiff/xdiff.h
+LIB_H += xdiff/xdiffi.h
+LIB_H += xdiff/xemit.h
+LIB_H += xdiff/xinclude.h
+LIB_H += xdiff/xmacros.h
+LIB_H += xdiff/xprepare.h
+LIB_H += xdiff/xtypes.h
+LIB_H += xdiff/xutils.h
LIB_OBJS += abspath.o
LIB_OBJS += advice.o
LIB_OBJS += entry.o
LIB_OBJS += environment.o
LIB_OBJS += exec_cmd.o
+LIB_OBJS += fetch-pack.o
LIB_OBJS += fsck.o
LIB_OBJS += gettext.o
LIB_OBJS += gpg-interface.o
LIB_OBJS += log-tree.o
LIB_OBJS += mailmap.o
LIB_OBJS += match-trees.o
-LIB_OBJS += merge-file.o
+LIB_OBJS += merge.o
+LIB_OBJS += merge-blobs.o
LIB_OBJS += merge-recursive.o
LIB_OBJS += mergesort.o
LIB_OBJS += name-hash.o
LIB_OBJS += patch-delta.o
LIB_OBJS += patch-ids.o
LIB_OBJS += path.o
+LIB_OBJS += pathspec.o
LIB_OBJS += pkt-line.o
LIB_OBJS += preload-index.o
LIB_OBJS += pretty.o
LIB_OBJS += resolve-undo.o
LIB_OBJS += revision.o
LIB_OBJS += run-command.o
+LIB_OBJS += send-pack.o
LIB_OBJS += sequencer.o
LIB_OBJS += server-info.o
LIB_OBJS += setup.o
LIB_OBJS += varint.o
LIB_OBJS += version.o
LIB_OBJS += walker.o
+LIB_OBJS += wildmatch.o
LIB_OBJS += wrapper.o
LIB_OBJS += write_or_die.o
LIB_OBJS += ws.o
BUILTIN_OBJS += builtin/bundle.o
BUILTIN_OBJS += builtin/cat-file.o
BUILTIN_OBJS += builtin/check-attr.o
+BUILTIN_OBJS += builtin/check-ignore.o
BUILTIN_OBJS += builtin/check-ref-format.o
BUILTIN_OBJS += builtin/checkout-index.o
BUILTIN_OBJS += builtin/checkout.o
GIT_USER_AGENT = git/$(GIT_VERSION)
-#
-# Platform specific tweaks
-#
-
-# We choose to avoid "if .. else if .. else .. endif endif"
-# because maintaining the nesting to match is a pain. If
-# we had "elif" things would have been much nicer...
-
-ifeq ($(uname_M),x86_64)
- XDL_FAST_HASH = YesPlease
-endif
-ifeq ($(uname_S),OSF1)
- # Need this for u_short definitions et al
- BASIC_CFLAGS += -D_OSF_SOURCE
- SOCKLEN_T = int
- NO_STRTOULL = YesPlease
- NO_NSEC = YesPlease
-endif
-ifeq ($(uname_S),Linux)
- NO_STRLCPY = YesPlease
- NO_MKSTEMPS = YesPlease
- HAVE_PATHS_H = YesPlease
- LIBC_CONTAINS_LIBINTL = YesPlease
- HAVE_DEV_TTY = YesPlease
-endif
-ifeq ($(uname_S),GNU/kFreeBSD)
- NO_STRLCPY = YesPlease
- NO_MKSTEMPS = YesPlease
- HAVE_PATHS_H = YesPlease
- DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
- LIBC_CONTAINS_LIBINTL = YesPlease
-endif
-ifeq ($(uname_S),UnixWare)
- CC = cc
- NEEDS_SOCKET = YesPlease
- NEEDS_NSL = YesPlease
- NEEDS_SSL_WITH_CRYPTO = YesPlease
- NEEDS_LIBICONV = YesPlease
- SHELL_PATH = /usr/local/bin/bash
- NO_IPV6 = YesPlease
- NO_HSTRERROR = YesPlease
- NO_MKSTEMPS = YesPlease
- BASIC_CFLAGS += -Kthread
- BASIC_CFLAGS += -I/usr/local/include
- BASIC_LDFLAGS += -L/usr/local/lib
- INSTALL = ginstall
- TAR = gtar
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
-endif
-ifeq ($(uname_S),SCO_SV)
- ifeq ($(uname_R),3.2)
- CFLAGS = -O2
- endif
- ifeq ($(uname_R),5)
- CC = cc
- BASIC_CFLAGS += -Kthread
- endif
- NEEDS_SOCKET = YesPlease
- NEEDS_NSL = YesPlease
- NEEDS_SSL_WITH_CRYPTO = YesPlease
- NEEDS_LIBICONV = YesPlease
- SHELL_PATH = /usr/bin/bash
- NO_IPV6 = YesPlease
- NO_HSTRERROR = YesPlease
- NO_MKSTEMPS = YesPlease
- BASIC_CFLAGS += -I/usr/local/include
- BASIC_LDFLAGS += -L/usr/local/lib
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- INSTALL = ginstall
- TAR = gtar
-endif
-ifeq ($(uname_S),Darwin)
- NEEDS_CRYPTO_WITH_SSL = YesPlease
- NEEDS_SSL_WITH_CRYPTO = YesPlease
- NEEDS_LIBICONV = YesPlease
- ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
- OLD_ICONV = UnfortunatelyYes
- endif
- ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
- NO_STRLCPY = YesPlease
- endif
- NO_MEMMEM = YesPlease
- USE_ST_TIMESPEC = YesPlease
- HAVE_DEV_TTY = YesPlease
- COMPAT_OBJS += compat/precompose_utf8.o
- BASIC_CFLAGS += -DPRECOMPOSE_UNICODE
-endif
-ifeq ($(uname_S),SunOS)
- NEEDS_SOCKET = YesPlease
- NEEDS_NSL = YesPlease
- SHELL_PATH = /bin/bash
- SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- NO_MKDTEMP = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_REGEX = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- NO_MSGFMT_EXTENDED_OPTIONS = YesPlease
- HAVE_DEV_TTY = YesPlease
- ifeq ($(uname_R),5.6)
- SOCKLEN_T = int
- NO_HSTRERROR = YesPlease
- NO_IPV6 = YesPlease
- NO_SOCKADDR_STORAGE = YesPlease
- NO_UNSETENV = YesPlease
- NO_SETENV = YesPlease
- NO_STRLCPY = YesPlease
- NO_STRTOUMAX = YesPlease
- GIT_TEST_CMP = cmp
- endif
- ifeq ($(uname_R),5.7)
- NEEDS_RESOLV = YesPlease
- NO_IPV6 = YesPlease
- NO_SOCKADDR_STORAGE = YesPlease
- NO_UNSETENV = YesPlease
- NO_SETENV = YesPlease
- NO_STRLCPY = YesPlease
- NO_STRTOUMAX = YesPlease
- GIT_TEST_CMP = cmp
- endif
- ifeq ($(uname_R),5.8)
- NO_UNSETENV = YesPlease
- NO_SETENV = YesPlease
- NO_STRTOUMAX = YesPlease
- GIT_TEST_CMP = cmp
- endif
- ifeq ($(uname_R),5.9)
- NO_UNSETENV = YesPlease
- NO_SETENV = YesPlease
- NO_STRTOUMAX = YesPlease
- GIT_TEST_CMP = cmp
- endif
- INSTALL = /usr/ucb/install
- TAR = gtar
- BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H
-endif
-ifeq ($(uname_O),Cygwin)
- ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
- NO_D_TYPE_IN_DIRENT = YesPlease
- NO_D_INO_IN_DIRENT = YesPlease
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_SYMLINK_HEAD = YesPlease
- NO_IPV6 = YesPlease
- OLD_ICONV = UnfortunatelyYes
- endif
- NO_THREAD_SAFE_PREAD = YesPlease
- NEEDS_LIBICONV = YesPlease
- NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes
- NO_TRUSTABLE_FILEMODE = UnfortunatelyYes
- NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
- # There are conflicting reports about this.
- # On some boxes NO_MMAP is needed, and not so elsewhere.
- # Try commenting this out if you suspect MMAP is more efficient
- NO_MMAP = YesPlease
- X = .exe
- COMPAT_OBJS += compat/cygwin.o
- UNRELIABLE_FSTAT = UnfortunatelyYes
- SPARSE_FLAGS = -isystem /usr/include/w32api -Wno-one-bit-signed-bitfield
-endif
-ifeq ($(uname_S),FreeBSD)
- NEEDS_LIBICONV = YesPlease
- OLD_ICONV = YesPlease
- NO_MEMMEM = YesPlease
- BASIC_CFLAGS += -I/usr/local/include
- BASIC_LDFLAGS += -L/usr/local/lib
- DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
- USE_ST_TIMESPEC = YesPlease
- ifeq ($(shell expr "$(uname_R)" : '4\.'),2)
- PTHREAD_LIBS = -pthread
- NO_UINTMAX_T = YesPlease
- NO_STRTOUMAX = YesPlease
- endif
- PYTHON_PATH = /usr/local/bin/python
- HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),OpenBSD)
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- USE_ST_TIMESPEC = YesPlease
- NEEDS_LIBICONV = YesPlease
- BASIC_CFLAGS += -I/usr/local/include
- BASIC_LDFLAGS += -L/usr/local/lib
- HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),NetBSD)
- ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2)
- NEEDS_LIBICONV = YesPlease
- endif
- BASIC_CFLAGS += -I/usr/pkg/include
- BASIC_LDFLAGS += -L/usr/pkg/lib $(CC_LD_DYNPATH)/usr/pkg/lib
- USE_ST_TIMESPEC = YesPlease
- NO_MKSTEMPS = YesPlease
- HAVE_PATHS_H = YesPlease
-endif
-ifeq ($(uname_S),AIX)
- DEFAULT_PAGER = more
- NO_STRCASESTR=YesPlease
- NO_MEMMEM = YesPlease
- NO_MKDTEMP = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_STRLCPY = YesPlease
- NO_NSEC = YesPlease
- FREAD_READS_DIRECTORIES = UnfortunatelyYes
- INTERNAL_QSORT = UnfortunatelyYes
- NEEDS_LIBICONV=YesPlease
- BASIC_CFLAGS += -D_LARGE_FILES
- ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
- NO_PTHREADS = YesPlease
- else
- PTHREAD_LIBS = -lpthread
- endif
- ifeq ($(shell expr "$(uname_V).$(uname_R)" : '5\.1'),3)
- INLINE=''
- endif
- GIT_TEST_CMP = cmp
-endif
-ifeq ($(uname_S),GNU)
- # GNU/Hurd
- NO_STRLCPY=YesPlease
- NO_MKSTEMPS = YesPlease
- HAVE_PATHS_H = YesPlease
- LIBC_CONTAINS_LIBINTL = YesPlease
-endif
-ifeq ($(uname_S),IRIX)
- NO_SETENV = YesPlease
- NO_UNSETENV = YesPlease
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_MKDTEMP = YesPlease
- # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads
- # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set),
- # git dies with a segmentation fault when trying to access the first
- # entry of a reflog. The conservative choice is made to always set
- # NO_MMAP. If you suspect that your compiler is not affected by this
- # issue, comment out the NO_MMAP statement.
- NO_MMAP = YesPlease
- NO_REGEX = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- SNPRINTF_RETURNS_BOGUS = YesPlease
- SHELL_PATH = /usr/gnu/bin/bash
- NEEDS_LIBGEN = YesPlease
-endif
-ifeq ($(uname_S),IRIX64)
- NO_SETENV=YesPlease
- NO_UNSETENV = YesPlease
- NO_STRCASESTR=YesPlease
- NO_MEMMEM = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_MKDTEMP = YesPlease
- # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads
- # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set),
- # git dies with a segmentation fault when trying to access the first
- # entry of a reflog. The conservative choice is made to always set
- # NO_MMAP. If you suspect that your compiler is not affected by this
- # issue, comment out the NO_MMAP statement.
- NO_MMAP = YesPlease
- NO_REGEX = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- SNPRINTF_RETURNS_BOGUS = YesPlease
- SHELL_PATH=/usr/gnu/bin/bash
- NEEDS_LIBGEN = YesPlease
-endif
-ifeq ($(uname_S),HP-UX)
- INLINE = __inline
- NO_IPV6=YesPlease
- NO_SETENV=YesPlease
- NO_STRCASESTR=YesPlease
- NO_MEMMEM = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_STRLCPY = YesPlease
- NO_MKDTEMP = YesPlease
- NO_UNSETENV = YesPlease
- NO_HSTRERROR = YesPlease
- NO_SYS_SELECT_H = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- SNPRINTF_RETURNS_BOGUS = YesPlease
- NO_NSEC = YesPlease
- ifeq ($(uname_R),B.11.00)
- NO_INET_NTOP = YesPlease
- NO_INET_PTON = YesPlease
- endif
- ifeq ($(uname_R),B.10.20)
- # Override HP-UX 11.x setting:
- INLINE =
- SOCKLEN_T = size_t
- NO_PREAD = YesPlease
- NO_INET_NTOP = YesPlease
- NO_INET_PTON = YesPlease
- endif
- GIT_TEST_CMP = cmp
-endif
-ifeq ($(uname_S),Windows)
- GIT_VERSION := $(GIT_VERSION).MSVC
- pathsep = ;
- NO_PREAD = YesPlease
- NEEDS_CRYPTO_WITH_SSL = YesPlease
- NO_LIBGEN_H = YesPlease
- NO_POLL = YesPlease
- NO_SYMLINK_HEAD = YesPlease
- NO_IPV6 = YesPlease
- NO_UNIX_SOCKETS = YesPlease
- NO_SETENV = YesPlease
- NO_UNSETENV = YesPlease
- NO_STRCASESTR = YesPlease
- NO_STRLCPY = YesPlease
- NO_STRTOK_R = YesPlease
- NO_FNMATCH = YesPlease
- NO_MEMMEM = YesPlease
- # NEEDS_LIBICONV = YesPlease
- NO_ICONV = YesPlease
- NO_STRTOUMAX = YesPlease
- NO_STRTOULL = YesPlease
- NO_MKDTEMP = YesPlease
- NO_MKSTEMPS = YesPlease
- SNPRINTF_RETURNS_BOGUS = YesPlease
- NO_SVN_TESTS = YesPlease
- NO_PERL_MAKEMAKER = YesPlease
- RUNTIME_PREFIX = YesPlease
- NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
- NO_NSEC = YesPlease
- USE_WIN32_MMAP = YesPlease
- # USE_NED_ALLOCATOR = YesPlease
- UNRELIABLE_FSTAT = UnfortunatelyYes
- OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
- NO_REGEX = YesPlease
- NO_CURL = YesPlease
- NO_PYTHON = YesPlease
- BLK_SHA1 = YesPlease
- NO_POSIX_GOODIES = UnfortunatelyYes
- NATIVE_CRLF = YesPlease
- DEFAULT_HELP_FORMAT = html
-
- CC = compat/vcbuild/scripts/clink.pl
- AR = compat/vcbuild/scripts/lib.pl
- CFLAGS =
- BASIC_CFLAGS = -nologo -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
- COMPAT_OBJS = compat/msvc.o compat/winansi.o \
- compat/win32/pthread.o compat/win32/syslog.o \
- compat/win32/dirent.o
- COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
- BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib
- EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib
- PTHREAD_LIBS =
- lib =
-ifndef DEBUG
- BASIC_CFLAGS += -GL -Os -MT
- BASIC_LDFLAGS += -LTCG
- AR += -LTCG
-else
- BASIC_CFLAGS += -Zi -MTd
-endif
- X = .exe
-endif
-ifeq ($(uname_S),Interix)
- NO_INITGROUPS = YesPlease
- NO_IPV6 = YesPlease
- NO_MEMMEM = YesPlease
- NO_MKDTEMP = YesPlease
- NO_STRTOUMAX = YesPlease
- NO_NSEC = YesPlease
- NO_MKSTEMPS = YesPlease
- ifeq ($(uname_R),3.5)
- NO_INET_NTOP = YesPlease
- NO_INET_PTON = YesPlease
- NO_SOCKADDR_STORAGE = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- endif
- ifeq ($(uname_R),5.2)
- NO_INET_NTOP = YesPlease
- NO_INET_PTON = YesPlease
- NO_SOCKADDR_STORAGE = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- endif
-endif
-ifeq ($(uname_S),Minix)
- NO_IPV6 = YesPlease
- NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
- NO_NSEC = YesPlease
- NEEDS_LIBGEN =
- NEEDS_CRYPTO_WITH_SSL = YesPlease
- NEEDS_IDN_WITH_CURL = YesPlease
- NEEDS_SSL_WITH_CURL = YesPlease
- NEEDS_RESOLV =
- NO_HSTRERROR = YesPlease
- NO_MMAP = YesPlease
- NO_CURL =
- NO_EXPAT =
-endif
-ifeq ($(uname_S),NONSTOP_KERNEL)
- # Needs some C99 features, "inline" is just one of them.
- # INLINE='' would just replace one set of warnings with another and
- # still not compile in c89 mode, due to non-const array initializations.
- CC = cc -c99
- # Disable all optimization, seems to result in bad code, with -O or -O2
- # or even -O1 (default), /usr/local/libexec/git-core/git-pack-objects
- # abends on "git push". Needs more investigation.
- CFLAGS = -g -O0
- # We'd want it to be here.
- prefix = /usr/local
- # Our's are in ${prefix}/bin (perl might also be in /usr/bin/perl).
- PERL_PATH = ${prefix}/bin/perl
- PYTHON_PATH = ${prefix}/bin/python
-
- # As detected by './configure'.
- # Missdetected, hence commented out, see below.
- #NO_CURL = YesPlease
- # Added manually, see above.
- NEEDS_SSL_WITH_CURL = YesPlease
- HAVE_LIBCHARSET_H = YesPlease
- NEEDS_LIBICONV = YesPlease
- NEEDS_LIBINTL_BEFORE_LIBICONV = YesPlease
- NO_SYS_SELECT_H = UnfortunatelyYes
- NO_D_TYPE_IN_DIRENT = YesPlease
- NO_HSTRERROR = YesPlease
- NO_STRCASESTR = YesPlease
- NO_FNMATCH_CASEFOLD = YesPlease
- NO_MEMMEM = YesPlease
- NO_STRLCPY = YesPlease
- NO_SETENV = YesPlease
- NO_UNSETENV = YesPlease
- NO_MKDTEMP = YesPlease
- NO_MKSTEMPS = YesPlease
- # Currently libiconv-1.9.1.
- OLD_ICONV = UnfortunatelyYes
- NO_REGEX = YesPlease
- NO_PTHREADS = UnfortunatelyYes
-
- # Not detected (nor checked for) by './configure'.
- # We don't have SA_RESTART on NonStop, unfortunalety.
- COMPAT_CFLAGS += -DSA_RESTART=0
- # Apparently needed in compat/fnmatch/fnmatch.c.
- COMPAT_CFLAGS += -DHAVE_STRING_H=1
- NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
- NO_NSEC = YesPlease
- NO_PREAD = YesPlease
- NO_MMAP = YesPlease
- NO_POLL = YesPlease
- NO_INTPTR_T = UnfortunatelyYes
- # Bug report 10-120822-4477 submitted to HP NonStop development.
- MKDIR_WO_TRAILING_SLASH = YesPlease
- # RFE 10-120912-4693 submitted to HP NonStop development.
- NO_SETITIMER = UnfortunatelyYes
-endif
-ifneq (,$(findstring MINGW,$(uname_S)))
- pathsep = ;
- NO_PREAD = YesPlease
- NEEDS_CRYPTO_WITH_SSL = YesPlease
- NO_LIBGEN_H = YesPlease
- NO_POLL = YesPlease
- NO_SYMLINK_HEAD = YesPlease
- NO_UNIX_SOCKETS = YesPlease
- NO_SETENV = YesPlease
- NO_UNSETENV = YesPlease
- NO_STRCASESTR = YesPlease
- NO_STRLCPY = YesPlease
- NO_STRTOK_R = YesPlease
- NO_FNMATCH = YesPlease
- NO_MEMMEM = YesPlease
- NEEDS_LIBICONV = YesPlease
- OLD_ICONV = YesPlease
- NO_STRTOUMAX = YesPlease
- NO_MKDTEMP = YesPlease
- NO_MKSTEMPS = YesPlease
- NO_SVN_TESTS = YesPlease
- NO_PERL_MAKEMAKER = YesPlease
- RUNTIME_PREFIX = YesPlease
- NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
- NO_NSEC = YesPlease
- USE_WIN32_MMAP = YesPlease
- USE_NED_ALLOCATOR = YesPlease
- UNRELIABLE_FSTAT = UnfortunatelyYes
- OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
- NO_REGEX = YesPlease
- NO_PYTHON = YesPlease
- BLK_SHA1 = YesPlease
- ETAGS_TARGET = ETAGS
- NO_INET_PTON = YesPlease
- NO_INET_NTOP = YesPlease
- NO_POSIX_GOODIES = UnfortunatelyYes
- COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/win32
- COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
- COMPAT_OBJS += compat/mingw.o compat/winansi.o \
- compat/win32/pthread.o compat/win32/syslog.o \
- compat/win32/dirent.o
- EXTLIBS += -lws2_32
- PTHREAD_LIBS =
- X = .exe
- SPARSE_FLAGS = -Wno-one-bit-signed-bitfield
-ifneq (,$(wildcard ../THIS_IS_MSYSGIT))
- htmldir=doc/git/html/
- prefix =
- INSTALL = /bin/install
- EXTLIBS += /mingw/lib/libz.a
- NO_R_TO_GCC_LINKER = YesPlease
- INTERNAL_QSORT = YesPlease
- HAVE_LIBCHARSET_H = YesPlease
-else
- NO_CURL = YesPlease
-endif
-endif
-
+include config.mak.uname
-include config.mak.autogen
-include config.mak
ifeq ($(COMPUTE_HEADER_DEPENDENCIES),auto)
dep_check = $(shell $(CC) $(ALL_CFLAGS) \
- -c -MF /dev/null -MMD -MP -x c /dev/null -o /dev/null 2>&1; \
+ -c -MF /dev/null -MQ /dev/null -MMD -MP \
+ -x c /dev/null -o /dev/null 2>&1; \
echo $$?)
ifeq ($(dep_check),0)
override COMPUTE_HEADER_DEPENDENCIES = yes
CURL_LIBCURL = -lcurl
endif
ifdef NEEDS_SSL_WITH_CURL
- CURL_LIBCURL += -lssl
+ CURL_LIBCURL += -lssl
ifdef NEEDS_CRYPTO_WITH_SSL
CURL_LIBCURL += -lcrypto
endif
else
EXPAT_LIBEXPAT = -lexpat
endif
+ ifdef EXPAT_NEEDS_XMLPARSE_H
+ BASIC_CFLAGS += -DEXPAT_NEEDS_XMLPARSE_H
+ endif
endif
endif
ifdef NO_D_INO_IN_DIRENT
BASIC_CFLAGS += -DNO_D_INO_IN_DIRENT
endif
+ifdef NO_GECOS_IN_PWENT
+ BASIC_CFLAGS += -DNO_GECOS_IN_PWENT
+endif
ifdef NO_ST_BLOCKS_IN_STRUCT_STAT
BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT
endif
ifdef NO_STRTOULL
COMPAT_CFLAGS += -DNO_STRTOULL
endif
-ifdef NO_STRTOK_R
- COMPAT_CFLAGS += -DNO_STRTOK_R
- COMPAT_OBJS += compat/strtok_r.o
-endif
ifdef NO_FNMATCH
COMPAT_CFLAGS += -Icompat/fnmatch
COMPAT_CFLAGS += -DNO_FNMATCH
COMPAT_OBJS += compat/fnmatch/fnmatch.o
endif
endif
+ifdef USE_WILDMATCH
+ COMPAT_CFLAGS += -DUSE_WILDMATCH
+endif
ifdef NO_SETENV
COMPAT_CFLAGS += -DNO_SETENV
COMPAT_OBJS += compat/setenv.o
ifdef NO_SYS_POLL_H
BASIC_CFLAGS += -DNO_SYS_POLL_H
endif
+ifdef NEEDS_SYS_PARAM_H
+ BASIC_CFLAGS += -DNEEDS_SYS_PARAM_H
+endif
ifdef NO_INTTYPES_H
BASIC_CFLAGS += -DNO_INTTYPES_H
endif
endif
ifdef NO_STRUCT_ITIMERVAL
COMPAT_CFLAGS += -DNO_STRUCT_ITIMERVAL
- NO_SETITIMER=YesPlease
+ NO_SETITIMER = YesPlease
endif
ifdef NO_SETITIMER
COMPAT_CFLAGS += -DNO_SETITIMER
COMPAT_CFLAGS += -DNO_MEMMEM
COMPAT_OBJS += compat/memmem.o
endif
+ifdef NO_GETPAGESIZE
+ COMPAT_CFLAGS += -DNO_GETPAGESIZE
+endif
ifdef INTERNAL_QSORT
COMPAT_CFLAGS += -DINTERNAL_QSORT
COMPAT_OBJS += compat/qsort.o
EXTLIBS += $(CHARSET_LIB)
endif
+ifdef HAVE_STRINGS_H
+ BASIC_CFLAGS += -DHAVE_STRINGS_H
+endif
+
ifdef HAVE_DEV_TTY
BASIC_CFLAGS += -DHAVE_DEV_TTY
endif
COMPAT_CFLAGS += -Icompat/regex
COMPAT_OBJS += compat/regex/regex.o
endif
+ifdef CYGWIN_V15_WIN32API
+ COMPAT_CFLAGS += -DCYGWIN_V15_WIN32API
+endif
ifdef USE_NED_ALLOCATOR
COMPAT_CFLAGS += -Icompat/nedmalloc
endif
ifeq ($(TCLTK_PATH),)
-NO_TCLTK=NoThanks
+NO_TCLTK = NoThanks
endif
ifeq ($(PERL_PATH),)
-NO_PERL=NoThanks
+NO_PERL = NoThanks
endif
ifeq ($(PYTHON_PATH),)
-NO_PYTHON=NoThanks
+NO_PYTHON = NoThanks
endif
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
ifeq ("$(PROFILE)","GEN")
CFLAGS += -fprofile-generate=$(PROFILE_DIR) -DNO_NORETURN=1
EXTLIBS += -lgcov
- export CCACHE_DISABLE=t
- V=1
+ export CCACHE_DISABLE = t
+ V = 1
else
ifneq ("$(PROFILE)","")
CFLAGS += -fprofile-use=$(PROFILE_DIR) -fprofile-correction -DNO_NORETURN=1
- export CCACHE_DISABLE=t
- V=1
+ export CCACHE_DISABLE = t
+ V = 1
endif
endif
GIT-SCRIPT-DEFINES: FORCE
@FLAGS='$(SCRIPT_DEFINES)'; \
if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new script parameters"; \
+ echo >&2 " * new script parameters"; \
echo "$$FLAGS" >$@; \
fi
endif # NO_PERL
ifndef NO_PYTHON
-$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS GIT-PREFIX
+$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py
$(QUIET_GEN)$(RM) $@ $@+ && \
INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C git_remote_helpers -s \
mv $@+ $@
endif # NO_PYTHON
+CONFIGURE_RECIPE = $(RM) configure configure.ac+ && \
+ sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+ configure.ac >configure.ac+ && \
+ autoconf -o configure configure.ac+ && \
+ $(RM) configure.ac+
+
configure: configure.ac GIT-VERSION-FILE
- $(QUIET_GEN)$(RM) $@ $<+ && \
- sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
- $< > $<+ && \
- autoconf -o $@ $<+ && \
- $(RM) $<+
+ $(QUIET_GEN)$(CONFIGURE_RECIPE)
ifdef AUTOCONFIGURED
-config.status: configure
- $(QUIET_GEN)if test -f config.status; then \
+# We avoid depending on 'configure' here, because it gets rebuilt
+# every time GIT-VERSION-FILE is modified, only to update the embedded
+# version number string, which config.status does not care about. We
+# do want to recheck when the platform/environment detection logic
+# changes, hence this depends on configure.ac.
+config.status: configure.ac
+ $(QUIET_GEN)$(CONFIGURE_RECIPE) && \
+ if test -f config.status; then \
./config.status --recheck; \
else \
./configure; \
missing_dep_dirs := $(filter-out $(wildcard $(dep_dirs)),$(dep_dirs))
dep_file = $(dir $@).depend/$(notdir $@).d
-dep_args = -MF $(dep_file) -MMD -MP
+dep_args = -MF $(dep_file) -MQ $@ -MMD -MP
ifdef CHECK_HEADER_DEPENDENCIES
$(error cannot compute header dependencies outside a normal build. \
Please unset CHECK_HEADER_DEPENDENCIES and try again)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
+git-remote-testsvn$X: remote-testsvn.o GIT-LDFLAGS $(GITLIBS) $(VCSSVN_LIB)
+ $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) \
+ $(VCSSVN_LIB)
+
$(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY)
$(QUIET_LNCP)$(RM) $@ && \
ln $< $@ 2>/dev/null || \
GIT-PREFIX: FORCE
@FLAGS='$(TRACK_PREFIX)'; \
if test x"$$FLAGS" != x"`cat GIT-PREFIX 2>/dev/null`" ; then \
- echo 1>&2 " * new prefix flags"; \
+ echo >&2 " * new prefix flags"; \
echo "$$FLAGS" >GIT-PREFIX; \
fi
GIT-CFLAGS: FORCE
@FLAGS='$(TRACK_CFLAGS)'; \
if test x"$$FLAGS" != x"`cat GIT-CFLAGS 2>/dev/null`" ; then \
- echo 1>&2 " * new build flags"; \
+ echo >&2 " * new build flags"; \
echo "$$FLAGS" >GIT-CFLAGS; \
fi
GIT-LDFLAGS: FORCE
@FLAGS='$(TRACK_LDFLAGS)'; \
if test x"$$FLAGS" != x"`cat GIT-LDFLAGS 2>/dev/null`" ; then \
- echo 1>&2 " * new link flags"; \
+ echo >&2 " * new link flags"; \
echo "$$FLAGS" >GIT-LDFLAGS; \
fi
@echo GIT_PERF_MAKE_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_MAKE_OPTS)))'\' >>$@
endif
-### Detect Tck/Tk interpreter path changes
-ifndef NO_TCLTK
-TRACK_VARS = $(subst ','\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)')
+### Detect Python interpreter path changes
+ifndef NO_PYTHON
+TRACK_PYTHON = $(subst ','\'',-DPYTHON_PATH='$(PYTHON_PATH_SQ)')
-GIT-GUI-VARS: FORCE
- @VARS='$(TRACK_VARS)'; \
+GIT-PYTHON-VARS: FORCE
+ @VARS='$(TRACK_PYTHON)'; \
if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new Tcl/Tk interpreter location"; \
+ echo >&2 " * new Python interpreter location"; \
echo "$$VARS" >$@; \
fi
endif
sed -e 's/@@VERSION@@/$(GIT_VERSION)/g' < $< > $@+
mv $@+ $@
-GIT_TARNAME=git-$(GIT_VERSION)
+GIT_TARNAME = git-$(GIT_VERSION)
dist: git.spec git-archive$(X) configure
./git-archive --format=tar \
--prefix=$(GIT_TARNAME)/ HEAD^{tree} > $(GIT_TARNAME).tar
builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)
$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
$(RM) $(TEST_PROGRAMS)
- $(RM) -r bin-wrappers
- $(RM) -r $(dep_dirs)
+ $(RM) -r bin-wrappers $(dep_dirs)
$(RM) -r po/build/
$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h $(ETAGS_TARGET) tags cscope*
$(RM) -r $(GIT_TARNAME) .doc-tmp-dir
$(MAKE) -C gitk-git clean
$(MAKE) -C git-gui clean
endif
- $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS
- $(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES
+ $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS
+ $(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES GIT-PYTHON-VARS
.PHONY: all install profile-clean clean strip
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell