blob: 445ab217cd009ff939d0a5c06972c4ba35ccd270 [file] [log] [blame]
Bram Moolenaar3f7d0902016-11-12 21:13:42 +01001dnl configure.ac: autoconf script for Vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
Paul Ollis65745772022-06-05 16:55:54 +01003dnl Process this file with autoconf 2.69 to produce "configure".
4dnl This should also work with other versions of autoconf, but 2.70 and later
5dnl generate lots of hard to fix "obsolete" warnings.
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
Illia Bobyrf39842f2023-08-27 18:21:23 +02007AC_INIT
8AC_CONFIG_SRCDIR([vim.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01009AC_CONFIG_HEADERS(auto/config.h:config.h.in)
Bram Moolenaar071d4272004-06-13 20:20:40 +000010
11dnl Being able to run configure means the system is Unix (compatible).
12AC_DEFINE(UNIX)
13AC_PROG_MAKE_SET
14
15dnl Checks for programs.
Bram Moolenaar22640082018-04-19 20:39:41 +020016AC_PROG_CC_C99 dnl required by almost everything
Bram Moolenaarc0394412017-04-20 20:20:23 +020017AC_PROG_CPP dnl required by header file checks
Illia Bobyrf39842f2023-08-27 18:21:23 +020018AC_PROG_EGREP dnl required by AC_EGREP_CPP
Bram Moolenaarc0394412017-04-20 20:20:23 +020019AC_PROG_FGREP dnl finds working grep -F
Bram Moolenaarc0394412017-04-20 20:20:23 +020020AC_PROG_AWK dnl required for "make html" in ../doc
Bram Moolenaar071d4272004-06-13 20:20:40 +000021
22dnl Don't strip if we don't have it
23AC_CHECK_PROG(STRIP, strip, strip, :)
24
Bram Moolenaar325b7a22004-07-05 15:58:32 +000025dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000026AC_EXEEXT
27
Bram Moolenaar446cb832008-06-24 21:56:24 +000028AC_HEADER_SYS_WAIT
29
Bram Moolenaar561f8a52018-04-17 22:02:45 +020030dnl Check that the C99 features that Vim uses are supported:
Bram Moolenaar22640082018-04-19 20:39:41 +020031if test x"$ac_cv_prog_cc_c99" != xno; then
32 dnl If the compiler doesn't explicitly support C99, then check
33 dnl for the specific features Vim uses
34
35 AC_TYPE_LONG_LONG_INT
36 if test "$ac_cv_type_long_long_int" = no; then
37 AC_MSG_FAILURE([Compiler does not support long long int])
38 fi
39
40 AC_MSG_CHECKING([if the compiler supports trailing commas])
41 trailing_commas=no
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010042 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
Bram Moolenaar22640082018-04-19 20:39:41 +020043 enum {
44 one,
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010045 };])],
Bram Moolenaar22640082018-04-19 20:39:41 +020046 [AC_MSG_RESULT(yes); trailing_commas=yes],
47 [AC_MSG_RESULT(no)])
48 if test "$trailing_commas" = no; then
49 AC_MSG_FAILURE([Compiler does not support trailing comma in enum])
50 fi
51
52 AC_MSG_CHECKING([if the compiler supports C++ comments])
53 slash_comments=no
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010054 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
55 [// C++ comments?])],
Bram Moolenaar22640082018-04-19 20:39:41 +020056 [AC_MSG_RESULT(yes); slash_comments=yes],
57 [AC_MSG_RESULT(no)])
58 if test "$slash_comments" = no; then
59 AC_MSG_FAILURE([Compiler does not support C++ comments])
60 fi
61fi
Bram Moolenaar561f8a52018-04-17 22:02:45 +020062
Bram Moolenaar8f1dde52020-06-05 23:16:29 +020063dnl If $SOURCE_DATE_EPOCH is present in the environment, use that as the
64dnl "compiled" timestamp in :version's output. Attempt to get the formatted
65dnl date using GNU date syntax, BSD date syntax, and finally falling back to
66dnl just using the current time.
67if test -n "$SOURCE_DATE_EPOCH"; then
68 DATE_FMT="%b %d %Y %H:%M:%S"
69 BUILD_DATE=$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u "+$DATE_FMT")
70 AC_DEFINE_UNQUOTED(BUILD_DATE, ["$BUILD_DATE"])
71 BUILD_DATE_MSG=-"echo -e '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nNOTE: build date/time is fixed: $BUILD_DATE\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='"
72 AC_SUBST(BUILD_DATE_MSG)
73fi
74
Bram Moolenaarf788a062011-12-14 20:51:25 +010075dnl Check for the flag that fails if stuff are missing.
76
77AC_MSG_CHECKING(--enable-fail-if-missing argument)
78AC_ARG_ENABLE(fail_if_missing,
79 [ --enable-fail-if-missing Fail if dependencies on additional features
Bram Moolenaare5303952022-06-19 17:05:47 +010080 specified on the command line are missing.],
Bram Moolenaarf788a062011-12-14 20:51:25 +010081 [fail_if_missing="yes"],
82 [fail_if_missing="no"])
83AC_MSG_RESULT($fail_if_missing)
84
Bram Moolenaard2a05492018-07-27 22:35:15 +020085dnl Keep original value to check later.
86with_x_arg="$with_x"
87
Bram Moolenaar071d4272004-06-13 20:20:40 +000088dnl Set default value for CFLAGS if none is defined or it's empty
89if test -z "$CFLAGS"; then
90 CFLAGS="-O"
Bram Moolenaar4d8479b2021-01-31 14:36:06 +010091 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall -Wno-deprecated-declarations"
Bram Moolenaar071d4272004-06-13 20:20:40 +000092fi
Rose00d07e72023-05-06 18:07:14 +010093
Bram Moolenaar071d4272004-06-13 20:20:40 +000094if test "$GCC" = yes; then
Rose00d07e72023-05-06 18:07:14 +010095 dnl Method that should work for nearly all gcc versions.
Bram Moolenaarc8836f72014-04-12 13:12:24 +020096 gccversion=`$CC -dumpversion`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000097 if test "x$gccversion" = "x"; then
98 dnl old method; fall-back for when -dumpversion doesn't work
Bram Moolenaarc8836f72014-04-12 13:12:24 +020099 gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000100 fi
Rose00d07e72023-05-06 18:07:14 +0100101
102 dnl Gcc version 4.0.1 was reported to cause trouble on Macintosh by Marcin
103 dnl Dalecki. For Mac with Intel the symptom reported is: malloc() reports
104 dnl double free. This happens in expand_filename(), because the optimizer
105 dnl swaps two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000106 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000107 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
109 else
110 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
111 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
112 CFLAGS="$CFLAGS -fno-strength-reduce"
113 fi
114 fi
115fi
116
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200117dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
118dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
119dnl the version number of the clang in use.
120dnl Note that this does not work to get the version of clang 3.1 or 3.2.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100121AC_MSG_CHECKING(for clang version)
122CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang[[^0-9]]*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'`
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200123if test x"$CLANG_VERSION_STRING" != x"" ; then
124 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
125 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
126 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
127 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
128 AC_MSG_RESULT($CLANG_VERSION)
129 dnl If you find the same issue with versions earlier than 500.2.75,
130 dnl change the constant 500002075 below appropriately. To get the
131 dnl integer corresponding to a version number, refer to the
132 dnl definition of CLANG_VERSION above.
Bram Moolenaarebd211c2021-01-30 19:33:36 +0100133 dnl Clang 11 reports "11", assume Clang 10 and later work like this.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100134 AC_MSG_CHECKING(if clang supports -fno-strength-reduce)
Bram Moolenaarebd211c2021-01-30 19:33:36 +0100135 if test "$CLANG_MAJOR" -ge 10 -o "$CLANG_VERSION" -ge 500002075 ; then
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100136 AC_MSG_RESULT(no)
137 CFLAGS=`echo "$CFLAGS" | sed -e 's/-fno-strength-reduce/ /'`
138 else
139 AC_MSG_RESULT(yes)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200140 fi
141else
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100142 AC_MSG_RESULT(N/A)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200143fi
144
Bram Moolenaar446cb832008-06-24 21:56:24 +0000145dnl If configure thinks we are cross compiling, there might be something
146dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar839e9542016-04-14 16:46:02 +0200147CROSS_COMPILING=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000149 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar839e9542016-04-14 16:46:02 +0200150 CROSS_COMPILING=1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151fi
Bram Moolenaar839e9542016-04-14 16:46:02 +0200152AC_SUBST(CROSS_COMPILING)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000153
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000154dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
155dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
157
158if test -f ./toolcheck; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100159 AC_MSG_CHECKING(for buggy tools)
160 sh ./toolcheck 1>&AS_MESSAGE_FD
Bram Moolenaar071d4272004-06-13 20:20:40 +0000161fi
162
163OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
164
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000165dnl When cross-compiling set $vim_cv_uname_output, $vim_cv_uname_r_output and
166dnl $vim_cv_uname_m_output to the desired value for the target system
167AC_MSG_CHECKING(uname)
168if test "x$vim_cv_uname_output" = "x" ; then
169 vim_cv_uname_output=`(uname) 2>/dev/null`
170 AC_MSG_RESULT($vim_cv_uname_output)
171else
172 AC_MSG_RESULT([$vim_cv_uname_output (cached)])
173fi
174
175AC_MSG_CHECKING(uname -r)
176if test "x$vim_cv_uname_r_output" = "x" ; then
177 vim_cv_uname_r_output=`(uname -r) 2>/dev/null`
178 AC_MSG_RESULT($vim_cv_uname_r_output)
179else
180 AC_MSG_RESULT([$vim_cv_uname_r_output (cached)])
181fi
182
183AC_MSG_CHECKING(uname -m)
184if test "x$vim_cv_uname_m_output" = "x" ; then
185 vim_cv_uname_m_output=`(uname -m) 2>/dev/null`
186 AC_MSG_RESULT($vim_cv_uname_m_output)
187else
188 AC_MSG_RESULT([$vim_cv_uname_m_output (cached)])
189fi
190
Bram Moolenaarb3f74062020-02-26 16:16:53 +0100191AC_MSG_CHECKING(for Haiku)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000192case $vim_cv_uname_output in
Bram Moolenaarb3f74062020-02-26 16:16:53 +0100193 Haiku) HAIKU=yes; AC_MSG_RESULT(yes);;
194 *) HAIKU=no; AC_MSG_RESULT(no);;
195esac
196
Bram Moolenaar071d4272004-06-13 20:20:40 +0000197dnl If QNX is found, assume we don't want to use Xphoton
198dnl unless it was specifically asked for (--with-x)
199AC_MSG_CHECKING(for QNX)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000200case $vim_cv_uname_output in
Bram Moolenaar071d4272004-06-13 20:20:40 +0000201 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
202 test -z "$with_x" && with_x=no
203 QNX=yes; AC_MSG_RESULT(yes);;
204 *) QNX=no; AC_MSG_RESULT(no);;
205esac
206
207dnl Check for Darwin and MacOS X
208dnl We do a check for MacOS X in the very beginning because there
209dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210AC_MSG_CHECKING([for Darwin (Mac OS X)])
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000211if test "$vim_cv_uname_output" = Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000212 AC_MSG_RESULT(yes)
Bram Moolenaard0573012017-10-28 21:11:06 +0200213 MACOS_X=yes
Bram Moolenaar52ecaaa2018-05-12 21:38:13 +0200214 CPPFLAGS="$CPPFLAGS -DMACOS_X"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000215
216 AC_MSG_CHECKING(--disable-darwin argument)
217 AC_ARG_ENABLE(darwin,
218 [ --disable-darwin Disable Darwin (Mac OS X) support.],
219 , [enable_darwin="yes"])
220 if test "$enable_darwin" = "yes"; then
221 AC_MSG_RESULT(no)
222 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200223 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224 AC_MSG_RESULT(yes)
225 else
226 AC_MSG_RESULT([no, Darwin support disabled])
227 enable_darwin=no
228 fi
229 else
230 AC_MSG_RESULT([yes, Darwin support excluded])
231 fi
232
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000233 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000234 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000235 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000236 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000237
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100238 AC_MSG_CHECKING(--with-developer-dir argument)
239 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
240 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
Bram Moolenaar32d03b32015-11-19 13:46:48 +0100241 AC_MSG_RESULT(not present))
Bram Moolenaare5303952022-06-19 17:05:47 +0100242
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100243 if test "x$DEVELOPER_DIR" = "x"; then
244 AC_PATH_PROG(XCODE_SELECT, xcode-select)
245 if test "x$XCODE_SELECT" != "x"; then
246 AC_MSG_CHECKING(for developer dir using xcode-select)
247 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
248 AC_MSG_RESULT([$DEVELOPER_DIR])
249 else
250 DEVELOPER_DIR=/Developer
251 fi
252 fi
253
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000254 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000255 AC_MSG_CHECKING(for 10.4 universal SDK)
256 dnl There is a terrible inconsistency (but we appear to get away with it):
257 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
258 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
259 dnl tests using the preprocessor are actually done with the wrong header
260 dnl files. $LDFLAGS is set at the end, because configure uses it together
261 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000262 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000263 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000264 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100265 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100266 AC_LINK_IFELSE([AC_LANG_PROGRAM([ ], [ ])],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000267 AC_MSG_RESULT(found, will make universal binary),
268
269 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000270 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000271 AC_MSG_CHECKING(if Intel architecture is supported)
272 CPPFLAGS="$CPPFLAGS -arch i386"
273 LDFLAGS="$save_ldflags -arch i386"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100274 AC_LINK_IFELSE([AC_LANG_PROGRAM([ ], [ ])],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000275 AC_MSG_RESULT(yes); MACARCH="intel",
276 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000277 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000278 CPPFLAGS="$save_cppflags -arch ppc"
279 LDFLAGS="$save_ldflags -arch ppc"))
280 elif test "x$MACARCH" = "xintel"; then
281 CPPFLAGS="$CPPFLAGS -arch intel"
282 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000283 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000284 CPPFLAGS="$CPPFLAGS -arch ppc"
285 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000286 fi
287
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288 if test "$enable_darwin" = "yes"; then
Bram Moolenaard0573012017-10-28 21:11:06 +0200289 MACOS_X_DARWIN=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200290 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000291 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaare5303952022-06-19 17:05:47 +0100292 dnl os_macosx.m implements timer_create() and friends
293 AC_DEFINE(HAVE_TIMER_CREATE)
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000294 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100295 dnl Removed -no-cpp-precomp, only for very old compilers.
Bram Moolenaard0573012017-10-28 21:11:06 +0200296 CPPFLAGS="$CPPFLAGS -DMACOS_X_DARWIN"
Bram Moolenaar040f9752020-08-11 23:08:48 +0200297
298 dnl Assume we don't want X11 unless it was specifically asked for
Bram Moolenaar0b40d082022-03-08 13:32:37 +0000299 dnl (--with-x) or Motif or GTK GUI is used.
300 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xgtk2 -a "X$enable_gui" != Xgtk3; then
Bram Moolenaar040f9752020-08-11 23:08:48 +0200301 with_x=no
302 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303 fi
304else
305 AC_MSG_RESULT(no)
306fi
307
Bram Moolenaar39766a72013-11-03 00:41:00 +0100308dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
309dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100310AC_CHECK_HEADERS(AvailabilityMacros.h)
Evan Miller25448072022-12-30 10:42:23 +0000311# 10.5 and earlier lack dispatch
312AC_CHECK_HEADERS(dispatch/dispatch.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100313
Bram Moolenaar071d4272004-06-13 20:20:40 +0000314AC_SUBST(OS_EXTRA_SRC)
315AC_SUBST(OS_EXTRA_OBJ)
316
317dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
318dnl Only when the directory exists and it wasn't there yet.
319dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000320dnl Skip all of this when cross-compiling.
321if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000322 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000323 have_local_include=''
324 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000325 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
326 --without-local-dir do not search /usr/local for local libraries.], [
327 local_dir="$withval"
328 case "$withval" in
329 */*) ;;
330 no)
331 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200332 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000333 have_local_lib=yes
334 ;;
335 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
336 esac
337 AC_MSG_RESULT($local_dir)
338 ], [
339 local_dir=/usr/local
340 AC_MSG_RESULT(Defaulting to $local_dir)
341 ])
342 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000343 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100344 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
345 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000346 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000347 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000348 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000349 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
350 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000351 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000352 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000353 fi
354 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000355 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
356 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000357 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000358 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000359 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000360 fi
361fi
362
363AC_MSG_CHECKING(--with-vim-name argument)
364AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
365 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000366 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000367AC_SUBST(VIMNAME)
368AC_MSG_CHECKING(--with-ex-name argument)
369AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
370 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
371 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
372AC_SUBST(EXNAME)
373AC_MSG_CHECKING(--with-view-name argument)
374AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
375 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
376 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
377AC_SUBST(VIEWNAME)
378
379AC_MSG_CHECKING(--with-global-runtime argument)
Bram Moolenaar9d302ad2018-12-21 11:48:51 +0100380AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath', comma-separated for multiple directories],
381 RUNTIME_GLOBAL="$withval"; AC_MSG_RESULT($withval),
Bram Moolenaar071d4272004-06-13 20:20:40 +0000382 AC_MSG_RESULT(no))
383
Bram Moolenaar9d302ad2018-12-21 11:48:51 +0100384if test "X$RUNTIME_GLOBAL" != "X"; then
385 RUNTIME_GLOBAL_AFTER=$(printf -- "$RUNTIME_GLOBAL\\n" | $AWK -F, 'BEGIN { comma=0 } { for (i = NF; i > 0; i--) { if (comma) { printf ",%s/after", $i } else { printf "%s/after", $i; comma=1 } } } END { printf "\n" }')
386 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$RUNTIME_GLOBAL")
387 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL_AFTER, "$RUNTIME_GLOBAL_AFTER")
388fi
389
Bram Moolenaar071d4272004-06-13 20:20:40 +0000390AC_MSG_CHECKING(--with-modified-by argument)
391AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
392 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
393 AC_MSG_RESULT(no))
394
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200395dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396AC_MSG_CHECKING(if character set is EBCDIC)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100397AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ ],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000398[ /* TryCompile function for CharSet.
399 Treat any failure as ASCII for compatibility with existing art.
400 Use compile-time rather than run-time tests for cross-compiler
401 tolerance. */
402#if '0'!=240
403make an error "Character set is not EBCDIC"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100404#endif ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000405[ # TryCompile action if true
406cf_cv_ebcdic=yes ],
407[ # TryCompile action if false
408cf_cv_ebcdic=no])
409# end of TryCompile ])
410# end of CacheVal CvEbcdic
411AC_MSG_RESULT($cf_cv_ebcdic)
412case "$cf_cv_ebcdic" in #(vi
413 yes) AC_DEFINE(EBCDIC)
414 line_break='"\\n"'
415 ;;
416 *) line_break='"\\012"';;
417esac
418AC_SUBST(line_break)
419
420if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200421dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200422AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000423case $vim_cv_uname_output in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200424 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000425 dnl If using cc the environment variable _CC_CCMODE must be
426 dnl set to "1", so that some compiler extensions are enabled.
427 dnl If using c89 the environment variable is named _CC_C89MODE.
428 dnl Note: compile with c89 never tested.
429 if test "$CC" = "cc"; then
430 ccm="$_CC_CCMODE"
431 ccn="CC"
432 else
433 if test "$CC" = "c89"; then
434 ccm="$_CC_C89MODE"
435 ccn="C89"
436 else
437 ccm=1
438 fi
439 fi
440 if test "$ccm" != "1"; then
441 echo ""
442 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200443 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200444 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000445 echo " Do:"
446 echo " export _CC_${ccn}MODE=1"
447 echo " and then call configure again."
448 echo "------------------------------------------"
449 exit 1
450 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200451 # Set CFLAGS for configure process.
452 # This will be reset later for config.mk.
453 # Use haltonmsg to force error for missing H files.
454 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
455 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000456 AC_MSG_RESULT(yes)
457 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200458 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000459 AC_MSG_RESULT(no)
460 ;;
461esac
462fi
463
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200464dnl Set QUOTESED. Needs additional backslashes on zOS
465if test "$zOSUnix" = "yes"; then
Bram Moolenaarabcbb0e2020-12-23 12:33:42 +0100466 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/' -e 's/ */ /g'"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200467else
Bram Moolenaarabcbb0e2020-12-23 12:33:42 +0100468 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/' -e 's/ */ /g'"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200469fi
470AC_SUBST(QUOTESED)
471
472
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200473dnl Link with -lsmack for Smack stuff; if not found
474AC_MSG_CHECKING(--disable-smack argument)
475AC_ARG_ENABLE(smack,
476 [ --disable-smack Do not check for Smack support.],
477 , enable_smack="yes")
478if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200479 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200480 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200481else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200482 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200483fi
484if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200485 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
486fi
487if test "$enable_smack" = "yes"; then
488 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
489 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
490 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200491 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200492fi
493if test "$enable_smack" = "yes"; then
494 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200495 [LIBS="$LIBS -lattr"
496 found_smack="yes"
497 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000498fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000499
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200500dnl When smack was found don't search for SELinux
501if test "x$found_smack" = "x"; then
502 dnl Link with -lselinux for SELinux stuff; if not found
503 AC_MSG_CHECKING(--disable-selinux argument)
504 AC_ARG_ENABLE(selinux,
505 [ --disable-selinux Do not check for SELinux support.],
506 , enable_selinux="yes")
507 if test "$enable_selinux" = "yes"; then
508 AC_MSG_RESULT(no)
509 AC_CHECK_LIB(selinux, is_selinux_enabled,
Bram Moolenaare4b78e22017-12-07 22:29:11 +0100510 [AC_CHECK_HEADER(selinux/selinux.h,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200511 [LIBS="$LIBS -lselinux"
Bram Moolenaare4b78e22017-12-07 22:29:11 +0100512 AC_DEFINE(HAVE_SELINUX)])])
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200513 else
514 AC_MSG_RESULT(yes)
515 fi
516fi
517
Bram Moolenaar071d4272004-06-13 20:20:40 +0000518dnl Check user requested features.
519
520AC_MSG_CHECKING(--with-features argument)
Martin Tournoij25f3a142022-10-08 19:26:41 +0100521AC_ARG_WITH(features, [ --with-features=TYPE tiny, normal or huge (default: huge)],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000522 features="$withval"; AC_MSG_RESULT($features),
Bram Moolenaar23c4f712016-01-20 22:11:59 +0100523 features="huge"; AC_MSG_RESULT(Defaulting to huge))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000524
Martin Tournoij7904fa42022-10-04 16:28:45 +0100525dnl "small" is supported for backwards compatibility, now an alias for "tiny"
Martin Tournoij25f3a142022-10-08 19:26:41 +0100526dnl "big" is supported for backwards compatibility, now an alias for "normal"
Martin Tournoij7904fa42022-10-04 16:28:45 +0100527case "$features" in
Martin Tournoij25f3a142022-10-08 19:26:41 +0100528 small) features="tiny" ;;
529 big) features="normal" ;;
Martin Tournoij7904fa42022-10-04 16:28:45 +0100530esac
531
Bram Moolenaar071d4272004-06-13 20:20:40 +0000532dovimdiff=""
533dogvimdiff=""
534case "$features" in
535 tiny) AC_DEFINE(FEAT_TINY) ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +0000536 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
537 dogvimdiff="installgvimdiff" ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +0000538 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
539 dogvimdiff="installgvimdiff" ;;
540 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
541esac
542
543AC_SUBST(dovimdiff)
544AC_SUBST(dogvimdiff)
545
Martin Tournoij7904fa42022-10-04 16:28:45 +0100546if test "x$features" = "xtiny"; then
Bram Moolenaar12471262022-01-18 11:11:25 +0000547 has_eval=no
548else
549 has_eval=yes
550fi
551
Bram Moolenaar071d4272004-06-13 20:20:40 +0000552AC_MSG_CHECKING(--with-compiledby argument)
553AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
554 compiledby="$withval"; AC_MSG_RESULT($withval),
555 compiledby=""; AC_MSG_RESULT(no))
556AC_SUBST(compiledby)
557
558AC_MSG_CHECKING(--disable-xsmp argument)
559AC_ARG_ENABLE(xsmp,
560 [ --disable-xsmp Disable XSMP session management],
561 , enable_xsmp="yes")
562
563if test "$enable_xsmp" = "yes"; then
564 AC_MSG_RESULT(no)
565 AC_MSG_CHECKING(--disable-xsmp-interact argument)
566 AC_ARG_ENABLE(xsmp-interact,
567 [ --disable-xsmp-interact Disable XSMP interaction],
568 , enable_xsmp_interact="yes")
569 if test "$enable_xsmp_interact" = "yes"; then
570 AC_MSG_RESULT(no)
571 AC_DEFINE(USE_XSMP_INTERACT)
572 else
573 AC_MSG_RESULT(yes)
574 fi
575else
576 AC_MSG_RESULT(yes)
577fi
578
Bram Moolenaar67ffb412022-01-08 13:36:57 +0000579AC_MSG_CHECKING([diff feature])
Martin Tournoij7904fa42022-10-04 16:28:45 +0100580if test "x$features" = "xtiny"; then
Bram Moolenaar67ffb412022-01-08 13:36:57 +0000581 AC_MSG_RESULT([disabled in $features version])
582else
583 AC_MSG_RESULT(enabled)
584 AC_DEFINE(FEAT_DIFF)
585 XDIFF_OBJS_USED="\$(XDIFF_OBJS)"
586 AC_SUBST(XDIFF_OBJS_USED)
587fi
588
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200589dnl Check for Lua feature.
590AC_MSG_CHECKING(--enable-luainterp argument)
591AC_ARG_ENABLE(luainterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200592 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200593 [enable_luainterp="no"])
594AC_MSG_RESULT($enable_luainterp)
595
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200596if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +0000597 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +0100598 AC_MSG_ERROR([cannot use Lua with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100599 fi
600
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200601 dnl -- find the lua executable
602 AC_SUBST(vi_cv_path_lua)
603
604 AC_MSG_CHECKING(--with-lua-prefix argument)
605 AC_ARG_WITH(lua_prefix,
606 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
607 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200608 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200609
610 if test "X$with_lua_prefix" != "X"; then
611 vi_cv_path_lua_pfx="$with_lua_prefix"
612 else
613 AC_MSG_CHECKING(LUA_PREFIX environment var)
614 if test "X$LUA_PREFIX" != "X"; then
615 AC_MSG_RESULT("$LUA_PREFIX")
616 vi_cv_path_lua_pfx="$LUA_PREFIX"
617 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200618 AC_MSG_RESULT([not set, default to /usr])
619 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200620 fi
621 fi
622
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200623 AC_MSG_CHECKING(--with-luajit)
624 AC_ARG_WITH(luajit,
625 [ --with-luajit Link with LuaJIT instead of Lua.],
626 [vi_cv_with_luajit="$withval"],
627 [vi_cv_with_luajit="no"])
628 AC_MSG_RESULT($vi_cv_with_luajit)
629
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200630 LUA_INC=
631 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200632 if test "x$vi_cv_with_luajit" != "xno"; then
633 dnl -- try to find LuaJIT executable
634 AC_PATH_PROG(vi_cv_path_luajit, luajit)
635 if test "X$vi_cv_path_luajit" != "X"; then
636 dnl -- find LuaJIT version
637 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
ichizokbddc6ad2023-08-29 20:54:32 +0200638 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-*[[a-z0-9]]*\)* .*/\1/'` ])
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200639 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
640 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
641 vi_cv_path_lua="$vi_cv_path_luajit"
642 vi_cv_version_lua="$vi_cv_version_lua_luajit"
643 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200644 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200645 dnl -- try to find Lua executable
646 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
647 if test "X$vi_cv_path_plain_lua" != "X"; then
648 dnl -- find Lua version
649 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
650 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
651 fi
652 vi_cv_path_lua="$vi_cv_path_plain_lua"
653 vi_cv_version_lua="$vi_cv_version_plain_lua"
654 fi
655 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
656 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100657 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200658 AC_MSG_RESULT(yes)
659 LUA_INC=/luajit-$vi_cv_version_luajit
660 fi
661 fi
662 if test "X$LUA_INC" = "X"; then
663 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100664 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200665 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200666 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200667 AC_MSG_RESULT(no)
668 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100669 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200670 AC_MSG_RESULT(yes)
671 LUA_INC=/lua$vi_cv_version_lua
672 else
673 AC_MSG_RESULT(no)
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200674
675 # Detect moonjit:
676 # https://groups.google.com/forum/#!topic/vim_use/O0vek60WuTk
677 lua_suf=/moonjit-2.3
678 inc_path="$vi_cv_path_lua_pfx/include"
Bram Moolenaarad4dc832020-04-20 16:21:53 +0200679 for dir in "$inc_path"/moonjit-[[0-9]]* ; do
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200680 if test -d "$dir" ; then
Bram Moolenaara79a8942020-12-17 20:50:25 +0100681 lua_suf=`basename "$dir"`
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200682 lua_suf="/$lua_suf"
683 break
684 fi
685 done
686 AC_MSG_CHECKING(if lua.h can be found in $inc_path$lua_suf)
687 if test -f "$inc_path$lua_suf/lua.h"; then
688 AC_MSG_RESULT(yes)
689 LUA_INC=$lua_suf
690 else
691 AC_MSG_RESULT(no)
692 vi_cv_path_lua_pfx=
693 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200694 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200695 fi
696 fi
697 fi
698
699 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200700 if test "x$vi_cv_with_luajit" != "xno"; then
701 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
702 if test "X$multiarch" != "X"; then
703 lib_multiarch="lib/${multiarch}"
704 else
705 lib_multiarch="lib"
706 fi
707 if test "X$vi_cv_version_lua" = "X"; then
708 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
709 else
710 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
711 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200712 else
Bram Moolenaar869113f2023-03-31 21:29:00 +0100713 dnl Test alternate lib location including version
714 if test -d "${vi_cv_path_lua_pfx}/lib/lua$vi_cv_version_lua"; then
715 LUALIBDIR="lib/lua$vi_cv_version_lua"
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200716 else
Bram Moolenaar869113f2023-03-31 21:29:00 +0100717 LUALIBDIR=lib
718 fi
719 if test "X$LUA_INC" != "X"; then
720 dnl Test alternate name including version
721 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${LUALIBDIR} -llua$vi_cv_version_lua"
722 else
723 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${LUALIBDIR} -llua"
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200724 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200725 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200726 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200727 lua_ok="yes"
728 else
729 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
730 libs_save=$LIBS
731 LIBS="$LIBS $LUA_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100732 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200733 AC_MSG_RESULT(yes); lua_ok="yes",
734 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
735 LIBS=$libs_save
736 fi
737 if test "x$lua_ok" = "xyes"; then
738 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
739 LUA_SRC="if_lua.c"
740 LUA_OBJ="objects/if_lua.o"
741 LUA_PRO="if_lua.pro"
742 AC_DEFINE(FEAT_LUA)
743 fi
744 if test "$enable_luainterp" = "dynamic"; then
745 if test "x$vi_cv_with_luajit" != "xno"; then
746 luajit="jit"
747 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200748 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
749 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
750 else
Bram Moolenaard0573012017-10-28 21:11:06 +0200751 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200752 ext="dylib"
753 indexes=""
754 else
755 ext="so"
756 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
757 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
758 if test "X$multiarch" != "X"; then
759 lib_multiarch="lib/${multiarch}"
760 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200761 fi
762 dnl Determine the sover for the current version, but fallback to
763 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200764 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200765 for subdir in "${lib_multiarch}" lib64 lib; do
766 if test -z "$subdir"; then
767 continue
768 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200769 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
770 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
771 for i in $indexes ""; do
772 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200773 sover2="$i"
774 break 3
775 fi
776 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100777 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200778 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200779 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200780 if test "X$sover" = "X"; then
781 AC_MSG_RESULT(no)
782 lua_ok="no"
783 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
784 else
785 AC_MSG_RESULT(yes)
786 lua_ok="yes"
787 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
788 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200789 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200790 AC_DEFINE(DYNAMIC_LUA)
791 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200792 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200793 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200794 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
Bram Moolenaard0573012017-10-28 21:11:06 +0200795 test "x$MACOS_X" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000796 test "$vim_cv_uname_m_output" = "x86_64"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200797 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
798 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
799 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200800 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200801 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100802 AC_MSG_ERROR([could not configure lua])
803 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200804 AC_SUBST(LUA_SRC)
805 AC_SUBST(LUA_OBJ)
806 AC_SUBST(LUA_PRO)
807 AC_SUBST(LUA_LIBS)
808 AC_SUBST(LUA_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +0000809 AC_SUBST(LUA_CFLAGS_EXTRA)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200810fi
811
812
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000813dnl Check for MzScheme feature.
814AC_MSG_CHECKING(--enable-mzschemeinterp argument)
815AC_ARG_ENABLE(mzschemeinterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200816 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000817 [enable_mzschemeinterp="no"])
818AC_MSG_RESULT($enable_mzschemeinterp)
819
820if test "$enable_mzschemeinterp" = "yes"; then
821 dnl -- find the mzscheme executable
822 AC_SUBST(vi_cv_path_mzscheme)
823
824 AC_MSG_CHECKING(--with-plthome argument)
825 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000826 [ --with-plthome=PLTHOME Use PLTHOME.],
827 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000828 with_plthome="";AC_MSG_RESULT("no"))
829
830 if test "X$with_plthome" != "X"; then
831 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100832 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000833 else
834 AC_MSG_CHECKING(PLTHOME environment var)
835 if test "X$PLTHOME" != "X"; then
836 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000837 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100838 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000839 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000840 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000841 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000842 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000843
844 dnl resolve symbolic link, the executable is often elsewhere and there
845 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000846 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000847 lsout=`ls -l $vi_cv_path_mzscheme`
848 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
849 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
850 fi
851 fi
852
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000853 if test "X$vi_cv_path_mzscheme" != "X"; then
854 dnl -- find where MzScheme thinks it was installed
855 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000856 dnl different versions of MzScheme differ in command line processing
857 dnl use universal approach
858 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000859 (build-path (call-with-values \
860 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000861 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
862 dnl Remove a trailing slash
863 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
864 sed -e 's+/$++'` ])
865 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000866 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000867 fi
868 fi
869
870 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100871 AC_MSG_CHECKING(for racket include directory)
872 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
873 if test "X$SCHEME_INC" != "X"; then
874 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000875 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100876 AC_MSG_RESULT(not found)
877 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
878 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
879 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000880 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000881 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000882 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100883 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
884 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000885 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100886 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000887 else
888 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100889 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
890 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100891 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100892 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100893 else
894 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100895 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
896 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100897 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100898 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100899 else
900 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100901 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
902 if test -f /usr/include/racket/scheme.h; then
903 AC_MSG_RESULT(yes)
904 SCHEME_INC=/usr/include/racket
905 else
906 AC_MSG_RESULT(no)
907 vi_cv_path_mzscheme_pfx=
908 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100909 fi
910 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000911 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000912 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000913 fi
914 fi
915
916 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100917
918 AC_MSG_CHECKING(for racket lib directory)
919 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
920 if test "X$SCHEME_LIB" != "X"; then
921 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000922 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100923 AC_MSG_RESULT(not found)
924 fi
925
926 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
927 if test "X$path" != "X"; then
Bram Moolenaard0573012017-10-28 21:11:06 +0200928 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100929 MZSCHEME_LIBS="-framework Racket"
930 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
931 elif test -f "${path}/libmzscheme3m.a"; then
932 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
933 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
934 elif test -f "${path}/libracket3m.a"; then
935 MZSCHEME_LIBS="${path}/libracket3m.a"
Bram Moolenaar588d2412020-10-03 14:24:19 +0200936 if test -f "${path}/librktio.a"; then
937 MZSCHEME_LIBS="${MZSCHEME_LIBS} ${path}/librktio.a"
938 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100939 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
940 elif test -f "${path}/libracket.a"; then
941 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
942 elif test -f "${path}/libmzscheme.a"; then
943 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
944 else
945 dnl Using shared objects
946 if test -f "${path}/libmzscheme3m.so"; then
947 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
948 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
949 elif test -f "${path}/libracket3m.so"; then
950 MZSCHEME_LIBS="-L${path} -lracket3m"
951 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
952 elif test -f "${path}/libracket.so"; then
953 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
954 else
955 dnl try next until last
956 if test "$path" != "$SCHEME_LIB"; then
957 continue
958 fi
959 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
960 fi
961 if test "$GCC" = yes; then
962 dnl Make Vim remember the path to the library. For when it's not in
963 dnl $LD_LIBRARY_PATH.
964 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000965 elif test "$vim_cv_uname_output" = SunOS &&
966 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100967 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
968 fi
969 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000970 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100971 if test "X$MZSCHEME_LIBS" != "X"; then
972 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000973 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100974 done
975
976 AC_MSG_CHECKING([if racket requires -pthread])
977 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
978 AC_MSG_RESULT(yes)
979 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
980 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
981 else
982 AC_MSG_RESULT(no)
983 fi
984
985 AC_MSG_CHECKING(for racket config directory)
986 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
987 if test "X$SCHEME_CONFIGDIR" != "X"; then
988 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
989 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
990 else
991 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000992 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100993
994 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100995 SCHEME_COLLECTS=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-collects-dir))) (when (path? p) (let-values (((base _1 _2) (split-path p))) (display base))))'`
996 if test "X$SCHEME_COLLECTS" = "X"; then
997 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
998 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100999 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +01001000 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
1001 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +01001002 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +01001003 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
1004 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
1005 else
1006 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
1007 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
1008 fi
Bram Moolenaar75676462013-01-30 14:55:42 +01001009 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001010 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001011 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +00001012 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001013 if test "X$SCHEME_COLLECTS" != "X" ; then
1014 AC_MSG_RESULT(${SCHEME_COLLECTS})
1015 else
1016 AC_MSG_RESULT(not found)
1017 fi
1018
1019 AC_MSG_CHECKING(for mzscheme_base.c)
1020 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001021 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +01001022 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
1023 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001024 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001025 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001026 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +01001027 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
1028 MZSCHEME_MOD="++lib scheme/base"
1029 else
1030 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
1031 MZSCHEME_EXTRA="mzscheme_base.c"
1032 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
1033 MZSCHEME_MOD=""
1034 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001035 fi
1036 fi
1037 if test "X$MZSCHEME_EXTRA" != "X" ; then
1038 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001039 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001040 AC_MSG_RESULT(needed)
1041 else
1042 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001043 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001044
Bram Moolenaar9e902192013-07-17 18:58:11 +02001045 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
1046 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
1047
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001048 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001049 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +02001050
1051 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
1052 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
1053 cflags_save=$CFLAGS
1054 libs_save=$LIBS
1055 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
1056 LIBS="$LIBS $MZSCHEME_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001057 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar9e902192013-07-17 18:58:11 +02001058 AC_MSG_RESULT(yes); mzs_ok=yes,
1059 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
1060 CFLAGS=$cflags_save
1061 LIBS=$libs_save
1062 if test $mzs_ok = yes; then
1063 MZSCHEME_SRC="if_mzsch.c"
1064 MZSCHEME_OBJ="objects/if_mzsch.o"
1065 MZSCHEME_PRO="if_mzsch.pro"
1066 AC_DEFINE(FEAT_MZSCHEME)
1067 else
1068 MZSCHEME_CFLAGS=
1069 MZSCHEME_LIBS=
1070 MZSCHEME_EXTRA=
1071 MZSCHEME_MZC=
1072 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001073 fi
1074 AC_SUBST(MZSCHEME_SRC)
1075 AC_SUBST(MZSCHEME_OBJ)
1076 AC_SUBST(MZSCHEME_PRO)
1077 AC_SUBST(MZSCHEME_LIBS)
1078 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001079 AC_SUBST(MZSCHEME_EXTRA)
1080 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001081fi
1082
1083
Bram Moolenaar071d4272004-06-13 20:20:40 +00001084AC_MSG_CHECKING(--enable-perlinterp argument)
1085AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +02001086 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001087 [enable_perlinterp="no"])
1088AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +02001089if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001090 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001091 AC_MSG_ERROR([cannot use Perl with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001092 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001093 AC_SUBST(vi_cv_path_perl)
1094 AC_PATH_PROG(vi_cv_path_perl, perl)
1095 if test "X$vi_cv_path_perl" != "X"; then
1096 AC_MSG_CHECKING(Perl version)
1097 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
1098 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +02001099 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001100 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
1101 badthreads=no
1102 else
1103 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
1104 eval `$vi_cv_path_perl -V:use5005threads`
1105 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
1106 badthreads=no
1107 else
1108 badthreads=yes
1109 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
1110 fi
1111 else
1112 badthreads=yes
1113 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
1114 fi
1115 fi
1116 if test $badthreads = no; then
1117 AC_MSG_RESULT(OK)
1118 eval `$vi_cv_path_perl -V:shrpenv`
1119 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
1120 shrpenv=""
1121 fi
1122 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
1123 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +02001124 vi_cv_perl_extutils=unknown_perl_extutils_path
1125 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
1126 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
1127 if test -f "$xsubpp_path"; then
1128 vi_cv_perl_xsubpp="$xsubpp_path"
1129 fi
1130 done
1131 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001132 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +02001133 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaare8ff56b2017-09-14 23:06:23 +02001134 dnl Remove "FORTIFY_SOURCE", it will be defined twice.
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001135 dnl remove -pipe and -Wxxx, it confuses cproto
Bram Moolenaar071d4272004-06-13 20:20:40 +00001136 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaare8ff56b2017-09-14 23:06:23 +02001137 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1138 -e 's/-fdebug-prefix-map[[^ ]]*//g' \
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001139 -e 's/-pipe //' \
1140 -e 's/-W[[^ ]]*//g' \
1141 -e 's/-D_FORTIFY_SOURCE=.//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001142 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1143 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1144 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1145 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1146 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1147 dnl a test in configure may fail because of that.
1148 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1149 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1150
1151 dnl check that compiling a simple program still works with the flags
1152 dnl added for Perl.
1153 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1154 cflags_save=$CFLAGS
1155 libs_save=$LIBS
1156 ldflags_save=$LDFLAGS
1157 CFLAGS="$CFLAGS $perlcppflags"
1158 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001159 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001160 LDFLAGS="$perlldflags $LDFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001161 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001162 AC_MSG_RESULT(yes); perl_ok=yes,
1163 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1164 CFLAGS=$cflags_save
1165 LIBS=$libs_save
1166 LDFLAGS=$ldflags_save
1167 if test $perl_ok = yes; then
1168 if test "X$perlcppflags" != "X"; then
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001169 PERL_CFLAGS=$perlcppflags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001170 fi
1171 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001172 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001173 LDFLAGS="$perlldflags $LDFLAGS"
1174 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001175 fi
1176 PERL_LIBS=$perllibs
1177 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1178 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1179 PERL_PRO="if_perl.pro if_perlsfio.pro"
1180 AC_DEFINE(FEAT_PERL)
1181 fi
1182 fi
1183 else
1184 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1185 fi
1186 fi
1187
Bram Moolenaard0573012017-10-28 21:11:06 +02001188 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001189 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001190 dir=/System/Library/Perl
1191 darwindir=$dir/darwin
1192 if test -d $darwindir; then
1193 PERL=/usr/bin/perl
1194 else
1195 dnl Mac OS X 10.3
1196 dir=/System/Library/Perl/5.8.1
1197 darwindir=$dir/darwin-thread-multi-2level
1198 if test -d $darwindir; then
1199 PERL=/usr/bin/perl
1200 fi
1201 fi
1202 if test -n "$PERL"; then
1203 PERL_DIR="$dir"
1204 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1205 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1206 PERL_LIBS="-L$darwindir/CORE -lperl"
1207 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001208 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1209 dnl be included if requested by passing --with-mac-arch to
1210 dnl configure, so strip these flags first (if present)
1211 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1212 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001213 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001214 if test "$enable_perlinterp" = "dynamic"; then
1215 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1216 AC_DEFINE(DYNAMIC_PERL)
1217 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
Christian Brabandt55460da2023-08-29 21:31:28 +02001218 PERL_LIBS=""
Bram Moolenaare06c1882010-07-21 22:05:20 +02001219 fi
1220 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001221
1222 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1223 AC_MSG_ERROR([could not configure perl])
1224 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001225fi
1226AC_SUBST(shrpenv)
1227AC_SUBST(PERL_SRC)
1228AC_SUBST(PERL_OBJ)
1229AC_SUBST(PERL_PRO)
1230AC_SUBST(PERL_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001231AC_SUBST(PERL_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001232AC_SUBST(PERL_LIBS)
1233
1234AC_MSG_CHECKING(--enable-pythoninterp argument)
1235AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001236 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001237 [enable_pythoninterp="no"])
1238AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001239if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001240 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001241 AC_MSG_ERROR([cannot use Python with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01001242 fi
1243
Bram Moolenaar071d4272004-06-13 20:20:40 +00001244 dnl -- find the python executable
Bram Moolenaare1a32312018-04-15 16:03:25 +02001245 AC_MSG_CHECKING(--with-python-command argument)
1246 AC_SUBST(vi_cv_path_python)
1247 AC_ARG_WITH(python-command, [ --with-python-command=NAME name of the Python 2 command (default: python2 or python)],
1248 vi_cv_path_python="$withval"; AC_MSG_RESULT($vi_cv_path_python),
1249 AC_MSG_RESULT(no))
1250
1251 if test "X$vi_cv_path_python" = "X"; then
1252 AC_PATH_PROGS(vi_cv_path_python, python2 python)
1253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001254 if test "X$vi_cv_path_python" != "X"; then
1255
1256 dnl -- get its version number
1257 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1258 [[vi_cv_var_python_version=`
1259 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1260 ]])
1261
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001262 dnl -- it must be at least version 2.3
1263 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001264 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001265 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001266 then
1267 AC_MSG_RESULT(yep)
1268
1269 dnl -- find where python thinks it was installed
1270 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1271 [ vi_cv_path_python_pfx=`
1272 ${vi_cv_path_python} -c \
1273 "import sys; print sys.prefix"` ])
1274
1275 dnl -- and where it thinks it runs
1276 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1277 [ vi_cv_path_python_epfx=`
1278 ${vi_cv_path_python} -c \
1279 "import sys; print sys.exec_prefix"` ])
1280
1281 dnl -- python's internal library path
1282
1283 AC_CACHE_VAL(vi_cv_path_pythonpath,
1284 [ vi_cv_path_pythonpath=`
1285 unset PYTHONPATH;
1286 ${vi_cv_path_python} -c \
1287 "import sys, string; print string.join(sys.path,':')"` ])
1288
1289 dnl -- where the Python implementation library archives are
1290
1291 AC_ARG_WITH(python-config-dir,
Bram Moolenaare1a32312018-04-15 16:03:25 +02001292 [ --with-python-config-dir=PATH Python's config directory (deprecated)],
Bram Moolenaard0882402018-04-10 18:13:05 +02001293 [ vi_cv_path_python_conf="${withval}"; have_python_config_dir=1 ] )
Bram Moolenaar071d4272004-06-13 20:20:40 +00001294
1295 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1296 [
1297 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001298 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1299 if test -d "$d" && test -f "$d/config.c"; then
1300 vi_cv_path_python_conf="$d"
1301 else
1302 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1303 for subdir in lib64 lib share; do
1304 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1305 if test -d "$d" && test -f "$d/config.c"; then
1306 vi_cv_path_python_conf="$d"
1307 fi
1308 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001309 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001310 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001311 ])
1312
1313 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1314
1315 if test "X$PYTHON_CONFDIR" = "X"; then
1316 AC_MSG_RESULT([can't find it!])
1317 else
1318
1319 dnl -- we need to examine Python's config/Makefile too
1320 dnl see what the interpreter is built from
1321 AC_CACHE_VAL(vi_cv_path_python_plibs,
1322 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001323 pwd=`pwd`
1324 tmp_mkf="$pwd/config-PyMake$$"
1325 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001326__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001327 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001328 @echo "python_LIBS='$(LIBS)'"
1329 @echo "python_SYSLIBS='$(SYSLIBS)'"
1330 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001331 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001332 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001333 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1334 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1335 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001336eof
1337 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001338 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1339 rm -f -- "${tmp_mkf}"
Bram Moolenaard0573012017-10-28 21:11:06 +02001340 if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
Bram Moolenaar071d4272004-06-13 20:20:40 +00001341 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1342 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001343 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1344 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1345 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 else
Bram Moolenaar9ce42132018-04-11 22:19:36 +02001347 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001348 dnl -- Check if the path contained in python_LINKFORSHARED is
1349 dnl usable for vim build. If not, make and try other
1350 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001351 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001352 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1353 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1354 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1355 dnl -- The path looks relative. Guess the absolute one using
1356 dnl the prefix and try that.
1357 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1358 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1359 dnl -- A last resort.
1360 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1361 dnl -- No check is done. The last word is left to the
1362 dnl "sanity" test on link flags that follows shortly.
1363 fi
1364 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1365 fi
1366 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001367 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001368 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1369 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1370 fi
1371 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001372 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001373 [
1374 if test "X$python_DLLLIBRARY" != "X"; then
1375 vi_cv_dll_name_python="$python_DLLLIBRARY"
1376 else
1377 vi_cv_dll_name_python="$python_INSTSONAME"
1378 fi
1379 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001380
1381 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1382 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar04249582018-04-10 13:29:34 +02001383 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001384 else
Bram Moolenaar04249582018-04-10 13:29:34 +02001385 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 fi
Bram Moolenaar3a21d9c2018-04-10 20:26:20 +02001387 if test "X$have_python_config_dir" = "X1" -a "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaard0882402018-04-10 18:13:05 +02001388 dnl Define PYTHON_HOME if --with-python-config-dir was used
1389 PYTHON_CFLAGS="${PYTHON_CFLAGS} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
1390
1391 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001392 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001393 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001394
1395 dnl On FreeBSD linking with "-pthread" is required to use threads.
1396 dnl _THREAD_SAFE must be used for compiling then.
1397 dnl The "-pthread" is added to $LIBS, so that the following check for
1398 dnl sigaltstack() will look in libc_r (it's there in libc!).
1399 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1400 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1401 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1402 AC_MSG_CHECKING([if -pthread should be used])
1403 threadsafe_flag=
1404 thread_lib=
Bram Moolenaard0573012017-10-28 21:11:06 +02001405 dnl if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001406 if test "$vim_cv_uname_output" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001407 test "$GCC" = yes && threadsafe_flag="-pthread"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001408 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001409 threadsafe_flag="-D_THREAD_SAFE"
1410 thread_lib="-pthread"
1411 fi
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001412 if test "$vim_cv_uname_output" = SunOS; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001413 threadsafe_flag="-pthreads"
1414 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001415 fi
1416 libs_save_old=$LIBS
1417 if test -n "$threadsafe_flag"; then
1418 cflags_save=$CFLAGS
1419 CFLAGS="$CFLAGS $threadsafe_flag"
1420 LIBS="$LIBS $thread_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001421 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001422 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001423 AC_MSG_RESULT(no); LIBS=$libs_save_old
1424 )
1425 CFLAGS=$cflags_save
1426 else
1427 AC_MSG_RESULT(no)
1428 fi
1429
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001430 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001431 dnl added for Python.
1432 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1433 cflags_save=$CFLAGS
1434 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001435 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001436 LIBS="$LIBS $PYTHON_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001437 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001438 AC_MSG_RESULT(yes); python_ok=yes,
1439 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1440 CFLAGS=$cflags_save
1441 LIBS=$libs_save
1442 if test $python_ok = yes; then
1443 AC_DEFINE(FEAT_PYTHON)
1444 else
1445 LIBS=$libs_save_old
1446 PYTHON_SRC=
1447 PYTHON_OBJ=
1448 PYTHON_LIBS=
1449 PYTHON_CFLAGS=
1450 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001451 fi
1452 else
1453 AC_MSG_RESULT(too old)
1454 fi
1455 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001456
1457 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1458 AC_MSG_ERROR([could not configure python])
1459 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001460fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001461
Bram Moolenaar071d4272004-06-13 20:20:40 +00001462AC_SUBST(PYTHON_LIBS)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463AC_SUBST(PYTHON_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001464AC_SUBST(PYTHON_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465AC_SUBST(PYTHON_SRC)
1466AC_SUBST(PYTHON_OBJ)
1467
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001468
1469AC_MSG_CHECKING(--enable-python3interp argument)
1470AC_ARG_ENABLE(python3interp,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001471 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001472 [enable_python3interp="no"])
1473AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001474if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001475 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001476 AC_MSG_ERROR([cannot use Python with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01001477 fi
1478
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001479 dnl -- find the python3 executable
Bram Moolenaare1a32312018-04-15 16:03:25 +02001480 AC_MSG_CHECKING(--with-python3-command argument)
1481 AC_SUBST(vi_cv_path_python3)
1482 AC_ARG_WITH(python3-command, [ --with-python3-command=NAME name of the Python 3 command (default: python3 or python)],
1483 vi_cv_path_python3="$withval"; AC_MSG_RESULT($vi_cv_path_python3),
1484 AC_MSG_RESULT(no))
1485
1486 if test "X$vi_cv_path_python3" = "X"; then
1487 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
1488 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001489 if test "X$vi_cv_path_python3" != "X"; then
1490
1491 dnl -- get its version number
1492 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1493 [[vi_cv_var_python3_version=`
Bram Moolenaar23c01922021-05-21 11:43:58 +02001494 ${vi_cv_path_python3} -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001495 ]])
1496
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001497 dnl -- it must be at least version 3
1498 AC_MSG_CHECKING(Python is 3.0 or better)
1499 if ${vi_cv_path_python3} -c \
1500 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1501 then
1502 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001503
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001504 dnl -- get the stable ABI version if passed in
1505 AC_MSG_CHECKING(--with-python3-stable-abi argument)
1506 AC_SUBST(vi_cv_var_python3_stable_abi)
1507 AC_ARG_WITH(python3-stable-abi, [ --with-python3-stable-abi=VERSION stable ABI version to target (e.g. 3.8)],
1508 vi_cv_var_python3_stable_abi="$withval"; AC_MSG_RESULT($vi_cv_var_python3_stable_abi),
1509 AC_MSG_RESULT(no))
1510 if test "X$vi_cv_var_python3_stable_abi" != "X"; then
1511 AC_CACHE_VAL(vi_cv_var_python3_stable_abi_hex,
1512 [
1513 vi_cv_var_python3_stable_abi_hex=`
1514 ${vi_cv_path_python3} -c \
1515 "major_minor='${vi_cv_var_python3_stable_abi}'.split('.'); print('0x{0:X}'.format( (int(major_minor.__getitem__(0))<<24) + (int(major_minor.__getitem__(1))<<16) ))"` ])
1516 if test "X$vi_cv_var_python3_stable_abi_hex" == "X"; then
1517 AC_MSG_ERROR([can't parse Python 3 stable ABI version. It should be "<major>.<minor>"])
1518 fi
1519 fi
1520
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001521 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1522 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001523 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001524 vi_cv_var_python3_abiflags=
1525 if ${vi_cv_path_python3} -c \
1526 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1527 then
Bram Moolenaare5303952022-06-19 17:05:47 +01001528 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001529 "import sys; print(sys.abiflags)"`
1530 fi ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001531
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001532 dnl -- find where python3 thinks it was installed
1533 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1534 [ vi_cv_path_python3_pfx=`
1535 ${vi_cv_path_python3} -c \
1536 "import sys; print(sys.prefix)"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001537
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001538 dnl -- and where it thinks it runs
1539 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1540 [ vi_cv_path_python3_epfx=`
1541 ${vi_cv_path_python3} -c \
1542 "import sys; print(sys.exec_prefix)"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001543
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001544 dnl -- python3's include path
1545 AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_include,
1546 [ vi_cv_path_python3_include=`
1547 ${vi_cv_path_python3} -c \
1548 "import sysconfig; print(sysconfig.get_path(\"include\"))"` ])
1549
1550 dnl -- python3's platform include path
1551 AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_platinclude,
1552 [ vi_cv_path_python3_platinclude=`
1553 ${vi_cv_path_python3} -c \
1554 "import sysconfig; print(sysconfig.get_path(\"platinclude\"))"` ])
1555
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001556 dnl -- python3's internal library path
Bram Moolenaare5303952022-06-19 17:05:47 +01001557
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001558 AC_CACHE_VAL(vi_cv_path_python3path,
1559 [ vi_cv_path_python3path=`
1560 unset PYTHONPATH;
1561 ${vi_cv_path_python3} -c \
1562 "import sys, string; print(':'.join(sys.path))"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001563
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001564 dnl -- where the Python implementation library archives are
Bram Moolenaare5303952022-06-19 17:05:47 +01001565
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001566 AC_ARG_WITH(python3-config-dir,
Bram Moolenaare1a32312018-04-15 16:03:25 +02001567 [ --with-python3-config-dir=PATH Python's config directory (deprecated)],
Bram Moolenaard0882402018-04-10 18:13:05 +02001568 [ vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1 ] )
Bram Moolenaare5303952022-06-19 17:05:47 +01001569
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001570 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1571 [
1572 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001573 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Zdenek Dohnal31e299c2021-06-10 18:50:55 +02001574 d=`${vi_cv_path_python3} -c "import sysconfig; print(sysconfig.get_config_var('LIBPL'))" 2> /dev/null`
1575 if test "x$d" = "x"; then
1576 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1577 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001578 if test -d "$d" && test -f "$d/config.c"; then
1579 vi_cv_path_python3_conf="$d"
1580 else
1581 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1582 for subdir in lib64 lib share; do
1583 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1584 if test -d "$d" && test -f "$d/config.c"; then
1585 vi_cv_path_python3_conf="$d"
1586 fi
1587 done
1588 done
1589 fi
1590 ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001591
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001592 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
Bram Moolenaare5303952022-06-19 17:05:47 +01001593
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001594 if test "X$PYTHON3_CONFDIR" = "X"; then
1595 AC_MSG_RESULT([can't find it!])
1596 else
Bram Moolenaare5303952022-06-19 17:05:47 +01001597
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001598 dnl -- we need to examine Python's config/Makefile too
1599 dnl see what the interpreter is built from
1600 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1601 [
1602 pwd=`pwd`
1603 tmp_mkf="$pwd/config-PyMake$$"
1604 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001605__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001606 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001607 @echo "python3_LIBS='$(LIBS)'"
1608 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001609 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001610 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Yee Cheng Chinb6ebe5a2023-04-05 18:24:50 +01001611 @echo "python3_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001612eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001613 dnl -- delete the lines from make about Entering/Leaving directory
1614 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1615 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001616 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001617 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1618 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1619 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1620 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1621 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001622 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001623 [
1624 if test "X$python3_DLLLIBRARY" != "X"; then
1625 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
Yee Cheng Chinb6ebe5a2023-04-05 18:24:50 +01001626 elif test "X$python3_PYTHONFRAMEWORKPREFIX" != "X"; then
1627 vi_cv_dll_name_python3="${python3_PYTHONFRAMEWORKPREFIX}/${python3_INSTSONAME}"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001628 else
1629 vi_cv_dll_name_python3="$python3_INSTSONAME"
1630 fi
1631 ])
1632
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001633 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001634 if test "${vi_cv_path_python3_include}" = "${vi_cv_path_python3_platinclude}"; then
1635 PYTHON3_CFLAGS="-I${vi_cv_path_python3_include}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001636 else
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001637 PYTHON3_CFLAGS="-I${vi_cv_path_python3_include} -I${vi_cv_path_python3_platinclude}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001638 fi
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001639 if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
1640 dnl Define PYTHON3_HOME if --with-python-config-dir was used
1641 PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
1642 fi
1643 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1644 PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPy_LIMITED_API=${vi_cv_var_python3_stable_abi_hex}"
1645 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001646 PYTHON3_SRC="if_python3.c"
1647 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaare5303952022-06-19 17:05:47 +01001648
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001649 dnl On FreeBSD linking with "-pthread" is required to use threads.
1650 dnl _THREAD_SAFE must be used for compiling then.
1651 dnl The "-pthread" is added to $LIBS, so that the following check for
1652 dnl sigaltstack() will look in libc_r (it's there in libc!).
1653 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1654 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1655 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1656 AC_MSG_CHECKING([if -pthread should be used])
1657 threadsafe_flag=
1658 thread_lib=
Bram Moolenaard0573012017-10-28 21:11:06 +02001659 dnl if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001660 if test "$vim_cv_uname_output" != Darwin; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001661 test "$GCC" = yes && threadsafe_flag="-pthread"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001662 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001663 threadsafe_flag="-D_THREAD_SAFE"
1664 thread_lib="-pthread"
1665 fi
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001666 if test "$vim_cv_uname_output" = SunOS; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001667 threadsafe_flag="-pthreads"
1668 fi
1669 fi
1670 libs_save_old=$LIBS
1671 if test -n "$threadsafe_flag"; then
1672 cflags_save=$CFLAGS
1673 CFLAGS="$CFLAGS $threadsafe_flag"
1674 LIBS="$LIBS $thread_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001675 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001676 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1677 AC_MSG_RESULT(no); LIBS=$libs_save_old
1678 )
1679 CFLAGS=$cflags_save
1680 else
1681 AC_MSG_RESULT(no)
1682 fi
Bram Moolenaare5303952022-06-19 17:05:47 +01001683
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001684 dnl check that compiling a simple program still works with the flags
1685 dnl added for Python.
1686 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1687 cflags_save=$CFLAGS
1688 libs_save=$LIBS
1689 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1690 LIBS="$LIBS $PYTHON3_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001691 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001692 AC_MSG_RESULT(yes); python3_ok=yes,
1693 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1694 CFLAGS=$cflags_save
1695 LIBS=$libs_save
1696 if test "$python3_ok" = yes; then
1697 AC_DEFINE(FEAT_PYTHON3)
1698 else
1699 LIBS=$libs_save_old
1700 PYTHON3_SRC=
1701 PYTHON3_OBJ=
1702 PYTHON3_LIBS=
1703 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001704 fi
1705 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001706 else
1707 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001708 fi
1709 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001710 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1711 AC_MSG_ERROR([could not configure python3])
1712 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001713fi
1714
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001715AC_SUBST(PYTHON3_LIBS)
1716AC_SUBST(PYTHON3_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001717AC_SUBST(PYTHON3_CFLAGS_EXTRA)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001718AC_SUBST(PYTHON3_SRC)
1719AC_SUBST(PYTHON3_OBJ)
1720
1721dnl if python2.x and python3.x are enabled one can only link in code
Bram Moolenaare5303952022-06-19 17:05:47 +01001722dnl with dlopen(), dlsym(), dlclose()
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001723if test "$python_ok" = yes && test "$python3_ok" = yes; then
1724 AC_DEFINE(DYNAMIC_PYTHON)
1725 AC_DEFINE(DYNAMIC_PYTHON3)
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001726 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1727 AC_DEFINE(DYNAMIC_PYTHON3_STABLE_ABI)
1728 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001729 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001730 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001731 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001732 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001733 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001734 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001735 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001736 #include <dlfcn.h>
1737 /* If this program fails, then RTLD_GLOBAL is needed.
1738 * RTLD_GLOBAL will be used and then it is not possible to
1739 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001740 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001741 */
1742
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001743 static int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001744 {
1745 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001746 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001747 if (pylib != 0)
1748 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001749 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001750 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1751 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1752 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001753 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001754 (*init)();
1755 needed = (*simple)("import termios") == -1;
1756 (*final)();
1757 dlclose(pylib);
1758 }
1759 return !needed;
1760 }
1761
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001762 int main()
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001763 {
1764 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001765 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001766 not_needed = 1;
1767 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001768 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001769 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001770
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001771 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001772 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001773
1774 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1775 cflags_save=$CFLAGS
1776 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001777 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001778 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001779 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001780 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001781 #include <dlfcn.h>
1782 #include <wchar.h>
1783 /* If this program fails, then RTLD_GLOBAL is needed.
1784 * RTLD_GLOBAL will be used and then it is not possible to
1785 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001786 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001787 */
1788
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001789 static int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001790 {
1791 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001792 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001793 if (pylib != 0)
1794 {
1795 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1796 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1797 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1798 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1799 (*pfx)(prefix);
1800 (*init)();
1801 needed = (*simple)("import termios") == -1;
1802 (*final)();
1803 dlclose(pylib);
1804 }
1805 return !needed;
1806 }
1807
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001808 int main()
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001809 {
1810 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001811 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001812 not_needed = 1;
1813 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001814 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001815 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1816
1817 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001818 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001819
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001820 PYTHON_SRC="if_python.c"
1821 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001822 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001823 PYTHON_LIBS=
1824 PYTHON3_SRC="if_python3.c"
1825 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001826 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001827 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001828elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1829 AC_DEFINE(DYNAMIC_PYTHON)
1830 PYTHON_SRC="if_python.c"
1831 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001832 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001833 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001834elif test "$python_ok" = yes; then
1835 dnl Check that adding -fPIE works. It may be needed when using a static
1836 dnl Python library.
1837 AC_MSG_CHECKING([if -fPIE can be added for Python])
1838 cflags_save=$CFLAGS
1839 libs_save=$LIBS
1840 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1841 LIBS="$LIBS $PYTHON_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001842 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare741f272013-07-09 21:57:52 +02001843 AC_MSG_RESULT(yes); fpie_ok=yes,
1844 AC_MSG_RESULT(no); fpie_ok=no)
1845 CFLAGS=$cflags_save
1846 LIBS=$libs_save
1847 if test $fpie_ok = yes; then
1848 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1849 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001850elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1851 AC_DEFINE(DYNAMIC_PYTHON3)
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001852 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1853 AC_DEFINE(DYNAMIC_PYTHON3_STABLE_ABI)
1854 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001855 PYTHON3_SRC="if_python3.c"
1856 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001857 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001858 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001859elif test "$python3_ok" = yes; then
1860 dnl Check that adding -fPIE works. It may be needed when using a static
1861 dnl Python library.
1862 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1863 cflags_save=$CFLAGS
1864 libs_save=$LIBS
1865 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1866 LIBS="$LIBS $PYTHON3_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001867 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare741f272013-07-09 21:57:52 +02001868 AC_MSG_RESULT(yes); fpie_ok=yes,
1869 AC_MSG_RESULT(no); fpie_ok=no)
1870 CFLAGS=$cflags_save
1871 LIBS=$libs_save
1872 if test $fpie_ok = yes; then
1873 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1874 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001875fi
1876
Bram Moolenaar071d4272004-06-13 20:20:40 +00001877AC_MSG_CHECKING(--enable-tclinterp argument)
1878AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001879 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880 [enable_tclinterp="no"])
1881AC_MSG_RESULT($enable_tclinterp)
1882
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001883if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001885 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001886 AC_MSG_CHECKING(--with-tclsh argument)
1887 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1888 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001889 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001890 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1891 AC_SUBST(vi_cv_path_tcl)
1892
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001893 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1894 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1895 tclsh_name="tclsh8.4"
1896 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1897 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001898 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899 tclsh_name="tclsh8.2"
1900 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1901 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001902 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1903 tclsh_name="tclsh8.0"
1904 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1905 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001906 dnl still didn't find it, try without version number
1907 if test "X$vi_cv_path_tcl" = "X"; then
1908 tclsh_name="tclsh"
1909 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1910 fi
1911 if test "X$vi_cv_path_tcl" != "X"; then
1912 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001913 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001914 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1915 AC_MSG_RESULT($tclver - OK);
1916 tclloc=`echo 'set l [[info library]];set i [[string last lib $l]];incr i -2;puts [[string range $l 0 $i]]' | $vi_cv_path_tcl -`
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001917 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001918
1919 AC_MSG_CHECKING(for location of Tcl include)
Bram Moolenaard0573012017-10-28 21:11:06 +02001920 if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001921 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 else
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001923 dnl For all macOS, use the value from TCL in case use of, say, homebrew
Bram Moolenaar071d4272004-06-13 20:20:40 +00001924 dnl For Mac OS X 10.3, use the OS-provided framework location
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001925 dnl For Mac OS X 10.14, the OS-provided framework location doesn't contain the headers, so also check the Xcode SDK
1926 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /System/Library/Frameworks/Tcl.framework/Headers `xcrun --show-sdk-path`/System/Library/Frameworks/Tcl.framework/Versions/Current/Headers"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001927 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001928 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001929 for try in $tclinc; do
1930 if test -f "$try/tcl.h"; then
1931 AC_MSG_RESULT($try/tcl.h)
1932 TCL_INC=$try
1933 break
1934 fi
1935 done
1936 if test -z "$TCL_INC"; then
1937 AC_MSG_RESULT(<not found>)
1938 SKIP_TCL=YES
1939 fi
1940 if test -z "$SKIP_TCL"; then
1941 AC_MSG_CHECKING(for location of tclConfig.sh script)
Bram Moolenaard0573012017-10-28 21:11:06 +02001942 if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001943 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001944 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001945 else
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001946 dnl For all macOS, use the value from TCL in case use of, say, homebrew
Bram Moolenaar071d4272004-06-13 20:20:40 +00001947 dnl For Mac OS X 10.3, use the OS-provided framework location
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001948 dnl For Mac OS X 10.14, the OS-provided framework location doesn't contain the headers, so also check the Xcode SDK
1949 tclcnf=`echo $tclinc | sed s/include/lib/g`
1950 tclcnf="$tclcnf /System/Library/Frameworks/Tcl.framework `xcrun --show-sdk-path`/System/Library/Frameworks/Tcl.framework"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001951 fi
1952 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001953 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001954 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001955 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001956 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001957 if test "$enable_tclinterp" = "dynamic"; then
1958 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1959 else
1960 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1961 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001962 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001963 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001964 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001965 break
1966 fi
1967 done
1968 if test -z "$TCL_LIBS"; then
1969 AC_MSG_RESULT(<not found>)
1970 AC_MSG_CHECKING(for Tcl library by myself)
1971 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001972 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001973 for ext in .so .a ; do
1974 for ver in "" $tclver ; do
1975 for try in $tcllib ; do
1976 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001977 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001978 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001979 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001980 if test "$vim_cv_uname_output" = SunOS &&
1981 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001982 TCL_LIBS="$TCL_LIBS -R $try"
1983 fi
1984 break 3
1985 fi
1986 done
1987 done
1988 done
1989 if test -z "$TCL_LIBS"; then
1990 AC_MSG_RESULT(<not found>)
1991 SKIP_TCL=YES
1992 fi
1993 fi
1994 if test -z "$SKIP_TCL"; then
1995 AC_DEFINE(FEAT_TCL)
1996 TCL_SRC=if_tcl.c
1997 TCL_OBJ=objects/if_tcl.o
1998 TCL_PRO=if_tcl.pro
1999 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
2000 fi
2001 fi
2002 else
2003 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
2004 fi
2005 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01002006 if test "$enable_tclinterp" = "dynamic"; then
2007 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
2008 AC_DEFINE(DYNAMIC_TCL)
2009 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
2010 fi
2011 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01002012 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
2013 AC_MSG_ERROR([could not configure Tcl])
2014 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002015fi
2016AC_SUBST(TCL_SRC)
2017AC_SUBST(TCL_OBJ)
2018AC_SUBST(TCL_PRO)
2019AC_SUBST(TCL_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00002020AC_SUBST(TCL_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002021AC_SUBST(TCL_LIBS)
2022
2023AC_MSG_CHECKING(--enable-rubyinterp argument)
2024AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002025 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026 [enable_rubyinterp="no"])
2027AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002028if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002029 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002030 AC_MSG_ERROR([cannot use Ruby with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01002031 fi
2032
Bram Moolenaar165641d2010-02-17 16:23:09 +01002033 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002034 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02002035 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
2036 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
2037 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01002038 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002039 if test "X$vi_cv_path_ruby" != "X"; then
2040 AC_MSG_CHECKING(Ruby version)
K.Takata236ccbf2022-09-22 16:12:06 +01002041 if $vi_cv_path_ruby -e 'RUBY_VERSION >= "1.9.1" or exit 1' >/dev/null 2>/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002042 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02002043 AC_MSG_CHECKING(Ruby rbconfig)
2044 ruby_rbconfig="RbConfig"
2045 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
2046 ruby_rbconfig="Config"
2047 fi
2048 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002049 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02002050 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002051 if test "X$rubyhdrdir" != "X"; then
2052 AC_MSG_RESULT($rubyhdrdir)
2053 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01002054 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
2055 if test -d "$rubyarchdir"; then
2056 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01002057 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02002058 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02002059 if test "X$rubyversion" = "X"; then
K.Takata236ccbf2022-09-22 16:12:06 +01002060 rubyversion=`$vi_cv_path_ruby -e "print RUBY_VERSION.gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02002061 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01002062 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02002063 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002064 if test "X$rubylibs" != "X"; then
2065 RUBY_LIBS="$rubylibs"
2066 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02002067 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
2068 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02002069 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaard5a986f2020-12-06 21:11:31 +01002070 if test -f "$rubylibdir/$librubya" || expr "$librubyarg" : "-lruby"; then
Bram Moolenaarac499e32013-06-02 19:14:17 +02002071 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
2072 elif test "$librubyarg" = "libruby.a"; then
2073 dnl required on Mac OS 10.3 where libruby.a doesn't exist
2074 librubyarg="-lruby"
2075 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002076 fi
2077
2078 if test "X$librubyarg" != "X"; then
2079 RUBY_LIBS="$librubyarg $RUBY_LIBS"
2080 fi
Zdenek Dohnal1d822af2022-11-23 12:06:08 +00002081
2082 dnl Here the Ruby LDFLAGS used to be added to LDFLAGS, but that turns
2083 dnl out to cause trouble and was removed.
2084
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085 RUBY_SRC="if_ruby.c"
2086 RUBY_OBJ="objects/if_ruby.o"
2087 RUBY_PRO="if_ruby.pro"
2088 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002089 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar92021622017-10-12 12:33:43 +02002090 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_ALIASES']].split[[0]]"`
Bram Moolenaar87ea64c2018-08-04 15:13:34 +02002091 if test -z "$libruby_soname"; then
2092 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
2093 fi
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002094 AC_DEFINE(DYNAMIC_RUBY)
Bram Moolenaar41a41412020-01-07 21:32:19 +01002095 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" $RUBY_CFLAGS"
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002096 RUBY_LIBS=
2097 fi
Bram Moolenaar864a28b2020-12-28 21:36:56 +01002098 if test "X$CLANG_VERSION" != "X" -a "$rubyversion" -ge 30; then
2099 RUBY_CFLAGS="$RUBY_CFLAGS -fdeclspec"
2100 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002101 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01002102 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002103 fi
2104 else
K.Takata236ccbf2022-09-22 16:12:06 +01002105 AC_MSG_RESULT(too old; need Ruby version 1.9.1 or later)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002106 fi
2107 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01002108
2109 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
2110 AC_MSG_ERROR([could not configure Ruby])
2111 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112fi
2113AC_SUBST(RUBY_SRC)
2114AC_SUBST(RUBY_OBJ)
2115AC_SUBST(RUBY_PRO)
2116AC_SUBST(RUBY_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00002117AC_SUBST(RUBY_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118AC_SUBST(RUBY_LIBS)
2119
2120AC_MSG_CHECKING(--enable-cscope argument)
2121AC_ARG_ENABLE(cscope,
2122 [ --enable-cscope Include cscope interface.], ,
2123 [enable_cscope="no"])
2124AC_MSG_RESULT($enable_cscope)
2125if test "$enable_cscope" = "yes"; then
2126 AC_DEFINE(FEAT_CSCOPE)
2127fi
2128
Bram Moolenaar071d4272004-06-13 20:20:40 +00002129AC_MSG_CHECKING(--disable-netbeans argument)
2130AC_ARG_ENABLE(netbeans,
2131 [ --disable-netbeans Disable NetBeans integration support.],
2132 , [enable_netbeans="yes"])
2133if test "$enable_netbeans" = "yes"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002134 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002135 AC_MSG_RESULT([cannot use NetBeans with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01002136 enable_netbeans="no"
2137 else
2138 AC_MSG_RESULT(no)
2139 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002140else
2141 AC_MSG_RESULT(yes)
2142fi
2143
2144AC_MSG_CHECKING(--disable-channel argument)
2145AC_ARG_ENABLE(channel,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002146 [ --disable-channel Disable process communication support.],
Bram Moolenaare0874f82016-01-24 20:36:41 +01002147 , [enable_channel="yes"])
2148if test "$enable_channel" = "yes"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002149 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002150 AC_MSG_RESULT([cannot use channels with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01002151 enable_channel="no"
2152 else
2153 AC_MSG_RESULT(no)
2154 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002155else
2156 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01002157 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01002158 enable_netbeans="no"
2159 else
2160 AC_MSG_RESULT(yes)
2161 fi
2162fi
2163
Bram Moolenaar16435482016-01-24 21:31:54 +01002164if test "$enable_channel" = "yes"; then
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002165 dnl On Solaris we need the socket library, or on Haiku the network library.
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002166 if test "x$HAIKU" = "xyes"; then
2167 AC_CHECK_LIB(network, socket)
2168 else
2169 AC_CHECK_LIB(socket, socket)
2170 fi
2171
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002172 AC_CACHE_CHECK([whether compiling with IPv6 networking is possible], [vim_cv_ipv6_networking],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002173 [AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002174#include <stdio.h>
2175#include <stdlib.h>
2176#include <stdarg.h>
2177#include <fcntl.h>
2178#include <netdb.h>
2179#include <netinet/in.h>
2180#include <errno.h>
2181#include <sys/types.h>
2182#include <sys/socket.h>
2183 /* Check bitfields */
2184 struct nbbuf {
2185 unsigned int initDone:1;
2186 unsigned short signmaplen;
2187 };
2188 ], [
2189 /* Check creating a socket. */
2190 struct sockaddr_in server;
2191 struct addrinfo *res;
2192 (void)socket(AF_INET, SOCK_STREAM, 0);
2193 (void)htons(100);
2194 (void)getaddrinfo("microsoft.com", NULL, NULL, &res);
2195 if (errno == ECONNREFUSED)
2196 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2197 (void)freeaddrinfo(res);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002198 ])],
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002199 [vim_cv_ipv6_networking="yes"],
2200 [vim_cv_ipv6_networking="no"])])
2201
2202 if test "x$vim_cv_ipv6_networking" = "xyes"; then
2203 AC_DEFINE(FEAT_IPV6)
Bram Moolenaarb6fb0512020-04-18 18:24:18 +02002204 AC_CHECK_FUNCS(inet_ntop)
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002205 else
2206 dnl On Solaris we need the nsl library.
2207 AC_CHECK_LIB(nsl, gethostbyname)
2208 AC_CACHE_CHECK([whether compiling with IPv4 networking is possible], [vim_cv_ipv4_networking],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002209 [AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002210#include <stdio.h>
2211#include <stdlib.h>
2212#include <stdarg.h>
2213#include <fcntl.h>
2214#include <netdb.h>
2215#include <netinet/in.h>
2216#include <errno.h>
2217#include <sys/types.h>
2218#include <sys/socket.h>
2219 /* Check bitfields */
2220 struct nbbuf {
2221 unsigned int initDone:1;
Bram Moolenaar63de19e2016-12-09 20:11:26 +01002222 unsigned short signmaplen;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002223 };
2224 ], [
2225 /* Check creating a socket. */
2226 struct sockaddr_in server;
2227 (void)socket(AF_INET, SOCK_STREAM, 0);
2228 (void)htons(100);
2229 (void)gethostbyname("microsoft.com");
2230 if (errno == ECONNREFUSED)
2231 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002232 ])],
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002233 [vim_cv_ipv4_networking="yes"],
2234 [vim_cv_ipv4_networking="no"; enable_netbeans="no"; enable_channel="no"])])
2235 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002236fi
2237if test "$enable_netbeans" = "yes"; then
2238 AC_DEFINE(FEAT_NETBEANS_INTG)
2239 NETBEANS_SRC="netbeans.c"
2240 AC_SUBST(NETBEANS_SRC)
2241 NETBEANS_OBJ="objects/netbeans.o"
2242 AC_SUBST(NETBEANS_OBJ)
2243fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002244if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002245 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaar8b5866d2020-09-05 15:48:51 +02002246 CHANNEL_SRC="job.c channel.c"
Bram Moolenaare0874f82016-01-24 20:36:41 +01002247 AC_SUBST(CHANNEL_SRC)
Bram Moolenaar8b5866d2020-09-05 15:48:51 +02002248 CHANNEL_OBJ="objects/job.o objects/channel.o"
Bram Moolenaare0874f82016-01-24 20:36:41 +01002249 AC_SUBST(CHANNEL_OBJ)
2250fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002251
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002252AC_MSG_CHECKING(--enable-terminal argument)
2253AC_ARG_ENABLE(terminal,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002254 [ --enable-terminal Enable terminal emulation support.],
Bram Moolenaaref839562017-10-28 20:28:23 +02002255 , [enable_terminal="auto"])
Bram Moolenaar595a4022017-09-03 19:15:57 +02002256if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002257 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002258 AC_MSG_RESULT([cannot use terminal emulator with tiny features])
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002259 enable_terminal="no"
2260 else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002261 if test "$enable_terminal" = "auto"; then
2262 enable_terminal="yes"
2263 AC_MSG_RESULT(defaulting to yes)
2264 else
2265 AC_MSG_RESULT(yes)
2266 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002267 fi
2268else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002269 if test "$enable_terminal" = "auto"; then
2270 enable_terminal="no"
2271 AC_MSG_RESULT(defaulting to no)
2272 else
2273 AC_MSG_RESULT(no)
2274 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002275fi
Bram Moolenaar8b423282017-12-16 14:37:06 +01002276if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002277 AC_DEFINE(FEAT_TERMINAL)
Bram Moolenaar93268052019-10-10 13:22:54 +02002278 TERM_SRC="libvterm/src/encoding.c libvterm/src/keyboard.c libvterm/src/mouse.c libvterm/src/parser.c libvterm/src/pen.c libvterm/src/creen.c libvterm/src/state.c libvterm/src/unicode.c libvterm/src/vterm.c"
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002279 AC_SUBST(TERM_SRC)
Bram Moolenaar93268052019-10-10 13:22:54 +02002280 TERM_OBJ="objects/vterm_encoding.o objects/vterm_keyboard.o objects/vterm_mouse.o objects/vterm_parser.o objects/vterm_pen.o objects/vterm_screen.o objects/vterm_state.o objects/vterm_unicode.o objects/vterm_vterm.o"
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002281 AC_SUBST(TERM_OBJ)
Bram Moolenaar823edd12019-10-23 22:35:36 +02002282 TERM_TEST="test_libvterm"
2283 AC_SUBST(TERM_TEST)
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002284fi
2285
Bram Moolenaare42a6d22017-11-12 19:21:51 +01002286AC_MSG_CHECKING(--enable-autoservername argument)
2287AC_ARG_ENABLE(autoservername,
2288 [ --enable-autoservername Automatically define servername at vim startup.], ,
2289 [enable_autoservername="no"])
2290AC_MSG_RESULT($enable_autoservername)
2291if test "$enable_autoservername" = "yes"; then
2292 AC_DEFINE(FEAT_AUTOSERVERNAME)
2293fi
2294
Bram Moolenaar071d4272004-06-13 20:20:40 +00002295AC_MSG_CHECKING(--enable-multibyte argument)
2296AC_ARG_ENABLE(multibyte,
2297 [ --enable-multibyte Include multibyte editing support.], ,
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01002298 [enable_multibyte="yes"])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002299AC_MSG_RESULT($enable_multibyte)
Bram Moolenaar30276f22019-01-24 17:59:39 +01002300if test "$enable_multibyte" != "yes"; then
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01002301 AC_MSG_ERROR([The multi-byte feature can no longer be disabled. If you have
2302 a problem with this, discuss on the Vim mailing list.])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002303fi
2304
Martin Tournoij25f3a142022-10-08 19:26:41 +01002305dnl Right-to-Left language support for Vim will be included with huge features,
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002306dnl unless ENABLE_RIGHTLEFT is undefined.
2307AC_MSG_CHECKING(--disable-rightleft argument)
2308AC_ARG_ENABLE(rightleft,
2309 [ --disable-rightleft Do not include Right-to-Left language support.],
2310 , [enable_rightleft="yes"])
2311if test "$enable_rightleft" = "yes"; then
2312 AC_MSG_RESULT(no)
2313else
2314 AC_MSG_RESULT(yes)
2315 AC_DEFINE(DISABLE_RIGHTLEFT)
2316fi
2317
Martin Tournoij25f3a142022-10-08 19:26:41 +01002318dnl Arabic language support for Vim will be included with huge features,
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002319dnl unless ENABLE_ARABIC is undefined.
2320AC_MSG_CHECKING(--disable-arabic argument)
2321AC_ARG_ENABLE(arabic,
2322 [ --disable-arabic Do not include Arabic language support.],
2323 , [enable_arabic="yes"])
2324if test "$enable_arabic" = "yes"; then
2325 AC_MSG_RESULT(no)
2326else
2327 AC_MSG_RESULT(yes)
2328 AC_DEFINE(DISABLE_ARABIC)
2329fi
2330
Bram Moolenaar14184a32019-02-16 15:10:30 +01002331dnl Farsi language support has been removed, ignore --disable-farsi
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002332AC_ARG_ENABLE(farsi,
Bram Moolenaar14184a32019-02-16 15:10:30 +01002333 [ --disable-farsi Deprecated.],,)
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002334
Bram Moolenaar071d4272004-06-13 20:20:40 +00002335AC_MSG_CHECKING(--enable-xim argument)
2336AC_ARG_ENABLE(xim,
2337 [ --enable-xim Include XIM input support.],
2338 AC_MSG_RESULT($enable_xim),
2339 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002340
2341AC_MSG_CHECKING(--enable-fontset argument)
2342AC_ARG_ENABLE(fontset,
2343 [ --enable-fontset Include X fontset output support.], ,
2344 [enable_fontset="no"])
2345AC_MSG_RESULT($enable_fontset)
2346dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2347
2348test -z "$with_x" && with_x=yes
Bram Moolenaard0573012017-10-28 21:11:06 +02002349test "${enable_gui-yes}" != no -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
Bram Moolenaar071d4272004-06-13 20:20:40 +00002350if test "$with_x" = no; then
2351 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2352else
2353 dnl Do this check early, so that its failure can override user requests.
2354
2355 AC_PATH_PROG(xmkmfpath, xmkmf)
2356
2357 AC_PATH_XTRA
2358
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002359 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002360 dnl be compiled with a special option.
2361 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002362 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002363 CFLAGS="$CFLAGS -W c,dll"
2364 LDFLAGS="$LDFLAGS -W l,dll"
2365 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2366 fi
2367
2368 dnl On my HPUX system the X include dir is found, but the lib dir not.
Bram Moolenaar70778922020-02-05 20:44:24 +01002369 dnl This is a desperate try to fix this.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002370
2371 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2372 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2373 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2374 X_LIBS="$X_LIBS -L$x_libraries"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00002375 if test "$vim_cv_uname_output" = SunOS &&
2376 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002377 X_LIBS="$X_LIBS -R $x_libraries"
2378 fi
2379 fi
2380
2381 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2382 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2383 AC_MSG_RESULT(Corrected X includes to $x_includes)
2384 X_CFLAGS="$X_CFLAGS -I$x_includes"
2385 fi
2386
2387 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2388 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2389 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2390 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2391 dnl Same for "-R/usr/lib ".
2392 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2393
2394
2395 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002396 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2397 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002398 AC_MSG_CHECKING(if X11 header files can be found)
2399 cflags_save=$CFLAGS
2400 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002401 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>
2402#include <X11/Intrinsic.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002403 AC_MSG_RESULT(yes),
2404 AC_MSG_RESULT(no); no_x=yes)
2405 CFLAGS=$cflags_save
2406
2407 if test "${no_x-no}" = yes; then
2408 with_x=no
2409 else
2410 AC_DEFINE(HAVE_X11)
2411 X_LIB="-lXt -lX11";
2412 AC_SUBST(X_LIB)
2413
2414 ac_save_LDFLAGS="$LDFLAGS"
2415 LDFLAGS="-L$x_libraries $LDFLAGS"
2416
2417 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2418 dnl For HP-UX 10.20 it must be before -lSM -lICE
2419 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2420 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2421
2422 dnl Some systems need -lnsl -lsocket when testing for ICE.
2423 dnl The check above doesn't do this, try here (again). Also needed to get
2424 dnl them after Xdmcp. link.sh will remove them when not needed.
2425 dnl Check for other function than above to avoid the cached value
2426 AC_CHECK_LIB(ICE, IceOpenConnection,
2427 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2428
2429 dnl Check for -lXpm (needed for some versions of Motif)
2430 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2431 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2432 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2433
2434 dnl Check that the X11 header files don't use implicit declarations
2435 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2436 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002437 dnl -Werror is GCC only, others like Solaris Studio might not like it
2438 if test "$GCC" = yes; then
2439 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2440 else
2441 CFLAGS="$CFLAGS $X_CFLAGS"
2442 fi
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002443 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444 AC_MSG_RESULT(no),
2445 CFLAGS="$CFLAGS -Wno-implicit-int"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002446 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002447 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2448 AC_MSG_RESULT(test failed)
2449 )
2450 )
2451 CFLAGS=$cflags_save
2452
2453 LDFLAGS="$ac_save_LDFLAGS"
2454
Mike Gilberta055b442023-08-20 19:01:41 +02002455 AC_CHECK_SIZEOF([wchar_t])
2456 if test "$ac_cv_sizeof_wchar_t" -le 2; then
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002457 AC_DEFINE(SMALL_WCHAR_T)
2458 fi
2459
Bram Moolenaar071d4272004-06-13 20:20:40 +00002460 fi
2461fi
2462
Bram Moolenaard2a05492018-07-27 22:35:15 +02002463dnl Check if --with-x was given but it doesn't work.
2464if test "x$with_x" = xno -a "x$with_x_arg" = xyes; then
2465 AC_MSG_ERROR([could not configure X])
2466fi
2467
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002468test "x$with_x" = xno -a "x$HAIKU" != "xyes" -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002469
2470AC_MSG_CHECKING(--enable-gui argument)
2471AC_ARG_ENABLE(gui,
Bram Moolenaarf52fac22022-03-11 16:01:26 +00002472 [ --enable-gui[=OPTS] X11 GUI. [default=auto] [OPTS=auto/no/gtk2/gnome2/gtk3/motif/haiku/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002473
2474dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2475dnl Do not use character classes for portability with old tools.
2476enable_gui_canon=`echo "_$enable_gui" | \
2477 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2478
2479dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002481SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002482SKIP_GNOME=YES
2483SKIP_MOTIF=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002484SKIP_PHOTON=YES
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002485SKIP_HAIKU=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002486GUITYPE=NONE
2487
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002488if test "x$HAIKU" = "xyes"; then
2489 SKIP_HAIKU=
2490 case "$enable_gui_canon" in
2491 no) AC_MSG_RESULT(no GUI support)
2492 SKIP_HAIKU=YES ;;
2493 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2494 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2495 haiku) AC_MSG_RESULT(Haiku GUI support) ;;
2496 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2497 SKIP_HAIKU=YES ;;
2498 esac
2499elif test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002500 SKIP_PHOTON=
2501 case "$enable_gui_canon" in
2502 no) AC_MSG_RESULT(no GUI support)
2503 SKIP_PHOTON=YES ;;
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002504 yes|""|auto) AC_MSG_RESULT(automatic GUI support)
2505 gui_auto=yes ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002506 photon) AC_MSG_RESULT(Photon GUI support) ;;
2507 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2508 SKIP_PHOTON=YES ;;
2509 esac
2510
Bram Moolenaar040f9752020-08-11 23:08:48 +02002511elif test "x$MACOS_X" = "xyes" -a "x$with_x" = "xno" ; then
2512 case "$enable_gui_canon" in
2513 no) AC_MSG_RESULT(no GUI support) ;;
2514 yes|"") AC_MSG_RESULT(yes - automatic GUI support)
2515 gui_auto=yes ;;
2516 auto) AC_MSG_RESULT(auto - disable GUI support for Mac OS) ;;
Bram Moolenaarbe7529e2020-08-13 21:05:39 +02002517 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
Bram Moolenaar040f9752020-08-11 23:08:48 +02002518 esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002519else
2520
Bram Moolenaar071d4272004-06-13 20:20:40 +00002521 case "$enable_gui_canon" in
2522 no|none) AC_MSG_RESULT(no GUI support) ;;
2523 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002524 gui_auto=yes
Bram Moolenaar071d4272004-06-13 20:20:40 +00002525 SKIP_GTK2=
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002526 SKIP_GTK3=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527 SKIP_GNOME=
Bram Moolenaarf52fac22022-03-11 16:01:26 +00002528 SKIP_MOTIF=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002529 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002530 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2532 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002533 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002534 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2535 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002536 motif) AC_MSG_RESULT(Motif GUI support)
2537 SKIP_MOTIF=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002538 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2539 esac
2540
2541fi
2542
Bram Moolenaar071d4272004-06-13 20:20:40 +00002543if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2544 -a "$enable_gui_canon" != "gnome2"; then
2545 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2546 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002547 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002548 , enable_gtk2_check="yes")
2549 AC_MSG_RESULT($enable_gtk2_check)
2550 if test "x$enable_gtk2_check" = "xno"; then
2551 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002552 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553 fi
2554fi
2555
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002556if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002557 AC_MSG_CHECKING(whether or not to look for GNOME)
2558 AC_ARG_ENABLE(gnome-check,
2559 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2560 , enable_gnome_check="no")
2561 AC_MSG_RESULT($enable_gnome_check)
2562 if test "x$enable_gnome_check" = "xno"; then
2563 SKIP_GNOME=YES
2564 fi
2565fi
2566
Bram Moolenaar98921892016-02-23 17:14:37 +01002567if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2568 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2569 AC_ARG_ENABLE(gtk3-check,
2570 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2571 , enable_gtk3_check="yes")
2572 AC_MSG_RESULT($enable_gtk3_check)
2573 if test "x$enable_gtk3_check" = "xno"; then
2574 SKIP_GTK3=YES
2575 fi
2576fi
2577
Bram Moolenaar071d4272004-06-13 20:20:40 +00002578if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2579 AC_MSG_CHECKING(whether or not to look for Motif)
2580 AC_ARG_ENABLE(motif-check,
2581 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2582 , enable_motif_check="yes")
2583 AC_MSG_RESULT($enable_motif_check)
2584 if test "x$enable_motif_check" = "xno"; then
2585 SKIP_MOTIF=YES
2586 fi
2587fi
2588
Bram Moolenaar071d4272004-06-13 20:20:40 +00002589dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002590dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002591dnl
2592dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002593dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594dnl
2595AC_DEFUN(AM_PATH_GTK,
2596[
2597 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2598 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002599 no_gtk=""
2600 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2601 && $PKG_CONFIG --exists gtk+-2.0; then
2602 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002603 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2604 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002605 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2606 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2607 dnl something like that.
2608 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002609 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2611 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2612 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2613 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2614 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2615 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2616 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2617 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002618 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2619 && $PKG_CONFIG --exists gtk+-3.0; then
2620 {
2621 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2622 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2623
2624 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2625 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2626 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2627 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2628 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2629 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2630 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2631 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2632 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2633 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002634 else
Bram Moolenaar67876de2021-01-12 20:51:24 +01002635 dnl Put some text before the "no" to hint at installing the gtk-dev
2636 dnl packages.
2637 AC_MSG_CHECKING(for GTK -dev package)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002638 no_gtk=yes
2639 fi
2640
2641 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2642 {
2643 ac_save_CFLAGS="$CFLAGS"
2644 ac_save_LIBS="$LIBS"
2645 CFLAGS="$CFLAGS $GTK_CFLAGS"
2646 LIBS="$LIBS $GTK_LIBS"
2647
2648 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002649 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002650 dnl
2651 rm -f conf.gtktest
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002652 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002653#include <gtk/gtk.h>
2654#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002655#if STDC_HEADERS
2656# include <stdlib.h>
2657# include <stddef.h>
2658#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002659
2660int
2661main ()
2662{
2663int major, minor, micro;
2664char *tmp_version;
2665
2666system ("touch conf.gtktest");
2667
2668/* HP/UX 9 (%@#!) writes to sscanf strings */
2669tmp_version = g_strdup("$min_gtk_version");
2670if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2671 printf("%s, bad version string\n", "$min_gtk_version");
2672 exit(1);
2673 }
2674
2675if ((gtk_major_version > major) ||
2676 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2677 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2678 (gtk_micro_version >= micro)))
2679{
2680 return 0;
2681}
2682return 1;
2683}
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002684])],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002685 CFLAGS="$ac_save_CFLAGS"
2686 LIBS="$ac_save_LIBS"
2687 }
2688 fi
2689 if test "x$no_gtk" = x ; then
2690 if test "x$enable_gtktest" = "xyes"; then
2691 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2692 else
2693 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2694 fi
2695 ifelse([$2], , :, [$2])
2696 else
2697 {
2698 AC_MSG_RESULT(no)
2699 GTK_CFLAGS=""
2700 GTK_LIBS=""
2701 ifelse([$3], , :, [$3])
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002702 if test "$fail_if_missing" = "yes" -a "X$gui_auto" != "Xyes"; then
2703 AC_MSG_ERROR([could not configure GTK])
2704 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002705 }
2706 fi
2707 }
2708 else
2709 GTK_CFLAGS=""
2710 GTK_LIBS=""
2711 ifelse([$3], , :, [$3])
2712 fi
2713 AC_SUBST(GTK_CFLAGS)
2714 AC_SUBST(GTK_LIBS)
2715 rm -f conf.gtktest
2716])
2717
2718dnl ---------------------------------------------------------------------------
2719dnl gnome
2720dnl ---------------------------------------------------------------------------
2721AC_DEFUN([GNOME_INIT_HOOK],
2722[
2723 AC_SUBST(GNOME_LIBS)
2724 AC_SUBST(GNOME_LIBDIR)
2725 AC_SUBST(GNOME_INCLUDEDIR)
2726
2727 AC_ARG_WITH(gnome-includes,
2728 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2729 [CFLAGS="$CFLAGS -I$withval"]
2730 )
2731
2732 AC_ARG_WITH(gnome-libs,
2733 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2734 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2735 )
2736
2737 AC_ARG_WITH(gnome,
2738 [ --with-gnome Specify prefix for GNOME files],
2739 if test x$withval = xyes; then
2740 want_gnome=yes
2741 ifelse([$1], [], :, [$1])
2742 else
2743 if test "x$withval" = xno; then
2744 want_gnome=no
2745 else
2746 want_gnome=yes
2747 LDFLAGS="$LDFLAGS -L$withval/lib"
2748 CFLAGS="$CFLAGS -I$withval/include"
2749 gnome_prefix=$withval/lib
2750 fi
2751 fi,
2752 want_gnome=yes)
2753
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002754 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002755 {
2756 AC_MSG_CHECKING(for libgnomeui-2.0)
2757 if $PKG_CONFIG --exists libgnomeui-2.0; then
2758 AC_MSG_RESULT(yes)
2759 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2760 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2761 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002762
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002763 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2764 dnl This might not be the right way but it works for me...
2765 AC_MSG_CHECKING(for FreeBSD)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00002766 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002767 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002768 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002769 GNOME_LIBS="$GNOME_LIBS -pthread"
2770 else
2771 AC_MSG_RESULT(no)
2772 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002773 $1
2774 else
2775 AC_MSG_RESULT(not found)
2776 if test "x$2" = xfail; then
2777 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2778 fi
2779 fi
2780 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002781 fi
2782])
2783
2784AC_DEFUN([GNOME_INIT],[
2785 GNOME_INIT_HOOK([],fail)
2786])
2787
Bram Moolenaar427f5b62019-06-09 13:43:51 +02002788if test "X$PKG_CONFIG" = "X"; then
2789 AC_PATH_TOOL(PKG_CONFIG, pkg-config, no)
2790fi
2791
Bram Moolenaar071d4272004-06-13 20:20:40 +00002792
2793dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002794dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002795dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002796if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002797
2798 AC_MSG_CHECKING(--disable-gtktest argument)
2799 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2800 , enable_gtktest=yes)
2801 if test "x$enable_gtktest" = "xyes" ; then
2802 AC_MSG_RESULT(gtk test enabled)
2803 else
2804 AC_MSG_RESULT(gtk test disabled)
2805 fi
2806
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002807 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002808 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2809 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002810 dnl Disable checking for GTK3 here, otherwise it's found when GTK2 is not
2811 dnl found.
2812 save_skip_gtk3=$SKIP_GTK3
2813 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002814 AM_PATH_GTK(2.2.0,
2815 [GUI_LIB_LOC="$GTK_LIBDIR"
2816 GTK_LIBNAME="$GTK_LIBS"
2817 GUI_INC_LOC="$GTK_CFLAGS"], )
2818 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002819 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002820 SKIP_MOTIF=YES
2821 GUITYPE=GTK
2822 AC_SUBST(GTK_LIBNAME)
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002823 else
2824 SKIP_GTK3=$save_skip_gtk3
Bram Moolenaar071d4272004-06-13 20:20:40 +00002825 fi
2826 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002827 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002828 dnl
2829 dnl if GTK exists, then check for GNOME.
2830 dnl
2831 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002832 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002833 GNOME_INIT_HOOK([have_gnome=yes])
2834 if test "x$have_gnome" = xyes ; then
2835 AC_DEFINE(FEAT_GUI_GNOME)
2836 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2837 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002838 fi
2839 }
2840 fi
2841 fi
2842fi
2843
Bram Moolenaar98921892016-02-23 17:14:37 +01002844
2845dnl ---------------------------------------------------------------------------
2846dnl Check for GTK3.
2847dnl ---------------------------------------------------------------------------
2848if test -z "$SKIP_GTK3"; then
2849
2850 AC_MSG_CHECKING(--disable-gtktest argument)
2851 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2852 , enable_gtktest=yes)
2853 if test "x$enable_gtktest" = "xyes" ; then
2854 AC_MSG_RESULT(gtk test enabled)
2855 else
2856 AC_MSG_RESULT(gtk test disabled)
2857 fi
2858
Bram Moolenaar98921892016-02-23 17:14:37 +01002859 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002860 save_skip_gtk2=$SKIP_GTK2
2861 SKIP_GTK2=YES
Bram Moolenaar98921892016-02-23 17:14:37 +01002862 AM_PATH_GTK(3.0.0,
2863 [GUI_LIB_LOC="$GTK_LIBDIR"
2864 GTK_LIBNAME="$GTK_LIBS"
2865 GUI_INC_LOC="$GTK_CFLAGS"], )
2866 if test "x$GTK_CFLAGS" != "x"; then
2867 SKIP_GTK2=YES
2868 SKIP_GNOME=YES
Bram Moolenaar98921892016-02-23 17:14:37 +01002869 SKIP_MOTIF=YES
2870 GUITYPE=GTK
2871 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar98921892016-02-23 17:14:37 +01002872 AC_DEFINE(USE_GTK3)
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002873 else
2874 SKIP_GTK2=$save_skip_gtk2
Bram Moolenaar98921892016-02-23 17:14:37 +01002875 fi
2876 fi
2877fi
2878
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002879dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002880dnl glib-compile-resources is found in PATH, use GResource.
2881if test "x$GUITYPE" = "xGTK"; then
2882 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2883 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2884 if test "x$gdk_pixbuf_version" != x ; then
2885 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2886 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2887 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002888 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002889 AC_MSG_RESULT([OK.])
2890 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2891 AC_MSG_CHECKING([glib-compile-resources])
2892 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002893 GLIB_COMPILE_RESOURCES=""
2894 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002895 else
2896 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002897 AC_DEFINE(USE_GRESOURCE)
2898 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2899 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002900 fi
2901 else
2902 AC_MSG_RESULT([not usable.])
2903 fi
2904 else
2905 AC_MSG_RESULT([cannot obtain from pkg_config.])
2906 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002907
2908 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2909 AC_ARG_ENABLE(icon_cache_update,
2910 [ --disable-icon-cache-update update disabled],
2911 [],
2912 [enable_icon_cache_update="yes"])
2913 if test "$enable_icon_cache_update" = "yes"; then
2914 AC_MSG_RESULT([not set])
2915 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2916 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2917 AC_MSG_RESULT([not found in PATH.])
2918 fi
2919 else
2920 AC_MSG_RESULT([update disabled])
2921 fi
2922
2923 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2924 AC_ARG_ENABLE(desktop_database_update,
2925 [ --disable-desktop-database-update update disabled],
2926 [],
2927 [enable_desktop_database_update="yes"])
2928 if test "$enable_desktop_database_update" = "yes"; then
2929 AC_MSG_RESULT([not set])
2930 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2931 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2932 AC_MSG_RESULT([not found in PATH.])
2933 fi
2934 else
2935 AC_MSG_RESULT([update disabled])
2936 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002937fi
2938AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002939AC_SUBST(GRESOURCE_SRC)
2940AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002941AC_SUBST(GTK_UPDATE_ICON_CACHE)
2942AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002943
Bram Moolenaar071d4272004-06-13 20:20:40 +00002944dnl Check for Motif include files location.
2945dnl The LAST one found is used, this makes the highest version to be used,
2946dnl e.g. when Motif1.2 and Motif2.0 are both present.
2947
2948if test -z "$SKIP_MOTIF"; then
2949 gui_XXX="/usr/XXX/Motif* /usr/Motif*/XXX /usr/XXX /usr/shlib /usr/X11*/XXX /usr/XXX/X11* /usr/dt/XXX /local/Motif*/XXX /local/XXX/Motif* /usr/local/Motif*/XXX /usr/local/XXX/Motif* /usr/local/XXX /usr/local/X11*/XXX /usr/local/LessTif/Motif*/XXX $MOTIFHOME/XXX"
2950 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2951 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2952
2953 AC_MSG_CHECKING(for location of Motif GUI includes)
2954 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2955 GUI_INC_LOC=
2956 for try in $gui_includes; do
2957 if test -f "$try/Xm/Xm.h"; then
2958 GUI_INC_LOC=$try
2959 fi
2960 done
2961 if test -n "$GUI_INC_LOC"; then
2962 if test "$GUI_INC_LOC" = /usr/include; then
2963 GUI_INC_LOC=
2964 AC_MSG_RESULT(in default path)
2965 else
2966 AC_MSG_RESULT($GUI_INC_LOC)
2967 fi
2968 else
2969 AC_MSG_RESULT(<not found>)
2970 SKIP_MOTIF=YES
2971 fi
2972fi
2973
2974dnl Check for Motif library files location. In the same order as the include
2975dnl files, to avoid a mixup if several versions are present
2976
2977if test -z "$SKIP_MOTIF"; then
2978 AC_MSG_CHECKING(--with-motif-lib argument)
2979 AC_ARG_WITH(motif-lib,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002980 [ --with-motif-lib=STRING Library for Motif ],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002981 [ MOTIF_LIBNAME="${withval}" ] )
2982
2983 if test -n "$MOTIF_LIBNAME"; then
2984 AC_MSG_RESULT($MOTIF_LIBNAME)
2985 GUI_LIB_LOC=
2986 else
2987 AC_MSG_RESULT(no)
2988
2989 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2990 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2991
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002992 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2993 dnl linker will figure out which one to use, we only check if one exists.
Kelvin Leeb4716902022-04-04 17:20:01 +01002994 dnl Cygwin uses the .dll.a extension.
Bram Moolenaar01967f52023-04-12 16:24:03 +01002995 dnl OpenSUSE appears to use /usr/lib64.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002996 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar01967f52023-04-12 16:24:03 +01002997 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002998 GUI_LIB_LOC=
2999 for try in $gui_libs; do
Kelvin Leeb4716902022-04-04 17:20:01 +01003000 for libtry in "$try"/libXm.a "$try"/libXm.dll.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00003001 if test -f "$libtry"; then
3002 GUI_LIB_LOC=$try
3003 fi
3004 done
3005 done
3006 if test -n "$GUI_LIB_LOC"; then
Bram Moolenaar01967f52023-04-12 16:24:03 +01003007 dnl Remove /usr/lib, it causes trouble on some systems.
3008 dnl For consistency also remove other standard lib directories.
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02003009 if test "$GUI_LIB_LOC" = /usr/lib \
Bram Moolenaar01967f52023-04-12 16:24:03 +01003010 -o "$GUI_LIB_LOC" = /usr/lib64 \
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02003011 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
3012 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003013 GUI_LIB_LOC=
3014 AC_MSG_RESULT(in default path)
3015 else
3016 if test -n "$GUI_LIB_LOC"; then
3017 AC_MSG_RESULT($GUI_LIB_LOC)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003018 if test "$vim_cv_uname_output" = SunOS &&
3019 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003020 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
3021 fi
3022 fi
3023 fi
3024 MOTIF_LIBNAME=-lXm
3025 else
3026 AC_MSG_RESULT(<not found>)
3027 SKIP_MOTIF=YES
3028 fi
3029 fi
3030fi
3031
3032if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003033 GUITYPE=MOTIF
3034 AC_SUBST(MOTIF_LIBNAME)
3035fi
3036
Bram Moolenaare2adcf32022-03-12 11:57:25 +00003037if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003038 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
3039 dnl Avoid adding it when it twice
3040 if test -n "$GUI_INC_LOC"; then
3041 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
3042 fi
3043 if test -n "$GUI_LIB_LOC"; then
3044 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
3045 fi
3046
3047 dnl Check for -lXext and then for -lXmu
3048 ldflags_save=$LDFLAGS
3049 LDFLAGS="$X_LIBS $LDFLAGS"
3050 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
3051 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3052 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
3053 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
3054 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3055 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
3056 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3057 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
3058 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3059 if test -z "$SKIP_MOTIF"; then
3060 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
3061 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3062 fi
3063 LDFLAGS=$ldflags_save
3064
3065 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
3066 AC_MSG_CHECKING(for extra X11 defines)
3067 NARROW_PROTO=
3068 rm -fr conftestdir
3069 if mkdir conftestdir; then
3070 cd conftestdir
3071 cat > Imakefile <<'EOF'
3072acfindx:
3073 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
3074EOF
3075 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
3076 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
3077 fi
3078 cd ..
3079 rm -fr conftestdir
3080 fi
3081 if test -z "$NARROW_PROTO"; then
3082 AC_MSG_RESULT(no)
3083 else
3084 AC_MSG_RESULT($NARROW_PROTO)
3085 fi
3086 AC_SUBST(NARROW_PROTO)
3087fi
3088
3089dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
3090dnl use the X11 include path
3091if test "$enable_xsmp" = "yes"; then
3092 cppflags_save=$CPPFLAGS
3093 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3094 AC_CHECK_HEADERS(X11/SM/SMlib.h)
3095 CPPFLAGS=$cppflags_save
3096fi
3097
3098
Bram Moolenaarf52fac22022-03-11 16:01:26 +00003099if test -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003100 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
3101 cppflags_save=$CPPFLAGS
3102 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3103 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
3104
3105 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
3106 if test ! "$enable_xim" = "no"; then
3107 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
3108 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
3109 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02003110 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00003111 fi
3112 CPPFLAGS=$cppflags_save
3113
Bram Moolenaar54612582019-11-21 17:13:31 +01003114 dnl automatically enable XIM in the GUI
3115 if test "$enable_xim" = "auto" -a "x$GUITYPE" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003116 AC_MSG_RESULT(X GUI selected; xim has been enabled)
3117 enable_xim="yes"
3118 fi
3119fi
3120
Bram Moolenaarf52fac22022-03-11 16:01:26 +00003121if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003122 cppflags_save=$CPPFLAGS
3123 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003124dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
3125 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003126 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003127#include <X11/Intrinsic.h>
3128#include <X11/Xmu/Editres.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003129 [int i; i = 0;])],
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003130 AC_MSG_RESULT(yes)
3131 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
3132 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133 CPPFLAGS=$cppflags_save
3134fi
3135
Bram Moolenaar0b40d082022-03-08 13:32:37 +00003136dnl Only use the Xm directory when compiling Motif.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003137if test -z "$SKIP_MOTIF"; then
3138 cppflags_save=$CPPFLAGS
3139 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02003140 if test "$zOSUnix" = "yes"; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003141 AC_CHECK_HEADERS(Xm/Xm.h)
Bram Moolenaar77c19352012-06-13 19:19:41 +02003142 else
Bram Moolenaarde1d7342022-06-05 20:03:17 +01003143 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaare5303952022-06-19 17:05:47 +01003144 fi
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003145
Bram Moolenaar77c19352012-06-13 19:19:41 +02003146 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003147 dnl Solaris uses XpmAttributes_21, very annoying.
3148 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003149 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;])],
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003150 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
3151 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
3152 )
3153 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00003154 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003155 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003156 CPPFLAGS=$cppflags_save
3157fi
3158
3159if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
3160 AC_MSG_RESULT(no GUI selected; xim has been disabled)
3161 enable_xim="no"
3162fi
3163if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
3164 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
3165 enable_fontset="no"
3166fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02003167if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003168 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
3169 enable_fontset="no"
3170fi
3171
Bram Moolenaarb3f74062020-02-26 16:16:53 +01003172dnl There is no test for the Haiku GUI, if it's selected it's used
3173if test -z "$SKIP_HAIKU"; then
3174 GUITYPE=HAIKUGUI
3175fi
3176
Bram Moolenaar071d4272004-06-13 20:20:40 +00003177if test -z "$SKIP_PHOTON"; then
3178 GUITYPE=PHOTONGUI
3179fi
3180
3181AC_SUBST(GUI_INC_LOC)
3182AC_SUBST(GUI_LIB_LOC)
3183AC_SUBST(GUITYPE)
3184AC_SUBST(GUI_X_LIBS)
3185
3186if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3187 AC_MSG_ERROR([cannot use workshop without Motif])
3188fi
3189
3190dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3191if test "$enable_xim" = "yes"; then
3192 AC_DEFINE(FEAT_XIM)
3193fi
3194if test "$enable_fontset" = "yes"; then
3195 AC_DEFINE(FEAT_XFONTSET)
3196fi
3197
3198
3199dnl ---------------------------------------------------------------------------
3200dnl end of GUI-checking
3201dnl ---------------------------------------------------------------------------
3202
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003203AC_MSG_CHECKING([for /proc link to executable])
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003204if test -L "/proc/self/exe"; then
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003205 dnl Linux
3206 AC_MSG_RESULT([/proc/self/exe])
3207 AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe")
3208elif test -L "/proc/self/path/a.out"; then
3209 dnl Solaris
3210 AC_MSG_RESULT([/proc/self/path/a.out])
3211 AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out")
3212elif test -L "/proc/curproc/file"; then
3213 dnl FreeBSD
3214 AC_MSG_RESULT([/proc/curproc/file])
3215 AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file")
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003216else
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003217 AC_MSG_RESULT(no)
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003218fi
3219
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003220dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003221AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003222case $vim_cv_uname_output in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003223 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003224 AC_MSG_CHECKING(for CYGWIN clipboard support)
3225 if test "x$with_x" = "xno" ; then
3226 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3227 AC_MSG_RESULT(yes)
3228 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3229 else
3230 AC_MSG_RESULT(no - using X11)
3231 fi ;;
3232
3233 *) CYGWIN=no; AC_MSG_RESULT(no);;
3234esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003235
Bram Moolenaar071d4272004-06-13 20:20:40 +00003236dnl Checks for libraries and include files.
3237
Bram Moolenaar446cb832008-06-24 21:56:24 +00003238AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3239 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003240 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003241#include "confdefs.h"
3242#include <ctype.h>
3243#if STDC_HEADERS
3244# include <stdlib.h>
3245# include <stddef.h>
3246#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003247int main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003248 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003249 vim_cv_toupper_broken=yes
3250 ],[
3251 vim_cv_toupper_broken=no
3252 ],[
3253 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3254 ])])
3255
3256if test "x$vim_cv_toupper_broken" = "xyes" ; then
3257 AC_DEFINE(BROKEN_TOUPPER)
3258fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003259
3260AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003261AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003262 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3263 AC_MSG_RESULT(no))
3264
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003265AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003266AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [int x __attribute__((unused));])],
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003267 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3268 AC_MSG_RESULT(no))
3269
Bram Moolenaar071d4272004-06-13 20:20:40 +00003270dnl Checks for header files.
3271AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3272dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3273if test "$HAS_ELF" = 1; then
3274 AC_CHECK_LIB(elf, main)
3275fi
3276
3277AC_HEADER_DIRENT
3278
Bram Moolenaar071d4272004-06-13 20:20:40 +00003279dnl If sys/wait.h is not found it might still exist but not be POSIX
3280dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3281if test $ac_cv_header_sys_wait_h = no; then
3282 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003283 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/wait.h>],
3284 [union wait xx, yy; xx = yy])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003285 AC_MSG_RESULT(yes)
3286 AC_DEFINE(HAVE_SYS_WAIT_H)
3287 AC_DEFINE(HAVE_UNION_WAIT),
3288 AC_MSG_RESULT(no))
3289fi
3290
Bram Moolenaar779a7752016-01-30 23:26:34 +01003291AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003292 sys/select.h sys/utsname.h termcap.h fcntl.h \
3293 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3294 termio.h iconv.h inttypes.h langinfo.h math.h \
3295 unistd.h stropts.h errno.h sys/resource.h \
3296 sys/systeminfo.h locale.h sys/stream.h termios.h \
3297 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
Bram Moolenaar1ecc5e42019-01-26 15:12:55 +01003298 utime.h sys/param.h sys/ptms.h libintl.h libgen.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003299 util/debug.h util/msg18n.h frame.h sys/acl.h \
3300 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003301
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003302dnl sys/ptem.h depends on sys/stream.h on Solaris
3303AC_CHECK_HEADERS(sys/ptem.h, [], [],
3304[#if defined HAVE_SYS_STREAM_H
3305# include <sys/stream.h>
3306#endif])
3307
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003308dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3309AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3310[#if defined HAVE_SYS_PARAM_H
3311# include <sys/param.h>
3312#endif])
3313
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003314
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003315dnl pthread_np.h may exist but can only be used after including pthread.h
3316AC_MSG_CHECKING([for pthread_np.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003317AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003318#include <pthread.h>
3319#include <pthread_np.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003320 [int i; i = 0;])],
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003321 AC_MSG_RESULT(yes)
3322 AC_DEFINE(HAVE_PTHREAD_NP_H),
3323 AC_MSG_RESULT(no))
3324
Bram Moolenaare344bea2005-09-01 20:46:49 +00003325AC_CHECK_HEADERS(strings.h)
Bram Moolenaard0573012017-10-28 21:11:06 +02003326if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00003327 dnl The strings.h file on OS/X contains a warning and nothing useful.
3328 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3329else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003330
3331dnl Check if strings.h and string.h can both be included when defined.
3332AC_MSG_CHECKING([if strings.h can be included after string.h])
3333cppflags_save=$CPPFLAGS
3334CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003335AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003336#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3337# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3338 /* but don't do it on AIX 5.1 (Uribarri) */
3339#endif
3340#ifdef HAVE_XM_XM_H
3341# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3342#endif
3343#ifdef HAVE_STRING_H
3344# include <string.h>
3345#endif
3346#if defined(HAVE_STRINGS_H)
3347# include <strings.h>
3348#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003349 ], [int i; i = 0;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003350 AC_MSG_RESULT(yes),
3351 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3352 AC_MSG_RESULT(no))
3353CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003354fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003355
3356dnl Checks for typedefs, structures, and compiler characteristics.
3357AC_PROG_GCC_TRADITIONAL
3358AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003359AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003360AC_TYPE_MODE_T
3361AC_TYPE_OFF_T
3362AC_TYPE_PID_T
3363AC_TYPE_SIZE_T
3364AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003365AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003366
Illia Bobyrf39842f2023-08-27 18:21:23 +02003367AC_CHECK_HEADERS_ONCE([sys/time.h])
3368
Bram Moolenaar071d4272004-06-13 20:20:40 +00003369AC_CHECK_TYPE(ino_t, long)
3370AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003371AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003372AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003373
3374AC_MSG_CHECKING(for rlim_t)
3375if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3376 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3377else
3378 AC_EGREP_CPP(dnl
3379changequote(<<,>>)dnl
3380<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3381changequote([,]),
3382 [
3383#include <sys/types.h>
3384#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003385# include <stdlib.h>
3386# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003387#endif
3388#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003389# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003390#endif
3391 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3392 AC_MSG_RESULT($ac_cv_type_rlim_t)
3393fi
3394if test $ac_cv_type_rlim_t = no; then
3395 cat >> confdefs.h <<\EOF
3396#define rlim_t unsigned long
3397EOF
3398fi
3399
3400AC_MSG_CHECKING(for stack_t)
3401if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3402 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3403else
3404 AC_EGREP_CPP(stack_t,
3405 [
3406#include <sys/types.h>
3407#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003408# include <stdlib.h>
3409# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003410#endif
3411#include <signal.h>
3412 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3413 AC_MSG_RESULT($ac_cv_type_stack_t)
3414fi
3415if test $ac_cv_type_stack_t = no; then
3416 cat >> confdefs.h <<\EOF
3417#define stack_t struct sigaltstack
3418EOF
3419fi
3420
3421dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3422AC_MSG_CHECKING(whether stack_t has an ss_base field)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003423AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003424#include <sys/types.h>
3425#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003426# include <stdlib.h>
3427# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003428#endif
3429#include <signal.h>
3430#include "confdefs.h"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003431 ], [stack_t sigstk; sigstk.ss_base = 0; ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003432 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3433 AC_MSG_RESULT(no))
3434
3435olibs="$LIBS"
3436AC_MSG_CHECKING(--with-tlib argument)
3437AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3438if test -n "$with_tlib"; then
3439 AC_MSG_RESULT($with_tlib)
3440 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003441 AC_MSG_CHECKING(for linking with $with_tlib library)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003442 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003443 dnl Need to check for tgetent() below.
3444 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003445else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003446 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003447 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3448 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003449 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003450 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003451 dnl Older versions of ncurses have bugs, get a new one!
3452 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003453 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003454 case "$vim_cv_uname_output" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003455 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3456 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003457 esac
3458 for libname in $tlibs; do
3459 AC_CHECK_LIB(${libname}, tgetent,,)
3460 if test "x$olibs" != "x$LIBS"; then
3461 dnl It's possible that a library is found but it doesn't work
3462 dnl e.g., shared library that cannot be found
3463 dnl compile and run a test program to be sure
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003464 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003465#ifdef HAVE_TERMCAP_H
3466# include <termcap.h>
3467#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003468#if STDC_HEADERS
3469# include <stdlib.h>
3470# include <stddef.h>
3471#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003472int main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003473 res="OK", res="FAIL", res="FAIL")
3474 if test "$res" = "OK"; then
3475 break
3476 fi
3477 AC_MSG_RESULT($libname library is not usable)
3478 LIBS="$olibs"
3479 fi
3480 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003481 if test "x$olibs" = "x$LIBS"; then
3482 AC_MSG_RESULT(no terminal library found)
3483 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003484fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003485
3486if test "x$olibs" = "x$LIBS"; then
3487 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003488 AC_LINK_IFELSE([AC_LANG_PROGRAM([int tgetent(char *, const char *);],
3489 [[char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");]])],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003490 AC_MSG_RESULT(yes),
3491 AC_MSG_ERROR([NOT FOUND!
3492 You need to install a terminal library; for example ncurses.
Bram Moolenaar16678eb2021-04-21 11:57:59 +02003493 On Linux that would be the libncurses-dev package.
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003494 Or specify the name of the library with --with-tlib.]))
3495fi
3496
Bram Moolenaar446cb832008-06-24 21:56:24 +00003497AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3498 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003499 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003500#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003501#ifdef HAVE_TERMCAP_H
3502# include <termcap.h>
3503#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003504#ifdef HAVE_STRING_H
3505# include <string.h>
3506#endif
3507#if STDC_HEADERS
3508# include <stdlib.h>
3509# include <stddef.h>
3510#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003511int main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003512{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003513 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003514 vim_cv_terminfo=no
3515 ],[
3516 vim_cv_terminfo=yes
3517 ],[
3518 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3519 ])
3520 ])
3521
3522if test "x$vim_cv_terminfo" = "xyes" ; then
3523 AC_DEFINE(TERMINFO)
3524fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003525
Bram Moolenaara88254f2017-11-02 23:04:14 +01003526AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgetent],
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003527 [
3528 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003529#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003530#ifdef HAVE_TERMCAP_H
3531# include <termcap.h>
3532#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003533#if STDC_HEADERS
3534# include <stdlib.h>
3535# include <stddef.h>
3536#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003537int main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003538{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003539 ]])],[
Bram Moolenaara88254f2017-11-02 23:04:14 +01003540 vim_cv_tgetent=zero
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003541 ],[
Bram Moolenaara88254f2017-11-02 23:04:14 +01003542 vim_cv_tgetent=non-zero
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003543 ],[
3544 AC_MSG_ERROR(failed to compile test program.)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003545 ])
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003546 ])
3547
Bram Moolenaara88254f2017-11-02 23:04:14 +01003548if test "x$vim_cv_tgetent" = "xzero" ; then
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003549 AC_DEFINE(TGETENT_ZERO_ERR, 0)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003550fi
3551
3552AC_MSG_CHECKING(whether termcap.h contains ospeed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003553AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003554#ifdef HAVE_TERMCAP_H
3555# include <termcap.h>
3556#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003557 ], [ospeed = 20000])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003558 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3559 [AC_MSG_RESULT(no)
3560 AC_MSG_CHECKING(whether ospeed can be extern)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003561 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003562#ifdef HAVE_TERMCAP_H
3563# include <termcap.h>
3564#endif
3565extern short ospeed;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003566 ], [ospeed = 20000])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003567 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3568 AC_MSG_RESULT(no))]
3569 )
3570
3571AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003572AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003573#ifdef HAVE_TERMCAP_H
3574# include <termcap.h>
3575#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003576 ], [if (UP == 0 && BC == 0) PC = 1])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003577 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3578 [AC_MSG_RESULT(no)
3579 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003580 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003581#ifdef HAVE_TERMCAP_H
3582# include <termcap.h>
3583#endif
3584extern char *UP, *BC, PC;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003585 ], [if (UP == 0 && BC == 0) PC = 1])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003586 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3587 AC_MSG_RESULT(no))]
3588 )
3589
3590AC_MSG_CHECKING(whether tputs() uses outfuntype)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003591AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003592#ifdef HAVE_TERMCAP_H
3593# include <termcap.h>
3594#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003595 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003596 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3597 AC_MSG_RESULT(no))
3598
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003599AC_MSG_CHECKING([whether del_curterm() can be used])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003600AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003601#ifdef HAVE_TERMCAP_H
3602# include <termcap.h>
3603#endif
3604#include <term.h>
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003605 ], [if (cur_term) del_curterm(cur_term);])],
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003606 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DEL_CURTERM),
3607 AC_MSG_RESULT(no))
3608
Bram Moolenaar071d4272004-06-13 20:20:40 +00003609dnl On some SCO machines sys/select redefines struct timeval
3610AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003611AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003612#include <sys/types.h>
3613#include <sys/time.h>
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003614#include <sys/select.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003615 AC_MSG_RESULT(yes)
3616 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3617 AC_MSG_RESULT(no))
3618
Bram Moolenaar071d4272004-06-13 20:20:40 +00003619dnl Checks for pty.c (copied from screen) ==========================
3620AC_MSG_CHECKING(for /dev/ptc)
3621if test -r /dev/ptc; then
3622 AC_DEFINE(HAVE_DEV_PTC)
3623 AC_MSG_RESULT(yes)
3624else
3625 AC_MSG_RESULT(no)
3626fi
3627
3628AC_MSG_CHECKING(for SVR4 ptys)
3629if test -c /dev/ptmx ; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003630 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarce7be3a2020-11-26 20:11:11 +01003631// These should be in stdlib.h, but it depends on _XOPEN_SOURCE.
3632char *ptsname(int);
3633int unlockpt(int);
3634int grantpt(int);
3635 ], [
3636 ptsname(0);
3637 grantpt(0);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003638 unlockpt(0);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003639 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3640 AC_MSG_RESULT(no))
3641else
3642 AC_MSG_RESULT(no)
3643fi
3644
3645AC_MSG_CHECKING(for ptyranges)
3646if test -d /dev/ptym ; then
3647 pdir='/dev/ptym'
3648else
3649 pdir='/dev'
3650fi
3651dnl SCO uses ptyp%d
3652AC_EGREP_CPP(yes,
3653[#ifdef M_UNIX
3654 yes;
3655#endif
3656 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3657dnl if test -c /dev/ptyp19; then
3658dnl ptys=`echo /dev/ptyp??`
3659dnl else
3660dnl ptys=`echo $pdir/pty??`
3661dnl fi
3662if test "$ptys" != "$pdir/pty??" ; then
3663 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3664 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3665 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3666 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3667 AC_MSG_RESULT([$p0 / $p1])
3668else
3669 AC_MSG_RESULT([don't know])
3670fi
3671
Bram Moolenaar071d4272004-06-13 20:20:40 +00003672dnl Checks for library functions. ===================================
3673
Bram Moolenaar071d4272004-06-13 20:20:40 +00003674dnl check if struct sigcontext is defined (used for SGI only)
3675AC_MSG_CHECKING(for struct sigcontext)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003676AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003677#include <signal.h>
Sam Jamesf8ea1062022-11-05 15:13:50 +00003678int test_sig()
Bram Moolenaar071d4272004-06-13 20:20:40 +00003679{
3680 struct sigcontext *scont;
3681 scont = (struct sigcontext *)0;
3682 return 1;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003683} ], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003684 AC_MSG_RESULT(yes)
3685 AC_DEFINE(HAVE_SIGCONTEXT),
3686 AC_MSG_RESULT(no))
3687
3688dnl tricky stuff: try to find out if getcwd() is implemented with
3689dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003690AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3691 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003692 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003693#include "confdefs.h"
3694#ifdef HAVE_UNISTD_H
3695#include <unistd.h>
3696#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003697char *dagger[] = { "IFS=pwd", 0 };
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003698int main()
Bram Moolenaar071d4272004-06-13 20:20:40 +00003699{
3700 char buffer[500];
3701 extern char **environ;
3702 environ = dagger;
3703 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003704}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003705 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003706 vim_cv_getcwd_broken=no
3707 ],[
3708 vim_cv_getcwd_broken=yes
3709 ],[
3710 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3711 ])
3712 ])
3713
3714if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3715 AC_DEFINE(BAD_GETCWD)
Bram Moolenaar63d25552019-05-10 21:28:38 +02003716 AC_CHECK_FUNCS(getwd)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003717fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003718
Bram Moolenaar25153e12010-02-24 14:47:08 +01003719dnl Check for functions in one big call, to reduce the size of configure.
3720dnl Can only be used for functions that do not require any include.
Bram Moolenaarcd142e32017-11-16 17:03:45 +01003721AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \
Bram Moolenaar63d25552019-05-10 21:28:38 +02003722 getpwent getpwnam getpwuid getrlimit gettimeofday localtime_r lstat \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003723 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar2fcf6682017-03-11 20:03:42 +01003724 getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar84cf6bd2020-06-16 20:03:43 +02003725 sigprocmask sigvec strcasecmp strcoll strerror strftime stricmp strncasecmp \
Bram Moolenaar10455d42019-11-21 15:36:18 +01003726 strnicmp strpbrk strptime strtol tgetent towlower towupper iswupper \
Bram Moolenaar08210f82023-04-13 19:15:54 +01003727 tzset usleep utime utimes mblen ftruncate unsetenv posix_openpt \
3728 clock_gettime)
Bram Moolenaar643b6142018-09-12 20:29:09 +02003729AC_FUNC_SELECT_ARGTYPES
Bram Moolenaar25153e12010-02-24 14:47:08 +01003730AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003731
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003732dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3733dnl appropriate, so that off_t is 64 bits when needed.
3734AC_SYS_LARGEFILE
3735
Bram Moolenaar21606672019-06-14 20:40:58 +02003736AC_MSG_CHECKING(--enable-canberra argument)
3737AC_ARG_ENABLE(canberra,
3738 [ --disable-canberra Do not use libcanberra.],
3739 , [enable_canberra="maybe"])
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003740
Bram Moolenaar21606672019-06-14 20:40:58 +02003741if test "$enable_canberra" = "maybe"; then
Martin Tournoij25f3a142022-10-08 19:26:41 +01003742 if test "$features" = "huge"; then
Bram Moolenaar21606672019-06-14 20:40:58 +02003743 AC_MSG_RESULT(Defaulting to yes)
3744 enable_canberra="yes"
3745 else
3746 AC_MSG_RESULT(Defaulting to no)
3747 enable_canberra="no"
3748 fi
3749else
Bram Moolenaar12471262022-01-18 11:11:25 +00003750 if test "$enable_canberra" = "yes" -a "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01003751 AC_MSG_RESULT([cannot use sound with tiny features])
Bram Moolenaar12471262022-01-18 11:11:25 +00003752 enable_canberra="no"
3753 else
3754 AC_MSG_RESULT($enable_canberra)
3755 fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003756fi
Bram Moolenaar21606672019-06-14 20:40:58 +02003757if test "$enable_canberra" = "yes"; then
3758 if test "x$PKG_CONFIG" != "xno"; then
3759 canberra_lib=`$PKG_CONFIG --libs libcanberra 2>/dev/null`
3760 canberra_cflags=`$PKG_CONFIG --cflags libcanberra 2>/dev/null`
3761 fi
3762 if test "x$canberra_lib" = "x"; then
3763 canberra_lib=-lcanberra
3764 canberra_cflags=-D_REENTRANT
3765 fi
3766 AC_MSG_CHECKING(for libcanberra)
3767 ac_save_CFLAGS="$CFLAGS"
3768 ac_save_LIBS="$LIBS"
Bram Moolenaar12471262022-01-18 11:11:25 +00003769 if `echo "$CFLAGS" | grep -v "$canberra_cflags" 2>/dev/null`; then
Christian Brabandt6b9efdd2021-09-09 17:14:50 +02003770 CFLAGS="$CFLAGS $canberra_cflags"
3771 fi
Bram Moolenaar21606672019-06-14 20:40:58 +02003772 LIBS="$LIBS $canberra_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003773 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar21606672019-06-14 20:40:58 +02003774 # include <canberra.h>
3775 ], [
3776 ca_context *hello;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003777 ca_context_create(&hello);])],
Bram Moolenaar21606672019-06-14 20:40:58 +02003778 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CANBERRA),
Bram Moolenaar91b992c2019-11-17 19:07:42 +01003779 AC_MSG_RESULT(no; try installing libcanberra-dev); CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS")
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003780fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003781
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003782AC_MSG_CHECKING(--enable-libsodium argument)
3783AC_ARG_ENABLE(libsodium,
3784 [ --disable-libsodium Do not use libsodium.],
3785 , [enable_libsodium="maybe"])
3786
3787if test "$enable_libsodium" = "maybe"; then
Martin Tournoij25f3a142022-10-08 19:26:41 +01003788 if test "$features" = "huge"; then
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003789 AC_MSG_RESULT(Defaulting to yes)
3790 enable_libsodium="yes"
3791 else
3792 AC_MSG_RESULT(Defaulting to no)
3793 enable_libsodium="no"
3794 fi
3795else
3796 AC_MSG_RESULT($enable_libsodium)
3797fi
3798if test "$enable_libsodium" = "yes"; then
3799 if test "x$PKG_CONFIG" != "xno"; then
3800 libsodium_lib=`$PKG_CONFIG --libs libsodium 2>/dev/null`
3801 libsodium_cflags=`$PKG_CONFIG --cflags libsodium 2>/dev/null`
3802 fi
3803 if test "x$libsodium_lib" = "x"; then
3804 libsodium_lib=-lsodium
3805 libsodium_cflags=
3806 fi
ichizok8ce3ca82021-06-23 15:41:52 +02003807 AC_MSG_CHECKING(for libsodium)
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003808 ac_save_CFLAGS="$CFLAGS"
3809 ac_save_LIBS="$LIBS"
3810 CFLAGS="$CFLAGS $libsodium_cflags"
3811 LIBS="$LIBS $libsodium_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003812 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003813 # include <sodium.h>
3814 ], [
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003815 printf("%d", sodium_init()); ])],
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003816 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SODIUM),
3817 AC_MSG_RESULT(no; try installing libsodium-dev); CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS")
3818fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003819
Bram Moolenaar071d4272004-06-13 20:20:40 +00003820dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3821AC_MSG_CHECKING(for st_blksize)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003822AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00003823[#include <sys/types.h>
3824#include <sys/stat.h>],
3825[ struct stat st;
3826 int n;
3827
3828 stat("/", &st);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003829 n = (int)st.st_blksize;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003830 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3831 AC_MSG_RESULT(no))
3832
Paul Ollis65745772022-06-05 16:55:54 +01003833dnl Check for timer_create. It probably requires the 'rt' library.
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003834dnl Run the program to find out if timer_create(CLOCK_MONOTONIC) actually
3835dnl works, on Solaris timer_create() exists but fails at runtime.
Bram Moolenaarefffa532022-07-28 22:39:54 +01003836AC_CACHE_CHECK([for timer_create without -lrt], [vim_cv_timer_create], [
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003837AC_RUN_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar5748b7f2022-07-28 12:09:04 +01003838#if STDC_HEADERS
3839# include <stdlib.h>
3840# include <stddef.h>
3841#endif
3842#include <signal.h>
3843#include <time.h>
Bram Moolenaare5303952022-06-19 17:05:47 +01003844static void set_flag(union sigval sv) {}
Paul Ollis65745772022-06-05 16:55:54 +01003845], [
3846 struct timespec ts;
3847 struct sigevent action = {0};
3848 timer_t timer_id;
3849
3850 action.sigev_notify = SIGEV_THREAD;
3851 action.sigev_notify_function = set_flag;
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003852 if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0)
3853 exit(1); // cannot create a monotonic timer
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003854 ])],
Bram Moolenaarefffa532022-07-28 22:39:54 +01003855 vim_cv_timer_create=yes,
3856 vim_cv_timer_create=no,
Bram Moolenaar5f6cae82022-07-30 11:00:50 +01003857 AC_MSG_WARN([failed to build test program; if cross-compiling please set 'vim_cv_timer_create'])
Bram Moolenaarefffa532022-07-28 22:39:54 +01003858 )])
Paul Ollis65745772022-06-05 16:55:54 +01003859
Bram Moolenaarefffa532022-07-28 22:39:54 +01003860dnl If the previous failed, check for timer_create() and linking with -lrt.
3861if test "x$vim_cv_timer_create" = "xno" ; then
3862 save_LIBS="$LIBS"
3863 LIBS="$LIBS -lrt"
3864 AC_CACHE_CHECK([for timer_create with -lrt], [vim_cv_timer_create_with_lrt], [
3865 AC_RUN_IFELSE([AC_LANG_PROGRAM([
3866 #if STDC_HEADERS
3867 # include <stdlib.h>
3868 # include <stddef.h>
3869 #endif
3870 #include <signal.h>
3871 #include <time.h>
3872 static void set_flag(union sigval sv) {}
3873 ], [
3874 struct timespec ts;
3875 struct sigevent action = {0};
3876 timer_t timer_id;
3877
3878 action.sigev_notify = SIGEV_THREAD;
3879 action.sigev_notify_function = set_flag;
3880 if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0)
3881 exit(1); // cannot create a monotonic timer
3882 ])],
3883 vim_cv_timer_create_with_lrt=yes,
3884 vim_cv_timer_create_with_lrt=no,
Bram Moolenaar5f6cae82022-07-30 11:00:50 +01003885 AC_MSG_WARN([failed to build test program; if cross-compiling please set 'vim_cv_timer_create_with_lrt'])
Bram Moolenaarefffa532022-07-28 22:39:54 +01003886 )])
3887 LIBS="$save_LIBS"
3888else
3889 vim_cv_timer_create_with_lrt=no
3890fi
Richard Purdie509695c2022-07-24 20:48:00 +01003891
3892if test "x$vim_cv_timer_create" = "xyes" ; then
3893 AC_DEFINE(HAVE_TIMER_CREATE)
3894fi
Bram Moolenaarefffa532022-07-28 22:39:54 +01003895if test "x$vim_cv_timer_create_with_lrt" = "xyes" ; then
3896 AC_DEFINE(HAVE_TIMER_CREATE)
3897 LIBS="$LIBS -lrt"
3898fi
Paul Ollis65745772022-06-05 16:55:54 +01003899
Bram Moolenaar446cb832008-06-24 21:56:24 +00003900AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3901 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003902 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003903#include "confdefs.h"
3904#if STDC_HEADERS
3905# include <stdlib.h>
3906# include <stddef.h>
3907#endif
3908#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003909#include <sys/stat.h>
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003910int main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003911 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003912 vim_cv_stat_ignores_slash=yes
3913 ],[
3914 vim_cv_stat_ignores_slash=no
3915 ],[
3916 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3917 ])
3918 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003919
Bram Moolenaar446cb832008-06-24 21:56:24 +00003920if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3921 AC_DEFINE(STAT_IGNORES_SLASH)
3922fi
Leah Neukirchen0a7984a2021-10-14 21:27:55 +01003923
3924dnl nanoseconds field of struct stat
3925AC_CACHE_CHECK([for nanoseconds field of struct stat],
3926 ac_cv_struct_st_mtim_nsec,
3927 [ac_save_CPPFLAGS="$CPPFLAGS"
3928 ac_cv_struct_st_mtim_nsec=no
3929 # st_mtim.tv_nsec -- the usual case
3930 # st_mtim._tv_nsec -- Solaris 2.6, if
3931 # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
3932 # && !defined __EXTENSIONS__)
3933 # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2
3934 # st_mtime_n -- AIX 5.2 and above
3935 # st_mtimespec.tv_nsec -- Darwin (Mac OSX)
3936 for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do
3937 CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003938 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
3939#include <sys/stat.h>], [struct stat s; s.ST_MTIM_NSEC;])],
Leah Neukirchen0a7984a2021-10-14 21:27:55 +01003940 [ac_cv_struct_st_mtim_nsec=$ac_val; break])
3941 done
3942 CPPFLAGS="$ac_save_CPPFLAGS"
3943])
3944if test $ac_cv_struct_st_mtim_nsec != no; then
3945 AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec],
3946 [Define if struct stat contains a nanoseconds field])
3947fi
Bram Moolenaare5303952022-06-19 17:05:47 +01003948
Bram Moolenaar071d4272004-06-13 20:20:40 +00003949dnl Link with iconv for charset translation, if not found without library.
3950dnl check for iconv() requires including iconv.h
3951dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3952dnl has been installed.
3953AC_MSG_CHECKING(for iconv_open())
3954save_LIBS="$LIBS"
3955LIBS="$LIBS -liconv"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003956AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003957#ifdef HAVE_ICONV_H
3958# include <iconv.h>
3959#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003960 ], [iconv_open("fr", "to");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003961 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3962 LIBS="$save_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003963 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003964#ifdef HAVE_ICONV_H
3965# include <iconv.h>
3966#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003967 ], [iconv_open("fr", "to");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003968 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3969 AC_MSG_RESULT(no)))
3970
3971
3972AC_MSG_CHECKING(for nl_langinfo(CODESET))
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003973AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003974#ifdef HAVE_LANGINFO_H
3975# include <langinfo.h>
3976#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003977], [char *cs = nl_langinfo(CODESET);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003978 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3979 AC_MSG_RESULT(no))
3980
Bram Moolenaar73e28dc2022-09-17 21:08:33 +01003981dnl Floating point support may require the "m" library
Bram Moolenaar446cb832008-06-24 21:56:24 +00003982AC_CHECK_LIB(m, strtod)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003983
Bram Moolenaara6b89762016-02-29 21:38:26 +01003984dnl isinf() and isnan() need to include header files and may need -lm.
3985AC_MSG_CHECKING([for isinf()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003986AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaara6b89762016-02-29 21:38:26 +01003987#ifdef HAVE_MATH_H
3988# include <math.h>
3989#endif
3990#if STDC_HEADERS
3991# include <stdlib.h>
3992# include <stddef.h>
3993#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003994], [int r = isinf(1.11); ])],
Bram Moolenaara6b89762016-02-29 21:38:26 +01003995 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3996 AC_MSG_RESULT(no))
3997
3998AC_MSG_CHECKING([for isnan()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003999AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaara6b89762016-02-29 21:38:26 +01004000#ifdef HAVE_MATH_H
4001# include <math.h>
4002#endif
4003#if STDC_HEADERS
4004# include <stdlib.h>
4005# include <stddef.h>
4006#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004007], [int r = isnan(1.11); ])],
Bram Moolenaara6b89762016-02-29 21:38:26 +01004008 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
4009 AC_MSG_RESULT(no))
4010
Bram Moolenaar071d4272004-06-13 20:20:40 +00004011dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
4012dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01004013dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004014AC_MSG_CHECKING(--disable-acl argument)
4015AC_ARG_ENABLE(acl,
Bram Moolenaard6d30422018-01-28 22:48:55 +01004016 [ --disable-acl No check for ACL support.],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004017 , [enable_acl="yes"])
4018if test "$enable_acl" = "yes"; then
Bram Moolenaard6d30422018-01-28 22:48:55 +01004019 AC_MSG_RESULT(no)
4020 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004021 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
4022 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
4023
Bram Moolenaard6d30422018-01-28 22:48:55 +01004024 AC_MSG_CHECKING(for POSIX ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004025 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00004026#include <sys/types.h>
4027#ifdef HAVE_SYS_ACL_H
4028# include <sys/acl.h>
4029#endif
4030acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
4031 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004032 acl_free(acl);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004033 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
4034 AC_MSG_RESULT(no))
4035
Bram Moolenaard6d30422018-01-28 22:48:55 +01004036 AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
4037 AC_MSG_CHECKING(for Solaris ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004038 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00004039#ifdef HAVE_SYS_ACL_H
4040# include <sys/acl.h>
4041#endif], [acl("foo", GETACLCNT, 0, NULL);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004042 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004043 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01004044 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00004045
Bram Moolenaard6d30422018-01-28 22:48:55 +01004046 AC_MSG_CHECKING(for AIX ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004047 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar446cb832008-06-24 21:56:24 +00004048#if STDC_HEADERS
4049# include <stdlib.h>
4050# include <stddef.h>
4051#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00004052#ifdef HAVE_SYS_ACL_H
4053# include <sys/acl.h>
4054#endif
4055#ifdef HAVE_SYS_ACCESS_H
4056# include <sys/access.h>
4057#endif
4058#define _ALL_SOURCE
4059
4060#include <sys/stat.h>
4061
4062int aclsize;
4063struct acl *aclent;], [aclsize = sizeof(struct acl);
4064 aclent = (void *)malloc(aclsize);
4065 statacl("foo", STX_NORMAL, aclent, aclsize);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004066 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004067 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
4068 AC_MSG_RESULT(no))
4069else
4070 AC_MSG_RESULT(yes)
4071fi
4072
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004073if test "x$GTK_CFLAGS" != "x"; then
4074 dnl pango_shape_full() is new, fall back to pango_shape().
4075 AC_MSG_CHECKING(for pango_shape_full)
4076 ac_save_CFLAGS="$CFLAGS"
4077 ac_save_LIBS="$LIBS"
4078 CFLAGS="$CFLAGS $GTK_CFLAGS"
4079 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004080 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004081 [#include <gtk/gtk.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004082 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ])],
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004083 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
4084 AC_MSG_RESULT(no))
4085 CFLAGS="$ac_save_CFLAGS"
4086 LIBS="$ac_save_LIBS"
4087fi
4088
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004089AC_MSG_CHECKING(--enable-gpm argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004090AC_ARG_ENABLE(gpm,
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004091 [ --enable-gpm=OPTS Use gpm (Linux mouse daemon). default=yes OPTS=yes/no/dynamic], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00004092 [enable_gpm="yes"])
4093
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004094if test "$enable_gpm" = "yes" -o "$enable_gpm" = "dynamic"; then
4095 AC_MSG_RESULT($enable_gpm)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004096 dnl Checking if gpm support can be compiled
4097 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
4098 [olibs="$LIBS" ; LIBS="-lgpm"]
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004099 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004100 [#include <gpm.h>
4101 #include <linux/keyboard.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004102 [Gpm_GetLibVersion(NULL);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004103 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
4104 dnl FEAT_MOUSE_GPM if mouse support is included
4105 [vi_cv_have_gpm=yes],
4106 [vi_cv_have_gpm=no])
4107 [LIBS="$olibs"]
4108 )
4109 if test $vi_cv_have_gpm = yes; then
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004110 if test "$enable_gpm" = "yes"; then
4111 LIBS="$LIBS -lgpm"
4112 else
4113 AC_DEFINE(DYNAMIC_GPM)
4114 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004115 AC_DEFINE(HAVE_GPM)
4116 fi
4117else
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004118 AC_MSG_RESULT(no)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004119fi
4120
Bram Moolenaar446cb832008-06-24 21:56:24 +00004121AC_MSG_CHECKING(--disable-sysmouse argument)
4122AC_ARG_ENABLE(sysmouse,
Bram Moolenaar8008b632017-07-18 21:33:20 +02004123 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
Bram Moolenaar446cb832008-06-24 21:56:24 +00004124 [enable_sysmouse="yes"])
4125
4126if test "$enable_sysmouse" = "yes"; then
4127 AC_MSG_RESULT(no)
4128 dnl Checking if sysmouse support can be compiled
4129 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
4130 dnl defines FEAT_SYSMOUSE if mouse support is included
4131 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004132 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar446cb832008-06-24 21:56:24 +00004133 [#include <sys/consio.h>
4134 #include <signal.h>
4135 #include <sys/fbio.h>],
4136 [struct mouse_info mouse;
4137 mouse.operation = MOUSE_MODE;
4138 mouse.operation = MOUSE_SHOW;
4139 mouse.u.mode.mode = 0;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004140 mouse.u.mode.signal = SIGUSR2;])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004141 [vi_cv_have_sysmouse=yes],
4142 [vi_cv_have_sysmouse=no])
4143 )
4144 if test $vi_cv_have_sysmouse = yes; then
4145 AC_DEFINE(HAVE_SYSMOUSE)
4146 fi
4147else
4148 AC_MSG_RESULT(yes)
4149fi
4150
Bram Moolenaarf05da212009-11-17 16:13:15 +00004151dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
4152AC_MSG_CHECKING(for FD_CLOEXEC)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004153AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarf05da212009-11-17 16:13:15 +00004154[#if HAVE_FCNTL_H
4155# include <fcntl.h>
4156#endif],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004157[ int flag = FD_CLOEXEC;])],
Bram Moolenaarf05da212009-11-17 16:13:15 +00004158 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
4159 AC_MSG_RESULT(not usable))
4160
Bram Moolenaar071d4272004-06-13 20:20:40 +00004161dnl rename needs to be checked separately to work on Nextstep with cc
4162AC_MSG_CHECKING(for rename)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004163AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [rename("this", "that")])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004164 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
4165 AC_MSG_RESULT(no))
4166
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004167dnl check for dirfd()
4168AC_MSG_CHECKING(for dirfd)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004169AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004170[#include <sys/types.h>
4171#include <dirent.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004172[DIR * dir=opendir("dirname"); dirfd(dir);])],
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004173AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DIRFD), AC_MSG_RESULT(not usable))
4174
4175dnl check for flock()
4176AC_MSG_CHECKING(for flock)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004177AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004178[#include <sys/file.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004179[flock(10, LOCK_SH);])],
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004180AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOCK), AC_MSG_RESULT(not usable))
4181
Bram Moolenaar071d4272004-06-13 20:20:40 +00004182dnl sysctl() may exist but not the arguments we use
4183AC_MSG_CHECKING(for sysctl)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004184AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004185[#include <sys/types.h>
4186#include <sys/sysctl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004187[[ int mib[2], r;
Bram Moolenaar071d4272004-06-13 20:20:40 +00004188 size_t len;
4189
4190 mib[0] = CTL_HW;
4191 mib[1] = HW_USERMEM;
4192 len = sizeof(r);
4193 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004194 ]])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004195 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
4196 AC_MSG_RESULT(not usable))
4197
Bram Moolenaare2982d62021-10-06 11:27:21 +01004198dnl sysinfo() may exist but not be Linux compatible.
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004199dnl On some FreeBSD systems it may depend on libsysinfo, try to link
Bram Moolenaar071d4272004-06-13 20:20:40 +00004200AC_MSG_CHECKING(for sysinfo)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004201AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004202[#include <sys/types.h>
4203#include <sys/sysinfo.h>],
4204[ struct sysinfo sinfo;
4205 int t;
4206
4207 (void)sysinfo(&sinfo);
4208 t = sinfo.totalram;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004209 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004210 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
4211 AC_MSG_RESULT(not usable))
4212
Bram Moolenaar914572a2007-05-01 11:37:47 +00004213dnl struct sysinfo may have the mem_unit field or not
4214AC_MSG_CHECKING(for sysinfo.mem_unit)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004215AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar914572a2007-05-01 11:37:47 +00004216[#include <sys/types.h>
4217#include <sys/sysinfo.h>],
4218[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02004219 sinfo.mem_unit = 1;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004220 ])],
Bram Moolenaar914572a2007-05-01 11:37:47 +00004221 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
4222 AC_MSG_RESULT(no))
4223
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004224dnl struct sysinfo may have the uptime field or not
4225AC_MSG_CHECKING(for sysinfo.uptime)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004226AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004227[#include <sys/types.h>
4228#include <sys/sysinfo.h>],
4229[ struct sysinfo sinfo;
4230 long ut;
4231
4232 (void)sysinfo(&sinfo);
4233 ut = sinfo.uptime;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004234 ])],
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004235 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_UPTIME),
4236 AC_MSG_RESULT(no))
4237
Bram Moolenaar071d4272004-06-13 20:20:40 +00004238dnl sysconf() may exist but not support what we want to use
4239AC_MSG_CHECKING(for sysconf)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004240AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004241[#include <unistd.h>],
4242[ (void)sysconf(_SC_PAGESIZE);
4243 (void)sysconf(_SC_PHYS_PAGES);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004244 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004245 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
4246 AC_MSG_RESULT(not usable))
4247
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004248dnl check if we have _SC_SIGSTKSZ via sysconf()
4249AC_MSG_CHECKING(for _SC_SIGSTKSZ via sysconf())
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004250AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004251[#include <unistd.h>],
4252[ (void)sysconf(_SC_SIGSTKSZ);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004253 ])],
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004254 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF_SIGSTKSZ),
4255 AC_MSG_RESULT(not usable))
4256
Bram Moolenaar914703b2010-05-31 21:59:46 +02004257AC_CHECK_SIZEOF([int])
4258AC_CHECK_SIZEOF([long])
4259AC_CHECK_SIZEOF([time_t])
4260AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02004261
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01004262dnl Use different names to avoid clashing with other header files.
4263AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
4264AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
4265
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004266dnl Make sure that uint32_t is really 32 bits unsigned.
4267AC_MSG_CHECKING([uint32_t is 32 bits])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004268AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004269#ifdef HAVE_STDINT_H
4270# include <stdint.h>
4271#endif
4272#ifdef HAVE_INTTYPES_H
4273# include <inttypes.h>
4274#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01004275int main() {
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004276 uint32_t nr1 = (uint32_t)-1;
4277 uint32_t nr2 = (uint32_t)0xffffffffUL;
Bram Moolenaar52897832020-07-02 22:50:37 +02004278 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) return 1;
4279 return 0;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004280}])],
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004281AC_MSG_RESULT(ok),
4282AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01004283AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004284
Bram Moolenaar446cb832008-06-24 21:56:24 +00004285dnl Check for memmove() before bcopy(), makes memmove() be used when both are
4286dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
4287
Bram Moolenaar071d4272004-06-13 20:20:40 +00004288[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00004289#include "confdefs.h"
4290#ifdef HAVE_STRING_H
4291# include <string.h>
4292#endif
4293#if STDC_HEADERS
4294# include <stdlib.h>
4295# include <stddef.h>
4296#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01004297int main() {
Bram Moolenaar071d4272004-06-13 20:20:40 +00004298 char buf[10];
4299 strcpy(buf, "abcdefghi");
4300 mch_memmove(buf, buf + 2, 3);
4301 if (strncmp(buf, "ababcf", 6))
4302 exit(1);
4303 strcpy(buf, "abcdefghi");
4304 mch_memmove(buf + 2, buf, 3);
4305 if (strncmp(buf, "cdedef", 6))
4306 exit(1);
4307 exit(0); /* libc version works properly. */
4308}']
4309
Bram Moolenaar446cb832008-06-24 21:56:24 +00004310AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
4311 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004312 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004313 [
4314 vim_cv_memmove_handles_overlap=yes
4315 ],[
4316 vim_cv_memmove_handles_overlap=no
4317 ],[
4318 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
4319 ])
4320 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004321
Bram Moolenaar446cb832008-06-24 21:56:24 +00004322if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4323 AC_DEFINE(USEMEMMOVE)
4324else
4325 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4326 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004327 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004328 [
4329 vim_cv_bcopy_handles_overlap=yes
4330 ],[
4331 vim_cv_bcopy_handles_overlap=no
4332 ],[
4333 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4334 ])
4335 ])
4336
4337 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4338 AC_DEFINE(USEBCOPY)
4339 else
4340 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4341 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004342 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004343 [
4344 vim_cv_memcpy_handles_overlap=yes
4345 ],[
4346 vim_cv_memcpy_handles_overlap=no
4347 ],[
4348 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4349 ])
4350 ])
4351
4352 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4353 AC_DEFINE(USEMEMCPY)
4354 fi
4355 fi
4356fi
4357
Bram Moolenaar071d4272004-06-13 20:20:40 +00004358
4359dnl Check for multibyte locale functions
4360dnl Find out if _Xsetlocale() is supported by libX11.
4361dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004362if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004363 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004364 libs_save=$LIBS
4365 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4366 CFLAGS="$CFLAGS $X_CFLAGS"
4367
4368 AC_MSG_CHECKING(whether X_LOCALE needed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004369 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlocale.h>],)],
4370 AC_LINK_IFELSE([AC_LANG_CALL([],[_Xsetlocale])], [AC_MSG_RESULT(yes)
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004371 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4372 AC_MSG_RESULT(no))
4373
4374 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004375 AC_LINK_IFELSE([AC_LANG_CALL([],[Xutf8SetWMProperties])], [AC_MSG_RESULT(yes)
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004376 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4377
Bram Moolenaar071d4272004-06-13 20:20:40 +00004378 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004379 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004380fi
4381
4382dnl Link with xpg4, it is said to make Korean locale working
4383AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4384
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004385dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004386dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004387dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004388dnl -t for typedefs (many ctags have this)
4389dnl -s for static functions (Elvis ctags only?)
4390dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4391dnl -i+m to test for older Exuberant ctags
4392AC_MSG_CHECKING(how to create tags)
4393test -f tags && mv tags tags.save
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004394if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1; then
Bram Moolenaar509ff062020-01-02 22:38:49 +01004395 TAGPRG="ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004396elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1; then
Bram Moolenaar509ff062020-01-02 22:38:49 +01004397 TAGPRG="exctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004398elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1; then
Bram Moolenaar509ff062020-01-02 22:38:49 +01004399 TAGPRG="exuberant-ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004400else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004401 TAGPRG="ctags"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004402 (eval etags /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="etags"
4403 (eval etags -c /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="etags -c"
4404 (eval ctags /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags"
4405 (eval ctags -t /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -t"
4406 (eval ctags -ts /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -ts"
4407 (eval ctags -tvs /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -tvs"
4408 (eval ctags -i+m /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -i+m"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004409fi
4410test -f tags.save && mv tags.save tags
4411AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4412
4413dnl Check how we can run man with a section number
4414AC_MSG_CHECKING(how to run man with a section nr)
4415MANDEF="man"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004416(eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AS_MESSAGE_LOG_FD && MANDEF="man -s"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004417AC_MSG_RESULT($MANDEF)
4418if test "$MANDEF" = "man -s"; then
4419 AC_DEFINE(USEMAN_S)
4420fi
4421
4422dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004423dnl We take care to base this on an empty LIBS: on some systems libelf would be
4424dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4425dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004426AC_MSG_CHECKING(--disable-nls argument)
4427AC_ARG_ENABLE(nls,
4428 [ --disable-nls Don't support NLS (gettext()).], ,
4429 [enable_nls="yes"])
4430
4431if test "$enable_nls" = "yes"; then
4432 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004433
4434 INSTALL_LANGS=install-languages
4435 AC_SUBST(INSTALL_LANGS)
4436 INSTALL_TOOL_LANGS=install-tool-languages
4437 AC_SUBST(INSTALL_TOOL_LANGS)
4438
Bram Moolenaar071d4272004-06-13 20:20:40 +00004439 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4440 AC_MSG_CHECKING([for NLS])
4441 if test -f po/Makefile; then
4442 have_gettext="no"
4443 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004444 olibs=$LIBS
4445 LIBS=""
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004446 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004447 [#include <libintl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004448 [gettext("Test");])],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004449 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4450 LIBS="-lintl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004451 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004452 [#include <libintl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004453 [gettext("Test");])],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004454 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4455 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004456 AC_MSG_RESULT([gettext() doesn't work]);
4457 LIBS=$olibs))
4458 else
4459 AC_MSG_RESULT([msgfmt not found - disabled]);
4460 fi
Martin Tournoij7904fa42022-10-04 16:28:45 +01004461 if test $have_gettext = "yes" -a "x$features" != "xtiny"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004462 AC_DEFINE(HAVE_GETTEXT)
4463 MAKEMO=yes
4464 AC_SUBST(MAKEMO)
4465 dnl this was added in GNU gettext 0.10.36
4466 AC_CHECK_FUNCS(bind_textdomain_codeset)
4467 dnl _nl_msg_cat_cntr is required for GNU gettext
4468 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004469 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004470 [#include <libintl.h>
4471 extern int _nl_msg_cat_cntr;],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004472 [++_nl_msg_cat_cntr;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004473 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4474 AC_MSG_RESULT([no]))
Bram Moolenaar26096cc2019-04-11 15:25:40 +02004475 AC_MSG_CHECKING([if msgfmt supports --desktop])
4476 MSGFMT_DESKTOP=
4477 if "$MSGFMT" --help | grep -e '--desktop' >/dev/null; then
Bram Moolenaar62a88f42019-06-07 20:44:40 +02004478 if "$MSGFMT" --version | grep '0.19.[[3-7]]$' >/dev/null; then
4479 dnl GNU gettext 0.19.7's --desktop is broken. We assume back to
4480 dnl 0.19.3 is also broken.
4481 AC_MSG_RESULT([broken])
4482 else
4483 AC_MSG_RESULT([yes])
4484 MSGFMT_DESKTOP="gvim.desktop vim.desktop"
4485 fi
Bram Moolenaar26096cc2019-04-11 15:25:40 +02004486 else
4487 AC_MSG_RESULT([no])
4488 fi
4489 AC_SUBST(MSGFMT_DESKTOP)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004490 fi
4491 else
4492 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4493 fi
4494else
4495 AC_MSG_RESULT(yes)
4496fi
4497
4498dnl Check for dynamic linking loader
4499AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4500if test x${DLL} = xdlfcn.h; then
4501 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4502 AC_MSG_CHECKING([for dlopen()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004503 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004504 extern void* dlopen();
4505 dlopen();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004506 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004507 AC_MSG_RESULT(yes);
4508 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4509 AC_MSG_RESULT(no);
4510 AC_MSG_CHECKING([for dlopen() in -ldl])
4511 olibs=$LIBS
4512 LIBS="$LIBS -ldl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004513 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004514 extern void* dlopen();
4515 dlopen();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004516 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004517 AC_MSG_RESULT(yes);
4518 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4519 AC_MSG_RESULT(no);
4520 LIBS=$olibs))
4521 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4522 dnl ick :-)
4523 AC_MSG_CHECKING([for dlsym()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004524 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004525 extern void* dlsym();
4526 dlsym();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004527 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004528 AC_MSG_RESULT(yes);
4529 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4530 AC_MSG_RESULT(no);
4531 AC_MSG_CHECKING([for dlsym() in -ldl])
4532 olibs=$LIBS
4533 LIBS="$LIBS -ldl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004534 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004535 extern void* dlsym();
4536 dlsym();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004537 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004538 AC_MSG_RESULT(yes);
4539 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4540 AC_MSG_RESULT(no);
4541 LIBS=$olibs))
4542elif test x${DLL} = xdl.h; then
4543 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4544 AC_MSG_CHECKING([for shl_load()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004545 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004546 extern void* shl_load();
4547 shl_load();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004548 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004549 AC_MSG_RESULT(yes);
4550 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4551 AC_MSG_RESULT(no);
4552 AC_MSG_CHECKING([for shl_load() in -ldld])
4553 olibs=$LIBS
4554 LIBS="$LIBS -ldld"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004555 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004556 extern void* shl_load();
4557 shl_load();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004558 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004559 AC_MSG_RESULT(yes);
4560 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4561 AC_MSG_RESULT(no);
4562 LIBS=$olibs))
4563fi
4564AC_CHECK_HEADERS(setjmp.h)
4565
Bram Moolenaard0573012017-10-28 21:11:06 +02004566if test "x$MACOS_X" = "xyes" -a -n "$PERL"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004567 dnl -ldl must come after DynaLoader.a
4568 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4569 LIBS=`echo $LIBS | sed s/-ldl//`
4570 PERL_LIBS="$PERL_LIBS -ldl"
4571 fi
4572fi
4573
Bram Moolenaard0573012017-10-28 21:11:06 +02004574if test "$MACOS_X" = "yes"; then
4575 AC_MSG_CHECKING([whether we need macOS frameworks])
Bram Moolenaar097148e2020-08-11 21:58:20 +02004576 if test "$MACOS_X_DARWIN" = "yes"; then
Bram Moolenaard0573012017-10-28 21:11:06 +02004577 if test "$features" = "tiny"; then
Yee Cheng Chin4314e4f2022-10-08 13:50:05 +01004578 dnl Since no FEAT_CLIPBOARD or FEAT_SOUND, no need for os_macosx.m.
Bram Moolenaard0573012017-10-28 21:11:06 +02004579 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4580 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01004581 AC_MSG_RESULT([yes, we need CoreServices])
4582 LIBS="$LIBS -framework CoreServices"
Bram Moolenaard0573012017-10-28 21:11:06 +02004583 else
4584 AC_MSG_RESULT([yes, we need AppKit])
4585 LIBS="$LIBS -framework AppKit"
Bram Moolenaard0573012017-10-28 21:11:06 +02004586 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004587 else
Bram Moolenaard0573012017-10-28 21:11:06 +02004588 AC_MSG_RESULT([no])
Bram Moolenaar3437b912013-07-03 19:52:53 +02004589 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004590fi
4591
Bram Moolenaar3ae5fc92021-09-06 18:57:30 +02004592dnl On some systems REENTRANT needs to be defined. It should not hurt to use
4593dnl it everywhere.
4594if `echo "$CFLAGS" | grep -v D_REENTRANT >/dev/null`; then
4595 CFLAGS="$CFLAGS -D_REENTRANT"
4596fi
4597
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004598dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4599dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4600dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004601dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4602dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004603DEPEND_CFLAGS_FILTER=
4604if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004605 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar348808f2020-02-07 20:50:07 +01004606 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]][[0-9]]*\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004607 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004608 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004609 AC_MSG_RESULT(yes)
4610 else
4611 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004612 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004613 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4614 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004615 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004616 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004617 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4618 if test "$gccmajor" -gt "3"; then
Zdenek Dohnal42196982023-01-18 16:09:51 +00004619 CFLAGS=`echo "$CFLAGS" | sed -e 's/-D_FORTIFY_SOURCE=.,//g' -e 's/ *-Wp,-D_FORTIFY_SOURCE=. / /g' -e 's/,-D_FORTIFY_SOURCE=. //g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-Wp,-U_FORTIFY_SOURCE/ /g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
4620 CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/-D_FORTIFY_SOURCE=.,//g' -e 's/ *-Wp,-D_FORTIFY_SOURCE=. / /g' -e 's/,-D_FORTIFY_SOURCE=. //g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-Wp,-U_FORTIFY_SOURCE/ /g' -e 's/ *-U_FORTIFY_SOURCE//g'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004621 AC_MSG_RESULT(yes)
4622 else
4623 AC_MSG_RESULT(no)
4624 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004625fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004626AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004627
Bram Moolenaarec0557f2018-01-31 14:41:37 +01004628dnl On some systems AC_SYS_LARGEFILE determines that -D_FILE_OFFSET_BITS=64
4629dnl isn't required, but the CFLAGS for some of the libraries we're using
4630dnl include the define. Since the define changes the size of some datatypes
4631dnl (e.g. ino_t and off_t), all of Vim's modules must be compiled with a
4632dnl consistent value. It's therefore safest to force the use of the define
4633dnl if it's present in any of the *_CFLAGS variables.
4634AC_MSG_CHECKING(whether we need to force -D_FILE_OFFSET_BITS=64)
Bram Moolenaar9ce42132018-04-11 22:19:36 +02004635if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then
Bram Moolenaarec0557f2018-01-31 14:41:37 +01004636 AC_MSG_RESULT(yes)
4637 AC_DEFINE(_FILE_OFFSET_BITS, 64)
4638else
4639 AC_MSG_RESULT(no)
4640fi
4641
Bram Moolenaar6cd42db2020-12-04 18:09:54 +01004642dnl $LDFLAGS is passed to glibtool in libvterm, it doesn't like a space
4643dnl between "-L" and the path that follows.
4644LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-L /-L/g'`
4645
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004646dnl link.sh tries to avoid overlinking in a hackish way.
4647dnl At least GNU ld supports --as-needed which provides the same functionality
4648dnl at linker level. Let's use it.
4649AC_MSG_CHECKING(linker --as-needed support)
4650LINK_AS_NEEDED=
4651# Check if linker supports --as-needed and --no-as-needed options
4652if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Natanael Copa761ead42021-05-15 14:25:37 +02004653 if ! echo "$LDFLAGS" | grep -q -- '-Wl,[[^[:space:]]]*--as-needed'; then
4654 LDFLAGS="$LDFLAGS -Wl,--as-needed"
4655 fi
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004656 LINK_AS_NEEDED=yes
4657fi
4658if test "$LINK_AS_NEEDED" = yes; then
4659 AC_MSG_RESULT(yes)
4660else
4661 AC_MSG_RESULT(no)
4662fi
4663AC_SUBST(LINK_AS_NEEDED)
4664
Bram Moolenaar77c19352012-06-13 19:19:41 +02004665# IBM z/OS reset CFLAGS for config.mk
4666if test "$zOSUnix" = "yes"; then
4667 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4668fi
4669
Bram Moolenaar071d4272004-06-13 20:20:40 +00004670dnl write output files
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004671AC_CONFIG_FILES(auto/config.mk:config.mk.in)
4672AC_OUTPUT
Bram Moolenaar071d4272004-06-13 20:20:40 +00004673
4674dnl vim: set sw=2 tw=78 fo+=l: