Jakub Narebski | 5566771 | 2006-07-03 01:56:48 +0200 | [diff] [blame] | 1 | # -*- Autoconf -*- |
| 2 | # Process this file with autoconf to produce a configure script. |
| 3 | |
| 4 | AC_PREREQ(2.59) |
Jakub Narebski | 3900145 | 2006-08-08 18:35:23 +0200 | [diff] [blame] | 5 | AC_INIT([git], [@@GIT_VERSION@@], [git@vger.kernel.org]) |
Jakub Narebski | 5566771 | 2006-07-03 01:56:48 +0200 | [diff] [blame] | 6 | |
| 7 | AC_CONFIG_SRCDIR([git.c]) |
| 8 | |
| 9 | config_file=config.mak.autogen |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 10 | config_append=config.mak.append |
Jakub Narebski | 5566771 | 2006-07-03 01:56:48 +0200 | [diff] [blame] | 11 | config_in=config.mak.in |
| 12 | |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 13 | echo "# ${config_append}. Generated by configure." > "${config_append}" |
| 14 | |
| 15 | |
| 16 | ## Definitions of macros |
| 17 | # GIT_CONF_APPEND_LINE(LINE) |
| 18 | # -------------------------- |
| 19 | # Append LINE to file ${config_append} |
| 20 | AC_DEFUN([GIT_CONF_APPEND_LINE], |
| 21 | [echo "$1" >> "${config_append}"])# GIT_CONF_APPEND_LINE |
Jakub Narebski | 657b062 | 2006-08-03 00:38:11 +0200 | [diff] [blame] | 22 | # |
| 23 | # GIT_ARG_SET_PATH(PROGRAM) |
| 24 | # ------------------------- |
| 25 | # Provide --with-PROGRAM=PATH option to set PATH to PROGRAM |
| 26 | AC_DEFUN([GIT_ARG_SET_PATH], |
| 27 | [AC_ARG_WITH([$1], |
| 28 | [AS_HELP_STRING([--with-$1=PATH], |
| 29 | [provide PATH to $1])], |
| 30 | [GIT_CONF_APPEND_PATH($1)],[]) |
| 31 | ])# GIT_ARG_SET_PATH |
| 32 | # |
| 33 | # GIT_CONF_APPEND_PATH(PROGRAM) |
| 34 | # ------------------------------ |
| 35 | # Parse --with-PROGRAM=PATH option to set PROGRAM_PATH=PATH |
| 36 | # Used by GIT_ARG_SET_PATH(PROGRAM) |
| 37 | AC_DEFUN([GIT_CONF_APPEND_PATH], |
| 38 | [PROGRAM=m4_toupper($1); \ |
| 39 | if test "$withval" = "no"; then \ |
Jakub Narebski | b52b1d4 | 2006-08-08 18:36:21 +0200 | [diff] [blame] | 40 | AC_MSG_ERROR([You cannot use git without $1]); \ |
Jakub Narebski | 657b062 | 2006-08-03 00:38:11 +0200 | [diff] [blame] | 41 | else \ |
| 42 | if test "$withval" = "yes"; then \ |
| 43 | AC_MSG_WARN([You should provide path for --with-$1=PATH]); \ |
| 44 | else \ |
| 45 | GIT_CONF_APPEND_LINE(${PROGRAM}_PATH=$withval); \ |
| 46 | fi; \ |
| 47 | fi; \ |
| 48 | ]) # GIT_CONF_APPEND_PATH |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 49 | # |
| 50 | # GIT_PARSE_WITH(PACKAGE) |
| 51 | # ----------------------- |
| 52 | # For use in AC_ARG_WITH action-if-found, for packages default ON. |
| 53 | # * Set NO_PACKAGE=YesPlease for --without-PACKAGE |
| 54 | # * Set PACKAGEDIR=PATH for --with-PACKAGE=PATH |
| 55 | # * Unset NO_PACKAGE for --with-PACKAGE without ARG |
| 56 | AC_DEFUN([GIT_PARSE_WITH], |
| 57 | [PACKAGE=m4_toupper($1); \ |
| 58 | if test "$withval" = "no"; then \ |
| 59 | m4_toupper(NO_$1)=YesPlease; \ |
| 60 | elif test "$withval" = "yes"; then \ |
| 61 | m4_toupper(NO_$1)=; \ |
| 62 | else \ |
| 63 | m4_toupper(NO_$1)=; \ |
| 64 | GIT_CONF_APPEND_LINE(${PACKAGE}DIR=$withval); \ |
| 65 | fi \ |
| 66 | ])# GIT_PARSE_WITH |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 67 | |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 68 | |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 69 | ## Site configuration related to programs (before tests) |
Jakub Narebski | c4b1b14 | 2006-08-03 00:38:56 +0200 | [diff] [blame] | 70 | ## --with-PACKAGE[=ARG] and --without-PACKAGE |
| 71 | # |
Robert Schiele | 10861be | 2007-08-01 06:30:35 +0200 | [diff] [blame] | 72 | # Set lib to alternative name of lib directory (e.g. lib64) |
| 73 | AC_ARG_WITH([lib], |
| 74 | [AS_HELP_STRING([--with-lib=ARG], |
| 75 | [ARG specifies alternative name for lib directory])], |
Ralf Wildenhues | 3c307bf | 2007-11-06 21:12:45 +0100 | [diff] [blame] | 76 | [if test "$withval" = "no" || test "$withval" = "yes"; then \ |
Robert Schiele | 10861be | 2007-08-01 06:30:35 +0200 | [diff] [blame] | 77 | AC_MSG_WARN([You should provide name for --with-lib=ARG]); \ |
| 78 | else \ |
| 79 | GIT_CONF_APPEND_LINE(lib=$withval); \ |
| 80 | fi; \ |
| 81 | ],[]) |
| 82 | # |
Jakub Narebski | 465e649 | 2006-08-04 17:55:58 +0200 | [diff] [blame] | 83 | # Define SHELL_PATH to provide path to shell. |
| 84 | GIT_ARG_SET_PATH(shell) |
| 85 | # |
| 86 | # Define PERL_PATH to provide path to Perl. |
| 87 | GIT_ARG_SET_PATH(perl) |
| 88 | # |
Robert Schiele | bef19da | 2007-07-29 20:35:45 +0200 | [diff] [blame] | 89 | # Define ZLIB_PATH to provide path to zlib. |
| 90 | GIT_ARG_SET_PATH(zlib) |
| 91 | # |
Eygene Ryabinkin | 81b63c7 | 2007-03-28 04:12:07 -0700 | [diff] [blame] | 92 | # Declare the with-tcltk/without-tcltk options. |
| 93 | AC_ARG_WITH(tcltk, |
| 94 | AS_HELP_STRING([--with-tcltk],[use Tcl/Tk GUI (default is YES)]) |
| 95 | AS_HELP_STRING([],[ARG is the full path to the Tcl/Tk interpreter.]) |
| 96 | AS_HELP_STRING([],[Bare --with-tcltk will make the GUI part only if]) |
| 97 | AS_HELP_STRING([],[Tcl/Tk interpreter will be found in a system.]),\ |
| 98 | GIT_PARSE_WITH(tcltk)) |
| 99 | # |
Jakub Narebski | c4b1b14 | 2006-08-03 00:38:56 +0200 | [diff] [blame] | 100 | |
| 101 | |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 102 | ## Checks for programs. |
Jakub Narebski | fd22c02 | 2006-07-08 23:07:13 +0200 | [diff] [blame] | 103 | AC_MSG_NOTICE([CHECKS for programs]) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 104 | # |
Dennis Stosberg | 60a144f | 2006-08-15 11:01:31 +0200 | [diff] [blame] | 105 | AC_PROG_CC([cc gcc]) |
Jakub Narebski | fd22c02 | 2006-07-08 23:07:13 +0200 | [diff] [blame] | 106 | #AC_PROG_INSTALL # needs install-sh or install.sh in sources |
Robert Schiele | 96e24ab | 2007-10-03 03:49:34 +0200 | [diff] [blame] | 107 | AC_CHECK_TOOLS(AR, [gar ar], :) |
Jakub Narebski | fd22c02 | 2006-07-08 23:07:13 +0200 | [diff] [blame] | 108 | AC_CHECK_PROGS(TAR, [gtar tar]) |
Eygene Ryabinkin | 81b63c7 | 2007-03-28 04:12:07 -0700 | [diff] [blame] | 109 | # TCLTK_PATH will be set to some value if we want Tcl/Tk |
| 110 | # or will be empty otherwise. |
| 111 | if test -z "$NO_TCLTK"; then |
| 112 | if test "$with_tcltk" = ""; then |
| 113 | # No Tcl/Tk switches given. Do not check for Tcl/Tk, use bare 'wish'. |
| 114 | TCLTK_PATH=wish |
| 115 | AC_SUBST(TCLTK_PATH) |
| 116 | elif test "$with_tcltk" = "yes"; then |
| 117 | # Tcl/Tk check requested. |
| 118 | AC_CHECK_PROGS(TCLTK_PATH, [wish], ) |
Eygene Ryabinkin | 68daee0 | 2007-03-29 14:06:48 +0400 | [diff] [blame] | 119 | else |
Eygene Ryabinkin | 81b63c7 | 2007-03-28 04:12:07 -0700 | [diff] [blame] | 120 | AC_MSG_RESULT([Using Tcl/Tk interpreter $with_tcltk]) |
| 121 | TCLTK_PATH="$with_tcltk" |
| 122 | AC_SUBST(TCLTK_PATH) |
Eygene Ryabinkin | 81b63c7 | 2007-03-28 04:12:07 -0700 | [diff] [blame] | 123 | fi |
| 124 | fi |
Jakub Narebski | 923db42 | 2007-12-09 13:57:39 +0100 | [diff] [blame] | 125 | AC_CHECK_PROGS(ASCIIDOC, [asciidoc]) |
| 126 | if test -n "$ASCIIDOC"; then |
| 127 | AC_MSG_CHECKING([for asciidoc version]) |
| 128 | asciidoc_version=`$ASCIIDOC --version 2>&1` |
| 129 | case "${asciidoc_version}" in |
| 130 | asciidoc' '8*) |
| 131 | ASCIIDOC8=YesPlease |
| 132 | AC_MSG_RESULT([${asciidoc_version} > 7]) |
| 133 | ;; |
| 134 | asciidoc' '7*) |
| 135 | ASCIIDOC8= |
| 136 | AC_MSG_RESULT([${asciidoc_version}]) |
| 137 | ;; |
| 138 | *) |
| 139 | ASCIIDOC8= |
| 140 | AC_MSG_RESULT([${asciidoc_version} (unknown)]) |
| 141 | ;; |
| 142 | esac |
| 143 | fi |
| 144 | AC_SUBST(ASCIIDOC8) |
| 145 | |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 146 | |
| 147 | ## Checks for libraries. |
Jakub Narebski | ebdf532 | 2006-07-08 23:07:12 +0200 | [diff] [blame] | 148 | AC_MSG_NOTICE([CHECKS for libraries]) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 149 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 150 | # Define NO_OPENSSL environment variable if you do not have OpenSSL. |
Jakub Narebski | ebdf532 | 2006-07-08 23:07:12 +0200 | [diff] [blame] | 151 | # Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin). |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 152 | AC_CHECK_LIB([crypto], [SHA1_Init], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 153 | [NEEDS_SSL_WITH_CRYPTO=], |
Junio C Hamano | 3068f6c | 2006-08-04 16:33:18 -0700 | [diff] [blame] | 154 | [AC_CHECK_LIB([ssl], [SHA1_Init], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 155 | [NEEDS_SSL_WITH_CRYPTO=YesPlease |
| 156 | NEEDS_SSL_WITH_CRYPTO=], |
| 157 | [NO_OPENSSL=YesPlease])]) |
| 158 | AC_SUBST(NEEDS_SSL_WITH_CRYPTO) |
| 159 | AC_SUBST(NO_OPENSSL) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 160 | # |
Johan Herland | 8da1e21 | 2008-06-15 12:14:12 +0200 | [diff] [blame] | 161 | # Define NO_CURL if you do not have libcurl installed. git-http-pull and |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 162 | # git-http-push are not built, and you cannot use http:// and https:// |
| 163 | # transports. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 164 | AC_CHECK_LIB([curl], [curl_global_init], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 165 | [NO_CURL=], |
| 166 | [NO_CURL=YesPlease]) |
| 167 | AC_SUBST(NO_CURL) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 168 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 169 | # Define NO_EXPAT if you do not have expat installed. git-http-push is |
| 170 | # not built, and you cannot push using http:// and https:// transports. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 171 | AC_CHECK_LIB([expat], [XML_ParserCreate], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 172 | [NO_EXPAT=], |
| 173 | [NO_EXPAT=YesPlease]) |
| 174 | AC_SUBST(NO_EXPAT) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 175 | # |
Fredrik Kuivinen | e63ccb8 | 2007-02-18 09:44:42 +0100 | [diff] [blame] | 176 | # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin and |
| 177 | # some Solaris installations). |
Jakub Narebski | 6ff88de | 2006-09-07 13:48:08 +0200 | [diff] [blame] | 178 | # Define NO_ICONV if neither libc nor libiconv support iconv. |
Fredrik Kuivinen | e63ccb8 | 2007-02-18 09:44:42 +0100 | [diff] [blame] | 179 | AC_DEFUN([ICONVTEST_SRC], [ |
| 180 | #include <iconv.h> |
| 181 | |
| 182 | int main(void) |
| 183 | { |
| 184 | iconv_open("", ""); |
| 185 | return 0; |
| 186 | } |
| 187 | ]) |
| 188 | AC_MSG_CHECKING([for iconv in -lc]) |
| 189 | AC_LINK_IFELSE(ICONVTEST_SRC, |
| 190 | [AC_MSG_RESULT([yes]) |
| 191 | NEEDS_LIBICONV=], |
| 192 | [AC_MSG_RESULT([no]) |
| 193 | old_LIBS="$LIBS" |
| 194 | LIBS="$LIBS -liconv" |
| 195 | AC_MSG_CHECKING([for iconv in -liconv]) |
| 196 | AC_LINK_IFELSE(ICONVTEST_SRC, |
| 197 | [AC_MSG_RESULT([yes]) |
| 198 | NEEDS_LIBICONV=YesPlease], |
| 199 | [AC_MSG_RESULT([no]) |
| 200 | NO_ICONV=YesPlease]) |
| 201 | LIBS="$old_LIBS"]) |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 202 | AC_SUBST(NEEDS_LIBICONV) |
Jakub Narebski | baf1219 | 2006-09-07 13:48:49 +0200 | [diff] [blame] | 203 | AC_SUBST(NO_ICONV) |
Jakub Narebski | 825b045 | 2006-09-05 22:03:48 +0200 | [diff] [blame] | 204 | test -n "$NEEDS_LIBICONV" && LIBS="$LIBS -liconv" |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 205 | # |
David Symonds | 609a228 | 2007-11-07 14:24:28 +1100 | [diff] [blame] | 206 | # Define NO_DEFLATE_BOUND if deflateBound is missing from zlib. |
| 207 | AC_DEFUN([ZLIBTEST_SRC], [ |
| 208 | #include <zlib.h> |
| 209 | |
| 210 | int main(void) |
| 211 | { |
| 212 | deflateBound(0, 0); |
| 213 | return 0; |
| 214 | } |
| 215 | ]) |
| 216 | AC_MSG_CHECKING([for deflateBound in -lz]) |
| 217 | old_LIBS="$LIBS" |
| 218 | LIBS="$LIBS -lz" |
| 219 | AC_LINK_IFELSE(ZLIBTEST_SRC, |
| 220 | [AC_MSG_RESULT([yes])], |
| 221 | [AC_MSG_RESULT([no]) |
| 222 | NO_DEFLATE_BOUND=yes]) |
| 223 | LIBS="$old_LIBS" |
| 224 | AC_SUBST(NO_DEFLATE_BOUND) |
| 225 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 226 | # Define NEEDS_SOCKET if linking with libc is not enough (SunOS, |
| 227 | # Patrick Mauritz). |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 228 | AC_CHECK_LIB([c], [socket], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 229 | [NEEDS_SOCKET=], |
| 230 | [NEEDS_SOCKET=YesPlease]) |
| 231 | AC_SUBST(NEEDS_SOCKET) |
Dennis Stosberg | d1b9944 | 2006-08-15 11:01:27 +0200 | [diff] [blame] | 232 | test -n "$NEEDS_SOCKET" && LIBS="$LIBS -lsocket" |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 233 | |
| 234 | |
| 235 | ## Checks for header files. |
Jakub Narebski | 0f7a9c9 | 2007-12-07 02:27:20 +0100 | [diff] [blame] | 236 | AC_MSG_NOTICE([CHECKS for header files]) |
| 237 | # |
Jakub Narebski | 3cf3237 | 2008-01-25 12:19:41 +0100 | [diff] [blame] | 238 | # Define NO_SYS_SELECT_H if you don't have sys/select.h. |
| 239 | AC_CHECK_HEADER([sys/select.h], |
| 240 | [NO_SYS_SELECT_H=], |
| 241 | [NO_SYS_SELECT_H=UnfortunatelyYes]) |
| 242 | AC_SUBST(NO_SYS_SELECT_H) |
| 243 | # |
Jakub Narebski | 0f7a9c9 | 2007-12-07 02:27:20 +0100 | [diff] [blame] | 244 | # Define OLD_ICONV if your library has an old iconv(), where the second |
| 245 | # (input buffer pointer) parameter is declared with type (const char **). |
| 246 | AC_DEFUN([OLDICONVTEST_SRC], [[ |
| 247 | #include <iconv.h> |
| 248 | |
| 249 | extern size_t iconv(iconv_t cd, |
| 250 | char **inbuf, size_t *inbytesleft, |
| 251 | char **outbuf, size_t *outbytesleft); |
| 252 | |
| 253 | int main(void) |
| 254 | { |
| 255 | return 0; |
| 256 | } |
| 257 | ]]) |
| 258 | AC_MSG_CHECKING([for old iconv()]) |
| 259 | AC_COMPILE_IFELSE(OLDICONVTEST_SRC, |
| 260 | [AC_MSG_RESULT([no])], |
| 261 | [AC_MSG_RESULT([yes]) |
| 262 | OLD_ICONV=UnfortunatelyYes]) |
| 263 | AC_SUBST(OLD_ICONV) |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 264 | |
| 265 | |
| 266 | ## Checks for typedefs, structures, and compiler characteristics. |
Jakub Narebski | eb0f255 | 2006-07-08 23:07:10 +0200 | [diff] [blame] | 267 | AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics]) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 268 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 269 | # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 270 | AC_CHECK_MEMBER(struct dirent.d_ino, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 271 | [NO_D_INO_IN_DIRENT=], |
| 272 | [NO_D_INO_IN_DIRENT=YesPlease], |
Jakub Narebski | eb0f255 | 2006-07-08 23:07:10 +0200 | [diff] [blame] | 273 | [#include <dirent.h>]) |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 274 | AC_SUBST(NO_D_INO_IN_DIRENT) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 275 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 276 | # Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks |
| 277 | # d_type in struct dirent (latest Cygwin -- will be fixed soonish). |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 278 | AC_CHECK_MEMBER(struct dirent.d_type, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 279 | [NO_D_TYPE_IN_DIRENT=], |
| 280 | [NO_D_TYPE_IN_DIRENT=YesPlease], |
Jakub Narebski | eb0f255 | 2006-07-08 23:07:10 +0200 | [diff] [blame] | 281 | [#include <dirent.h>]) |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 282 | AC_SUBST(NO_D_TYPE_IN_DIRENT) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 283 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 284 | # Define NO_SOCKADDR_STORAGE if your platform does not have struct |
| 285 | # sockaddr_storage. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 286 | AC_CHECK_TYPE(struct sockaddr_storage, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 287 | [NO_SOCKADDR_STORAGE=], |
Dennis Stosberg | ab5573a | 2006-08-15 11:01:25 +0200 | [diff] [blame] | 288 | [NO_SOCKADDR_STORAGE=YesPlease],[ |
| 289 | #include <sys/types.h> |
| 290 | #include <sys/socket.h> |
| 291 | ]) |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 292 | AC_SUBST(NO_SOCKADDR_STORAGE) |
| 293 | # |
Junio C Hamano | 8c6ab35 | 2006-08-04 16:46:16 -0700 | [diff] [blame] | 294 | # Define NO_IPV6 if you lack IPv6 support and getaddrinfo(). |
| 295 | AC_CHECK_TYPE([struct addrinfo],[ |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 296 | AC_CHECK_FUNC([getaddrinfo], |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 297 | [NO_IPV6=], |
| 298 | [NO_IPV6=YesPlease]) |
| 299 | ],[NO_IPV6=YesPlease],[ |
Junio C Hamano | 8c6ab35 | 2006-08-04 16:46:16 -0700 | [diff] [blame] | 300 | #include <sys/types.h> |
| 301 | #include <sys/socket.h> |
| 302 | #include <netdb.h> |
| 303 | ]) |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 304 | AC_SUBST(NO_IPV6) |
Jakub Narebski | 656517b | 2006-08-04 17:55:57 +0200 | [diff] [blame] | 305 | # |
| 306 | # Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.) |
| 307 | # do not support the 'size specifiers' introduced by C99, namely ll, hh, |
| 308 | # j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). |
| 309 | # some C compilers supported these specifiers prior to C99 as an extension. |
Jakub Narebski | f685d07 | 2006-09-05 00:58:25 +0200 | [diff] [blame] | 310 | AC_CACHE_CHECK([whether formatted IO functions support C99 size specifiers], |
| 311 | [ac_cv_c_c99_format], |
Jakub Narebski | 656517b | 2006-08-04 17:55:57 +0200 | [diff] [blame] | 312 | [# Actually git uses only %z (%zu) in alloc.c, and %t (%td) in mktag.c |
| 313 | AC_RUN_IFELSE( |
| 314 | [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], |
| 315 | [[char buf[64]; |
| 316 | if (sprintf(buf, "%lld%hhd%jd%zd%td", (long long int)1, (char)2, (intmax_t)3, (size_t)4, (ptrdiff_t)5) != 5) |
Ralf Wildenhues | 3c307bf | 2007-11-06 21:12:45 +0100 | [diff] [blame] | 317 | return 1; |
Jakub Narebski | 656517b | 2006-08-04 17:55:57 +0200 | [diff] [blame] | 318 | else if (strcmp(buf, "12345")) |
Ralf Wildenhues | 3c307bf | 2007-11-06 21:12:45 +0100 | [diff] [blame] | 319 | return 2;]])], |
Jakub Narebski | 656517b | 2006-08-04 17:55:57 +0200 | [diff] [blame] | 320 | [ac_cv_c_c99_format=yes], |
| 321 | [ac_cv_c_c99_format=no]) |
| 322 | ]) |
| 323 | if test $ac_cv_c_c99_format = no; then |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 324 | NO_C99_FORMAT=YesPlease |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 325 | else |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 326 | NO_C99_FORMAT= |
Jakub Narebski | 656517b | 2006-08-04 17:55:57 +0200 | [diff] [blame] | 327 | fi |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 328 | AC_SUBST(NO_C99_FORMAT) |
Michal Rokos | c4582f9 | 2008-03-05 16:46:13 +0100 | [diff] [blame] | 329 | # |
Michal Rokos | 8ce1f24 | 2008-03-11 09:48:34 +0100 | [diff] [blame] | 330 | # Define FREAD_READS_DIRECTORIES if your are on a system which succeeds |
| 331 | # when attempting to read from an fopen'ed directory. |
| 332 | AC_CACHE_CHECK([whether system succeeds to read fopen'ed directory], |
| 333 | [ac_cv_fread_reads_directories], |
| 334 | [ |
| 335 | AC_RUN_IFELSE( |
| 336 | [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], |
| 337 | [[char c; |
| 338 | FILE *f = fopen(".", "r"); |
| 339 | return f && fread(&c, 1, 1, f)]])], |
| 340 | [ac_cv_fread_reads_directories=no], |
| 341 | [ac_cv_fread_reads_directories=yes]) |
| 342 | ]) |
| 343 | if test $ac_cv_fread_reads_directories = yes; then |
| 344 | FREAD_READS_DIRECTORIES=UnfortunatelyYes |
| 345 | else |
| 346 | FREAD_READS_DIRECTORIES= |
| 347 | fi |
| 348 | AC_SUBST(FREAD_READS_DIRECTORIES) |
| 349 | # |
Michal Rokos | c4582f9 | 2008-03-05 16:46:13 +0100 | [diff] [blame] | 350 | # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() |
| 351 | # or vsnprintf() return -1 instead of number of characters which would |
| 352 | # have been written to the final string if enough space had been available. |
| 353 | AC_CACHE_CHECK([whether snprintf() and/or vsnprintf() return bogus value], |
| 354 | [ac_cv_snprintf_returns_bogus], |
| 355 | [ |
| 356 | AC_RUN_IFELSE( |
| 357 | [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT |
| 358 | #include "stdarg.h" |
| 359 | |
| 360 | int test_vsnprintf(char *str, size_t maxsize, const char *format, ...) |
| 361 | { |
| 362 | int ret; |
| 363 | va_list ap; |
| 364 | va_start(ap, format); |
| 365 | ret = vsnprintf(str, maxsize, format, ap); |
| 366 | va_end(ap); |
| 367 | return ret; |
| 368 | }], |
| 369 | [[char buf[6]; |
| 370 | if (test_vsnprintf(buf, 3, "%s", "12345") != 5 |
| 371 | || strcmp(buf, "12")) return 1; |
| 372 | if (snprintf(buf, 3, "%s", "12345") != 5 |
| 373 | || strcmp(buf, "12")) return 1]])], |
| 374 | [ac_cv_snprintf_returns_bogus=no], |
| 375 | [ac_cv_snprintf_returns_bogus=yes]) |
| 376 | ]) |
| 377 | if test $ac_cv_snprintf_returns_bogus = yes; then |
| 378 | SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes |
| 379 | else |
| 380 | SNPRINTF_RETURNS_BOGUS= |
| 381 | fi |
| 382 | AC_SUBST(SNPRINTF_RETURNS_BOGUS) |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 383 | |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 384 | |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 385 | ## Checks for library functions. |
Jakub Narebski | 1bbbadb | 2006-07-08 23:07:11 +0200 | [diff] [blame] | 386 | ## (in default C library and libraries checked by AC_CHECK_LIB) |
| 387 | AC_MSG_NOTICE([CHECKS for library functions]) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 388 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 389 | # Define NO_STRCASESTR if you don't have strcasestr. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 390 | AC_CHECK_FUNC(strcasestr, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 391 | [NO_STRCASESTR=], |
| 392 | [NO_STRCASESTR=YesPlease]) |
| 393 | AC_SUBST(NO_STRCASESTR) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 394 | # |
Jakub Narebski | 2439755 | 2007-11-19 19:47:05 +0100 | [diff] [blame] | 395 | # Define NO_MEMMEM if you don't have memmem. |
| 396 | AC_CHECK_FUNC(memmem, |
| 397 | [NO_MEMMEM=], |
| 398 | [NO_MEMMEM=YesPlease]) |
| 399 | AC_SUBST(NO_MEMMEM) |
| 400 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 401 | # Define NO_STRLCPY if you don't have strlcpy. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 402 | AC_CHECK_FUNC(strlcpy, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 403 | [NO_STRLCPY=], |
| 404 | [NO_STRLCPY=YesPlease]) |
| 405 | AC_SUBST(NO_STRLCPY) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 406 | # |
Jakub Narebski | 2439755 | 2007-11-19 19:47:05 +0100 | [diff] [blame] | 407 | # Define NO_STRTOUMAX if you don't have strtoumax in the C library. |
| 408 | AC_CHECK_FUNC(strtoumax, |
| 409 | [NO_STRTOUMAX=], |
| 410 | [NO_STRTOUMAX=YesPlease]) |
| 411 | AC_SUBST(NO_STRTOUMAX) |
| 412 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 413 | # Define NO_SETENV if you don't have setenv in the C library. |
Jakub Narebski | d5c31a1 | 2006-08-04 23:43:59 +0200 | [diff] [blame] | 414 | AC_CHECK_FUNC(setenv, |
Jakub Narebski | 424adc5 | 2006-08-08 18:39:06 +0200 | [diff] [blame] | 415 | [NO_SETENV=], |
| 416 | [NO_SETENV=YesPlease]) |
| 417 | AC_SUBST(NO_SETENV) |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 418 | # |
Jakub Narebski | bfa8fcc | 2008-01-18 02:03:51 +0100 | [diff] [blame] | 419 | # Define NO_UNSETENV if you don't have unsetenv in the C library. |
| 420 | AC_CHECK_FUNC(unsetenv, |
| 421 | [NO_UNSETENV=], |
| 422 | [NO_UNSETENV=YesPlease]) |
| 423 | AC_SUBST(NO_UNSETENV) |
| 424 | # |
Jakub Narebski | 2439755 | 2007-11-19 19:47:05 +0100 | [diff] [blame] | 425 | # Define NO_MKDTEMP if you don't have mkdtemp in the C library. |
| 426 | AC_CHECK_FUNC(mkdtemp, |
| 427 | [NO_MKDTEMP=], |
| 428 | [NO_MKDTEMP=YesPlease]) |
| 429 | AC_SUBST(NO_MKDTEMP) |
| 430 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 431 | # Define NO_MMAP if you want to avoid mmap. |
| 432 | # |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 433 | # Define NO_ICONV if your libc does not properly support iconv. |
| 434 | |
| 435 | |
| 436 | ## Other checks. |
| 437 | # Define USE_PIC if you need the main git objects to be built with -fPIC |
| 438 | # in order to build and link perl/Git.so. x86-64 seems to need this. |
| 439 | # |
| 440 | # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link. |
| 441 | # Enable it on Windows. By default, symrefs are still used. |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 442 | |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 443 | ## Site configuration (override autodetection) |
| 444 | ## --with-PACKAGE[=ARG] and --without-PACKAGE |
| 445 | AC_MSG_NOTICE([CHECKS for site configuration]) |
| 446 | # |
| 447 | # Define NO_SVN_TESTS if you want to skip time-consuming SVN interoperability |
| 448 | # tests. These tests take up a significant amount of the total test time |
| 449 | # but are not needed unless you plan to talk to SVN repos. |
| 450 | # |
| 451 | # Define MOZILLA_SHA1 environment variable when running make to make use of |
| 452 | # a bundled SHA1 routine coming from Mozilla. It is GPL'd and should be fast |
| 453 | # on non-x86 architectures (e.g. PowerPC), while the OpenSSL version (default |
| 454 | # choice) has very fast version optimized for i586. |
| 455 | # |
| 456 | # Define PPC_SHA1 environment variable when running make to make use of |
| 457 | # a bundled SHA1 routine optimized for PowerPC. |
| 458 | # |
| 459 | # Define ARM_SHA1 environment variable when running make to make use of |
| 460 | # a bundled SHA1 routine optimized for ARM. |
| 461 | # |
| 462 | # Define NO_OPENSSL environment variable if you do not have OpenSSL. |
| 463 | # This also implies MOZILLA_SHA1. |
| 464 | # |
| 465 | # Define OPENSSLDIR=/foo/bar if your openssl header and library files are in |
| 466 | # /foo/bar/include and /foo/bar/lib directories. |
| 467 | AC_ARG_WITH(openssl, |
| 468 | AS_HELP_STRING([--with-openssl],[use OpenSSL library (default is YES)]) |
| 469 | AS_HELP_STRING([], [ARG can be prefix for openssl library and headers]),\ |
| 470 | GIT_PARSE_WITH(openssl)) |
| 471 | # |
| 472 | # Define NO_CURL if you do not have curl installed. git-http-pull and |
| 473 | # git-http-push are not built, and you cannot use http:// and https:// |
| 474 | # transports. |
| 475 | # |
| 476 | # Define CURLDIR=/foo/bar if your curl header and library files are in |
| 477 | # /foo/bar/include and /foo/bar/lib directories. |
| 478 | AC_ARG_WITH(curl, |
| 479 | AS_HELP_STRING([--with-curl],[support http(s):// transports (default is YES)]) |
| 480 | AS_HELP_STRING([], [ARG can be also prefix for curl library and headers]), |
| 481 | GIT_PARSE_WITH(curl)) |
| 482 | # |
| 483 | # Define NO_EXPAT if you do not have expat installed. git-http-push is |
| 484 | # not built, and you cannot push using http:// and https:// transports. |
| 485 | # |
| 486 | # Define EXPATDIR=/foo/bar if your expat header and library files are in |
| 487 | # /foo/bar/include and /foo/bar/lib directories. |
| 488 | AC_ARG_WITH(expat, |
| 489 | AS_HELP_STRING([--with-expat], |
| 490 | [support git-push using http:// and https:// transports via WebDAV (default is YES)]) |
| 491 | AS_HELP_STRING([], [ARG can be also prefix for expat library and headers]), |
| 492 | GIT_PARSE_WITH(expat)) |
| 493 | # |
| 494 | # Define NO_FINK if you are building on Darwin/Mac OS X, have Fink |
| 495 | # installed in /sw, but don't want GIT to link against any libraries |
| 496 | # installed there. If defined you may specify your own (or Fink's) |
| 497 | # include directories and library directories by defining CFLAGS |
| 498 | # and LDFLAGS appropriately. |
| 499 | # |
| 500 | # Define NO_DARWIN_PORTS if you are building on Darwin/Mac OS X, |
| 501 | # have DarwinPorts installed in /opt/local, but don't want GIT to |
| 502 | # link against any libraries installed there. If defined you may |
| 503 | # specify your own (or DarwinPort's) include directories and |
| 504 | # library directories by defining CFLAGS and LDFLAGS appropriately. |
| 505 | # |
| 506 | # Define NO_MMAP if you want to avoid mmap. |
Jakub Narebski | baf1219 | 2006-09-07 13:48:49 +0200 | [diff] [blame] | 507 | # |
| 508 | # Define NO_ICONV if your libc does not properly support iconv. |
| 509 | AC_ARG_WITH(iconv, |
| 510 | AS_HELP_STRING([--without-iconv], |
| 511 | [if your architecture doesn't properly support iconv]) |
| 512 | AS_HELP_STRING([--with-iconv=PATH], |
| 513 | [PATH is prefix for libiconv library and headers]) |
| 514 | AS_HELP_STRING([], |
| 515 | [used only if you need linking with libiconv]), |
| 516 | GIT_PARSE_WITH(iconv)) |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 517 | |
| 518 | ## --enable-FEATURE[=ARG] and --disable-FEATURE |
| 519 | # |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 520 | # Define USE_NSEC below if you want git to care about sub-second file mtimes |
| 521 | # and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and |
| 522 | # it will BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely |
| 523 | # randomly break unless your underlying filesystem supports those sub-second |
| 524 | # times (my ext3 doesn't). |
| 525 | # |
| 526 | # Define USE_STDEV below if you want git to care about the underlying device |
Johannes Schindelin | 10455d2 | 2007-11-30 11:35:23 +0000 | [diff] [blame] | 527 | # change being considered an inode change from the update-index perspective. |
Jakub Narebski | a20b4d8 | 2006-08-09 02:15:10 +0200 | [diff] [blame] | 528 | |
| 529 | |
Jakub Narebski | 633b423 | 2006-07-08 23:07:08 +0200 | [diff] [blame] | 530 | ## Output files |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 531 | AC_CONFIG_FILES(["${config_file}":"${config_in}":"${config_append}"]) |
Jakub Narebski | 5566771 | 2006-07-03 01:56:48 +0200 | [diff] [blame] | 532 | AC_OUTPUT |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 533 | |
Jakub Narebski | f671957 | 2006-07-08 23:07:14 +0200 | [diff] [blame] | 534 | |
Jakub Narebski | d3a6db9 | 2006-07-08 23:07:09 +0200 | [diff] [blame] | 535 | ## Cleanup |
| 536 | rm -f "${config_append}" |