diff options
| author | Junio C Hamano <junkio@cox.net> | 2006-08-12 19:23:09 -0700 | 
|---|---|---|
| committer | Junio C Hamano <junkio@cox.net> | 2006-08-12 19:23:09 -0700 | 
| commit | 86183fbb09ffe5d46eae1cf52023a1b5f8fbc047 (patch) | |
| tree | c3e94766b5baa12f84020efe130291275ee01aef | |
| parent | cd5fff64e6014f9c1d4c2bc113fde19bd45d2db7 (diff) | |
| parent | a20b4d899ae75e075641d7bfe9462a239c8b9236 (diff) | |
| download | git-86183fbb09ffe5d46eae1cf52023a1b5f8fbc047.tar.gz | |
Merge branch 'jn/conf'
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | INSTALL | 2 | ||||
| -rw-r--r-- | Makefile | 11 | ||||
| -rw-r--r-- | config.mak.in | 16 | ||||
| -rw-r--r-- | configure.ac | 235 | 
5 files changed, 229 insertions, 37 deletions
| diff --git a/.gitignore b/.gitignore index fb0fa3f16a..6e973b3d4b 100644 --- a/.gitignore +++ b/.gitignore @@ -140,7 +140,7 @@ config.mak  autom4te.cache  config.log  config.status -config.mak.in  config.mak.autogen +config.mak.append  configure  git-blame @@ -16,7 +16,7 @@ install" would not work.  Alternatively you can use autoconf generated ./configure script to  set up install paths (via config.mak.autogen), so you can write instead -	$ autoconf ;# as yourself if ./configure doesn't exist yet +	$ make configure ;# as yourself  	$ ./configure --prefix=/usr ;# as yourself  	$ make all doc ;# as yourself  	# make install install-doc ;# as root @@ -27,7 +27,7 @@ all:  # Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)  # do not support the 'size specifiers' introduced by C99, namely ll, hh,  # j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). -# some c compilers supported these specifiers prior to C99 as an extension. +# some C compilers supported these specifiers prior to C99 as an extension.  #  # Define NO_STRCASESTR if you don't have strcasestr.  # @@ -616,6 +616,13 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css  	chmod +x $@+  	mv $@+ $@ +configure: configure.ac +	rm -f $@ $<+ +	sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ +	    $< > $<+ +	autoconf -o $@ $<+ +	rm -f $<+ +  # These can record GIT_VERSION  git$X git.spec \  	$(patsubst %.sh,%,$(SCRIPT_SH)) \ @@ -807,7 +814,7 @@ clean:  	rm -f $(ALL_PROGRAMS) $(BUILT_INS) git$X  	rm -f *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags  	rm -rf autom4te.cache -	rm -f config.log config.mak.autogen configure config.status config.cache +	rm -f configure config.log config.mak.autogen config.mak.append config.status config.cache  	rm -rf $(GIT_TARNAME) .doc-tmp-dir  	rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz  	rm -f $(htmldocs).tar.gz $(manpages).tar.gz diff --git a/config.mak.in b/config.mak.in index 04f508ab90..369e6116e0 100644 --- a/config.mak.in +++ b/config.mak.in @@ -22,3 +22,19 @@ VPATH = @srcdir@  export exec_prefix mandir  export srcdir VPATH +NO_PYTHON=@NO_PYTHON@ +NEEDS_SSL_WITH_CRYPTO=@NEEDS_SSL_WITH_CRYPTO@ +NO_OPENSSL=@NO_OPENSSL@ +NO_CURL=@NO_CURL@ +NO_EXPAT=@NO_EXPAT@ +NEEDS_LIBICONV=@NEEDS_LIBICONV@ +NEEDS_SOCKET=@NEEDS_SOCKET@ +NO_D_INO_IN_DIRENT=@NO_D_INO_IN_DIRENT@ +NO_D_TYPE_IN_DIRENT=@NO_D_TYPE_IN_DIRENT@ +NO_SOCKADDR_STORAGE=@NO_SOCKADDR_STORAGE@ +NO_IPV6=@NO_IPV6@ +NO_C99_FORMAT=@NO_C99_FORMAT@ +NO_STRCASESTR=@NO_STRCASESTR@ +NO_STRLCPY=@NO_STRLCPY@ +NO_SETENV=@NO_SETENV@ + diff --git a/configure.ac b/configure.ac index a9c88c6a4d..e890131c46 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@  # Process this file with autoconf to produce a configure script.  AC_PREREQ(2.59) -AC_INIT([git], [1.4.2], [git@vger.kernel.org]) +AC_INIT([git], [@@GIT_VERSION@@], [git@vger.kernel.org])  AC_CONFIG_SRCDIR([git.c]) @@ -19,6 +19,77 @@ echo "# ${config_append}.  Generated by configure." > "${config_append}"  # Append LINE to file ${config_append}  AC_DEFUN([GIT_CONF_APPEND_LINE],  [echo "$1" >> "${config_append}"])# GIT_CONF_APPEND_LINE +# +# GIT_ARG_SET_PATH(PROGRAM) +# ------------------------- +# Provide --with-PROGRAM=PATH option to set PATH to PROGRAM +AC_DEFUN([GIT_ARG_SET_PATH], +[AC_ARG_WITH([$1], + [AS_HELP_STRING([--with-$1=PATH], +                 [provide PATH to $1])], + [GIT_CONF_APPEND_PATH($1)],[]) +])# GIT_ARG_SET_PATH +# +# GIT_CONF_APPEND_PATH(PROGRAM) +# ------------------------------ +# Parse --with-PROGRAM=PATH option to set PROGRAM_PATH=PATH +# Used by GIT_ARG_SET_PATH(PROGRAM) +AC_DEFUN([GIT_CONF_APPEND_PATH], +[PROGRAM=m4_toupper($1); \ +if test "$withval" = "no"; then \ +	AC_MSG_ERROR([You cannot use git without $1]); \ +else \ +	if test "$withval" = "yes"; then \ +		AC_MSG_WARN([You should provide path for --with-$1=PATH]); \ +	else \ +		GIT_CONF_APPEND_LINE(${PROGRAM}_PATH=$withval); \ +	fi; \ +fi; \ +]) # GIT_CONF_APPEND_PATH +# +# GIT_PARSE_WITH(PACKAGE) +# ----------------------- +# For use in AC_ARG_WITH action-if-found, for packages default ON. +# * Set NO_PACKAGE=YesPlease for --without-PACKAGE +# * Set PACKAGEDIR=PATH for --with-PACKAGE=PATH +# * Unset NO_PACKAGE for --with-PACKAGE without ARG +AC_DEFUN([GIT_PARSE_WITH], +[PACKAGE=m4_toupper($1); \ +if test "$withval" = "no"; then \ +	m4_toupper(NO_$1)=YesPlease; \ +elif test "$withval" = "yes"; then \ +	m4_toupper(NO_$1)=; \ +else \ +	m4_toupper(NO_$1)=; \ +	GIT_CONF_APPEND_LINE(${PACKAGE}DIR=$withval); \ +fi \ +])# GIT_PARSE_WITH + + +## Site configuration related to programs (before tests) +## --with-PACKAGE[=ARG] and --without-PACKAGE +# +# Define SHELL_PATH to provide path to shell. +GIT_ARG_SET_PATH(shell) +# +# Define PERL_PATH to provide path to Perl. +GIT_ARG_SET_PATH(perl) +# +# Define NO_PYTHON if you want to lose all benefits of the recursive merge. +# Define PYTHON_PATH to provide path to Python. +AC_ARG_WITH(python,[AS_HELP_STRING([--with-python=PATH], [provide PATH to python]) +AS_HELP_STRING([--without-python], [don't use python scripts])], + [if test "$withval" = "no"; then \ +    NO_PYTHON=YesPlease; \ +  elif test "$withval" = "yes"; then \ +    NO_PYTHON=; \ +  else \ +    NO_PYTHON=; \ +    PYTHON_PATH=$withval; \ +  fi; \ + ]) +AC_SUBST(NO_PYTHON) +AC_SUBST(PYTHON_PATH)  ## Checks for programs. @@ -30,6 +101,16 @@ AC_CHECK_TOOL(AR, ar, :)  AC_CHECK_PROGS(TAR, [gtar tar])  #  # Define NO_PYTHON if you want to lose all benefits of the recursive merge. +# Define PYTHON_PATH to provide path to Python. +if test -z "$NO_PYTHON"; then +	if test -z "$PYTHON_PATH"; then +		AC_PATH_PROGS(PYTHON_PATH, [python python2.4 python2.3 python2]) +	fi +	if test -n "$PYTHON_PATH"; then +		GIT_CONF_APPEND_LINE([PYTHON_PATH=@PYTHON_PATH@]) +		NO_PYTHON="" +	fi +fi  ## Checks for libraries. @@ -37,32 +118,42 @@ AC_MSG_NOTICE([CHECKS for libraries])  #  # Define NO_OPENSSL environment variable if you do not have OpenSSL.  # Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin). -AC_CHECK_LIB([ssl], [SHA1_Init],[], -[AC_CHECK_LIB([crypto], [SHA1_INIT], - [GIT_CONF_APPEND_LINE(NEEDS_SSL_WITH_CRYPTO=YesPlease)], - [GIT_CONF_APPEND_LINE(NO_OPENSSL=YesPlease)])]) +AC_CHECK_LIB([crypto], [SHA1_Init], +[NEEDS_SSL_WITH_CRYPTO=], +[AC_CHECK_LIB([ssl], [SHA1_Init], + [NEEDS_SSL_WITH_CRYPTO=YesPlease +  NEEDS_SSL_WITH_CRYPTO=], + [NO_OPENSSL=YesPlease])]) +AC_SUBST(NEEDS_SSL_WITH_CRYPTO) +AC_SUBST(NO_OPENSSL)  #  # Define NO_CURL if you do not have curl installed.  git-http-pull and  # git-http-push are not built, and you cannot use http:// and https://  # transports. -AC_CHECK_LIB([curl], [curl_global_init],[], -[GIT_CONF_APPEND_LINE(NO_CURL=YesPlease)]) +AC_CHECK_LIB([curl], [curl_global_init], +[NO_CURL=], +[NO_CURL=YesPlease]) +AC_SUBST(NO_CURL)  #  # Define NO_EXPAT if you do not have expat installed.  git-http-push is  # not built, and you cannot push using http:// and https:// transports. -AC_CHECK_LIB([expat], [XML_ParserCreate],[], -[GIT_CONF_APPEND_LINE(NO_EXPAT=YesPlease)]) +AC_CHECK_LIB([expat], [XML_ParserCreate], +[NO_EXPAT=], +[NO_EXPAT=YesPlease]) +AC_SUBST(NO_EXPAT)  #  # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin). -AC_CHECK_LIB([c], [iconv],[], -[AC_CHECK_LIB([iconv],[iconv], - [GIT_CONF_APPEND_LINE(NEEDS_LIBICONV=YesPlease)],[])]) +AC_CHECK_LIB([c], [iconv], +[NEEDS_LIBICONV=], +[NEEDS_LIBICONV=YesPlease]) +AC_SUBST(NEEDS_LIBICONV)  #  # Define NEEDS_SOCKET if linking with libc is not enough (SunOS,  # Patrick Mauritz). -AC_CHECK_LIB([c], [socket],[], -[AC_CHECK_LIB([socket],[socket], - [GIT_CONF_APPEND_LINE(NEEDS_SOCKET=YesPlease)],[])]) +AC_CHECK_LIB([c], [socket], +[NEEDS_SOCKET=], +[NEEDS_SOCKET=YesPlease]) +AC_SUBST(NEEDS_SOCKET)  ## Checks for header files. @@ -72,21 +163,63 @@ AC_CHECK_LIB([c], [socket],[],  AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])  #  # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent. -AC_CHECK_MEMBER(struct dirent.d_ino,[], -[GIT_CONF_APPEND_LINE(NO_D_INO_IN_DIRENT=YesPlease)], +AC_CHECK_MEMBER(struct dirent.d_ino, +[NO_D_INO_IN_DIRENT=], +[NO_D_INO_IN_DIRENT=YesPlease],  [#include <dirent.h>]) +AC_SUBST(NO_D_INO_IN_DIRENT)  #  # Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks  # d_type in struct dirent (latest Cygwin -- will be fixed soonish). -AC_CHECK_MEMBER(struct dirent.d_type,[], -[GIT_CONF_APPEND_LINE(NO_D_TYPE_IN_DIRENT=YesPlease)], +AC_CHECK_MEMBER(struct dirent.d_type, +[NO_D_TYPE_IN_DIRENT=], +[NO_D_TYPE_IN_DIRENT=YesPlease],  [#include <dirent.h>]) +AC_SUBST(NO_D_TYPE_IN_DIRENT)  #  # Define NO_SOCKADDR_STORAGE if your platform does not have struct  # sockaddr_storage. -AC_CHECK_TYPE(struct sockaddr_storage,[], -[GIT_CONF_APPEND_LINE(NO_SOCKADDR_STORAGE=YesPlease)], +AC_CHECK_TYPE(struct sockaddr_storage, +[NO_SOCKADDR_STORAGE=], +[NO_SOCKADDR_STORAGE=YesPlease],  [#include <netinet/in.h>]) +AC_SUBST(NO_SOCKADDR_STORAGE) +# +# Define NO_IPV6 if you lack IPv6 support and getaddrinfo(). +AC_CHECK_TYPE([struct addrinfo],[ + AC_CHECK_FUNC([getaddrinfo], +  [NO_IPV6=], +  [NO_IPV6=YesPlease]) +],[NO_IPV6=YesPlease],[ +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +]) +AC_SUBST(NO_IPV6) +# +# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.) +# do not support the 'size specifiers' introduced by C99, namely ll, hh, +# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). +# some C compilers supported these specifiers prior to C99 as an extension. +AC_CACHE_CHECK(whether formatted IO functions support C99 size specifiers, + ac_cv_c_c99_format, +[# Actually git uses only %z (%zu) in alloc.c, and %t (%td) in mktag.c +AC_RUN_IFELSE( +	[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], +		[[char buf[64]; +		if (sprintf(buf, "%lld%hhd%jd%zd%td", (long long int)1, (char)2, (intmax_t)3, (size_t)4, (ptrdiff_t)5) != 5) +		  exit(1); +		else if (strcmp(buf, "12345")) +		  exit(2);]])], +	[ac_cv_c_c99_format=yes], +	[ac_cv_c_c99_format=no]) +]) +if test $ac_cv_c_c99_format = no; then +	NO_C99_FORMAT=YesPlease +else +	NO_C99_FORMAT= +fi +AC_SUBST(NO_C99_FORMAT)  ## Checks for library functions. @@ -94,21 +227,25 @@ AC_CHECK_TYPE(struct sockaddr_storage,[],  AC_MSG_NOTICE([CHECKS for library functions])  #  # Define NO_STRCASESTR if you don't have strcasestr. -AC_CHECK_FUNC(strcasestr,[], -[GIT_CONF_APPEND_LINE(NO_STRCASESTR=YesPlease)]) +AC_CHECK_FUNC(strcasestr, +[NO_STRCASESTR=], +[NO_STRCASESTR=YesPlease]) +AC_SUBST(NO_STRCASESTR)  #  # Define NO_STRLCPY if you don't have strlcpy. -AC_CHECK_FUNC(strlcpy,[], -[GIT_CONF_APPEND_LINE(NO_STRLCPY=YesPlease)]) +AC_CHECK_FUNC(strlcpy, +[NO_STRLCPY=], +[NO_STRLCPY=YesPlease]) +AC_SUBST(NO_STRLCPY)  #  # Define NO_SETENV if you don't have setenv in the C library. -AC_CHECK_FUNC(setenv,[], -[GIT_CONF_APPEND_LINE(NO_SETENV=YesPlease)]) +AC_CHECK_FUNC(setenv, +[NO_SETENV=], +[NO_SETENV=YesPlease]) +AC_SUBST(NO_SETENV)  #  # Define NO_MMAP if you want to avoid mmap.  # -# Define NO_IPV6 if you lack IPv6 support and getaddrinfo(). -#  # Define NO_ICONV if your libc does not properly support iconv. @@ -125,9 +262,11 @@ AC_CHECK_FUNC(setenv,[],  # a missing newline at the end of the file. -## Site configuration +## Site configuration (override autodetection)  ## --with-PACKAGE[=ARG] and --without-PACKAGE -# Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability +AC_MSG_NOTICE([CHECKS for site configuration]) +# +# Define NO_SVN_TESTS if you want to skip time-consuming SVN interoperability  # tests.  These tests take up a significant amount of the total test time  # but are not needed unless you plan to talk to SVN repos.  # @@ -145,21 +284,51 @@ AC_CHECK_FUNC(setenv,[],  # Define NO_OPENSSL environment variable if you do not have OpenSSL.  # This also implies MOZILLA_SHA1.  # +# Define OPENSSLDIR=/foo/bar if your openssl header and library files are in +# /foo/bar/include and /foo/bar/lib directories. +AC_ARG_WITH(openssl, +AS_HELP_STRING([--with-openssl],[use OpenSSL library (default is YES)]) +AS_HELP_STRING([],              [ARG can be prefix for openssl library and headers]),\ +GIT_PARSE_WITH(openssl)) +#  # Define NO_CURL if you do not have curl installed.  git-http-pull and  # git-http-push are 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. +AC_ARG_WITH(curl, +AS_HELP_STRING([--with-curl],[support http(s):// transports (default is YES)]) +AS_HELP_STRING([],           [ARG can be also prefix for curl library and headers]), +GIT_PARSE_WITH(curl))  #  # Define NO_EXPAT if you do not have expat installed.  git-http-push is  # not built, and you cannot push using http:// and https:// transports.  # -# Define NO_MMAP if you want to avoid mmap. +# Define EXPATDIR=/foo/bar if your expat header and library files are in +# /foo/bar/include and /foo/bar/lib directories. +AC_ARG_WITH(expat, +AS_HELP_STRING([--with-expat], +[support git-push using http:// and https:// transports via WebDAV (default is YES)]) +AS_HELP_STRING([],            [ARG can be also prefix for expat library and headers]), +GIT_PARSE_WITH(expat)) +# +# Define NO_FINK if you are building on Darwin/Mac OS X, have Fink +# installed in /sw, but don't want GIT to link against any libraries +# installed there.  If defined you may specify your own (or Fink's) +# include directories and library directories by defining CFLAGS +# and LDFLAGS appropriately.  # -# Define NO_PYTHON if you want to loose all benefits of the recursive merge. +# Define NO_DARWIN_PORTS if you are building on Darwin/Mac OS X, +# have DarwinPorts installed in /opt/local, but don't want GIT to +# link against any libraries installed there.  If defined you may +# specify your own (or DarwinPort's) include directories and +# library directories by defining CFLAGS and LDFLAGS appropriately.  # +# Define NO_MMAP if you want to avoid mmap. +  ## --enable-FEATURE[=ARG] and --disable-FEATURE +#  # Define COLLISION_CHECK below if you believe that SHA1's  # 1461501637330902918203684832716283019655932542976 hashes do not give you  # sufficient guarantee that no collisions between objects will ever happen. | 
