xref: /Universal-ctags/configure.ac (revision 1dbf25f5137bd736bb1564153abb123050757284)
1152f758cSDarren Hiebert#	Copyright (c) 2009, Darren Hiebert
2152f758cSDarren Hiebert#
3152f758cSDarren Hiebert#	This source code is released for free distribution under the terms
40ce38835Sviccuad#	of the GNU General Public License version 2 or (at your option) any
50ce38835Sviccuad#	later version.
6152f758cSDarren Hiebert
7152f758cSDarren Hiebert#	Process this file with autoconf to produce a configure script.
8152f758cSDarren Hiebert
9daa1a0f9SHiroo HAYASHIAC_PREREQ([2.64])
105911c7c6SAlberto FanjulAC_INIT([universal-ctags],[5.9.0])
11bf33c698SK.Takata
1237eea9d5SMasatake YAMATOif ! test -e "${srcdir}/config.h.in"; then
1337eea9d5SMasatake YAMATO   echo "---"
145314d729SColomban Wendling   echo "--- ${srcdir}/config.h.in WAS NOT FOUND." 1>&2
155314d729SColomban Wendling   echo "--- YOU MIGHT HAVE RUN autoconf ONLY" 1>&2
169d5b773cSMasatake YAMATO   echo "--- BUT YOU MAY HAVE TO RUN autogen.sh." 1>&2
1737eea9d5SMasatake YAMATO   echo "---"
1837eea9d5SMasatake YAMATO   exit 1
1937eea9d5SMasatake YAMATOfi
20152f758cSDarren Hiebert
21bf33c698SK.Takata# Report system info
22bf33c698SK.Takata# ------------------
23bf33c698SK.Takataprogram_name=[`grep 'PROGRAM_NAME  *"' $srcdir/main/ctags.h | sed -e 's/.*"\([^"]*\)".*/\1/'`]
24bf33c698SK.Takataprogram_version=[`grep 'PROGRAM_VERSION  *"' $srcdir/main/ctags.h | sed -e 's/.*"\([^"]*\)".*/\1/'`]
25bf33c698SK.Takataecho "$program_name, version $program_version"
26bf33c698SK.Takatauname -mrsv 2>/dev/null
27bf33c698SK.Takata
28bf33c698SK.TakataAM_INIT_AUTOMAKE([foreign subdir-objects tar-ustar])
29bf33c698SK.TakataAM_SILENT_RULES([yes])
30bf33c698SK.TakataAC_CONFIG_HEADERS([config.h])
31bf33c698SK.Takata
32f7915217Sleleliu008m4_ifndef([PKG_CHECK_EXISTS], [m4_fatal([must install pkg-config 0.18 or later before running ./autogen.sh])])
33f7915217Sleleliu008
346651ead9SK.TakataAC_CANONICAL_BUILD
356651ead9SK.TakataAC_CANONICAL_HOST
366651ead9SK.Takata
373b8e28c3Sleleliu008case $host in
383b8e28c3Sleleliu008    *darwin*)
393b8e28c3Sleleliu008        if test "${enable_static}" = "yes"; then
403b8e28c3Sleleliu008            printf "\n%s\n" "macOS not support --enable-static." >&5
413b8e28c3Sleleliu008            printf "\n%s\n" "macOS not support --enable-static." >&6
423b8e28c3Sleleliu008            exit 1
433b8e28c3Sleleliu008        fi
442f69ee90Sleleliu008        ;;
452f69ee90Sleleliu008    *freebsd*|*openbsd*)
462f69ee90Sleleliu008        # https://github.com/universal-ctags/ctags/issues/3338
472f69ee90Sleleliu008        export LDFLAGS="$LDFLAGS -L/usr/local/lib"
482f69ee90Sleleliu008        ;;
493b8e28c3Sleleliu008esac
503b8e28c3Sleleliu008
51152f758cSDarren HiebertAH_TEMPLATE([PACKAGE], [Package name.])
52152f758cSDarren HiebertAH_TEMPLATE([VERSION], [Package version.])
53152f758cSDarren HiebertAH_TEMPLATE([clock_t],
54152f758cSDarren Hiebert	[Define to the appropriate type if <time.h> does not define this.])
55152f758cSDarren HiebertAH_TEMPLATE([fpos_t],
56152f758cSDarren Hiebert	[Define to long if <stdio.h> does not define this.])
57152f758cSDarren HiebertAH_TEMPLATE([L_tmpnam],
58152f758cSDarren Hiebert	[Define to the appropriate size for tmpnam() if <stdio.h> does not define
59152f758cSDarren Hiebert	this.])
60152f758cSDarren HiebertAH_TEMPLATE([HAVE_STAT_ST_INO],
61152f758cSDarren Hiebert	[Define this macro if the field "st_ino" exists in struct stat in
62152f758cSDarren Hiebert	<sys/stat.h>.])
631293d03bSMasatake YAMATOAH_TEMPLATE([HAVE_STATEMENT_EXPRESSION_EXT],
641293d03bSMasatake YAMATO	[Define this macro if compiler supports statement expression non-standard
651293d03bSMasatake YAMATO	C feature.])
66152f758cSDarren HiebertAH_TEMPLATE([remove],
67152f758cSDarren Hiebert	[Define remove to unlink if you have unlink(), but not remove().])
68152f758cSDarren HiebertAH_TEMPLATE([INT_MAX],
69152f758cSDarren Hiebert	[Define as the maximum integer on your system if not defined <limits.h>.])
70152f758cSDarren HiebertAH_TEMPLATE([CUSTOM_CONFIGURATION_FILE],
71152f758cSDarren Hiebert	[You can define this label to be a string containing the name of a
72152f758cSDarren Hiebert	site-specific configuration file containing site-wide default options. The
73152f758cSDarren Hiebert	files /etc/ctags.conf and /usr/local/etc/ctags.conf are already checked,
74152f758cSDarren Hiebert	so only define one here if you need a file somewhere else.])
751eace6c6SJonathan BuschmannAH_TEMPLATE([ETAGS],
761eace6c6SJonathan Buschmann	[Define the string to check (in executable name) for etags mode])
77152f758cSDarren HiebertAH_TEMPLATE([MACROS_USE_PATTERNS],
78152f758cSDarren Hiebert	[Define this label if you want macro tags (defined lables) to use patterns
79152f758cSDarren Hiebert	in the EX command by default (original ctags behavior is to use line
80152f758cSDarren Hiebert	numbers).])
81152f758cSDarren HiebertAH_VERBATIM([DEFAULT_FILE_FORMAT], [
82152f758cSDarren Hiebert/* Define this as desired.
83152f758cSDarren Hiebert * 1:  Original ctags format
84152f758cSDarren Hiebert * 2:  Extended ctags format with extension flags in EX-style comment.
85152f758cSDarren Hiebert */
86039bc97fSMasatake YAMATO#define DEFAULT_FILE_FORMAT	2
87152f758cSDarren Hiebert])
88152f758cSDarren HiebertAH_TEMPLATE([CASE_INSENSITIVE_FILENAMES],
89152f758cSDarren Hiebert	[Define this label if your system uses case-insensitive file names])
90152f758cSDarren HiebertAH_VERBATIM([EXTERNAL_SORT], [
91152f758cSDarren Hiebert/* Define this label to use the system sort utility (which is probably more
92152f758cSDarren Hiebert*  efficient) over the internal sorting algorithm.
93152f758cSDarren Hiebert*/
94152f758cSDarren Hiebert#ifndef INTERNAL_SORT
95152f758cSDarren Hiebert# undef EXTERNAL_SORT
96152f758cSDarren Hiebert#endif
97152f758cSDarren Hiebert])
982acdcfa1SYasuhiro MatsumotoAH_TEMPLATE([HAVE_ICONV],
992acdcfa1SYasuhiro Matsumoto	[Define this value if support multibyte character encoding.])
10088c2797bSMasatake YAMATOAH_TEMPLATE([ICONV_USE_LIB_PREFIX],
10188c2797bSMasatake YAMATO	[Define this value if the platform uses "lib" as prefix for iconv functions.])
102152f758cSDarren HiebertAH_TEMPLATE([TMPDIR],
103152f758cSDarren Hiebert	[If you wish to change the directory in which temporary files are stored,
104152f758cSDarren Hiebert	define this label to the directory desired.])
105152f758cSDarren HiebertAH_TEMPLATE([NON_CONST_PUTENV_PROTOTYPE],
106152f758cSDarren Hiebert	[Define this is you have a prototype for putenv() in <stdlib.h>, but
107152f758cSDarren Hiebert	doesn't declare its argument as "const char *".])
1086651ead9SK.TakataAH_TEMPLATE([MSDOS_STYLE_PATH],
1096651ead9SK.Takata	[Define to 1 if your system uses MS-DOS style path.])
110eed4431bSK.TakataAH_TEMPLATE([MANUAL_GLOBBING],
111eed4431bSK.Takata	[Define to 1 if your system doesn't expand wildcards.])
112eed4431bSK.TakataAH_TEMPLATE([HAVE__FINDFIRST],
113eed4431bSK.Takata	[Define to 1 if your system have _findfirst().])
1147da252f3SMasatake YAMATOAH_TEMPLATE([ENABLE_GCOV],
1157da252f3SMasatake YAMATO	[Define to 1 if gcov is instrumented.])
11636fa0e22SHiroo HAYASHIAH_TEMPLATE([USE_GNULIB_FNMATCH],
11736fa0e22SHiroo HAYASHI	[Define to 1 when using fnmatch implementation in bundled gnulib.])
118152f758cSDarren Hiebert
119152f758cSDarren Hiebert# Define convenience macros
120152f758cSDarren Hiebert# -------------------------
121152f758cSDarren Hiebert# CHECK_HEADER_DEFINE(LABEL, HEADER [,ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ] ])
122152f758cSDarren HiebertAC_DEFUN([CHECK_HEADER_DEFINE], [
123152f758cSDarren Hiebert	AC_MSG_CHECKING([if $1 is defined in $2])
124c7b3e262SP.Montanus	AC_EGREP_CPP([$2:$1],
1257dc8f8faSP.Montanus[
1267dc8f8faSP.Montanus#include <$2>
127152f758cSDarren Hiebert#ifdef $1
128c7b3e262SP.Montanusconst char *result_yes = "$2:$1";
129152f758cSDarren Hiebert#endif
130152f758cSDarren Hiebert], [
131152f758cSDarren Hiebert	AC_MSG_RESULT(yes)
132152f758cSDarren Hiebert	[$3]
133152f758cSDarren Hiebert], [
134152f758cSDarren Hiebert	AC_MSG_RESULT(no)
135152f758cSDarren Hiebert	[$4]
136152f758cSDarren Hiebert]) ])
137152f758cSDarren Hiebert
1384f9c4393SP.Montanus# CHECK_PROTO(FUNCTION, HEADER-FILE)
1397f2c383aSP.MontanusAC_DEFUN([CHECK_PROTO], [
1407f2c383aSP.Montanus	AC_EGREP_HEADER([[^A-Za-z0-9_]$1([ 	]+[A-Za-z0-9_]*)?[	 ]*\(],
1417f2c383aSP.Montanus	[$2],
1427f2c383aSP.Montanus	[],
1437f2c383aSP.Montanus	[
1447f2c383aSP.Montanus		AC_MSG_NOTICE([adding prototype for $1])
145bb1b2dbfSP.Montanus		AH_TEMPLATE(AS_TR_CPP([NEED_PROTO_$1]),
146bb1b2dbfSP.Montanus			    [If you receive error or warning messages indicating that you are missing a prototype for, or a type mismatch using, the following function, define this label and remake.])
1477f2c383aSP.Montanus		AC_DEFINE(AS_TR_CPP([NEED_PROTO_$1]))
1487f2c383aSP.Montanus	])
1497f2c383aSP.Montanus])
1507f2c383aSP.Montanus
15196ff0a24SP.Montanus# PRETTY_ARG_VAR(VARIABLE, DESCRIPTION, DEFAULT)
15296ff0a24SP.Montanus# ----------------------------------------------
15396ff0a24SP.Montanus# Call AC_ARG_VAR with DEFAULT value.
15496ff0a24SP.MontanusAC_DEFUN([PRETTY_ARG_VAR], [
15596ff0a24SP.Montanus	AC_ARG_VAR([$1], [$2 [$3]])
15696ff0a24SP.Montanus
15796ff0a24SP.Montanus	if test "${ac_env_$1_set}" = "set"; then
15896ff0a24SP.Montanus		$1="${ac_env_$1_value}"
15996ff0a24SP.Montanus	else
16096ff0a24SP.Montanus		$1="$3"
16196ff0a24SP.Montanus	fi
16296ff0a24SP.Montanus])
16396ff0a24SP.Montanus
164152f758cSDarren Hiebert# Checks for configuration options
165152f758cSDarren Hiebert# --------------------------------
166152f758cSDarren Hiebert
1678783e633SP.MontanusAC_ARG_WITH([sparse-cgcc],
1688783e633SP.Montanus	[AS_HELP_STRING([--with-sparse-cgcc],
1698783e633SP.Montanus		[use Sparse 'compiler wrapper' cgcc as C compiler [no]])])
1708783e633SP.Montanus
171b4202f59SP.MontanusAC_ARG_ENABLE([coverage-gcov],
172b4202f59SP.Montanus	[AS_HELP_STRING([--enable-coverage-gcov],
173b4202f59SP.Montanus		[enable 'gcov' coverage testing tool [no]])])
174b4202f59SP.Montanus
1759aff773fSMaxime CosteAC_ARG_ENABLE(readcmd,
17696f997d0SMaxime Coste	[AS_HELP_STRING([--disable-readcmd],
17796f997d0SMaxime Coste		[do not include readtags command during install])],
1789aff773fSMaxime Coste	[], [enable_readcmd=yes])
1794650979bSMaxime Coste
180152f758cSDarren Hiebert# AC_ARG_WITH(perl-regex,
18196f997d0SMaxime Coste# 	[AS_HELP_STRING([--with-perl-regex],
18296f997d0SMaxime Coste# 	    [use Perl pcre interface, if available])])
183152f758cSDarren Hiebert
184152f758cSDarren HiebertAC_ARG_ENABLE(etags,
18596f997d0SMaxime Coste	[AS_HELP_STRING([--enable-etags],
18696f997d0SMaxime Coste		[enable the installation of links for etags])])
187152f758cSDarren Hiebert
188152f758cSDarren HiebertAC_ARG_ENABLE(extended-format,
18996f997d0SMaxime Coste	[AS_HELP_STRING([--disable-extended-format],
19096f997d0SMaxime Coste		[disable extension flags; use original ctags file format only])],
191039bc97fSMasatake YAMATO	AC_DEFINE(DEFAULT_FILE_FORMAT, 1), AC_DEFINE(DEFAULT_FILE_FORMAT, 2))
192152f758cSDarren Hiebert
193152f758cSDarren HiebertAC_ARG_ENABLE(external-sort,
19496f997d0SMaxime Coste	[AS_HELP_STRING([--disable-external-sort],
19596f997d0SMaxime Coste		[use internal sort algorithm instead of sort program])])
196152f758cSDarren Hiebert
1972acdcfa1SYasuhiro MatsumotoAC_ARG_ENABLE(iconv,
198dc1d443eSK.Takata	[AS_HELP_STRING([--disable-iconv],
199dc1d443eSK.Takata		[disable multibyte character encoding support])])
2002acdcfa1SYasuhiro Matsumoto
201152f758cSDarren HiebertAC_ARG_ENABLE(custom-config,
20296f997d0SMaxime Coste	[AS_HELP_STRING([--enable-custom-config=FILE],
20396f997d0SMaxime Coste		[enable custom config file for site-wide defaults])])
204152f758cSDarren Hiebert
205152f758cSDarren HiebertAC_ARG_ENABLE(macro-patterns,
20696f997d0SMaxime Coste	[AS_HELP_STRING([--enable-macro-patterns],
20796f997d0SMaxime Coste		[use patterns as default method to locate macros instead of line numbers])])
208152f758cSDarren Hiebert
209152f758cSDarren HiebertAC_ARG_ENABLE(tmpdir,
21096f997d0SMaxime Coste	[AS_HELP_STRING([--enable-tmpdir=DIR],
21196f997d0SMaxime Coste		[default directory for temporary files [ARG=/tmp]])],
212152f758cSDarren Hiebert	tmpdir_specified=yes)
213152f758cSDarren Hiebert
2144e0988b7SMasatake YAMATOAC_ARG_ENABLE([debugging],
2154e0988b7SMasatake YAMATO	[AS_HELP_STRING([--enable-debugging],
2164e0988b7SMasatake YAMATO		[enable debugging features])])
2174e0988b7SMasatake YAMATO
218db918d55SK.TakataAC_ARG_ENABLE([static],
219db918d55SK.Takata	[AS_HELP_STRING([--enable-static],
220db918d55SK.Takata		[enable static linking (mainly for MinGW)])])
221db918d55SK.Takata
2221eace6c6SJonathan BuschmannAC_ARG_PROGRAM
223152f758cSDarren Hiebert
224152f758cSDarren Hiebert# Process configuration options
225152f758cSDarren Hiebert# -----------------------------
226152f758cSDarren Hiebert
2274698c2e4SMike BurnsAM_CONDITIONAL(INSTALL_ETAGS, [test "x$enable_etags" = "xyes"])
2284698c2e4SMike BurnsAM_CONDITIONAL(USE_READCMD, [test "x$enable_readcmd" = "xyes"])
229152f758cSDarren Hiebert
230d2f302e4SP.Montanusdnl AC_MSG_NOTICE(Change with $program_transform_name)
23115413bacSMasatake YAMATOCTAGS_NAME_EXECUTABLE=`echo ctags | sed "$program_transform_name"`
23215413bacSMasatake YAMATOAC_SUBST(CTAGS_NAME_EXECUTABLE)
23315413bacSMasatake YAMATOETAGS_NAME_EXECUTABLE=`echo etags | sed "$program_transform_name"`
23415413bacSMasatake YAMATOAC_SUBST(ETAGS_NAME_EXECUTABLE)
2351eace6c6SJonathan Buschmann
23615413bacSMasatake YAMATOAC_DEFINE_UNQUOTED(ETAGS, "$ETAGS_NAME_EXECUTABLE")
2371eace6c6SJonathan Buschmann
238152f758cSDarren Hiebertif test "$enable_custom_config" = no -o "$enable_custom_config" = yes ; then
239d2f302e4SP.Montanus	AC_MSG_NOTICE(no name supplied for custom configuration file)
240152f758cSDarren Hiebertelif test -n "$enable_custom_config" ; then
241152f758cSDarren Hiebert	AC_DEFINE_UNQUOTED(CUSTOM_CONFIGURATION_FILE, "$enable_custom_config")
242d2f302e4SP.Montanus	AC_MSG_NOTICE($enable_custom_config will be used as custom configuration file)
243152f758cSDarren Hiebertfi
244152f758cSDarren Hiebert
245152f758cSDarren Hiebertif test "$enable_macro_patterns" = yes ; then
246152f758cSDarren Hiebert	AC_DEFINE(MACROS_USE_PATTERNS)
247d2f302e4SP.Montanus	AC_MSG_NOTICE(tag file will use patterns for macros by default)
248152f758cSDarren Hiebertfi
249152f758cSDarren Hiebert
2504e0988b7SMasatake YAMATOAM_CONDITIONAL(ENABLE_DEBUGGING, [test "x$enable_debugging" = "xyes"])
2514e0988b7SMasatake YAMATO
2524e0988b7SMasatake YAMATO
253152f758cSDarren Hiebert# Checks for programs
254152f758cSDarren Hiebert# -------------------
255152f758cSDarren Hiebert
256152f758cSDarren HiebertAC_PROG_CC
25725808ebeSMatthew BrushAC_PROG_CC_C99
258daa1a0f9SHiroo HAYASHI# For gnulib.
259daa1a0f9SHiroo HAYASHI#  Typically, this is immediately after AC_PROG_CC, ...
260daa1a0f9SHiroo HAYASHIgl_EARLY
261daa1a0f9SHiroo HAYASHI
262f406da36SJiří TechetAC_PROG_RANLIB
2633addc312SColomban WendlingAC_C_BIGENDIAN
264152f758cSDarren Hiebert
26524906f53Sleleliu008if test "$cross_compiling" = "yes"; then
2661daaf2b9Sleleliu008    # We need to compile and run a program on the build machine.
2671daaf2b9Sleleliu008    AC_MSG_CHECKING(for cc for build)
26824906f53Sleleliu008    if test "x${CC_FOR_BUILD}" = "x" ; then
26924906f53Sleleliu008        CC_FOR_BUILD=cc
2701daaf2b9Sleleliu008    fi
2711daaf2b9Sleleliu008    AC_MSG_RESULT($CC_FOR_BUILD)
27224906f53Sleleliu008
27324906f53Sleleliu008    AC_MSG_CHECKING(if $CC_FOR_BUILD works)
27424906f53Sleleliu008
27524906f53Sleleliu008    unset TEMP_DIR_FOR_CHECKING
27624906f53Sleleliu008    TEMP_DIR_FOR_CHECKING=$(mktemp -d)
27724906f53Sleleliu008
27824906f53Sleleliu008    unset CC_FOR_BUILD_WORKS
27924906f53Sleleliu008    CC_FOR_BUILD_WORKS=no
28024906f53Sleleliu008
28124906f53Sleleliu008    (
28224906f53Sleleliu008        cd "$TEMP_DIR_FOR_CHECKING" || return 1
28324906f53Sleleliu008
28424906f53Sleleliu008        printf 'int main() { return 0;}' > test.c
28524906f53Sleleliu008
28624906f53Sleleliu008        $CC_FOR_BUILD $CPPFLAGS_FOR_BUILD $CFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD -o test test.c
28724906f53Sleleliu008    ) && CC_FOR_BUILD_WORKS=yes
28824906f53Sleleliu008
28924906f53Sleleliu008    AC_MSG_RESULT($CC_FOR_BUILD_WORKS)
29024906f53Sleleliu008
29124906f53Sleleliu008    unset BUILD_EXEEXT
29224906f53Sleleliu008    unset BUILD_OBJEXT
29324906f53Sleleliu008
29424906f53Sleleliu008    BUILD_OBJEXT='o'
29524906f53Sleleliu008
29624906f53Sleleliu008    if [ -f "$TEMP_DIR_FOR_CHECKING/test.exe" ] ; then
29724906f53Sleleliu008        BUILD_EXEEXT='.exe'
29824906f53Sleleliu008    fi
29924906f53Sleleliu008else
30024906f53Sleleliu008    CC_FOR_BUILD="$CC"
30124906f53Sleleliu008    CFLAGS_FOR_BUILD="$CFLAGS"
30224906f53Sleleliu008    CPPFLAGS_FOR_BUILD="$CPPFLAGS"
30324906f53Sleleliu008    LDFLAGS_FOR_BUILD="$LDFLAGS"
30424906f53Sleleliu008
30524906f53Sleleliu008    BUILD_OBJEXT="$OBJEXT"
30624906f53Sleleliu008    BUILD_EXEEXT="$EXEEXT"
30724906f53Sleleliu008fi
30824906f53Sleleliu008
3091daaf2b9Sleleliu008AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
3101daaf2b9Sleleliu008AC_ARG_VAR(CFLAGS_FOR_BUILD,[CFLAGS for build system C compiler])
3111daaf2b9Sleleliu008AC_ARG_VAR(CPPFLAGS_FOR_BUILD,[CPPFLAGS for build system C compiler])
3121daaf2b9Sleleliu008AC_ARG_VAR(LDFLAGS_FOR_BUILD,[LDFLAGS for build system C compiler])
3131daaf2b9Sleleliu008
31424906f53Sleleliu008AC_SUBST([CC_FOR_BUILD])
31524906f53Sleleliu008AC_SUBST([CFLAGS_FOR_BUILD])
31624906f53Sleleliu008AC_SUBST([CPPFLAGS_FOR_BUILD])
31724906f53Sleleliu008AC_SUBST([LDFLAGS_FOR_BUILD])
31824906f53Sleleliu008
31924906f53Sleleliu008AC_SUBST([BUILD_OBJEXT])
32024906f53Sleleliu008AC_SUBST([BUILD_EXEEXT])
32124906f53Sleleliu008
3229748aca4Sleleliu008AC_ARG_VAR(AR,[ar command or path])
3239748aca4Sleleliu008AC_ARG_VAR(RANLIB,[ranlib command or path])
3249748aca4Sleleliu008AC_ARG_VAR(WINDRES,[windres command or path, used with mingw-w64])
3259748aca4Sleleliu008AC_SUBST([WINDRES])
3269748aca4Sleleliu008
3279748aca4Sleleliu008if test "x${AR}" = "x" ; then
3289748aca4Sleleliu008    AR=ar
3299748aca4Sleleliu008fi
3309748aca4Sleleliu008
3319748aca4Sleleliu008if test "x${WINDRES}" = "x" ; then
3329748aca4Sleleliu008    WINDRES=windres
3339748aca4Sleleliu008fi
3349748aca4Sleleliu008
3358783e633SP.Montanusif test "${with_sparse_cgcc}" = "yes"; then
3368783e633SP.Montanus	REAL_CC="${CC}"
3378783e633SP.Montanus	CC="cgcc"
3388783e633SP.Montanus	AC_SUBST([REAL_CC])
3398783e633SP.Montanus
3408783e633SP.Montanus	PRETTY_ARG_VAR([CGCC_CFLAGS], [cgcc specific flags],
3418783e633SP.Montanus		       [-Wsparse-all])
3428783e633SP.Montanuselse
3438783e633SP.Montanus	CGCC_CFLAGS=""
3448783e633SP.Montanusfi
3458783e633SP.Montanus
346b4202f59SP.Montanusif test "${enable_coverage_gcov}" = "yes"; then
347b4202f59SP.Montanus	COVERAGE_CFLAGS="--coverage"
348b4202f59SP.Montanus	COVERAGE_LDFLAGS="--coverage"
3497da252f3SMasatake YAMATO	AC_DEFINE(ENABLE_GCOV)
350b4202f59SP.Montanusfi
351b4202f59SP.MontanusAC_SUBST([COVERAGE_CFLAGS])
352b4202f59SP.MontanusAC_SUBST([COVERAGE_LDFLAGS])
353b4202f59SP.Montanus
354152f758cSDarren HiebertAC_PROG_LN_S
355152f758cSDarren HiebertAC_CHECK_PROG(STRIP, strip, strip, :)
356811e7044SjaflAC_SYS_LARGEFILE
357152f758cSDarren Hiebert
35850607bfaSAvinash SonawaneAC_CHECK_PROG([perl_found], [perl], [yes], [no])
35928a3d08fSMasatake YAMATOAM_CONDITIONAL([RUN_OPTLIB2C], [test "${perl_found}" = "yes"])
360431a587eSMasatake YAMATOAM_CONDITIONAL([RUN_TXT2CSTR], [test "${perl_found}" = "yes"])
36154fc59c2SMasatake YAMATO
3624b25d009SHiroo HAYASHI# rst2man and rst2html are part of python-docutils, and if not found
3634b25d009SHiroo HAYASHI# 	can be installed using pip ("pip install docutils"). On some
3644b25d009SHiroo HAYASHI#	systems, rst2man and rst2html are actually installed as rst2man.py
3654b25d009SHiroo HAYASHI#	and rst2html.py - create a symlink of that's the case.
36675efdac8Sleleliu008AC_PATH_PROGS(RST2MAN, [rst2man rst2man.py rst2man-3 rst2man-3.6 rst2man-3.7 rst2man-3.8 rst2man-3.9], [no])
36715413bacSMasatake YAMATOAM_CONDITIONAL([HAVE_RST2MAN], [test "x$RST2MAN" != "xno"])
3684b25d009SHiroo HAYASHIAC_PATH_PROGS(RST2HTML, [rst2html rst2html.py rst2html-3 rst2html-3.6 rst2html-3.7 rst2html-3.8 rst2html-3.9], [no])
3694b25d009SHiroo HAYASHIAM_CONDITIONAL([HAVE_RST2HTML], [test "x$RST2HTML" != "xno"])
370152f758cSDarren Hiebert
3714b25d009SHiroo HAYASHI# rst2pdf is a separate tool and can also be installed via pip (e.g.,
3724b25d009SHiroo HAYASHI# 	"pip install rst2pdf")
3734b25d009SHiroo HAYASHIAC_PATH_PROGS(RST2PDF, [rst2pdf], [no])
3744b25d009SHiroo HAYASHIAM_CONDITIONAL([HAVE_RST2PDF], [test "x$RST2PDF" != "xno"])
3754b25d009SHiroo HAYASHI
3764b25d009SHiroo HAYASHI# rst2man had a bug about code-block:: handling.
3774b25d009SHiroo HAYASHI# https://sourceforge.net/p/docutils/patches/141
3780104a0feSMasatake YAMATORST2MAN_OPTIONS=
3790104a0feSMasatake YAMATOif ! test "x$RST2MAN" = "xno"; then
3800104a0feSMasatake YAMATO   RST2MAN_SUPPORTING_SYNTAX_HIGHLIGHT_OPTION=no
3810104a0feSMasatake YAMATO   AC_MSG_CHECKING(whether rst2mn has --syntax-highlight option)
3820104a0feSMasatake YAMATO   if $RST2MAN --help | grep -q -e --syntax-highlight; then
3830104a0feSMasatake YAMATO      RST2MAN_SUPPORTING_SYNTAX_HIGHLIGHT_OPTION=yes
3840104a0feSMasatake YAMATO      dnl See man/Makefile about the option
3850104a0feSMasatake YAMATO      RST2MAN_OPTIONS=--syntax-highlight=none
3860104a0feSMasatake YAMATO   fi
3870104a0feSMasatake YAMATO   AC_MSG_RESULT($RST2MAN_SUPPORTING_SYNTAX_HIGHLIGHT_OPTION)
3880104a0feSMasatake YAMATOfi
3890104a0feSMasatake YAMATOAC_SUBST(RST2MAN_OPTIONS)
390648c1a07SHiroo HAYASHIAM_CONDITIONAL([HAS_GNU_SED], [sed --version 2>/dev/null | grep -q GNU])
3910104a0feSMasatake YAMATO
392152f758cSDarren Hiebert# Checks for operating environment
393152f758cSDarren Hiebert# --------------------------------
394c409ec94SMasatake YAMATOin_git_repo=no
395c409ec94SMasatake YAMATOAC_MSG_CHECKING(building in a git repository)
39642a52756SK.Takataif test -f "${srcdir}/.git/HEAD" || test -f "${srcdir}/.git"; then
397c409ec94SMasatake YAMATO	in_git_repo=yes
398c409ec94SMasatake YAMATOfi
399c409ec94SMasatake YAMATOAC_MSG_RESULT(${in_git_repo})
400c409ec94SMasatake YAMATO
401c409ec94SMasatake YAMATOAC_CHECK_PROGS([GIT], [git])
402e53335cbSMasatake YAMATOif ! test "${GIT:+set}" = "set"; then
403c409ec94SMasatake YAMATO	in_git_repo=no
404c409ec94SMasatake YAMATOfi
405c409ec94SMasatake YAMATOAM_CONDITIONAL([BUILD_IN_GIT_REPO], [test "x${in_git_repo}" = "xyes"])
406c409ec94SMasatake YAMATO
407942128b4SMasatake YAMATOhave_timeout=no
408942128b4SMasatake YAMATOAC_CHECK_PROGS([TESTING_TIMEOUT], [timeout])
409e53335cbSMasatake YAMATOif test "${TESTING_TIMEOUT:+set}" = "set"; then
410942128b4SMasatake YAMATO	have_timeout=yes
411942128b4SMasatake YAMATOfi
412942128b4SMasatake YAMATOAM_CONDITIONAL([HAVE_TIMEOUT], [test "x${have_timeout}" = "xyes"])
413942128b4SMasatake YAMATO
414354c22ffSK.TakataAC_CHECK_PROGS([PYTHON],
415354c22ffSK.Takata			   [python3 python3.8 python3.7 python3.6 python3.5 python], [])
416354c22ffSK.Takata
417152f758cSDarren Hiebert
418152f758cSDarren Hiebert# Check for temporary directory
419152f758cSDarren HiebertAC_MSG_CHECKING(directory to use for temporary files)
420152f758cSDarren Hiebertif test -n "$enable_tmpdir"; then
421152f758cSDarren Hiebert	tmpdir="$enable_tmpdir"
422152f758cSDarren Hiebertelif test -n "$TMPDIR"; then
423152f758cSDarren Hiebert	tmpdir="$TMPDIR"
424152f758cSDarren Hiebertelif test -n "$TMP"; then
425152f758cSDarren Hiebert	tmpdir="$TMP"
426152f758cSDarren Hiebertelif test -n "$TEMP"; then
427152f758cSDarren Hiebert	tmpdir="$TEMP"
428152f758cSDarren Hiebertelif test -d "c:/"; then
429152f758cSDarren Hiebert	tmpdir="c:/"
430152f758cSDarren Hiebertelse
431152f758cSDarren Hiebert	tmpdir="/tmp"
432152f758cSDarren Hiebertfi
433152f758cSDarren Hiebertif test -d $tmpdir ; then
434152f758cSDarren Hiebert	AC_MSG_RESULT($tmpdir)
435152f758cSDarren Hiebert	AC_DEFINE_UNQUOTED(TMPDIR, "$tmpdir")
436152f758cSDarren Hiebertelse
437152f758cSDarren Hiebert	AC_MSG_ERROR($tmpdir does not exist)
438152f758cSDarren Hiebertfi
439152f758cSDarren Hiebert
440152f758cSDarren Hiebert# Test for case-insensitive filenames
441152f758cSDarren HiebertAC_MSG_CHECKING(for case-insensitive filenames)
442152f758cSDarren Hieberttouch conftest.cif
443152f758cSDarren Hiebertif test -f CONFTEST.CIF; then
444152f758cSDarren Hiebert	AC_MSG_RESULT(yes)
445152f758cSDarren Hiebert	AC_DEFINE(CASE_INSENSITIVE_FILENAMES)
446152f758cSDarren Hiebertelse
447152f758cSDarren Hiebert	AC_MSG_RESULT(no)
448152f758cSDarren Hiebertfi
449152f758cSDarren Hiebertrm -f conftest.cif
450152f758cSDarren Hiebert
451152f758cSDarren HiebertAC_MSG_CHECKING(selected sort method)
452152f758cSDarren Hiebertif test no = "$enable_external_sort"; then
453152f758cSDarren Hiebert	AC_MSG_RESULT(simple internal algorithm)
454152f758cSDarren Hiebertelse
455152f758cSDarren Hiebert	AC_MSG_RESULT(external sort utility)
456152f758cSDarren Hiebert	enable_external_sort=no
457152f758cSDarren Hiebert    AC_CHECK_PROG(sort_found, sort, yes, no)
458152f758cSDarren Hiebert	if test "$sort_found" = yes ; then
459152f758cSDarren Hiebert		AC_MSG_CHECKING(if sort accepts our command line)
460152f758cSDarren Hiebert		touch ${tmpdir}/sort.test
461152f758cSDarren Hiebert		sort -u -f -o ${tmpdir}/sort.test ${tmpdir}/sort.test 1>/dev/null 2>&1
462152f758cSDarren Hiebert		if test $? -ne 0 ; then
463152f758cSDarren Hiebert			AC_MSG_RESULT(no)
464152f758cSDarren Hiebert		else
465152f758cSDarren Hiebert			AC_MSG_RESULT(yes)
466152f758cSDarren Hiebert			AC_DEFINE(EXTERNAL_SORT)
467152f758cSDarren Hiebert			enable_external_sort=yes
468152f758cSDarren Hiebert		fi
469152f758cSDarren Hiebert		rm -f ${tmpdir}/sort.test
470152f758cSDarren Hiebert    fi
471152f758cSDarren Hiebertfi
472152f758cSDarren Hiebertif test "$enable_external_sort" != yes ; then
473d2f302e4SP.Montanus	AC_MSG_NOTICE(using internal sort algorithm as fallback)
474152f758cSDarren Hiebertfi
475152f758cSDarren Hiebert
476152f758cSDarren Hiebert
477152f758cSDarren Hiebert# Checks for header files
478152f758cSDarren Hiebert# -----------------------
479152f758cSDarren Hiebert
480288a2fd5SK.TakataAC_CHECK_HEADERS([direct.h dirent.h fcntl.h io.h stat.h types.h unistd.h])
481288a2fd5SK.TakataAC_CHECK_HEADERS([sys/dir.h sys/stat.h sys/types.h sys/wait.h])
482152f758cSDarren Hiebert
483152f758cSDarren Hiebert# Checks for header file macros
484152f758cSDarren Hiebert# -----------------------------
485152f758cSDarren Hiebert
486152f758cSDarren HiebertCHECK_HEADER_DEFINE(L_tmpnam, [stdio.h],, AC_DEFINE(L_tmpnam, 20))
487152f758cSDarren Hiebert
488152f758cSDarren Hiebert
489ad91e260SMasatake YAMATO# Checks for typedefs and types
490ad91e260SMasatake YAMATO# -----------------------------
491152f758cSDarren Hiebert
492152f758cSDarren HiebertAC_TYPE_OFF_T
493152f758cSDarren Hiebert
494288a2fd5SK.TakataAC_CHECK_HEADERS([stdbool.h])
4954da1666eSP.Montanus
496152f758cSDarren Hiebert# Checks for compiler characteristics
497152f758cSDarren Hiebert# -----------------------------------
498152f758cSDarren Hiebert
499152f758cSDarren HiebertAC_C_CONST
500152f758cSDarren HiebertAC_OBJEXT
501152f758cSDarren HiebertAC_EXEEXT
5027c4980fdSMasatake YAMATOAC_C_TYPEOF
503152f758cSDarren Hiebert
504db918d55SK.Takataif test "${enable_static}" = "yes"; then
505db918d55SK.Takata	LDFLAGS="$LDFLAGS -static"
506db918d55SK.Takatafi
507db918d55SK.Takata
5081fb7a18eSK.Takata# Check for host type
5091fb7a18eSK.Takatacase "$host" in
5101fb7a18eSK.Takata  i?86-*-mingw* | x86_64-*-mingw*)
5111fb7a18eSK.Takata	host_mingw=yes
512daa1a0f9SHiroo HAYASHI	# See https://github.com/universal-ctags/ctags/pull/3069
513daa1a0f9SHiroo HAYASHI	gl_cv_have_weak=no
5141fb7a18eSK.Takata	AC_DEFINE(MSDOS_STYLE_PATH)
515eed4431bSK.Takata	AC_DEFINE(MANUAL_GLOBBING)
516eed4431bSK.Takata	AC_DEFINE(HAVE__FINDFIRST)
5171fb7a18eSK.Takata	;;
51857360006SK.Takata  *-cygwin | *-msys)
5191675e2a4SHiroo HAYASHI	gl_cv_have_weak=no
5201675e2a4SHiroo HAYASHI	;;
5211fb7a18eSK.Takataesac
522aff0c5f2SK.TakataAM_CONDITIONAL([HOST_MINGW], [test "x${host_mingw}" = "xyes"])
5231fb7a18eSK.Takata
52434421e96SPierce LopezAC_MSG_CHECKING(if compiler supports statement expressions)
5251293d03bSMasatake YAMATOAC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
5261293d03bSMasatake YAMATOint main(int argc, char **argv) {return ({ int x = 1; x + argc;});}
52734421e96SPierce Lopez])],[have_statement_expression_ext=yes],[have_statement_expression_ext=no])
52834421e96SPierce LopezAC_MSG_RESULT($have_statement_expression_ext)
52934421e96SPierce Lopezif test yes = "$have_statement_expression_ext"; then
5301293d03bSMasatake YAMATO	AC_DEFINE(HAVE_STATEMENT_EXPRESSION_EXT)
5311293d03bSMasatake YAMATOfi
5321293d03bSMasatake YAMATO
5331293d03bSMasatake YAMATO
5341fb7a18eSK.Takata# Check if struct stat contains st_ino.
5351fb7a18eSK.Takata# MinGW has st_ino, but it doesn't work.
5361fb7a18eSK.Takataif test yes != "$host_mingw"; then
537152f758cSDarren Hiebert	AC_MSG_CHECKING(if struct stat contains st_ino)
538af016d2cSP.Montanus	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
53975a2591dSP.Montanus		#include <sys/stat.h>
54075a2591dSP.Montanus		#include <stdlib.h>
54175a2591dSP.Montanus		], [
542152f758cSDarren Hiebert		struct stat st;
543152f758cSDarren Hiebert		stat(".", &st);
544152f758cSDarren Hiebert		if (st.st_ino > 0)
545152f758cSDarren Hiebert			exit(0);
546af016d2cSP.Montanus	])],[have_st_ino=yes],[have_st_ino=no])
547152f758cSDarren Hiebert	AC_MSG_RESULT($have_st_ino)
548152f758cSDarren Hiebert	if test yes = "$have_st_ino"; then
549152f758cSDarren Hiebert		AC_DEFINE(HAVE_STAT_ST_INO)
550152f758cSDarren Hiebert	fi
5511fb7a18eSK.Takatafi
5526651ead9SK.Takata
553c181cfd4SP.MontanusPRETTY_ARG_VAR([EXTRA_CPPFLAGS], [extra (Objective) C/C++ preprocessor flags],
554c181cfd4SP.Montanus	       [-D_GNU_SOURCE -D__USE_GNU])
555262057c2SP.MontanusPRETTY_ARG_VAR([DEBUG_CPPFLAGS], [(Objective) C/C++ preprocessor debug flags],
556262057c2SP.Montanus	       [-DDEBUG])
557262057c2SP.Montanus
55842a56708SP.MontanusPRETTY_ARG_VAR([EXTRA_CFLAGS], [extra C compiler flags],
55942a56708SP.Montanus	       [-std=gnu99])
56019d6d7f4SP.MontanusPRETTY_ARG_VAR([WARNING_CFLAGS], [C compiler warning flags],
56119d6d7f4SP.Montanus	       [-Wall])
562152f758cSDarren Hiebert
563daa1a0f9SHiroo HAYASHI# For gnulib.
564daa1a0f9SHiroo HAYASHI#   Place it further down in the file, typically where you normally check for
565daa1a0f9SHiroo HAYASHI#   header files or functions.
566daa1a0f9SHiroo HAYASHIgl_INIT
567daa1a0f9SHiroo HAYASHI
56836fa0e22SHiroo HAYASHIif test "$REPLACE_FNMATCH" != 0; then
56936fa0e22SHiroo HAYASHI	AC_DEFINE([USE_GNULIB_FNMATCH])
57036fa0e22SHiroo HAYASHIfi
57136fa0e22SHiroo HAYASHI
5722a0a0d8dSFabian GroffenAC_CHECK_FUNCS(asprintf)
573152f758cSDarren HiebertAC_CHECK_FUNCS(strstr)
574152f758cSDarren HiebertAC_CHECK_FUNCS(strcasecmp stricmp, break)
575152f758cSDarren HiebertAC_CHECK_FUNCS(strncasecmp strnicmp, break)
576152f758cSDarren Hiebert
577152f758cSDarren HiebertAC_CHECK_FUNCS(mkstemp, have_mkstemp=yes)
578152f758cSDarren Hiebertif test "$have_mkstemp" != yes ; then
579152f758cSDarren Hiebert	AC_CHECK_FUNCS(tempnam, have_tempnam=yes)
580152f758cSDarren Hiebertfi
581152f758cSDarren Hiebertif test "$have_mkstemp" != yes -a "$have_tempnam" != yes; then
582152f758cSDarren Hiebert	AC_CHECK_FUNCS(chmod)
583152f758cSDarren Hiebert	if test "$tmpdir_specified" = yes ; then
584d2f302e4SP.Montanus		AC_MSG_NOTICE(use of tmpnam overrides temporary directory selection)
585152f758cSDarren Hiebert	fi
586152f758cSDarren Hiebertfi
587152f758cSDarren Hiebert
588152f758cSDarren HiebertAC_CHECK_FUNCS(opendir findfirst _findfirst, break)
589152f758cSDarren HiebertAC_CHECK_FUNCS(strerror)
590152f758cSDarren Hiebert
591152f758cSDarren HiebertAC_CHECK_FUNCS(truncate, have_truncate=yes)
592152f758cSDarren Hiebert# === Cannot nest AC_CHECK_FUNCS() calls
593152f758cSDarren Hiebertif test "$have_truncate" != yes  ; then
594152f758cSDarren Hiebert	AC_CHECK_FUNCS(ftruncate, have_ftruncate=yes)
595152f758cSDarren Hiebert	if test "$have_ftruncate" != yes ; then
596152f758cSDarren Hiebert		AC_CHECK_FUNCS(chsize)
597152f758cSDarren Hiebert	fi
598152f758cSDarren Hiebertfi
599152f758cSDarren Hiebert
600152f758cSDarren HiebertAC_CHECK_FUNCS(setenv, have_setenv=yes)
601152f758cSDarren Hiebert# === Cannot nest AC_CHECK_FUNCS() calls
602152f758cSDarren Hiebertif test "$have_setenv" != yes ; then
603152f758cSDarren Hiebert	AC_CHECK_FUNCS(putenv, have_putenv=yes)
604152f758cSDarren Hiebert	if test "$have_putenv" = yes ; then
605152f758cSDarren Hiebert		AC_EGREP_HEADER(putenv, stdlib.h, have_putenv_prototype=yes)
606152f758cSDarren Hiebert		if test "$have_putenv_prototype" = yes ; then
607152f758cSDarren Hiebert			AC_MSG_CHECKING(putenv prototype)
608152f758cSDarren Hiebert			AC_EGREP_HEADER([[^A-Za-zo-9_]putenv[ 	]*\(.*const.*\)[ 	]*;],
609152f758cSDarren Hiebert				stdlib.h, AC_MSG_RESULT(correct),
610152f758cSDarren Hiebert				[
611152f758cSDarren Hiebert					AC_MSG_RESULT(no const)
612152f758cSDarren Hiebert					AC_DEFINE(NON_CONST_PUTENV_PROTOTYPE)
613152f758cSDarren Hiebert				])
614152f758cSDarren Hiebert		fi
615152f758cSDarren Hiebert	fi
616152f758cSDarren Hiebertfi
617152f758cSDarren Hiebert
618d96bd365SMasatake YAMATOhave_scandir=no
619d96bd365SMasatake YAMATOAC_CHECK_FUNCS(scandir,have_scandir=yes)
620d96bd365SMasatake YAMATO
621d96bd365SMasatake YAMATOhave_dirent_h=no
622d96bd365SMasatake YAMATOAC_CHECK_HEADERS(dirent.h,have_dirent_h=yes)
623152f758cSDarren Hiebert
624db918d55SK.Takatadnl Dummy check for setting $PKG_CONFIG.
625db918d55SK.TakataPKG_CHECK_EXISTS([dummy])
626db918d55SK.Takataif test "${enable_static}" = "yes"; then
627db918d55SK.Takata	PKG_CONFIG="$PKG_CONFIG --static"
628db918d55SK.Takatafi
629db918d55SK.Takata
6302bd78028STim HarderAC_ARG_ENABLE([xml],
6312b015c92STim Harder	[AS_HELP_STRING([--disable-xml],
6322b015c92STim Harder		[disable xml support])])
6332bd78028STim Harder
634a086aff1SMasatake YAMATOAH_TEMPLATE([HAVE_LIBXML],
635a086aff1SMasatake YAMATO	[Define this value if libxml is available.])
636745aa53bSMasatake YAMATOdnl About the condition of version
637745aa53bSMasatake YAMATOdnl see https://mail.gnome.org/archives/xml/2010-February/msg00008.html
6382b015c92STim HarderAS_IF([test "x$enable_xml" != "xno"], [
639745aa53bSMasatake YAMATO	PKG_CHECK_MODULES(LIBXML, [libxml-2.0 >= 2.7.7],
640a086aff1SMasatake YAMATO			       [have_libxml=yes
641a086aff1SMasatake YAMATO			       AC_DEFINE(HAVE_LIBXML)],
6422b015c92STim Harder			       [AS_IF([test "x$enable_xml" = "xyes"], [
6432b015c92STim Harder			           AC_MSG_ERROR([libxml2 not found])])])
6442bd78028STim Harder])
645a086aff1SMasatake YAMATOAM_CONDITIONAL(HAVE_LIBXML, test "x$have_libxml" = xyes)
646a086aff1SMasatake YAMATO
647db918d55SK.Takataif test "${enable_static}" = "yes"; then
648db918d55SK.Takata	if test "${have_libxml}" = "yes"; then
649db918d55SK.Takata		if test "${host_mingw}" = "yes"; then
650db918d55SK.Takata			dnl -DLIBXML_STATIC needs to be added manually.
651db918d55SK.Takata			LIBXML_CFLAGS="$LIBXML_CFLAGS -DLIBXML_STATIC"
652db918d55SK.Takata		fi
653db918d55SK.Takata	fi
654db918d55SK.Takatafi
655db918d55SK.Takata
6562bd78028STim HarderAC_ARG_ENABLE([json],
6572b015c92STim Harder	[AS_HELP_STRING([--disable-json],
6582b015c92STim Harder		[disable json support])])
6592bd78028STim Harder
6609b88981cSAman GuptaAH_TEMPLATE([HAVE_JANSSON],
6619b88981cSAman Gupta	[Define this value if jansson is available.])
66278d7d098STim Harderdnl This enforces explicit feature usage regardless of the libraries
66378d7d098STim Harderdnl available on the build system. This avoids automagic dependencies which
66478d7d098STim Harderdnl can cause issues for source-based distros [1].
66578d7d098STim Harderdnl [1]: https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Automagic_dependencies
6662b015c92STim HarderAS_IF([test "x$enable_json" != "xno"], [
6679b88981cSAman Gupta	PKG_CHECK_MODULES(JANSSON, jansson,
6689b88981cSAman Gupta			       [have_jansson=yes
6699b88981cSAman Gupta			       AC_DEFINE(HAVE_JANSSON)],
6702b015c92STim Harder			       [AS_IF([test "x$enable_json" = "xyes"], [
6712b015c92STim Harder			           AC_MSG_ERROR([jansson not found])])])
6722bd78028STim Harder])
6739b88981cSAman GuptaAM_CONDITIONAL(HAVE_JANSSON, test "x$have_jansson" = xyes)
6749b88981cSAman Gupta
675e7ed5190SHan-Wen NienhuysAH_TEMPLATE([HAVE_SECCOMP],
676e7ed5190SHan-Wen Nienhuys	[Define this value if libseccomp is available.])
677e7ed5190SHan-Wen NienhuysAC_ARG_ENABLE([seccomp],
678e7ed5190SHan-Wen Nienhuys	[AS_HELP_STRING([--disable-seccomp],
679e7ed5190SHan-Wen Nienhuys		[disable seccomp support])])
680e7ed5190SHan-Wen NienhuysAS_IF([test "x$enable_seccomp" != "xno"], [
681e7ed5190SHan-Wen Nienhuys	PKG_CHECK_MODULES(SECCOMP, libseccomp,
682e7ed5190SHan-Wen Nienhuys			       [have_seccomp=yes
683e7ed5190SHan-Wen Nienhuys			       AC_DEFINE(HAVE_SECCOMP)],
684e7ed5190SHan-Wen Nienhuys			       [AS_IF([test "x$enable_seccomp" = "xyes"], [
685e7ed5190SHan-Wen Nienhuys			           AC_MSG_ERROR([libseccomp not found])])])
686e7ed5190SHan-Wen Nienhuys])
687e7ed5190SHan-Wen Nienhuys
6882bd78028STim HarderAC_ARG_ENABLE([yaml],
6892b015c92STim Harder	[AS_HELP_STRING([--disable-yaml],
6902b015c92STim Harder		[disable yaml support])])
6912bd78028STim Harder
692288cd67dSMasatake YAMATOAH_TEMPLATE([HAVE_LIBYAML],
693288cd67dSMasatake YAMATO	[Define this value if libyaml is available.])
6942b015c92STim HarderAS_IF([test "x$enable_yaml" != "xno"], [
695288cd67dSMasatake YAMATO	PKG_CHECK_MODULES(LIBYAML, yaml-0.1,
696288cd67dSMasatake YAMATO			       [have_libyaml=yes
697288cd67dSMasatake YAMATO			       AC_DEFINE(HAVE_LIBYAML)],
6982b015c92STim Harder			       [AS_IF([test "x$enable_yaml" = "xyes"], [
6992b015c92STim Harder			           AC_MSG_ERROR([libyaml not found])])])
7002bd78028STim Harder])
701288cd67dSMasatake YAMATOAM_CONDITIONAL(HAVE_LIBYAML, test "x$have_libyaml" = xyes)
702288cd67dSMasatake YAMATO
7036a8d5b70SMasatake YAMATOAC_ARG_ENABLE([pcre2],
7046a8d5b70SMasatake YAMATO	[AS_HELP_STRING([--disable-pcre2],
7056a8d5b70SMasatake YAMATO		[disable pcre2 support])])
7066a8d5b70SMasatake YAMATO
7076a8d5b70SMasatake YAMATOAH_TEMPLATE([HAVE_PCRE2],
7086a8d5b70SMasatake YAMATO	[Define this value if pcre2 is available.])
7096a8d5b70SMasatake YAMATOAS_IF([test "x$enable_pcre2" != "xno"], [
7106a8d5b70SMasatake YAMATO	PKG_CHECK_MODULES(PCRE2, libpcre2-8,
7116a8d5b70SMasatake YAMATO			       [have_libpcre2_8=yes
7126a8d5b70SMasatake YAMATO			       AC_DEFINE(HAVE_PCRE2)],
7136a8d5b70SMasatake YAMATO			       [AS_IF([test "x$enable_pcre2" = "xyes"], [
7146a8d5b70SMasatake YAMATO			           AC_MSG_ERROR([libpcre2-8 not found])])])
7156a8d5b70SMasatake YAMATO])
7166a8d5b70SMasatake YAMATOAM_CONDITIONAL(HAVE_PCRE2, test "x$have_libpcre2_8" = xyes)
717a086aff1SMasatake YAMATO
7189a71e3b8SK.Takataif test "${enable_static}" = "yes"; then
7199a71e3b8SK.Takata	if test "${have_libpcre2_8}" = "yes"; then
7209a71e3b8SK.Takata		if test "${host_mingw}" = "yes"; then
7219a71e3b8SK.Takata			dnl -DPCRE2_STATIC needs to be added manually.
7229a71e3b8SK.Takata			PCRE2_CFLAGS="$PCRE2_CFLAGS -DPCRE2_STATIC"
7239a71e3b8SK.Takata		fi
7249a71e3b8SK.Takata	fi
7259a71e3b8SK.Takatafi
7269a71e3b8SK.Takata
7279a71e3b8SK.Takata
728152f758cSDarren Hiebert# Checks for missing prototypes
729152f758cSDarren Hiebert# -----------------------------
7306dd10afcSP.MontanusAC_MSG_NOTICE(checking for new missing prototypes)
731152f758cSDarren Hiebert
732152f758cSDarren HiebertCHECK_PROTO(stat,	sys/stat.h)
733152f758cSDarren HiebertCHECK_PROTO(lstat,	sys/stat.h)
734152f758cSDarren Hiebertif test "$have_truncate" = yes ; then
735152f758cSDarren Hiebert	CHECK_PROTO(truncate, unistd.h)
736152f758cSDarren Hiebertfi
737152f758cSDarren Hiebertif test "$have_ftruncate" = yes ; then
738152f758cSDarren Hiebert	CHECK_PROTO(ftruncate, unistd.h)
739152f758cSDarren Hiebertfi
740152f758cSDarren Hiebert
7412acdcfa1SYasuhiro Matsumoto# Process library configuration options
7422acdcfa1SYasuhiro Matsumoto# -------------------------------------
7432acdcfa1SYasuhiro Matsumoto
7449c4466a5SMasatake YAMATOICONV_LIBS=
745dc1d443eSK.Takataif test "$enable_iconv" != no ; then
7462acdcfa1SYasuhiro Matsumoto	save_LIBS="$LIBS"
74788c2797bSMasatake YAMATO	#
74888c2797bSMasatake YAMATO	# Working around for issue #1620
74988c2797bSMasatake YAMATO	#
75088c2797bSMasatake YAMATO	LIBS="$LIBS $LIBXML_LIBS"
75188c2797bSMasatake YAMATO	LIBS="$LIBS $JANSSON_LIBS"
75288c2797bSMasatake YAMATO	LIBS="$LIBS $SECCOMP_LIBS"
75388c2797bSMasatake YAMATO	LIBS="$LIBS $LIBYAML_LIBS"
75488c2797bSMasatake YAMATO	LIBS="$LIBS $ASPELL_LIBS"
7552acdcfa1SYasuhiro Matsumoto	LIBS="$LIBS -liconv"
75688c2797bSMasatake YAMATO	#
75788c2797bSMasatake YAMATO	AC_MSG_CHECKING(for iconv_open or libiconv_open with -liconv)
7582acdcfa1SYasuhiro Matsumoto	AC_LINK_IFELSE([AC_LANG_PROGRAM([
7592acdcfa1SYasuhiro Matsumoto			#include <iconv.h>
7602acdcfa1SYasuhiro Matsumoto		], [iconv_open("fr", "to")])], [
76188c2797bSMasatake YAMATO		#
76288c2797bSMasatake YAMATO		# iconv_open is available in libiconv.
76388c2797bSMasatake YAMATO		#
7649c4466a5SMasatake YAMATO		LIBS="$save_LIBS"
7659c4466a5SMasatake YAMATO		ICONV_LIBS=-liconv
76688c2797bSMasatake YAMATO		AC_MSG_RESULT([yes(iconv)])
7672acdcfa1SYasuhiro Matsumoto		AC_DEFINE(HAVE_ICONV)
76888c2797bSMasatake YAMATO		], [AC_LINK_IFELSE([AC_LANG_PROGRAM([
76988c2797bSMasatake YAMATO		#include <iconv.h>
77088c2797bSMasatake YAMATO		], [libiconv_open("fr", "to")])],[
77188c2797bSMasatake YAMATO		#
77288c2797bSMasatake YAMATO		# libiconv_open is available in libiconv
77388c2797bSMasatake YAMATO		#
77488c2797bSMasatake YAMATO		LIBS="$save_LIBS"
77588c2797bSMasatake YAMATO		ICONV_LIBS=-liconv
77688c2797bSMasatake YAMATO		AC_MSG_RESULT([yes(libiconv_open)])
77788c2797bSMasatake YAMATO		AC_DEFINE(HAVE_ICONV)
77888c2797bSMasatake YAMATO		AC_DEFINE(ICONV_USE_LIB_PREFIX)
7792acdcfa1SYasuhiro Matsumoto		],[LIBS="$save_LIBS"
7802acdcfa1SYasuhiro Matsumoto		AC_MSG_RESULT(no)
78188c2797bSMasatake YAMATO		AC_CHECK_FUNC(iconv_open, [
78288c2797bSMasatake YAMATO		#
78388c2797bSMasatake YAMATO		# iconv_open is available in libc.
78488c2797bSMasatake YAMATO		# No extra -l flag is needed.
78588c2797bSMasatake YAMATO		#
78688c2797bSMasatake YAMATO		AC_DEFINE(HAVE_ICONV)
78788c2797bSMasatake YAMATO		], [
78888c2797bSMasatake YAMATO		AC_MSG_ERROR([Could not find libiconv. Please install libiconv and libiconv-devel.])])])
78988c2797bSMasatake YAMATO		])
7909c4466a5SMasatake YAMATO	AC_SUBST([ICONV_LIBS])
7912acdcfa1SYasuhiro Matsumotofi
7922acdcfa1SYasuhiro Matsumoto
79398a480efSMasatake YAMATO# Checks for declaration
79498a480efSMasatake YAMATO# ----------------------
795af934330SMasatake YAMATOAC_CHECK_DECLS([__environ], [], [], [
79698a480efSMasatake YAMATO[#include <unistd.h>]
79798a480efSMasatake YAMATO])
7981f00f07bSMasatake YAMATOAC_CHECK_DECLS([_NSGetEnviron],[],[],[
7991f00f07bSMasatake YAMATO[#include <crt_externs.h>]
8001f00f07bSMasatake YAMATO])
801ad91e260SMasatake YAMATOAC_CHECK_DECLS([strnlen],[have_strnlen=yes],[],[
802ad91e260SMasatake YAMATO[#include <string.h>]
803ad91e260SMasatake YAMATO])
804ad91e260SMasatake YAMATOAM_CONDITIONAL(HAVE_STRNLEN, test "x$have_strnlen" = xyes)
805152f758cSDarren Hiebert
80624906f53Sleleliu008if test "$cross_compiling" = "yes"; then
8071daaf2b9Sleleliu008    AC_MSG_CHECKING(whether strnlen is declared for build)
8081daaf2b9Sleleliu008    TEMP_DIR_FOR_CHECKING=$(mktemp -d || exit 1)
8091daaf2b9Sleleliu008    cat > "$TEMP_DIR_FOR_CHECKING/test.c" <<EOF
8101daaf2b9Sleleliu008#include<string.h>
8111daaf2b9Sleleliu008int main() { strnlen("abcd",1); return 0;}
8121daaf2b9Sleleliu008EOF
8131daaf2b9Sleleliu008
8141daaf2b9Sleleliu008    if $CC_FOR_BUILD $CPPFLAGS_FOR_BUILD $CFLAGS_FOR_BUILD -o "$TEMP_DIR_FOR_CHECKING/test.o" "$TEMP_DIR_FOR_CHECKING/test.c" > /dev/null 2>&1 ; then
8151daaf2b9Sleleliu008        have_strnlen_for_build=yes
8161daaf2b9Sleleliu008    else
8171daaf2b9Sleleliu008        have_strnlen_for_build=no
8181daaf2b9Sleleliu008    fi
8191daaf2b9Sleleliu008    AC_MSG_RESULT($have_strnlen_for_build)
8201daaf2b9Sleleliu008    AM_CONDITIONAL(HAVE_STRNLEN_FOR_BUILD, test "x$have_strnlen_for_build" = xyes)
82124906f53Sleleliu008else
82224906f53Sleleliu008    AM_CONDITIONAL(HAVE_STRNLEN_FOR_BUILD, test "x$have_strnlen" = xyes)
82324906f53Sleleliu008fi
8241daaf2b9Sleleliu008
8255379f429SMasatake YAMATOif test "$CTAGS_NAME_EXECUTABLE" != ctags ; then
8265379f429SMasatake YAMATO	AC_MSG_NOTICE(Changing name of 'ctags' for $CTAGS_NAME_EXECUTABLE)
8271eace6c6SJonathan Buschmannfi
8281eace6c6SJonathan Buschmann
8295379f429SMasatake YAMATOif test "$ETAGS_NAME_EXECUTABLE" != etags ; then
8305379f429SMasatake YAMATO	AC_MSG_NOTICE(Changing name of 'etags' for $ETAGS_NAME_EXECUTABLE)
8311eace6c6SJonathan Buschmannfi
8321eace6c6SJonathan Buschmann
833152f758cSDarren Hiebert# Output files
834152f758cSDarren Hiebert# ------------
835152f758cSDarren Hiebert
836de9a8ebeSMasatake YAMATOAC_CHECK_FUNCS(mblen)
837152f758cSDarren Hiebert
83872ae6981SMasatake YAMATOAC_CONFIG_FILES([Makefile gnulib/Makefile man/GNUmakefile])
8391eace6c6SJonathan Buschmann
8401eace6c6SJonathan BuschmannAC_OUTPUT
841152f758cSDarren Hiebert
842*1dbf25f5SMasatake YAMATOAC_MSG_RESULT([
843*1dbf25f5SMasatake YAMATO##########################################################################
844*1dbf25f5SMasatake YAMATONow you can run make or gmake, when you run as make, besure it is GNU make.
845*1dbf25f5SMasatake YAMATO##########################################################################
846*1dbf25f5SMasatake YAMATO])
847*1dbf25f5SMasatake YAMATO
848152f758cSDarren Hiebert# vim:ts=4:sw=4:
849