git

Форк
0
/
configure.ac 
1295 строк · 37.4 Кб
1
#                                               -*- Autoconf -*-
2
# Process this file with autoconf to produce a configure script.
3

4
## Definitions of private macros.
5

6
# GIT_CONF_SUBST(VAL, VAR)
7
# ------------------------
8
# Cause the line "VAR=VAL" to be eventually appended to ${config_file}.
9
AC_DEFUN([GIT_CONF_SUBST],
10
[AC_REQUIRE([GIT_CONF_SUBST_INIT])
11
config_appended_defs="$config_appended_defs${newline}dnl
12
$1=m4_if([$#],[1],[${$1}],[$2])"])
13

14
# GIT_CONF_SUBST_INIT
15
# -------------------
16
# Prepare shell variables and autoconf machine required by later calls
17
# to GIT_CONF_SUBST.
18
AC_DEFUN([GIT_CONF_SUBST_INIT],
19
    [config_appended_defs=; newline='
20
'
21
    AC_CONFIG_COMMANDS([$config_file],
22
                       [echo "$config_appended_defs" >> "$config_file"],
23
                       [config_file=$config_file
24
                        config_appended_defs="$config_appended_defs"])])
25

26
# GIT_ARG_SET_PATH(PROGRAM)
27
# -------------------------
28
# Provide --with-PROGRAM=PATH option to set PATH to PROGRAM
29
# Optional second argument allows setting NO_PROGRAM=YesPlease if
30
# --without-PROGRAM version used.
31
AC_DEFUN([GIT_ARG_SET_PATH],
32
    [AC_ARG_WITH([$1],
33
        [AS_HELP_STRING([--with-$1=PATH],
34
                        [provide PATH to $1])],
35
        [GIT_CONF_APPEND_PATH([$1], [$2])],
36
        [])])
37

38
# GIT_CONF_APPEND_PATH(PROGRAM)
39
# -----------------------------
40
# Parse --with-PROGRAM=PATH option to set PROGRAM_PATH=PATH
41
# Used by GIT_ARG_SET_PATH(PROGRAM)
42
# Optional second argument allows setting NO_PROGRAM=YesPlease if
43
# --without-PROGRAM is used.
44
AC_DEFUN([GIT_CONF_APPEND_PATH],
45
    [m4_pushdef([GIT_UC_PROGRAM], m4_toupper([$1]))dnl
46
    if test "$withval" = "no"; then
47
	if test -n "$2"; then
48
		GIT_UC_PROGRAM[]_PATH=$withval
49
		AC_MSG_NOTICE([Disabling use of GIT_UC_PROGRAM])
50
		GIT_CONF_SUBST([NO_]GIT_UC_PROGRAM, [YesPlease])
51
		GIT_CONF_SUBST(GIT_UC_PROGRAM[]_PATH, [])
52
	else
53
		AC_MSG_ERROR([You cannot use git without $1])
54
	fi
55
    else
56
	if test "$withval" = "yes"; then
57
		AC_MSG_WARN([You should provide path for --with-$1=PATH])
58
	else
59
		GIT_UC_PROGRAM[]_PATH=$withval
60
		AC_MSG_NOTICE([Setting GIT_UC_PROGRAM[]_PATH to $withval])
61
		GIT_CONF_SUBST(GIT_UC_PROGRAM[]_PATH, [$withval])
62
	fi
63
    fi
64
    m4_popdef([GIT_UC_PROGRAM])])
65

66
# GIT_PARSE_WITH(PACKAGE)
67
# -----------------------
68
# For use in AC_ARG_WITH action-if-found, for packages default ON.
69
# * Set NO_PACKAGE=YesPlease for --without-PACKAGE
70
# * Set PACKAGEDIR=PATH for --with-PACKAGE=PATH
71
# * Unset NO_PACKAGE for --with-PACKAGE without ARG
72
AC_DEFUN([GIT_PARSE_WITH],
73
    [m4_pushdef([GIT_UC_PACKAGE], m4_toupper([$1]))dnl
74
    if test "$withval" = "no"; then
75
	NO_[]GIT_UC_PACKAGE=YesPlease
76
    elif test "$withval" = "yes"; then
77
	NO_[]GIT_UC_PACKAGE=
78
    else
79
	NO_[]GIT_UC_PACKAGE=
80
	GIT_UC_PACKAGE[]DIR=$withval
81
	AC_MSG_NOTICE([Setting GIT_UC_PACKAGE[]DIR to $withval])
82
	GIT_CONF_SUBST(GIT_UC_PACKAGE[DIR], [$withval])
83
    fi
84
    m4_popdef([GIT_UC_PACKAGE])])
85

86
# GIT_PARSE_WITH_SET_MAKE_VAR(WITHNAME, VAR, HELP_TEXT)
87
# -----------------------------------------------------
88
# Set VAR to the value specified by --with-WITHNAME.
89
# No verification of arguments is performed, but warnings are issued
90
# if either 'yes' or 'no' is specified.
91
# HELP_TEXT is presented when --help is called.
92
# This is a direct way to allow setting variables in the Makefile.
93
AC_DEFUN([GIT_PARSE_WITH_SET_MAKE_VAR],
94
[AC_ARG_WITH([$1],
95
 [AS_HELP_STRING([--with-$1=VALUE], $3)],
96
 if test -n "$withval"; then
97
  if test "$withval" = "yes" || test "$withval" = "no"; then
98
    AC_MSG_WARN([You likely do not want either 'yes' or 'no' as]
99
		     [a value for $1 ($2).  Maybe you do...?])
100
  fi
101
  AC_MSG_NOTICE([Setting $2 to $withval])
102
  GIT_CONF_SUBST([$2], [$withval])
103
 fi)])# GIT_PARSE_WITH_SET_MAKE_VAR
104

105
#
106
# GIT_CHECK_FUNC(FUNCTION, IFTRUE, IFFALSE)
107
# -----------------------------------------
108
# Similar to AC_CHECK_FUNC, but on systems that do not generate
109
# warnings for missing prototypes (e.g. FreeBSD when compiling without
110
# -Wall), it does not work.  By looking for function definition in
111
# libraries, this problem can be worked around.
112
AC_DEFUN([GIT_CHECK_FUNC],[AC_CHECK_FUNC([$1],[
113
  AC_SEARCH_LIBS([$1],,
114
  [$2],[$3])
115
],[$3])])
116

117
#
118
# GIT_STASH_FLAGS(BASEPATH_VAR)
119
# -----------------------------
120
# Allow for easy stashing of LDFLAGS and CPPFLAGS before running
121
# tests that may want to take user settings into account.
122
AC_DEFUN([GIT_STASH_FLAGS],[
123
if test -n "$1"; then
124
   old_CPPFLAGS="$CPPFLAGS"
125
   old_LDFLAGS="$LDFLAGS"
126
   CPPFLAGS="-I$1/include $CPPFLAGS"
127
   LDFLAGS="-L$1/$lib $LDFLAGS"
128
fi
129
])
130

131
dnl
132
dnl GIT_UNSTASH_FLAGS(BASEPATH_VAR)
133
dnl -----------------------------
134
dnl Restore the stashed *FLAGS values.
135
AC_DEFUN([GIT_UNSTASH_FLAGS],[
136
if test -n "$1"; then
137
   CPPFLAGS="$old_CPPFLAGS"
138
   LDFLAGS="$old_LDFLAGS"
139
fi
140
])
141

142
## Configure body starts here.
143

144
AC_PREREQ(2.59)
145
AC_INIT([git], [@@GIT_VERSION@@], [git@vger.kernel.org])
146

147
AC_CONFIG_SRCDIR([git.c])
148

149
config_file=config.mak.autogen
150
config_in=config.mak.in
151

152
GIT_CONF_SUBST([AUTOCONFIGURED], [YesPlease])
153

154
# Directories holding "saner" versions of common or POSIX binaries.
155
AC_ARG_WITH([sane-tool-path],
156
  [AS_HELP_STRING(
157
    [--with-sane-tool-path=DIR-1[[:DIR-2...:DIR-n]]],
158
    [Directories to prepend to PATH in build system and generated scripts])],
159
  [if test "$withval" = "no"; then
160
    withval=''
161
  else
162
    AC_MSG_NOTICE([Setting SANE_TOOL_PATH to '$withval'])
163
  fi
164
  GIT_CONF_SUBST([SANE_TOOL_PATH], [$withval])],
165
  [# If the "--with-sane-tool-path" option was not given, don't touch
166
   # SANE_TOOL_PATH here, but let defaults in Makefile take care of it.
167
   # This should minimize spurious differences in the behaviour of the
168
   # Git build system when configure is used w.r.t. when it is not.
169
   :])
170

171
## Site configuration related to programs (before tests)
172
## --with-PACKAGE[=ARG] and --without-PACKAGE
173
#
174
# Set lib to alternative name of lib directory (e.g. lib64)
175
AC_ARG_WITH([lib],
176
 [AS_HELP_STRING([--with-lib=ARG],
177
                 [ARG specifies alternative name for lib directory])],
178
 [if test "$withval" = "no" || test "$withval" = "yes"; then
179
	AC_MSG_WARN([You should provide name for --with-lib=ARG])
180
  else
181
	lib=$withval
182
	AC_MSG_NOTICE([Setting lib to '$lib'])
183
	GIT_CONF_SUBST([lib])
184
  fi])
185

186
if test -z "$lib"; then
187
   AC_MSG_NOTICE([Setting lib to 'lib' (the default)])
188
   lib=lib
189
fi
190

191
AC_ARG_ENABLE([pthreads],
192
 [AS_HELP_STRING([--enable-pthreads=FLAGS],
193
  [FLAGS is the value to pass to the compiler to enable POSIX Threads.]
194
  [The default if FLAGS is not specified is to try first -pthread]
195
  [and then -lpthread.]
196
  [--disable-pthreads will disable threading.])],
197
[
198
if test "x$enableval" = "xyes"; then
199
   AC_MSG_NOTICE([Will try -pthread then -lpthread to enable POSIX Threads])
200
elif test "x$enableval" != "xno"; then
201
   PTHREAD_CFLAGS=$enableval
202
   AC_MSG_NOTICE([Setting '$PTHREAD_CFLAGS' as the FLAGS to enable POSIX Threads])
203
else
204
   AC_MSG_NOTICE([POSIX Threads will be disabled.])
205
   NO_PTHREADS=YesPlease
206
   USER_NOPTHREAD=1
207
fi],
208
[
209
   AC_MSG_NOTICE([Will try -pthread then -lpthread to enable POSIX Threads.])
210
])
211

212
# Define option to enable JavaScript minification
213
AC_ARG_ENABLE([jsmin],
214
[AS_HELP_STRING([--enable-jsmin=PATH],
215
  [PATH is the name of a JavaScript minifier or the absolute path to one.])],
216
[
217
  JSMIN=$enableval;
218
  AC_MSG_NOTICE([Setting JSMIN to '$JSMIN' to enable JavaScript minifying])
219
  GIT_CONF_SUBST([JSMIN])
220
])
221

222
# Define option to enable CSS minification
223
AC_ARG_ENABLE([cssmin],
224
[AS_HELP_STRING([--enable-cssmin=PATH],
225
  [PATH is the name of a CSS minifier or the absolute path to one.])],
226
[
227
  CSSMIN=$enableval;
228
  AC_MSG_NOTICE([Setting CSSMIN to '$CSSMIN' to enable CSS minifying])
229
  GIT_CONF_SUBST([CSSMIN])
230
])
231

232
## Site configuration (override autodetection)
233
## --with-PACKAGE[=ARG] and --without-PACKAGE
234
AC_MSG_NOTICE([CHECKS for site configuration])
235
#
236
# Define NO_SVN_TESTS if you want to skip time-consuming SVN interoperability
237
# tests.  These tests take up a significant amount of the total test time
238
# but are not needed unless you plan to talk to SVN repos.
239
#
240
# Define NO_OPENSSL environment variable if you do not have OpenSSL.
241
#
242
# Define OPENSSLDIR=/foo/bar if your openssl header and library files are in
243
# /foo/bar/include and /foo/bar/lib directories.
244
AC_ARG_WITH(openssl,
245
AS_HELP_STRING([--with-openssl],[use OpenSSL library (default is YES)])
246
AS_HELP_STRING([],              [ARG can be prefix for openssl library and headers]),
247
GIT_PARSE_WITH([openssl]))
248

249
# Define USE_LIBPCRE if you have and want to use libpcre. Various
250
# commands such as log and grep offer runtime options to use
251
# Perl-compatible regular expressions instead of standard or extended
252
# POSIX regular expressions. Only libpcre version 2 is supported.
253
#
254
# Define LIBPCREDIR=/foo/bar if your PCRE header and library files are in
255
# /foo/bar/include and /foo/bar/lib directories.
256
#
257

258
AC_ARG_WITH(libpcre1,
259
AS_HELP_STRING([--with-libpcre1],[DEPRECATED]),
260
    AC_MSG_ERROR([support for --with-libpcre1 has been removed. Use --with-libpcre2!])
261
    )
262

263
AC_ARG_WITH(libpcre,
264
AS_HELP_STRING([--with-libpcre],[synonym for --with-libpcre2]),
265
    if test "$withval" = "no"; then
266
	USE_LIBPCRE2=
267
    elif test "$withval" = "yes"; then
268
	USE_LIBPCRE2=YesPlease
269
    else
270
	USE_LIBPCRE2=YesPlease
271
	LIBPCREDIR=$withval
272
	AC_MSG_NOTICE([Setting LIBPCREDIR to $LIBPCREDIR])
273
        dnl USE_LIBPCRE2 can still be modified below, so don't substitute
274
        dnl it yet.
275
	GIT_CONF_SUBST([LIBPCREDIR])
276
    fi)
277

278
AC_ARG_WITH(libpcre2,
279
AS_HELP_STRING([--with-libpcre2],[support Perl-compatible regexes via libpcre2 (default is NO)])
280
AS_HELP_STRING([],           [ARG can be also prefix for libpcre library and headers]),
281
    if test -n "$USE_LIBPCRE2"; then
282
        AC_MSG_ERROR([Only supply one of --with-libpcre or its synonym --with-libpcre2!])
283
    fi
284

285
    if test "$withval" = "no"; then
286
	USE_LIBPCRE2=
287
    elif test "$withval" = "yes"; then
288
	USE_LIBPCRE2=YesPlease
289
    else
290
	USE_LIBPCRE2=YesPlease
291
	LIBPCREDIR=$withval
292
	AC_MSG_NOTICE([Setting LIBPCREDIR to $LIBPCREDIR])
293
        dnl USE_LIBPCRE2 can still be modified below, so don't substitute
294
        dnl it yet.
295
	GIT_CONF_SUBST([LIBPCREDIR])
296
    fi)
297
#
298
# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header.
299
AC_FUNC_ALLOCA
300
case $ac_cv_working_alloca_h in
301
    yes)    HAVE_ALLOCA_H=YesPlease;;
302
    *)      HAVE_ALLOCA_H='';;
303
esac
304
GIT_CONF_SUBST([HAVE_ALLOCA_H])
305
#
306
# Define NO_CURL if you do not have curl installed.  git-http-pull and
307
# git-http-push are not built, and you cannot use http:// and https://
308
# transports.
309
#
310
# Define CURLDIR=/foo/bar if your curl header and library files are in
311
# /foo/bar/include and /foo/bar/lib directories.
312
AC_ARG_WITH(curl,
313
AS_HELP_STRING([--with-curl],[support http(s):// transports (default is YES)])
314
AS_HELP_STRING([],           [ARG can be also prefix for curl library and headers]),
315
GIT_PARSE_WITH(curl))
316
#
317
# Define NO_EXPAT if you do not have expat installed.  git-http-push is
318
# not built, and you cannot push using http:// and https:// transports.
319
#
320
# Define EXPATDIR=/foo/bar if your expat header and library files are in
321
# /foo/bar/include and /foo/bar/lib directories.
322
AC_ARG_WITH(expat,
323
AS_HELP_STRING([--with-expat],
324
[support git-push using http:// and https:// transports via WebDAV (default is YES)])
325
AS_HELP_STRING([],            [ARG can be also prefix for expat library and headers]),
326
GIT_PARSE_WITH(expat))
327
#
328
# Define NO_FINK if you are building on Darwin/Mac OS X, have Fink
329
# installed in /sw, but don't want GIT to link against any libraries
330
# installed there.  If defined you may specify your own (or Fink's)
331
# include directories and library directories by defining CFLAGS
332
# and LDFLAGS appropriately.
333
#
334
# Define NO_DARWIN_PORTS if you are building on Darwin/Mac OS X,
335
# have DarwinPorts installed in /opt/local, but don't want GIT to
336
# link against any libraries installed there.  If defined you may
337
# specify your own (or DarwinPort's) include directories and
338
# library directories by defining CFLAGS and LDFLAGS appropriately.
339
#
340
# Define NO_MMAP if you want to avoid mmap.
341
#
342
# Define NO_ICONV if your libc does not properly support iconv.
343
AC_ARG_WITH(iconv,
344
AS_HELP_STRING([--without-iconv],
345
[if your architecture doesn't properly support iconv])
346
AS_HELP_STRING([--with-iconv=PATH],
347
[PATH is prefix for libiconv library and headers])
348
AS_HELP_STRING([],
349
[used only if you need linking with libiconv]),
350
GIT_PARSE_WITH(iconv))
351

352
## --enable-FEATURE[=ARG] and --disable-FEATURE
353
#
354
# Define USE_NSEC below if you want git to care about sub-second file mtimes
355
# and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and
356
# it will BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely
357
# randomly break unless your underlying filesystem supports those sub-second
358
# times (my ext3 doesn't).
359
#
360
# Define USE_STDEV below if you want git to care about the underlying device
361
# change being considered an inode change from the update-index perspective.
362

363
#
364
# Allow user to set ETC_GITCONFIG variable
365
GIT_PARSE_WITH_SET_MAKE_VAR(gitconfig, ETC_GITCONFIG,
366
			Use VALUE instead of /etc/gitconfig as the
367
			global git configuration file.
368
			If VALUE is not fully qualified it will be interpreted
369
			as a path relative to the computed prefix at runtime.)
370

371
#
372
# Allow user to set ETC_GITATTRIBUTES variable
373
GIT_PARSE_WITH_SET_MAKE_VAR(gitattributes, ETC_GITATTRIBUTES,
374
			Use VALUE instead of /etc/gitattributes as the
375
			global git attributes file.
376
			If VALUE is not fully qualified it will be interpreted
377
			as a path relative to the computed prefix at runtime.)
378

379
#
380
# Allow user to set the default pager
381
GIT_PARSE_WITH_SET_MAKE_VAR(pager, DEFAULT_PAGER,
382
			Use VALUE as the fall-back pager instead of 'less'.
383
			This is used by things like 'git log' when the user
384
			does not specify a pager to use through alternate
385
			methods. eg: /usr/bin/pager)
386
#
387
# Allow user to set the default editor
388
GIT_PARSE_WITH_SET_MAKE_VAR(editor, DEFAULT_EDITOR,
389
			Use VALUE as the fall-back editor instead of 'vi'.
390
			This is used by things like 'git commit' when the user
391
			does not specify a preferred editor through other
392
			methods. eg: /usr/bin/editor)
393

394
#
395
# Define SHELL_PATH to provide path to shell.
396
GIT_ARG_SET_PATH(shell)
397
#
398
# Define PERL_PATH to provide path to Perl.
399
GIT_ARG_SET_PATH(perl)
400
#
401
# Define PYTHON_PATH to provide path to Python.
402
GIT_ARG_SET_PATH(python, allow-without)
403
#
404
# Define ZLIB_PATH to provide path to zlib.
405
GIT_ARG_SET_PATH(zlib)
406
#
407
# Declare the with-tcltk/without-tcltk options.
408
AC_ARG_WITH(tcltk,
409
AS_HELP_STRING([--with-tcltk],[use Tcl/Tk GUI (default is YES)])
410
AS_HELP_STRING([],[ARG is the full path to the Tcl/Tk interpreter.])
411
AS_HELP_STRING([],[Bare --with-tcltk will make the GUI part only if])
412
AS_HELP_STRING([],[Tcl/Tk interpreter will be found in a system.]),
413
GIT_PARSE_WITH(tcltk))
414
#
415

416

417
## Checks for programs.
418
AC_MSG_NOTICE([CHECKS for programs])
419
#
420
AC_PROG_CC([cc gcc])
421
AC_C_INLINE
422
case $ac_cv_c_inline in
423
  inline | yes | no) INLINE='';;
424
  *)                 INLINE=$ac_cv_c_inline ;;
425
esac
426
GIT_CONF_SUBST([INLINE])
427

428
# which switch to pass runtime path to dynamic libraries to the linker
429
AC_CACHE_CHECK([if linker supports -R], git_cv_ld_dashr, [
430
   SAVE_LDFLAGS="${LDFLAGS}"
431
   LDFLAGS="${SAVE_LDFLAGS} -R /"
432
   AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [git_cv_ld_dashr=yes], [git_cv_ld_dashr=no])
433
   LDFLAGS="${SAVE_LDFLAGS}"
434
])
435
if test "$git_cv_ld_dashr" = "yes"; then
436
   CC_LD_DYNPATH=-R
437
else
438
   AC_CACHE_CHECK([if linker supports -Wl,-rpath,], git_cv_ld_wl_rpath, [
439
      SAVE_LDFLAGS="${LDFLAGS}"
440
      LDFLAGS="${SAVE_LDFLAGS} -Wl,-rpath,/"
441
      AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [git_cv_ld_wl_rpath=yes], [git_cv_ld_wl_rpath=no])
442
      LDFLAGS="${SAVE_LDFLAGS}"
443
   ])
444
   if test "$git_cv_ld_wl_rpath" = "yes"; then
445
      CC_LD_DYNPATH=-Wl,-rpath,
446
   else
447
      AC_CACHE_CHECK([if linker supports -rpath], git_cv_ld_rpath, [
448
         SAVE_LDFLAGS="${LDFLAGS}"
449
         LDFLAGS="${SAVE_LDFLAGS} -rpath /"
450
         AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [git_cv_ld_rpath=yes], [git_cv_ld_rpath=no])
451
         LDFLAGS="${SAVE_LDFLAGS}"
452
      ])
453
      if test "$git_cv_ld_rpath" = "yes"; then
454
         CC_LD_DYNPATH=-rpath
455
      else
456
         AC_CACHE_CHECK([if linker supports -Wl,+b,], git_cv_ld_wl_b, [
457
            SAVE_LDFLAGS="${LDFLAGS}"
458
            LDFLAGS="${SAVE_LDFLAGS} -Wl,+b,/"
459
            AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [git_cv_ld_wl_b=yes], [git_cv_ld_wl_b=no])
460
            LDFLAGS="${SAVE_LDFLAGS}"
461
         ])
462
         if test "$git_cv_ld_wl_b" = "yes"; then
463
            CC_LD_DYNPATH=-Wl,+b,
464
          else
465
             CC_LD_DYNPATH=
466
             AC_MSG_WARN([linker does not support runtime path to dynamic libraries])
467
          fi
468
      fi
469
   fi
470
fi
471
GIT_CONF_SUBST([CC_LD_DYNPATH])
472
#AC_PROG_INSTALL		# needs install-sh or install.sh in sources
473
AC_CHECK_TOOLS(AR, [gar ar], :)
474
AC_CHECK_PROGS(TAR, [gtar tar])
475
AC_CHECK_PROGS(DIFF, [gnudiff gdiff diff])
476
# TCLTK_PATH will be set to some value if we want Tcl/Tk
477
# or will be empty otherwise.
478
if test -n "$NO_TCLTK"; then
479
  TCLTK_PATH=
480
else
481
  if test "$with_tcltk" = ""; then
482
  # No Tcl/Tk switches given. Do not check for Tcl/Tk, use bare 'wish'.
483
    TCLTK_PATH=wish
484
  elif test "$with_tcltk" = "yes"; then
485
  # Tcl/Tk check requested.
486
    AC_CHECK_PROGS(TCLTK_PATH, [wish], )
487
  else
488
    AC_MSG_RESULT([Using Tcl/Tk interpreter $with_tcltk])
489
    TCLTK_PATH="$with_tcltk"
490
  fi
491
fi
492
GIT_CONF_SUBST([TCLTK_PATH])
493
AC_CHECK_PROGS(ASCIIDOC, [asciidoc])
494
if test -n "$ASCIIDOC"; then
495
	AC_MSG_CHECKING([for asciidoc version])
496
	asciidoc_version=`$ASCIIDOC --version 2>/dev/null`
497
	case "${asciidoc_version}" in
498
	asciidoc' '8*)
499
		AC_MSG_RESULT([${asciidoc_version}])
500
		;;
501
	*)
502
		AC_MSG_RESULT([${asciidoc_version} (unknown)])
503
		;;
504
	esac
505
fi
506

507
## Checks for libraries.
508
AC_MSG_NOTICE([CHECKS for libraries])
509
#
510
# Define NO_OPENSSL environment variable if you do not have OpenSSL.
511
# Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).
512

513
GIT_STASH_FLAGS($OPENSSLDIR)
514

515
AC_CHECK_LIB([crypto], [SHA1_Init],
516
[NEEDS_SSL_WITH_CRYPTO=],
517
[AC_CHECK_LIB([ssl], [SHA1_Init],
518
 [NEEDS_SSL_WITH_CRYPTO=YesPlease NO_OPENSSL=],
519
 [NEEDS_SSL_WITH_CRYPTO=          NO_OPENSSL=YesPlease])])
520

521
GIT_UNSTASH_FLAGS($OPENSSLDIR)
522

523
GIT_CONF_SUBST([NEEDS_SSL_WITH_CRYPTO])
524
GIT_CONF_SUBST([NO_OPENSSL])
525

526
#
527
# Handle the USE_LIBPCRE options potentially set above.
528
#
529

530
if test -n "$USE_LIBPCRE2"; then
531

532
GIT_STASH_FLAGS($LIBPCREDIR)
533

534
AC_CHECK_LIB([pcre2-8], [pcre2_config_8],
535
[USE_LIBPCRE2=YesPlease],
536
[USE_LIBPCRE2=])
537

538
GIT_UNSTASH_FLAGS($LIBPCREDIR)
539

540
GIT_CONF_SUBST([USE_LIBPCRE2])
541

542
fi
543

544
#
545
# Define NO_CURL if you do not have libcurl installed.  git-http-pull and
546
# git-http-push are not built, and you cannot use http:// and https://
547
# transports.
548

549
if test -z "$NO_CURL"; then
550

551
GIT_STASH_FLAGS($CURLDIR)
552

553
AC_CHECK_LIB([curl], [curl_global_init],
554
[NO_CURL=],
555
[NO_CURL=YesPlease])
556

557
GIT_UNSTASH_FLAGS($CURLDIR)
558

559
fi
560

561
GIT_CONF_SUBST([NO_CURL])
562

563
if test -z "$NO_CURL"; then
564

565
AC_CHECK_PROG([CURL_CONFIG], [curl-config],
566
[curl-config],
567
[no])
568

569
if test $CURL_CONFIG != no; then
570
    GIT_CONF_SUBST([CURL_CONFIG])
571

572
    if test -z "$CURL_CONFIG_OPTS"; then
573
        CURL_CONFIG_OPTS="--libs"
574
    fi
575

576
    CURL_LDFLAGS=$($CURL_CONFIG $CURL_CONFIG_OPTS)
577
    AC_MSG_NOTICE([Setting CURL_LDFLAGS to '$CURL_LDFLAGS'])
578
    GIT_CONF_SUBST([CURL_LDFLAGS], [$CURL_LDFLAGS])
579
fi
580

581
fi
582

583

584
#
585
# Define NO_EXPAT if you do not have expat installed.  git-http-push is
586
# not built, and you cannot push using http:// and https:// transports.
587

588
if test -z "$NO_EXPAT"; then
589

590
GIT_STASH_FLAGS($EXPATDIR)
591

592
AC_CHECK_LIB([expat], [XML_ParserCreate],
593
[NO_EXPAT=],
594
[NO_EXPAT=YesPlease])
595

596
GIT_UNSTASH_FLAGS($EXPATDIR)
597

598
fi
599

600
GIT_CONF_SUBST([NO_EXPAT])
601

602
#
603
# Define NEEDS_LIBICONV if linking with libc is not enough (Darwin and
604
# some Solaris installations).
605
# Define NO_ICONV if neither libc nor libiconv support iconv.
606

607
if test -z "$NO_ICONV"; then
608

609
GIT_STASH_FLAGS($ICONVDIR)
610

611
AC_DEFUN([ICONVTEST_SRC],
612
[AC_LANG_PROGRAM([#include <iconv.h>],
613
 [iconv_open("", "");])])
614

615
if test -n "$ICONVDIR"; then
616
   lib_order="-liconv -lc"
617
else
618
   lib_order="-lc -liconv"
619
fi
620

621
NO_ICONV=YesPlease
622

623
for l in $lib_order; do
624
    if test "$l" = "-liconv"; then
625
       NEEDS_LIBICONV=YesPlease
626
    else
627
       NEEDS_LIBICONV=
628
    fi
629

630
    old_LIBS="$LIBS"
631
    LIBS="$LIBS $l"
632
    AC_MSG_CHECKING([for iconv in $l])
633
    AC_LINK_IFELSE([ICONVTEST_SRC],
634
	[AC_MSG_RESULT([yes])
635
	NO_ICONV=
636
	break],
637
	[AC_MSG_RESULT([no])])
638
    LIBS="$old_LIBS"
639
done
640

641
#in case of break
642
LIBS="$old_LIBS"
643

644
GIT_UNSTASH_FLAGS($ICONVDIR)
645

646
GIT_CONF_SUBST([NEEDS_LIBICONV])
647

648
if test -n "$NO_ICONV"; then
649
    NEEDS_LIBICONV=
650
fi
651

652
fi
653

654
GIT_CONF_SUBST([NO_ICONV])
655

656
#
657
# Define NO_DEFLATE_BOUND if deflateBound is missing from zlib.
658

659
GIT_STASH_FLAGS($ZLIB_PATH)
660

661
AC_DEFUN([ZLIBTEST_SRC], [
662
AC_LANG_PROGRAM([#include <zlib.h>],
663
 [deflateBound(0, 0);])])
664
AC_MSG_CHECKING([for deflateBound in -lz])
665
old_LIBS="$LIBS"
666
LIBS="$LIBS -lz"
667
AC_LINK_IFELSE([ZLIBTEST_SRC],
668
	[AC_MSG_RESULT([yes])],
669
	[AC_MSG_RESULT([no])
670
	NO_DEFLATE_BOUND=yes])
671
LIBS="$old_LIBS"
672

673
GIT_UNSTASH_FLAGS($ZLIB_PATH)
674

675
GIT_CONF_SUBST([NO_DEFLATE_BOUND])
676

677
#
678
# Define NEEDS_SOCKET if linking with libc is not enough (SunOS,
679
# Patrick Mauritz).
680
AC_CHECK_LIB([c], [socket],
681
[NEEDS_SOCKET=],
682
[NEEDS_SOCKET=YesPlease])
683
GIT_CONF_SUBST([NEEDS_SOCKET])
684
test -n "$NEEDS_SOCKET" && LIBS="$LIBS -lsocket"
685

686
#
687
# The next few tests will define NEEDS_RESOLV if linking with
688
# libresolv provides some of the functions we would normally get
689
# from libc.
690
NEEDS_RESOLV=
691
#
692
# Define NO_INET_NTOP if linking with -lresolv is not enough.
693
# Solaris 2.7 in particular hos inet_ntop in -lresolv.
694
NO_INET_NTOP=
695
AC_CHECK_FUNC([inet_ntop],
696
    [],
697
    [AC_CHECK_LIB([resolv], [inet_ntop],
698
	[NEEDS_RESOLV=YesPlease],
699
	[NO_INET_NTOP=YesPlease])
700
])
701
GIT_CONF_SUBST([NO_INET_NTOP])
702
#
703
# Define NO_INET_PTON if linking with -lresolv is not enough.
704
# Solaris 2.7 in particular hos inet_pton in -lresolv.
705
NO_INET_PTON=
706
AC_CHECK_FUNC([inet_pton],
707
    [],
708
    [AC_CHECK_LIB([resolv], [inet_pton],
709
	[NEEDS_RESOLV=YesPlease],
710
	[NO_INET_PTON=YesPlease])
711
])
712
GIT_CONF_SUBST([NO_INET_PTON])
713
#
714
# Define NO_HSTRERROR if linking with -lresolv is not enough.
715
# Solaris 2.6 in particular has no hstrerror, even in -lresolv.
716
NO_HSTRERROR=
717
AC_CHECK_FUNC([hstrerror],
718
    [],
719
    [AC_CHECK_LIB([resolv], [hstrerror],
720
	[NEEDS_RESOLV=YesPlease],
721
	[NO_HSTRERROR=YesPlease])
722
])
723
GIT_CONF_SUBST([NO_HSTRERROR])
724

725
dnl This must go after all the possible places for its initialization,
726
dnl in the AC_CHECK_FUNC invocations above.
727
GIT_CONF_SUBST([NEEDS_RESOLV])
728
#
729
# If any of the above tests determined that -lresolv is needed at
730
# build-time, also set it here for remaining configure-time checks.
731
test -n "$NEEDS_RESOLV" && LIBS="$LIBS -lresolv"
732

733
AC_CHECK_LIB([c], [basename],
734
[NEEDS_LIBGEN=],
735
[NEEDS_LIBGEN=YesPlease])
736
GIT_CONF_SUBST([NEEDS_LIBGEN])
737
test -n "$NEEDS_LIBGEN" && LIBS="$LIBS -lgen"
738

739
AC_DEFUN([LIBINTL_SRC], [
740
AC_LANG_PROGRAM([[
741
#include <libintl.h>
742
]],[[
743
char *msg = gettext("test");
744
]])])
745

746
AC_MSG_CHECKING([if libc contains libintl])
747
AC_LINK_IFELSE([LIBINTL_SRC],
748
	[AC_MSG_RESULT([yes])
749
	LIBC_CONTAINS_LIBINTL=YesPlease],
750
	[AC_MSG_RESULT([no])
751
	LIBC_CONTAINS_LIBINTL=])
752
GIT_CONF_SUBST([LIBC_CONTAINS_LIBINTL])
753

754
#
755
# Define NO_GETTEXT if you don't want Git output to be translated.
756
# A translated Git requires GNU libintl or another gettext implementation
757
AC_CHECK_HEADER([libintl.h],
758
[NO_GETTEXT=],
759
[NO_GETTEXT=YesPlease])
760
GIT_CONF_SUBST([NO_GETTEXT])
761

762
if test -z "$NO_GETTEXT"; then
763
    test -n "$LIBC_CONTAINS_LIBINTL" || LIBS="$LIBS -lintl"
764
fi
765

766
## Checks for header files.
767
AC_MSG_NOTICE([CHECKS for header files])
768
#
769
# Define NO_SYS_SELECT_H if you don't have sys/select.h.
770
AC_CHECK_HEADER([sys/select.h],
771
[NO_SYS_SELECT_H=],
772
[NO_SYS_SELECT_H=UnfortunatelyYes])
773
GIT_CONF_SUBST([NO_SYS_SELECT_H])
774
#
775
# Define NO_POLL_H if you don't have poll.h
776
AC_CHECK_HEADER([poll.h],
777
[NO_POLL_H=],
778
[NO_POLL_H=UnfortunatelyYes])
779
GIT_CONF_SUBST([NO_POLL_H])
780
#
781
# Define NO_SYS_POLL_H if you don't have sys/poll.h
782
AC_CHECK_HEADER([sys/poll.h],
783
[NO_SYS_POLL_H=],
784
[NO_SYS_POLL_H=UnfortunatelyYes])
785
GIT_CONF_SUBST([NO_SYS_POLL_H])
786
#
787
# Define NO_INTTYPES_H if you don't have inttypes.h
788
AC_CHECK_HEADER([inttypes.h],
789
[NO_INTTYPES_H=],
790
[NO_INTTYPES_H=UnfortunatelyYes])
791
GIT_CONF_SUBST([NO_INTTYPES_H])
792
#
793
# Define OLD_ICONV if your library has an old iconv(), where the second
794
# (input buffer pointer) parameter is declared with type (const char **).
795
AC_DEFUN([OLDICONVTEST_SRC], [
796
AC_LANG_PROGRAM([[
797
#include <iconv.h>
798

799
extern size_t iconv(iconv_t cd,
800
		    char **inbuf, size_t *inbytesleft,
801
		    char **outbuf, size_t *outbytesleft);
802
]], [])])
803

804
GIT_STASH_FLAGS($ICONVDIR)
805

806
AC_MSG_CHECKING([for old iconv()])
807
AC_COMPILE_IFELSE([OLDICONVTEST_SRC],
808
	[AC_MSG_RESULT([no])],
809
	[AC_MSG_RESULT([yes])
810
	AC_DEFINE(HAVE_OLD_ICONV, 1)
811
	OLD_ICONV=UnfortunatelyYes])
812

813
GIT_UNSTASH_FLAGS($ICONVDIR)
814

815
GIT_CONF_SUBST([OLD_ICONV])
816

817
#
818
# Define ICONV_OMITS_BOM if you are on a system which
819
# iconv omits bom for utf-{16,32}
820
if test -z "$NO_ICONV"; then
821
AC_CACHE_CHECK([whether iconv omits bom for utf-16 and utf-32],
822
 [ac_cv_iconv_omits_bom],
823
[
824
old_LIBS="$LIBS"
825
if test -n "$NEEDS_LIBICONV"; then
826
	LIBS="$LIBS -liconv"
827
fi
828

829
AC_RUN_IFELSE(
830
	[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
831
	#include <iconv.h>
832
	#ifdef HAVE_OLD_ICONV
833
	typedef const char *iconv_ibp;
834
	#else
835
	typedef char *iconv_ibp;
836
	#endif
837
	],
838
	[[
839
	int v;
840
	iconv_t conv;
841
	char in[] = "a"; iconv_ibp pin = in;
842
	char out[20] = ""; char *pout = out;
843
	size_t isz = sizeof in;
844
	size_t osz = sizeof out;
845

846
	conv = iconv_open("UTF-16", "UTF-8");
847
	iconv(conv, &pin, &isz, &pout, &osz);
848
	iconv_close(conv);
849
	v = (unsigned char)(out[0]) + (unsigned char)(out[1]);
850
	return v != 0xfe + 0xff;
851
	]])],
852
	[ac_cv_iconv_omits_bom=no],
853
	[ac_cv_iconv_omits_bom=yes])
854

855
LIBS="$old_LIBS"
856
])
857
if test "x$ac_cv_iconv_omits_bom" = xyes; then
858
	ICONV_OMITS_BOM=Yes
859
else
860
	ICONV_OMITS_BOM=
861
fi
862
GIT_CONF_SUBST([ICONV_OMITS_BOM])
863
fi
864

865
## Checks for typedefs, structures, and compiler characteristics.
866
AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
867
#
868
TYPE_SOCKLEN_T
869
case $ac_cv_type_socklen_t in
870
  yes)	SOCKLEN_T='';;
871
  *)  	SOCKLEN_T=$git_cv_socklen_t_equiv;;
872
esac
873
GIT_CONF_SUBST([SOCKLEN_T])
874

875
#
876
# Define NO_STRUCT_ITIMERVAL if you don't have struct itimerval.
877
AC_CHECK_TYPES([struct itimerval],
878
[NO_STRUCT_ITIMERVAL=],
879
[NO_STRUCT_ITIMERVAL=UnfortunatelyYes],
880
[#include <sys/time.h>])
881
GIT_CONF_SUBST([NO_STRUCT_ITIMERVAL])
882
#
883
# Define USE_ST_TIMESPEC=YesPlease when stat.st_mtimespec.tv_nsec exists.
884
# Define NO_NSEC=YesPlease when neither stat.st_mtim.tv_nsec nor
885
# stat.st_mtimespec.tv_nsec exists.
886
AC_CHECK_MEMBER([struct stat.st_mtimespec.tv_nsec])
887
AC_CHECK_MEMBER([struct stat.st_mtim.tv_nsec])
888
if test x$ac_cv_member_struct_stat_st_mtimespec_tv_nsec = xyes; then
889
	USE_ST_TIMESPEC=YesPlease
890
	GIT_CONF_SUBST([USE_ST_TIMESPEC])
891
elif test x$ac_cv_member_struct_stat_st_mtim_tv_nsec != xyes; then
892
	NO_NSEC=YesPlease
893
	GIT_CONF_SUBST([NO_NSEC])
894
fi
895
#
896
# Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks
897
# d_type in struct dirent (latest Cygwin -- will be fixed soonish).
898
AC_CHECK_MEMBER(struct dirent.d_type,
899
[NO_D_TYPE_IN_DIRENT=],
900
[NO_D_TYPE_IN_DIRENT=YesPlease],
901
[#include <dirent.h>])
902
GIT_CONF_SUBST([NO_D_TYPE_IN_DIRENT])
903
#
904
# Define NO_GECOS_IN_PWENT if you don't have pw_gecos in struct passwd
905
# in the C library.
906
AC_CHECK_MEMBER(struct passwd.pw_gecos,
907
[NO_GECOS_IN_PWENT=],
908
[NO_GECOS_IN_PWENT=YesPlease],
909
[#include <pwd.h>])
910
GIT_CONF_SUBST([NO_GECOS_IN_PWENT])
911
#
912
# Define NO_SOCKADDR_STORAGE if your platform does not have struct
913
# sockaddr_storage.
914
AC_CHECK_TYPE(struct sockaddr_storage,
915
[NO_SOCKADDR_STORAGE=],
916
[NO_SOCKADDR_STORAGE=YesPlease],[
917
#include <sys/types.h>
918
#include <sys/socket.h>
919
])
920
GIT_CONF_SUBST([NO_SOCKADDR_STORAGE])
921
#
922
# Define NO_IPV6 if you lack IPv6 support and getaddrinfo().
923
AC_CHECK_TYPE([struct addrinfo],[
924
 GIT_CHECK_FUNC([getaddrinfo],
925
  [NO_IPV6=],
926
  [NO_IPV6=YesPlease])
927
],[NO_IPV6=YesPlease],[
928
#include <sys/types.h>
929
#include <sys/socket.h>
930
#include <netdb.h>
931
])
932
GIT_CONF_SUBST([NO_IPV6])
933
#
934
# Define NO_REGEX if your C library lacks regex support with REG_STARTEND
935
# feature.
936
AC_CACHE_CHECK([whether the platform regex supports REG_STARTEND],
937
 [ac_cv_c_regex_with_reg_startend], [
938
AC_EGREP_CPP(yippeeyeswehaveit,
939
	AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
940
#include <regex.h>
941
],
942
[#ifdef REG_STARTEND
943
yippeeyeswehaveit
944
#endif
945
]),
946
	[ac_cv_c_regex_with_reg_startend=yes],
947
	[ac_cv_c_regex_with_reg_startend=no])
948
])
949
if test $ac_cv_c_regex_with_reg_startend = yes; then
950
	NO_REGEX=
951
else
952
	NO_REGEX=YesPlease
953
fi
954
GIT_CONF_SUBST([NO_REGEX])
955
#
956
# Define FREAD_READS_DIRECTORIES if your are on a system which succeeds
957
# when attempting to read from an fopen'ed directory.
958
AC_CACHE_CHECK([whether system succeeds to read fopen'ed directory],
959
 [ac_cv_fread_reads_directories],
960
[
961
AC_RUN_IFELSE(
962
	[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
963
		[[
964
		FILE *f = fopen(".", "r");
965
		return f != NULL;]])],
966
	[ac_cv_fread_reads_directories=no],
967
	[ac_cv_fread_reads_directories=yes])
968
])
969
if test $ac_cv_fread_reads_directories = yes; then
970
	FREAD_READS_DIRECTORIES=UnfortunatelyYes
971
else
972
	FREAD_READS_DIRECTORIES=
973
fi
974
GIT_CONF_SUBST([FREAD_READS_DIRECTORIES])
975
#
976
# Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf()
977
# or vsnprintf() return -1 instead of number of characters which would
978
# have been written to the final string if enough space had been available.
979
AC_CACHE_CHECK([whether snprintf() and/or vsnprintf() return bogus value],
980
 [ac_cv_snprintf_returns_bogus],
981
[
982
AC_RUN_IFELSE(
983
	[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
984
		#include "stdarg.h"
985

986
		int test_vsnprintf(char *str, size_t maxsize, const char *format, ...)
987
		{
988
		  int ret;
989
		  va_list ap;
990
		  va_start(ap, format);
991
		  ret = vsnprintf(str, maxsize, format, ap);
992
		  va_end(ap);
993
		  return ret;
994
		}],
995
		[[char buf[6];
996
		  if (test_vsnprintf(buf, 3, "%s", "12345") != 5
997
		      || strcmp(buf, "12")) return 1;
998
		  if (snprintf(buf, 3, "%s", "12345") != 5
999
		      || strcmp(buf, "12")) return 1]])],
1000
	[ac_cv_snprintf_returns_bogus=no],
1001
	[ac_cv_snprintf_returns_bogus=yes])
1002
])
1003
if test $ac_cv_snprintf_returns_bogus = yes; then
1004
	SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes
1005
else
1006
	SNPRINTF_RETURNS_BOGUS=
1007
fi
1008
GIT_CONF_SUBST([SNPRINTF_RETURNS_BOGUS])
1009
#
1010
# Define NEEDS_MODE_TRANSLATION if your OS strays from the typical file type
1011
# bits in mode values.
1012
AC_CACHE_CHECK([whether the platform uses typical file type bits],
1013
 [ac_cv_sane_mode_bits], [
1014
AC_EGREP_CPP(yippeeyeswehaveit,
1015
	AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
1016
[#if S_IFMT == 0170000 && \
1017
	S_IFREG == 0100000 && S_IFDIR == 0040000 && S_IFLNK == 0120000 && \
1018
	S_IFBLK == 0060000 && S_IFCHR == 0020000 && \
1019
	S_IFIFO == 0010000 && S_IFSOCK == 0140000
1020
yippeeyeswehaveit
1021
#endif
1022
]),
1023
	[ac_cv_sane_mode_bits=yes],
1024
	[ac_cv_sane_mode_bits=no])
1025
])
1026
if test $ac_cv_sane_mode_bits = yes; then
1027
	NEEDS_MODE_TRANSLATION=
1028
else
1029
	NEEDS_MODE_TRANSLATION=UnfortunatelyYes
1030
fi
1031
GIT_CONF_SUBST([NEEDS_MODE_TRANSLATION])
1032

1033

1034
## Checks for library functions.
1035
## (in default C library and libraries checked by AC_CHECK_LIB)
1036
AC_MSG_NOTICE([CHECKS for library functions])
1037
#
1038
# Define NO_LIBGEN_H if you don't have libgen.h.
1039
AC_CHECK_HEADER([libgen.h],
1040
[NO_LIBGEN_H=],
1041
[NO_LIBGEN_H=YesPlease])
1042
GIT_CONF_SUBST([NO_LIBGEN_H])
1043
#
1044
# Define HAVE_PATHS_H if you have paths.h.
1045
AC_CHECK_HEADER([paths.h],
1046
[HAVE_PATHS_H=YesPlease],
1047
[HAVE_PATHS_H=])
1048
GIT_CONF_SUBST([HAVE_PATHS_H])
1049
#
1050
# Define HAVE_LIBCHARSET_H if have libcharset.h
1051
AC_CHECK_HEADER([libcharset.h],
1052
[HAVE_LIBCHARSET_H=YesPlease],
1053
[HAVE_LIBCHARSET_H=])
1054
GIT_CONF_SUBST([HAVE_LIBCHARSET_H])
1055
#
1056
# Define HAVE_STRINGS_H if you have strings.h
1057
AC_CHECK_HEADER([strings.h],
1058
[HAVE_STRINGS_H=YesPlease],
1059
[HAVE_STRINGS_H=])
1060
GIT_CONF_SUBST([HAVE_STRINGS_H])
1061
# Define CHARSET_LIB if libiconv does not export the locale_charset symbol
1062
# and libcharset does
1063
CHARSET_LIB=
1064
AC_CHECK_LIB([iconv], [locale_charset],
1065
       [CHARSET_LIB=-liconv],
1066
       [AC_CHECK_LIB([charset], [locale_charset],
1067
                     [CHARSET_LIB=-lcharset])])
1068
GIT_CONF_SUBST([CHARSET_LIB])
1069
#
1070
# Define HAVE_CLOCK_GETTIME=YesPlease if clock_gettime is available.
1071
GIT_CHECK_FUNC(clock_gettime,
1072
	[HAVE_CLOCK_GETTIME=YesPlease],
1073
	[HAVE_CLOCK_GETTIME=])
1074
GIT_CONF_SUBST([HAVE_CLOCK_GETTIME])
1075

1076
AC_DEFUN([CLOCK_MONOTONIC_SRC], [
1077
AC_LANG_PROGRAM([[
1078
#include <time.h>
1079
clockid_t id = CLOCK_MONOTONIC;
1080
]])])
1081

1082
#
1083
# Define HAVE_CLOCK_MONOTONIC=YesPlease if CLOCK_MONOTONIC is available.
1084
AC_MSG_CHECKING([for CLOCK_MONOTONIC])
1085
AC_COMPILE_IFELSE([CLOCK_MONOTONIC_SRC],
1086
	[AC_MSG_RESULT([yes])
1087
	HAVE_CLOCK_MONOTONIC=YesPlease],
1088
	[AC_MSG_RESULT([no])
1089
	HAVE_CLOCK_MONOTONIC=])
1090
GIT_CONF_SUBST([HAVE_CLOCK_MONOTONIC])
1091

1092
#
1093
# Define HAVE_SYNC_FILE_RANGE=YesPlease if sync_file_range is available.
1094
GIT_CHECK_FUNC(sync_file_range,
1095
	[HAVE_SYNC_FILE_RANGE=YesPlease],
1096
	[HAVE_SYNC_FILE_RANGE=])
1097
GIT_CONF_SUBST([HAVE_SYNC_FILE_RANGE])
1098

1099
#
1100
# Define NO_SETITIMER if you don't have setitimer.
1101
GIT_CHECK_FUNC(setitimer,
1102
[NO_SETITIMER=],
1103
[NO_SETITIMER=YesPlease])
1104
GIT_CONF_SUBST([NO_SETITIMER])
1105
#
1106
# Define NO_STRCASESTR if you don't have strcasestr.
1107
GIT_CHECK_FUNC(strcasestr,
1108
[NO_STRCASESTR=],
1109
[NO_STRCASESTR=YesPlease])
1110
GIT_CONF_SUBST([NO_STRCASESTR])
1111
#
1112
# Define NO_MEMMEM if you don't have memmem.
1113
GIT_CHECK_FUNC(memmem,
1114
[NO_MEMMEM=],
1115
[NO_MEMMEM=YesPlease])
1116
GIT_CONF_SUBST([NO_MEMMEM])
1117
#
1118
# Define NO_STRLCPY if you don't have strlcpy.
1119
GIT_CHECK_FUNC(strlcpy,
1120
[NO_STRLCPY=],
1121
[NO_STRLCPY=YesPlease])
1122
GIT_CONF_SUBST([NO_STRLCPY])
1123
#
1124
# Define NO_UINTMAX_T if your platform does not have uintmax_t
1125
AC_CHECK_TYPE(uintmax_t,
1126
[NO_UINTMAX_T=],
1127
[NO_UINTMAX_T=YesPlease],[
1128
#include <inttypes.h>
1129
])
1130
GIT_CONF_SUBST([NO_UINTMAX_T])
1131
#
1132
# Define NO_STRTOUMAX if you don't have strtoumax in the C library.
1133
GIT_CHECK_FUNC(strtoumax,
1134
[NO_STRTOUMAX=],
1135
[NO_STRTOUMAX=YesPlease])
1136
GIT_CONF_SUBST([NO_STRTOUMAX])
1137
#
1138
# Define NO_SETENV if you don't have setenv in the C library.
1139
GIT_CHECK_FUNC(setenv,
1140
[NO_SETENV=],
1141
[NO_SETENV=YesPlease])
1142
GIT_CONF_SUBST([NO_SETENV])
1143
#
1144
# Define NO_UNSETENV if you don't have unsetenv in the C library.
1145
GIT_CHECK_FUNC(unsetenv,
1146
[NO_UNSETENV=],
1147
[NO_UNSETENV=YesPlease])
1148
GIT_CONF_SUBST([NO_UNSETENV])
1149
#
1150
# Define NO_MKDTEMP if you don't have mkdtemp in the C library.
1151
GIT_CHECK_FUNC(mkdtemp,
1152
[NO_MKDTEMP=],
1153
[NO_MKDTEMP=YesPlease])
1154
GIT_CONF_SUBST([NO_MKDTEMP])
1155
#
1156
# Define NO_INITGROUPS if you don't have initgroups in the C library.
1157
GIT_CHECK_FUNC(initgroups,
1158
[NO_INITGROUPS=],
1159
[NO_INITGROUPS=YesPlease])
1160
GIT_CONF_SUBST([NO_INITGROUPS])
1161
#
1162
# Define HAVE_GETDELIM if you have getdelim in the C library.
1163
GIT_CHECK_FUNC(getdelim,
1164
[HAVE_GETDELIM=YesPlease],
1165
[HAVE_GETDELIM=])
1166
GIT_CONF_SUBST([HAVE_GETDELIM])
1167
#
1168
#
1169
# Define NO_MMAP if you want to avoid mmap.
1170
#
1171
# Define NO_ICONV if your libc does not properly support iconv.
1172

1173
AC_DEFUN([BSD_SYSCTL_SRC], [
1174
AC_LANG_PROGRAM([[
1175
#include <stddef.h>
1176
#include <sys/types.h>
1177
#include <sys/sysctl.h>
1178
]],[[
1179
int val, mib[2];
1180
size_t len;
1181
mib[0] = CTL_HW;
1182
mib[1] = 1;
1183
len = sizeof(val);
1184
return sysctl(mib, 2, &val, &len, NULL, 0) ? 1 : 0;
1185
]])])
1186

1187
#
1188
# Define HAVE_BSD_SYSCTL=YesPlease if a BSD-compatible sysctl function is available.
1189
AC_MSG_CHECKING([for BSD sysctl])
1190
AC_COMPILE_IFELSE([BSD_SYSCTL_SRC],
1191
	[AC_MSG_RESULT([yes])
1192
	HAVE_BSD_SYSCTL=YesPlease],
1193
	[AC_MSG_RESULT([no])
1194
	HAVE_BSD_SYSCTL=])
1195
GIT_CONF_SUBST([HAVE_BSD_SYSCTL])
1196

1197
## Other checks.
1198
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
1199
# Enable it on Windows.  By default, symrefs are still used.
1200
#
1201
# Define NO_PTHREADS if we do not have pthreads.
1202
#
1203
# Define PTHREAD_LIBS to the linker flag used for Pthread support.
1204
AC_DEFUN([PTHREADTEST_SRC], [
1205
AC_LANG_PROGRAM([[
1206
#include <pthread.h>
1207
static void *noop(void *ignore) { return ignore; }
1208
]], [[
1209
	pthread_mutex_t test_mutex;
1210
	pthread_key_t test_key;
1211
	pthread_t th;
1212
	int retcode = 0;
1213
	void *ret = (void *)0;
1214
	retcode |= pthread_key_create(&test_key, (void *)0);
1215
	retcode |= pthread_mutex_init(&test_mutex,(void *)0);
1216
	retcode |= pthread_mutex_lock(&test_mutex);
1217
	retcode |= pthread_mutex_unlock(&test_mutex);
1218
	retcode |= pthread_create(&th, ret, noop, ret);
1219
	retcode |= pthread_join(th, &ret);
1220
	return retcode;
1221
]])])
1222

1223
dnl AC_LANG_CONFTEST([AC_LANG_PROGRAM(
1224
dnl   [[#include <pthread.h>]],
1225
dnl   [[pthread_mutex_t test_mutex;]]
1226
dnl )])
1227

1228
NO_PTHREADS=UnfortunatelyYes
1229
PTHREAD_LIBS=
1230

1231
if test -n "$USER_NOPTHREAD"; then
1232
   AC_MSG_NOTICE([Skipping POSIX Threads at user request.])
1233
# handle these separately since PTHREAD_CFLAGS could be '-lpthreads
1234
# -D_REENTRANT' or some such.
1235
elif test -z "$PTHREAD_CFLAGS"; then
1236
  threads_found=no
1237
  # Attempt to compile and link some code using pthreads to determine
1238
  # required linker flags. The order is somewhat important here: We
1239
  # first try it without any extra flags, to catch systems where
1240
  # pthreads are part of the C library, then go on testing various other
1241
  # flags. We do so to avoid false positives. For example, on Mac OS X
1242
  # pthreads are part of the C library; moreover, the compiler allows us
1243
  # to add "-mt" to the CFLAGS (although it will do nothing except
1244
  # trigger a warning about an unused flag). Hence if we checked for
1245
  # "-mt" before "" we would end up picking it. But unfortunately this
1246
  # would then trigger compiler warnings on every single file we compile.
1247
  for opt in "" -mt -pthread -lpthread; do
1248
     old_CFLAGS="$CFLAGS"
1249
     old_LIBS="$LIBS"
1250
     case "$opt" in
1251
        -l*)  LIBS="$opt $LIBS" ;;
1252
        *)    CFLAGS="$opt $CFLAGS" ;;
1253
     esac
1254

1255
     AC_MSG_CHECKING([for POSIX Threads with '$opt'])
1256
     AC_LINK_IFELSE([PTHREADTEST_SRC],
1257
	[AC_MSG_RESULT([yes])
1258
		NO_PTHREADS=
1259
		PTHREAD_LIBS="$opt"
1260
		PTHREAD_CFLAGS="$opt"
1261
		threads_found=yes
1262
		break
1263
	],
1264
	[AC_MSG_RESULT([no])])
1265
      CFLAGS="$old_CFLAGS"
1266
      LIBS="$old_LIBS"
1267
  done
1268
  if test $threads_found != yes; then
1269
    AC_CHECK_LIB([pthread], [pthread_create],
1270
	[PTHREAD_LIBS="-lpthread"],
1271
	[NO_PTHREADS=UnfortunatelyYes])
1272
  fi
1273
else
1274
  old_CFLAGS="$CFLAGS"
1275
  CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
1276
  AC_MSG_CHECKING([for POSIX Threads with '$PTHREAD_CFLAGS'])
1277
  AC_LINK_IFELSE([PTHREADTEST_SRC],
1278
	[AC_MSG_RESULT([yes])
1279
		NO_PTHREADS=
1280
		PTHREAD_LIBS="$PTHREAD_CFLAGS"
1281
	],
1282
	[AC_MSG_RESULT([no])])
1283

1284
  CFLAGS="$old_CFLAGS"
1285
fi
1286

1287
CFLAGS="$old_CFLAGS"
1288

1289
GIT_CONF_SUBST([PTHREAD_CFLAGS])
1290
GIT_CONF_SUBST([PTHREAD_LIBS])
1291
GIT_CONF_SUBST([NO_PTHREADS])
1292

1293
## Output files
1294
AC_CONFIG_FILES(["${config_file}":"${config_in}"])
1295
AC_OUTPUT
1296

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.