blob: 1a4dd5c50aab88407bf443a4f2576280d86389fa [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
Illia Bobyra96d5442023-08-30 16:30:15 +02003dnl Process this file with autoconf 2.71 to produce "configure".
Bram Moolenaar071d4272004-06-13 20:20:40 +00004
Illia Bobyrf39842f2023-08-27 18:21:23 +02005AC_INIT
6AC_CONFIG_SRCDIR([vim.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01007AC_CONFIG_HEADERS(auto/config.h:config.h.in)
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
Illia Bobyra96d5442023-08-30 16:30:15 +020014AC_PROG_CC dnl required by almost everything
Bram Moolenaarc0394412017-04-20 20:20:23 +020015AC_PROG_CPP dnl required by header file checks
Illia Bobyrf39842f2023-08-27 18:21:23 +020016AC_PROG_EGREP dnl required by AC_EGREP_CPP
Bram Moolenaarc0394412017-04-20 20:20:23 +020017AC_PROG_FGREP dnl finds working grep -F
Bram Moolenaarc0394412017-04-20 20:20:23 +020018AC_PROG_AWK dnl required for "make html" in ../doc
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026AC_HEADER_SYS_WAIT
27
Bram Moolenaar561f8a52018-04-17 22:02:45 +020028dnl Check that the C99 features that Vim uses are supported:
Bram Moolenaar22640082018-04-19 20:39:41 +020029if test x"$ac_cv_prog_cc_c99" != xno; then
30 dnl If the compiler doesn't explicitly support C99, then check
31 dnl for the specific features Vim uses
32
33 AC_TYPE_LONG_LONG_INT
34 if test "$ac_cv_type_long_long_int" = no; then
35 AC_MSG_FAILURE([Compiler does not support long long int])
36 fi
37
38 AC_MSG_CHECKING([if the compiler supports trailing commas])
39 trailing_commas=no
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010040 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
Bram Moolenaar22640082018-04-19 20:39:41 +020041 enum {
42 one,
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010043 };])],
Bram Moolenaar22640082018-04-19 20:39:41 +020044 [AC_MSG_RESULT(yes); trailing_commas=yes],
45 [AC_MSG_RESULT(no)])
46 if test "$trailing_commas" = no; then
47 AC_MSG_FAILURE([Compiler does not support trailing comma in enum])
48 fi
49
50 AC_MSG_CHECKING([if the compiler supports C++ comments])
51 slash_comments=no
Bram Moolenaar1004b3d2022-06-05 19:51:55 +010052 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
53 [// C++ comments?])],
Bram Moolenaar22640082018-04-19 20:39:41 +020054 [AC_MSG_RESULT(yes); slash_comments=yes],
55 [AC_MSG_RESULT(no)])
56 if test "$slash_comments" = no; then
57 AC_MSG_FAILURE([Compiler does not support C++ comments])
58 fi
59fi
Bram Moolenaar561f8a52018-04-17 22:02:45 +020060
Bram Moolenaar8f1dde52020-06-05 23:16:29 +020061dnl If $SOURCE_DATE_EPOCH is present in the environment, use that as the
62dnl "compiled" timestamp in :version's output. Attempt to get the formatted
63dnl date using GNU date syntax, BSD date syntax, and finally falling back to
64dnl just using the current time.
65if test -n "$SOURCE_DATE_EPOCH"; then
66 DATE_FMT="%b %d %Y %H:%M:%S"
67 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")
68 AC_DEFINE_UNQUOTED(BUILD_DATE, ["$BUILD_DATE"])
69 BUILD_DATE_MSG=-"echo -e '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nNOTE: build date/time is fixed: $BUILD_DATE\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='"
70 AC_SUBST(BUILD_DATE_MSG)
71fi
72
Bram Moolenaarf788a062011-12-14 20:51:25 +010073dnl Check for the flag that fails if stuff are missing.
74
75AC_MSG_CHECKING(--enable-fail-if-missing argument)
76AC_ARG_ENABLE(fail_if_missing,
77 [ --enable-fail-if-missing Fail if dependencies on additional features
Bram Moolenaare5303952022-06-19 17:05:47 +010078 specified on the command line are missing.],
Bram Moolenaarf788a062011-12-14 20:51:25 +010079 [fail_if_missing="yes"],
80 [fail_if_missing="no"])
81AC_MSG_RESULT($fail_if_missing)
82
Bram Moolenaard2a05492018-07-27 22:35:15 +020083dnl Keep original value to check later.
84with_x_arg="$with_x"
85
Bram Moolenaar071d4272004-06-13 20:20:40 +000086dnl Set default value for CFLAGS if none is defined or it's empty
87if test -z "$CFLAGS"; then
88 CFLAGS="-O"
Bram Moolenaar4d8479b2021-01-31 14:36:06 +010089 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall -Wno-deprecated-declarations"
Bram Moolenaar071d4272004-06-13 20:20:40 +000090fi
Rose00d07e72023-05-06 18:07:14 +010091
Bram Moolenaar071d4272004-06-13 20:20:40 +000092if test "$GCC" = yes; then
Rose00d07e72023-05-06 18:07:14 +010093 dnl Method that should work for nearly all gcc versions.
Bram Moolenaarc8836f72014-04-12 13:12:24 +020094 gccversion=`$CC -dumpversion`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000095 if test "x$gccversion" = "x"; then
96 dnl old method; fall-back for when -dumpversion doesn't work
Bram Moolenaarc8836f72014-04-12 13:12:24 +020097 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 +000098 fi
Rose00d07e72023-05-06 18:07:14 +010099
100 dnl Gcc version 4.0.1 was reported to cause trouble on Macintosh by Marcin
101 dnl Dalecki. For Mac with Intel the symptom reported is: malloc() reports
102 dnl double free. This happens in expand_filename(), because the optimizer
103 dnl swaps two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000104 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000105 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
107 else
108 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
109 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
110 CFLAGS="$CFLAGS -fno-strength-reduce"
111 fi
112 fi
113fi
114
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200115dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
116dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
117dnl the version number of the clang in use.
118dnl Note that this does not work to get the version of clang 3.1 or 3.2.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100119AC_MSG_CHECKING(for clang version)
120CLANG_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 +0200121if test x"$CLANG_VERSION_STRING" != x"" ; then
122 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
123 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
124 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
125 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
126 AC_MSG_RESULT($CLANG_VERSION)
127 dnl If you find the same issue with versions earlier than 500.2.75,
128 dnl change the constant 500002075 below appropriately. To get the
129 dnl integer corresponding to a version number, refer to the
130 dnl definition of CLANG_VERSION above.
Bram Moolenaarebd211c2021-01-30 19:33:36 +0100131 dnl Clang 11 reports "11", assume Clang 10 and later work like this.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100132 AC_MSG_CHECKING(if clang supports -fno-strength-reduce)
Bram Moolenaarebd211c2021-01-30 19:33:36 +0100133 if test "$CLANG_MAJOR" -ge 10 -o "$CLANG_VERSION" -ge 500002075 ; then
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100134 AC_MSG_RESULT(no)
135 CFLAGS=`echo "$CFLAGS" | sed -e 's/-fno-strength-reduce/ /'`
136 else
137 AC_MSG_RESULT(yes)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200138 fi
139else
Bram Moolenaar5f69fee2017-03-09 11:58:40 +0100140 AC_MSG_RESULT(N/A)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +0200141fi
142
Bram Moolenaar446cb832008-06-24 21:56:24 +0000143dnl If configure thinks we are cross compiling, there might be something
144dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar839e9542016-04-14 16:46:02 +0200145CROSS_COMPILING=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000147 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar839e9542016-04-14 16:46:02 +0200148 CROSS_COMPILING=1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149fi
Bram Moolenaar839e9542016-04-14 16:46:02 +0200150AC_SUBST(CROSS_COMPILING)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000152dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
153dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000154test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
155
156if test -f ./toolcheck; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100157 AC_MSG_CHECKING(for buggy tools)
158 sh ./toolcheck 1>&AS_MESSAGE_FD
Bram Moolenaar071d4272004-06-13 20:20:40 +0000159fi
160
161OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
162
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000163dnl When cross-compiling set $vim_cv_uname_output, $vim_cv_uname_r_output and
164dnl $vim_cv_uname_m_output to the desired value for the target system
165AC_MSG_CHECKING(uname)
166if test "x$vim_cv_uname_output" = "x" ; then
167 vim_cv_uname_output=`(uname) 2>/dev/null`
168 AC_MSG_RESULT($vim_cv_uname_output)
169else
170 AC_MSG_RESULT([$vim_cv_uname_output (cached)])
171fi
172
173AC_MSG_CHECKING(uname -r)
174if test "x$vim_cv_uname_r_output" = "x" ; then
175 vim_cv_uname_r_output=`(uname -r) 2>/dev/null`
176 AC_MSG_RESULT($vim_cv_uname_r_output)
177else
178 AC_MSG_RESULT([$vim_cv_uname_r_output (cached)])
179fi
180
181AC_MSG_CHECKING(uname -m)
182if test "x$vim_cv_uname_m_output" = "x" ; then
183 vim_cv_uname_m_output=`(uname -m) 2>/dev/null`
184 AC_MSG_RESULT($vim_cv_uname_m_output)
185else
186 AC_MSG_RESULT([$vim_cv_uname_m_output (cached)])
187fi
188
Bram Moolenaarb3f74062020-02-26 16:16:53 +0100189AC_MSG_CHECKING(for Haiku)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000190case $vim_cv_uname_output in
Bram Moolenaarb3f74062020-02-26 16:16:53 +0100191 Haiku) HAIKU=yes; AC_MSG_RESULT(yes);;
192 *) HAIKU=no; AC_MSG_RESULT(no);;
193esac
194
Bram Moolenaar071d4272004-06-13 20:20:40 +0000195dnl If QNX is found, assume we don't want to use Xphoton
196dnl unless it was specifically asked for (--with-x)
197AC_MSG_CHECKING(for QNX)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000198case $vim_cv_uname_output in
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
200 test -z "$with_x" && with_x=no
201 QNX=yes; AC_MSG_RESULT(yes);;
202 *) QNX=no; AC_MSG_RESULT(no);;
203esac
204
205dnl Check for Darwin and MacOS X
206dnl We do a check for MacOS X in the very beginning because there
207dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208AC_MSG_CHECKING([for Darwin (Mac OS X)])
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000209if test "$vim_cv_uname_output" = Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210 AC_MSG_RESULT(yes)
Bram Moolenaard0573012017-10-28 21:11:06 +0200211 MACOS_X=yes
Bram Moolenaar52ecaaa2018-05-12 21:38:13 +0200212 CPPFLAGS="$CPPFLAGS -DMACOS_X"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213
214 AC_MSG_CHECKING(--disable-darwin argument)
215 AC_ARG_ENABLE(darwin,
216 [ --disable-darwin Disable Darwin (Mac OS X) support.],
217 , [enable_darwin="yes"])
218 if test "$enable_darwin" = "yes"; then
219 AC_MSG_RESULT(no)
220 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200221 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222 AC_MSG_RESULT(yes)
223 else
224 AC_MSG_RESULT([no, Darwin support disabled])
225 enable_darwin=no
226 fi
227 else
228 AC_MSG_RESULT([yes, Darwin support excluded])
229 fi
230
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000231 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000232 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000233 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000234 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000235
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100236 AC_MSG_CHECKING(--with-developer-dir argument)
237 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
238 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
Bram Moolenaar32d03b32015-11-19 13:46:48 +0100239 AC_MSG_RESULT(not present))
Bram Moolenaare5303952022-06-19 17:05:47 +0100240
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100241 if test "x$DEVELOPER_DIR" = "x"; then
242 AC_PATH_PROG(XCODE_SELECT, xcode-select)
243 if test "x$XCODE_SELECT" != "x"; then
244 AC_MSG_CHECKING(for developer dir using xcode-select)
245 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
246 AC_MSG_RESULT([$DEVELOPER_DIR])
247 else
248 DEVELOPER_DIR=/Developer
249 fi
250 fi
251
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000252 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000253 AC_MSG_CHECKING(for 10.4 universal SDK)
254 dnl There is a terrible inconsistency (but we appear to get away with it):
255 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
256 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
257 dnl tests using the preprocessor are actually done with the wrong header
258 dnl files. $LDFLAGS is set at the end, because configure uses it together
259 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000260 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000261 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000262 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100263 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100264 AC_LINK_IFELSE([AC_LANG_PROGRAM([ ], [ ])],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000265 AC_MSG_RESULT(found, will make universal binary),
266
267 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000268 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000269 AC_MSG_CHECKING(if Intel architecture is supported)
270 CPPFLAGS="$CPPFLAGS -arch i386"
271 LDFLAGS="$save_ldflags -arch i386"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100272 AC_LINK_IFELSE([AC_LANG_PROGRAM([ ], [ ])],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000273 AC_MSG_RESULT(yes); MACARCH="intel",
274 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000275 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000276 CPPFLAGS="$save_cppflags -arch ppc"
277 LDFLAGS="$save_ldflags -arch ppc"))
278 elif test "x$MACARCH" = "xintel"; then
279 CPPFLAGS="$CPPFLAGS -arch intel"
280 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000281 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000282 CPPFLAGS="$CPPFLAGS -arch ppc"
283 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000284 fi
285
Bram Moolenaar071d4272004-06-13 20:20:40 +0000286 if test "$enable_darwin" = "yes"; then
Bram Moolenaard0573012017-10-28 21:11:06 +0200287 MACOS_X_DARWIN=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200288 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000289 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaare5303952022-06-19 17:05:47 +0100290 dnl os_macosx.m implements timer_create() and friends
291 AC_DEFINE(HAVE_TIMER_CREATE)
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000292 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100293 dnl Removed -no-cpp-precomp, only for very old compilers.
Bram Moolenaard0573012017-10-28 21:11:06 +0200294 CPPFLAGS="$CPPFLAGS -DMACOS_X_DARWIN"
Bram Moolenaar040f9752020-08-11 23:08:48 +0200295
296 dnl Assume we don't want X11 unless it was specifically asked for
Bram Moolenaar0b40d082022-03-08 13:32:37 +0000297 dnl (--with-x) or Motif or GTK GUI is used.
298 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 +0200299 with_x=no
300 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301 fi
302else
303 AC_MSG_RESULT(no)
304fi
305
Bram Moolenaar39766a72013-11-03 00:41:00 +0100306dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
307dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100308AC_CHECK_HEADERS(AvailabilityMacros.h)
Evan Miller25448072022-12-30 10:42:23 +0000309# 10.5 and earlier lack dispatch
310AC_CHECK_HEADERS(dispatch/dispatch.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100311
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312AC_SUBST(OS_EXTRA_SRC)
313AC_SUBST(OS_EXTRA_OBJ)
314
315dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
316dnl Only when the directory exists and it wasn't there yet.
317dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000318dnl Skip all of this when cross-compiling.
319if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000320 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000321 have_local_include=''
322 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000323 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
324 --without-local-dir do not search /usr/local for local libraries.], [
325 local_dir="$withval"
326 case "$withval" in
327 */*) ;;
328 no)
329 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200330 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000331 have_local_lib=yes
332 ;;
333 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
334 esac
335 AC_MSG_RESULT($local_dir)
336 ], [
337 local_dir=/usr/local
338 AC_MSG_RESULT(Defaulting to $local_dir)
339 ])
340 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000341 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100342 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
343 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000344 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000345 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000346 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000347 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
348 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 +0000349 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000350 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000351 fi
352 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000353 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
354 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 +0000355 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000356 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000357 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000358 fi
359fi
360
361AC_MSG_CHECKING(--with-vim-name argument)
362AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
363 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000364 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000365AC_SUBST(VIMNAME)
366AC_MSG_CHECKING(--with-ex-name argument)
367AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
368 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
369 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
370AC_SUBST(EXNAME)
371AC_MSG_CHECKING(--with-view-name argument)
372AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
373 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
374 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
375AC_SUBST(VIEWNAME)
376
377AC_MSG_CHECKING(--with-global-runtime argument)
Bram Moolenaar9d302ad2018-12-21 11:48:51 +0100378AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath', comma-separated for multiple directories],
379 RUNTIME_GLOBAL="$withval"; AC_MSG_RESULT($withval),
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380 AC_MSG_RESULT(no))
381
Bram Moolenaar9d302ad2018-12-21 11:48:51 +0100382if test "X$RUNTIME_GLOBAL" != "X"; then
383 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" }')
384 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$RUNTIME_GLOBAL")
385 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL_AFTER, "$RUNTIME_GLOBAL_AFTER")
386fi
387
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388AC_MSG_CHECKING(--with-modified-by argument)
389AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
390 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
391 AC_MSG_RESULT(no))
392
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200393dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000394AC_MSG_CHECKING(if character set is EBCDIC)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100395AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ ],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396[ /* TryCompile function for CharSet.
397 Treat any failure as ASCII for compatibility with existing art.
398 Use compile-time rather than run-time tests for cross-compiler
399 tolerance. */
400#if '0'!=240
401make an error "Character set is not EBCDIC"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100402#endif ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000403[ # TryCompile action if true
404cf_cv_ebcdic=yes ],
405[ # TryCompile action if false
406cf_cv_ebcdic=no])
407# end of TryCompile ])
408# end of CacheVal CvEbcdic
409AC_MSG_RESULT($cf_cv_ebcdic)
410case "$cf_cv_ebcdic" in #(vi
411 yes) AC_DEFINE(EBCDIC)
412 line_break='"\\n"'
413 ;;
414 *) line_break='"\\012"';;
415esac
416AC_SUBST(line_break)
417
418if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200419dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200420AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000421case $vim_cv_uname_output in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200422 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000423 dnl If using cc the environment variable _CC_CCMODE must be
424 dnl set to "1", so that some compiler extensions are enabled.
425 dnl If using c89 the environment variable is named _CC_C89MODE.
426 dnl Note: compile with c89 never tested.
427 if test "$CC" = "cc"; then
428 ccm="$_CC_CCMODE"
429 ccn="CC"
430 else
431 if test "$CC" = "c89"; then
432 ccm="$_CC_C89MODE"
433 ccn="C89"
434 else
435 ccm=1
436 fi
437 fi
438 if test "$ccm" != "1"; then
439 echo ""
440 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200441 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200442 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000443 echo " Do:"
444 echo " export _CC_${ccn}MODE=1"
445 echo " and then call configure again."
446 echo "------------------------------------------"
447 exit 1
448 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200449 # Set CFLAGS for configure process.
450 # This will be reset later for config.mk.
451 # Use haltonmsg to force error for missing H files.
452 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
453 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000454 AC_MSG_RESULT(yes)
455 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200456 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000457 AC_MSG_RESULT(no)
458 ;;
459esac
460fi
461
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200462dnl Set QUOTESED. Needs additional backslashes on zOS
463if test "$zOSUnix" = "yes"; then
Bram Moolenaarabcbb0e2020-12-23 12:33:42 +0100464 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/' -e 's/ */ /g'"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200465else
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 +0200467fi
468AC_SUBST(QUOTESED)
469
470
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200471dnl Link with -lsmack for Smack stuff; if not found
472AC_MSG_CHECKING(--disable-smack argument)
473AC_ARG_ENABLE(smack,
474 [ --disable-smack Do not check for Smack support.],
475 , enable_smack="yes")
476if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200477 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200478 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200479else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200480 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200481fi
482if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200483 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
484fi
485if test "$enable_smack" = "yes"; then
486 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
487 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
488 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200489 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200490fi
491if test "$enable_smack" = "yes"; then
492 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200493 [LIBS="$LIBS -lattr"
494 found_smack="yes"
495 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000496fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000497
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200498dnl When smack was found don't search for SELinux
499if test "x$found_smack" = "x"; then
500 dnl Link with -lselinux for SELinux stuff; if not found
501 AC_MSG_CHECKING(--disable-selinux argument)
502 AC_ARG_ENABLE(selinux,
503 [ --disable-selinux Do not check for SELinux support.],
504 , enable_selinux="yes")
505 if test "$enable_selinux" = "yes"; then
506 AC_MSG_RESULT(no)
507 AC_CHECK_LIB(selinux, is_selinux_enabled,
Bram Moolenaare4b78e22017-12-07 22:29:11 +0100508 [AC_CHECK_HEADER(selinux/selinux.h,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200509 [LIBS="$LIBS -lselinux"
Bram Moolenaare4b78e22017-12-07 22:29:11 +0100510 AC_DEFINE(HAVE_SELINUX)])])
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200511 else
512 AC_MSG_RESULT(yes)
513 fi
514fi
515
Bram Moolenaar071d4272004-06-13 20:20:40 +0000516dnl Check user requested features.
517
518AC_MSG_CHECKING(--with-features argument)
Martin Tournoij25f3a142022-10-08 19:26:41 +0100519AC_ARG_WITH(features, [ --with-features=TYPE tiny, normal or huge (default: huge)],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000520 features="$withval"; AC_MSG_RESULT($features),
Bram Moolenaar23c4f712016-01-20 22:11:59 +0100521 features="huge"; AC_MSG_RESULT(Defaulting to huge))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000522
Martin Tournoij7904fa42022-10-04 16:28:45 +0100523dnl "small" is supported for backwards compatibility, now an alias for "tiny"
Martin Tournoij25f3a142022-10-08 19:26:41 +0100524dnl "big" is supported for backwards compatibility, now an alias for "normal"
Martin Tournoij7904fa42022-10-04 16:28:45 +0100525case "$features" in
Martin Tournoij25f3a142022-10-08 19:26:41 +0100526 small) features="tiny" ;;
527 big) features="normal" ;;
Martin Tournoij7904fa42022-10-04 16:28:45 +0100528esac
529
Bram Moolenaar071d4272004-06-13 20:20:40 +0000530dovimdiff=""
531dogvimdiff=""
532case "$features" in
533 tiny) AC_DEFINE(FEAT_TINY) ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +0000534 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
535 dogvimdiff="installgvimdiff" ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +0000536 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
537 dogvimdiff="installgvimdiff" ;;
538 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
539esac
540
541AC_SUBST(dovimdiff)
542AC_SUBST(dogvimdiff)
543
Martin Tournoij7904fa42022-10-04 16:28:45 +0100544if test "x$features" = "xtiny"; then
Bram Moolenaar12471262022-01-18 11:11:25 +0000545 has_eval=no
546else
547 has_eval=yes
548fi
549
Bram Moolenaar071d4272004-06-13 20:20:40 +0000550AC_MSG_CHECKING(--with-compiledby argument)
551AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
552 compiledby="$withval"; AC_MSG_RESULT($withval),
553 compiledby=""; AC_MSG_RESULT(no))
554AC_SUBST(compiledby)
555
556AC_MSG_CHECKING(--disable-xsmp argument)
557AC_ARG_ENABLE(xsmp,
558 [ --disable-xsmp Disable XSMP session management],
559 , enable_xsmp="yes")
560
561if test "$enable_xsmp" = "yes"; then
562 AC_MSG_RESULT(no)
563 AC_MSG_CHECKING(--disable-xsmp-interact argument)
564 AC_ARG_ENABLE(xsmp-interact,
565 [ --disable-xsmp-interact Disable XSMP interaction],
566 , enable_xsmp_interact="yes")
567 if test "$enable_xsmp_interact" = "yes"; then
568 AC_MSG_RESULT(no)
569 AC_DEFINE(USE_XSMP_INTERACT)
570 else
571 AC_MSG_RESULT(yes)
572 fi
573else
574 AC_MSG_RESULT(yes)
575fi
576
Bram Moolenaar67ffb412022-01-08 13:36:57 +0000577AC_MSG_CHECKING([diff feature])
Martin Tournoij7904fa42022-10-04 16:28:45 +0100578if test "x$features" = "xtiny"; then
Bram Moolenaar67ffb412022-01-08 13:36:57 +0000579 AC_MSG_RESULT([disabled in $features version])
580else
581 AC_MSG_RESULT(enabled)
582 AC_DEFINE(FEAT_DIFF)
583 XDIFF_OBJS_USED="\$(XDIFF_OBJS)"
584 AC_SUBST(XDIFF_OBJS_USED)
585fi
586
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200587dnl Check for Lua feature.
588AC_MSG_CHECKING(--enable-luainterp argument)
589AC_ARG_ENABLE(luainterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200590 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200591 [enable_luainterp="no"])
592AC_MSG_RESULT($enable_luainterp)
593
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200594if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +0000595 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +0100596 AC_MSG_ERROR([cannot use Lua with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100597 fi
598
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200599 dnl -- find the lua executable
600 AC_SUBST(vi_cv_path_lua)
601
602 AC_MSG_CHECKING(--with-lua-prefix argument)
603 AC_ARG_WITH(lua_prefix,
604 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
605 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200606 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200607
608 if test "X$with_lua_prefix" != "X"; then
609 vi_cv_path_lua_pfx="$with_lua_prefix"
610 else
611 AC_MSG_CHECKING(LUA_PREFIX environment var)
612 if test "X$LUA_PREFIX" != "X"; then
613 AC_MSG_RESULT("$LUA_PREFIX")
614 vi_cv_path_lua_pfx="$LUA_PREFIX"
615 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200616 AC_MSG_RESULT([not set, default to /usr])
617 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200618 fi
619 fi
620
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200621 AC_MSG_CHECKING(--with-luajit)
622 AC_ARG_WITH(luajit,
623 [ --with-luajit Link with LuaJIT instead of Lua.],
624 [vi_cv_with_luajit="$withval"],
625 [vi_cv_with_luajit="no"])
626 AC_MSG_RESULT($vi_cv_with_luajit)
627
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200628 LUA_INC=
629 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200630 if test "x$vi_cv_with_luajit" != "xno"; then
631 dnl -- try to find LuaJIT executable
632 AC_PATH_PROG(vi_cv_path_luajit, luajit)
633 if test "X$vi_cv_path_luajit" != "X"; then
634 dnl -- find LuaJIT version
635 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
ichizokbddc6ad2023-08-29 20:54:32 +0200636 [ 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 +0200637 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
638 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
639 vi_cv_path_lua="$vi_cv_path_luajit"
640 vi_cv_version_lua="$vi_cv_version_lua_luajit"
641 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200642 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200643 dnl -- try to find Lua executable
644 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
645 if test "X$vi_cv_path_plain_lua" != "X"; then
646 dnl -- find Lua version
647 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
648 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
649 fi
650 vi_cv_path_lua="$vi_cv_path_plain_lua"
651 vi_cv_version_lua="$vi_cv_version_plain_lua"
652 fi
653 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
654 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 +0100655 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200656 AC_MSG_RESULT(yes)
657 LUA_INC=/luajit-$vi_cv_version_luajit
658 fi
659 fi
660 if test "X$LUA_INC" = "X"; then
661 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100662 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200663 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200664 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200665 AC_MSG_RESULT(no)
666 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 +0100667 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 AC_MSG_RESULT(yes)
669 LUA_INC=/lua$vi_cv_version_lua
670 else
671 AC_MSG_RESULT(no)
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200672
673 # Detect moonjit:
674 # https://groups.google.com/forum/#!topic/vim_use/O0vek60WuTk
675 lua_suf=/moonjit-2.3
676 inc_path="$vi_cv_path_lua_pfx/include"
Bram Moolenaarad4dc832020-04-20 16:21:53 +0200677 for dir in "$inc_path"/moonjit-[[0-9]]* ; do
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200678 if test -d "$dir" ; then
Bram Moolenaara79a8942020-12-17 20:50:25 +0100679 lua_suf=`basename "$dir"`
Bram Moolenaarf49e5642020-04-19 17:46:53 +0200680 lua_suf="/$lua_suf"
681 break
682 fi
683 done
684 AC_MSG_CHECKING(if lua.h can be found in $inc_path$lua_suf)
685 if test -f "$inc_path$lua_suf/lua.h"; then
686 AC_MSG_RESULT(yes)
687 LUA_INC=$lua_suf
688 else
689 AC_MSG_RESULT(no)
690 vi_cv_path_lua_pfx=
691 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200692 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200693 fi
694 fi
695 fi
696
697 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200698 if test "x$vi_cv_with_luajit" != "xno"; then
699 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
700 if test "X$multiarch" != "X"; then
701 lib_multiarch="lib/${multiarch}"
702 else
703 lib_multiarch="lib"
704 fi
705 if test "X$vi_cv_version_lua" = "X"; then
706 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
707 else
708 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
709 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200710 else
Bram Moolenaar869113f2023-03-31 21:29:00 +0100711 dnl Test alternate lib location including version
712 if test -d "${vi_cv_path_lua_pfx}/lib/lua$vi_cv_version_lua"; then
713 LUALIBDIR="lib/lua$vi_cv_version_lua"
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200714 else
Bram Moolenaar869113f2023-03-31 21:29:00 +0100715 LUALIBDIR=lib
716 fi
717 if test "X$LUA_INC" != "X"; then
718 dnl Test alternate name including version
719 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${LUALIBDIR} -llua$vi_cv_version_lua"
720 else
721 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${LUALIBDIR} -llua"
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200722 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200723 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200724 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200725 lua_ok="yes"
726 else
727 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
728 libs_save=$LIBS
729 LIBS="$LIBS $LUA_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +0100730 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200731 AC_MSG_RESULT(yes); lua_ok="yes",
732 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
733 LIBS=$libs_save
734 fi
735 if test "x$lua_ok" = "xyes"; then
736 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
737 LUA_SRC="if_lua.c"
738 LUA_OBJ="objects/if_lua.o"
739 LUA_PRO="if_lua.pro"
740 AC_DEFINE(FEAT_LUA)
741 fi
742 if test "$enable_luainterp" = "dynamic"; then
743 if test "x$vi_cv_with_luajit" != "xno"; then
744 luajit="jit"
745 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200746 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
747 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
748 else
Bram Moolenaard0573012017-10-28 21:11:06 +0200749 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200750 ext="dylib"
751 indexes=""
752 else
753 ext="so"
754 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
755 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
756 if test "X$multiarch" != "X"; then
757 lib_multiarch="lib/${multiarch}"
758 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200759 fi
760 dnl Determine the sover for the current version, but fallback to
761 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200762 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200763 for subdir in "${lib_multiarch}" lib64 lib; do
764 if test -z "$subdir"; then
765 continue
766 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200767 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
768 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
769 for i in $indexes ""; do
770 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200771 sover2="$i"
772 break 3
773 fi
774 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100775 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200776 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200777 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200778 if test "X$sover" = "X"; then
779 AC_MSG_RESULT(no)
780 lua_ok="no"
781 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
782 else
783 AC_MSG_RESULT(yes)
784 lua_ok="yes"
785 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
786 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200787 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200788 AC_DEFINE(DYNAMIC_LUA)
789 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200790 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200791 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200792 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
Bram Moolenaard0573012017-10-28 21:11:06 +0200793 test "x$MACOS_X" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000794 test "$vim_cv_uname_m_output" = "x86_64"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200795 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
796 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
797 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200798 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200799 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100800 AC_MSG_ERROR([could not configure lua])
801 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200802 AC_SUBST(LUA_SRC)
803 AC_SUBST(LUA_OBJ)
804 AC_SUBST(LUA_PRO)
805 AC_SUBST(LUA_LIBS)
806 AC_SUBST(LUA_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +0000807 AC_SUBST(LUA_CFLAGS_EXTRA)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200808fi
809
810
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000811dnl Check for MzScheme feature.
812AC_MSG_CHECKING(--enable-mzschemeinterp argument)
813AC_ARG_ENABLE(mzschemeinterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200814 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000815 [enable_mzschemeinterp="no"])
816AC_MSG_RESULT($enable_mzschemeinterp)
817
818if test "$enable_mzschemeinterp" = "yes"; then
819 dnl -- find the mzscheme executable
820 AC_SUBST(vi_cv_path_mzscheme)
821
822 AC_MSG_CHECKING(--with-plthome argument)
823 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000824 [ --with-plthome=PLTHOME Use PLTHOME.],
825 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000826 with_plthome="";AC_MSG_RESULT("no"))
827
828 if test "X$with_plthome" != "X"; then
829 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100830 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000831 else
832 AC_MSG_CHECKING(PLTHOME environment var)
833 if test "X$PLTHOME" != "X"; then
834 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000835 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100836 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000837 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000838 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000839 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000840 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000841
842 dnl resolve symbolic link, the executable is often elsewhere and there
843 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000844 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000845 lsout=`ls -l $vi_cv_path_mzscheme`
846 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
847 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
848 fi
849 fi
850
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000851 if test "X$vi_cv_path_mzscheme" != "X"; then
852 dnl -- find where MzScheme thinks it was installed
853 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000854 dnl different versions of MzScheme differ in command line processing
855 dnl use universal approach
856 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000857 (build-path (call-with-values \
858 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000859 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
860 dnl Remove a trailing slash
861 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
862 sed -e 's+/$++'` ])
863 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000864 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000865 fi
866 fi
867
868 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100869 AC_MSG_CHECKING(for racket include directory)
870 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
871 if test "X$SCHEME_INC" != "X"; then
872 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000873 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100874 AC_MSG_RESULT(not found)
875 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
876 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
877 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000878 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000879 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000880 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100881 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
882 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000883 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100884 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000885 else
886 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100887 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
888 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100889 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100890 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100891 else
892 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100893 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
894 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100895 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100896 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100897 else
898 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100899 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
900 if test -f /usr/include/racket/scheme.h; then
901 AC_MSG_RESULT(yes)
902 SCHEME_INC=/usr/include/racket
903 else
904 AC_MSG_RESULT(no)
905 vi_cv_path_mzscheme_pfx=
906 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100907 fi
908 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000909 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000910 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000911 fi
912 fi
913
914 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100915
916 AC_MSG_CHECKING(for racket lib directory)
917 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
918 if test "X$SCHEME_LIB" != "X"; then
919 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000920 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100921 AC_MSG_RESULT(not found)
922 fi
923
924 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
925 if test "X$path" != "X"; then
Bram Moolenaard0573012017-10-28 21:11:06 +0200926 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100927 MZSCHEME_LIBS="-framework Racket"
928 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
929 elif test -f "${path}/libmzscheme3m.a"; then
930 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
931 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
932 elif test -f "${path}/libracket3m.a"; then
933 MZSCHEME_LIBS="${path}/libracket3m.a"
Bram Moolenaar588d2412020-10-03 14:24:19 +0200934 if test -f "${path}/librktio.a"; then
935 MZSCHEME_LIBS="${MZSCHEME_LIBS} ${path}/librktio.a"
936 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100937 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
938 elif test -f "${path}/libracket.a"; then
939 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
940 elif test -f "${path}/libmzscheme.a"; then
941 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
942 else
943 dnl Using shared objects
944 if test -f "${path}/libmzscheme3m.so"; then
945 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
946 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
947 elif test -f "${path}/libracket3m.so"; then
948 MZSCHEME_LIBS="-L${path} -lracket3m"
949 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
950 elif test -f "${path}/libracket.so"; then
951 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
952 else
953 dnl try next until last
954 if test "$path" != "$SCHEME_LIB"; then
955 continue
956 fi
957 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
958 fi
959 if test "$GCC" = yes; then
960 dnl Make Vim remember the path to the library. For when it's not in
961 dnl $LD_LIBRARY_PATH.
962 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +0000963 elif test "$vim_cv_uname_output" = SunOS &&
964 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100965 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
966 fi
967 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000968 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100969 if test "X$MZSCHEME_LIBS" != "X"; then
970 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000971 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100972 done
973
974 AC_MSG_CHECKING([if racket requires -pthread])
975 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
976 AC_MSG_RESULT(yes)
977 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
978 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
979 else
980 AC_MSG_RESULT(no)
981 fi
982
983 AC_MSG_CHECKING(for racket config directory)
984 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
985 if test "X$SCHEME_CONFIGDIR" != "X"; then
986 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
987 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
988 else
989 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000990 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100991
992 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100993 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))))'`
994 if test "X$SCHEME_COLLECTS" = "X"; then
995 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
996 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100997 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100998 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
999 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +01001000 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +01001001 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
1002 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
1003 else
1004 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
1005 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
1006 fi
Bram Moolenaar75676462013-01-30 14:55:42 +01001007 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001008 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001009 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +00001010 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001011 if test "X$SCHEME_COLLECTS" != "X" ; then
1012 AC_MSG_RESULT(${SCHEME_COLLECTS})
1013 else
1014 AC_MSG_RESULT(not found)
1015 fi
1016
1017 AC_MSG_CHECKING(for mzscheme_base.c)
1018 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001019 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +01001020 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
1021 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001022 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001023 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001024 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +01001025 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
1026 MZSCHEME_MOD="++lib scheme/base"
1027 else
1028 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
1029 MZSCHEME_EXTRA="mzscheme_base.c"
1030 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
1031 MZSCHEME_MOD=""
1032 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +01001033 fi
1034 fi
1035 if test "X$MZSCHEME_EXTRA" != "X" ; then
1036 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001037 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001038 AC_MSG_RESULT(needed)
1039 else
1040 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001041 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001042
Bram Moolenaar9e902192013-07-17 18:58:11 +02001043 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
1044 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
1045
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001046 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +01001047 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +02001048
1049 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
1050 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
1051 cflags_save=$CFLAGS
1052 libs_save=$LIBS
1053 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
1054 LIBS="$LIBS $MZSCHEME_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001055 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar9e902192013-07-17 18:58:11 +02001056 AC_MSG_RESULT(yes); mzs_ok=yes,
1057 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
1058 CFLAGS=$cflags_save
1059 LIBS=$libs_save
1060 if test $mzs_ok = yes; then
1061 MZSCHEME_SRC="if_mzsch.c"
1062 MZSCHEME_OBJ="objects/if_mzsch.o"
1063 MZSCHEME_PRO="if_mzsch.pro"
1064 AC_DEFINE(FEAT_MZSCHEME)
1065 else
1066 MZSCHEME_CFLAGS=
1067 MZSCHEME_LIBS=
1068 MZSCHEME_EXTRA=
1069 MZSCHEME_MZC=
1070 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001071 fi
1072 AC_SUBST(MZSCHEME_SRC)
1073 AC_SUBST(MZSCHEME_OBJ)
1074 AC_SUBST(MZSCHEME_PRO)
1075 AC_SUBST(MZSCHEME_LIBS)
1076 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +00001077 AC_SUBST(MZSCHEME_EXTRA)
1078 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001079fi
1080
1081
Bram Moolenaar071d4272004-06-13 20:20:40 +00001082AC_MSG_CHECKING(--enable-perlinterp argument)
1083AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +02001084 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001085 [enable_perlinterp="no"])
1086AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +02001087if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001088 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001089 AC_MSG_ERROR([cannot use Perl with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001090 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001091 AC_SUBST(vi_cv_path_perl)
1092 AC_PATH_PROG(vi_cv_path_perl, perl)
1093 if test "X$vi_cv_path_perl" != "X"; then
1094 AC_MSG_CHECKING(Perl version)
1095 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
1096 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +02001097 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001098 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
1099 badthreads=no
1100 else
1101 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
1102 eval `$vi_cv_path_perl -V:use5005threads`
1103 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
1104 badthreads=no
1105 else
1106 badthreads=yes
1107 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
1108 fi
1109 else
1110 badthreads=yes
1111 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
1112 fi
1113 fi
1114 if test $badthreads = no; then
1115 AC_MSG_RESULT(OK)
1116 eval `$vi_cv_path_perl -V:shrpenv`
1117 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
1118 shrpenv=""
1119 fi
1120 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
1121 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +02001122 vi_cv_perl_extutils=unknown_perl_extutils_path
1123 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
1124 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
1125 if test -f "$xsubpp_path"; then
1126 vi_cv_perl_xsubpp="$xsubpp_path"
1127 fi
1128 done
1129 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001130 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +02001131 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaare8ff56b2017-09-14 23:06:23 +02001132 dnl Remove "FORTIFY_SOURCE", it will be defined twice.
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001133 dnl remove -pipe and -Wxxx, it confuses cproto
Bram Moolenaar071d4272004-06-13 20:20:40 +00001134 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaare8ff56b2017-09-14 23:06:23 +02001135 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1136 -e 's/-fdebug-prefix-map[[^ ]]*//g' \
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001137 -e 's/-pipe //' \
1138 -e 's/-W[[^ ]]*//g' \
1139 -e 's/-D_FORTIFY_SOURCE=.//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001140 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1141 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1142 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1143 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1144 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1145 dnl a test in configure may fail because of that.
1146 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1147 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1148
1149 dnl check that compiling a simple program still works with the flags
1150 dnl added for Perl.
1151 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1152 cflags_save=$CFLAGS
1153 libs_save=$LIBS
1154 ldflags_save=$LDFLAGS
1155 CFLAGS="$CFLAGS $perlcppflags"
1156 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001157 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001158 LDFLAGS="$perlldflags $LDFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001159 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001160 AC_MSG_RESULT(yes); perl_ok=yes,
1161 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1162 CFLAGS=$cflags_save
1163 LIBS=$libs_save
1164 LDFLAGS=$ldflags_save
1165 if test $perl_ok = yes; then
1166 if test "X$perlcppflags" != "X"; then
Bram Moolenaar1ec96c92017-09-27 21:42:08 +02001167 PERL_CFLAGS=$perlcppflags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001168 fi
1169 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001170 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001171 LDFLAGS="$perlldflags $LDFLAGS"
1172 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001173 fi
1174 PERL_LIBS=$perllibs
1175 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1176 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1177 PERL_PRO="if_perl.pro if_perlsfio.pro"
1178 AC_DEFINE(FEAT_PERL)
1179 fi
1180 fi
1181 else
1182 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1183 fi
1184 fi
1185
Bram Moolenaard0573012017-10-28 21:11:06 +02001186 if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001187 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188 dir=/System/Library/Perl
1189 darwindir=$dir/darwin
1190 if test -d $darwindir; then
1191 PERL=/usr/bin/perl
1192 else
1193 dnl Mac OS X 10.3
1194 dir=/System/Library/Perl/5.8.1
1195 darwindir=$dir/darwin-thread-multi-2level
1196 if test -d $darwindir; then
1197 PERL=/usr/bin/perl
1198 fi
1199 fi
1200 if test -n "$PERL"; then
1201 PERL_DIR="$dir"
1202 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1203 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1204 PERL_LIBS="-L$darwindir/CORE -lperl"
1205 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001206 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1207 dnl be included if requested by passing --with-mac-arch to
1208 dnl configure, so strip these flags first (if present)
1209 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1210 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 +00001211 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001212 if test "$enable_perlinterp" = "dynamic"; then
1213 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1214 AC_DEFINE(DYNAMIC_PERL)
1215 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
Christian Brabandt55460da2023-08-29 21:31:28 +02001216 PERL_LIBS=""
Bram Moolenaare06c1882010-07-21 22:05:20 +02001217 fi
1218 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001219
1220 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1221 AC_MSG_ERROR([could not configure perl])
1222 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001223fi
1224AC_SUBST(shrpenv)
1225AC_SUBST(PERL_SRC)
1226AC_SUBST(PERL_OBJ)
1227AC_SUBST(PERL_PRO)
1228AC_SUBST(PERL_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001229AC_SUBST(PERL_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001230AC_SUBST(PERL_LIBS)
1231
1232AC_MSG_CHECKING(--enable-pythoninterp argument)
1233AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001234 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001235 [enable_pythoninterp="no"])
1236AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001237if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001238 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001239 AC_MSG_ERROR([cannot use Python with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01001240 fi
1241
Bram Moolenaar071d4272004-06-13 20:20:40 +00001242 dnl -- find the python executable
Bram Moolenaare1a32312018-04-15 16:03:25 +02001243 AC_MSG_CHECKING(--with-python-command argument)
1244 AC_SUBST(vi_cv_path_python)
1245 AC_ARG_WITH(python-command, [ --with-python-command=NAME name of the Python 2 command (default: python2 or python)],
1246 vi_cv_path_python="$withval"; AC_MSG_RESULT($vi_cv_path_python),
1247 AC_MSG_RESULT(no))
1248
1249 if test "X$vi_cv_path_python" = "X"; then
1250 AC_PATH_PROGS(vi_cv_path_python, python2 python)
1251 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001252 if test "X$vi_cv_path_python" != "X"; then
1253
1254 dnl -- get its version number
1255 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1256 [[vi_cv_var_python_version=`
1257 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1258 ]])
1259
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001260 dnl -- it must be at least version 2.3
1261 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001262 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001263 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001264 then
1265 AC_MSG_RESULT(yep)
1266
1267 dnl -- find where python thinks it was installed
1268 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1269 [ vi_cv_path_python_pfx=`
1270 ${vi_cv_path_python} -c \
1271 "import sys; print sys.prefix"` ])
1272
1273 dnl -- and where it thinks it runs
1274 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1275 [ vi_cv_path_python_epfx=`
1276 ${vi_cv_path_python} -c \
1277 "import sys; print sys.exec_prefix"` ])
1278
1279 dnl -- python's internal library path
1280
1281 AC_CACHE_VAL(vi_cv_path_pythonpath,
1282 [ vi_cv_path_pythonpath=`
1283 unset PYTHONPATH;
1284 ${vi_cv_path_python} -c \
1285 "import sys, string; print string.join(sys.path,':')"` ])
1286
1287 dnl -- where the Python implementation library archives are
1288
1289 AC_ARG_WITH(python-config-dir,
Bram Moolenaare1a32312018-04-15 16:03:25 +02001290 [ --with-python-config-dir=PATH Python's config directory (deprecated)],
Bram Moolenaard0882402018-04-10 18:13:05 +02001291 [ vi_cv_path_python_conf="${withval}"; have_python_config_dir=1 ] )
Bram Moolenaar071d4272004-06-13 20:20:40 +00001292
1293 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1294 [
1295 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001296 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1297 if test -d "$d" && test -f "$d/config.c"; then
1298 vi_cv_path_python_conf="$d"
1299 else
1300 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1301 for subdir in lib64 lib share; do
1302 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1303 if test -d "$d" && test -f "$d/config.c"; then
1304 vi_cv_path_python_conf="$d"
1305 fi
1306 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001307 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001308 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001309 ])
1310
1311 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1312
1313 if test "X$PYTHON_CONFDIR" = "X"; then
1314 AC_MSG_RESULT([can't find it!])
1315 else
1316
1317 dnl -- we need to examine Python's config/Makefile too
1318 dnl see what the interpreter is built from
1319 AC_CACHE_VAL(vi_cv_path_python_plibs,
1320 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001321 pwd=`pwd`
1322 tmp_mkf="$pwd/config-PyMake$$"
1323 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001324__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001325 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001326 @echo "python_LIBS='$(LIBS)'"
1327 @echo "python_SYSLIBS='$(SYSLIBS)'"
1328 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001329 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001330 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001331 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1332 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1333 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001334eof
1335 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001336 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1337 rm -f -- "${tmp_mkf}"
Bram Moolenaard0573012017-10-28 21:11:06 +02001338 if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
Bram Moolenaar071d4272004-06-13 20:20:40 +00001339 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1340 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001341 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1342 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1343 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001344 else
Bram Moolenaar9ce42132018-04-11 22:19:36 +02001345 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001346 dnl -- Check if the path contained in python_LINKFORSHARED is
1347 dnl usable for vim build. If not, make and try other
1348 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001349 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001350 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1351 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1352 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1353 dnl -- The path looks relative. Guess the absolute one using
1354 dnl the prefix and try that.
1355 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1356 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1357 dnl -- A last resort.
1358 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1359 dnl -- No check is done. The last word is left to the
1360 dnl "sanity" test on link flags that follows shortly.
1361 fi
1362 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1363 fi
1364 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001365 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 +00001366 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1367 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1368 fi
1369 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001370 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001371 [
1372 if test "X$python_DLLLIBRARY" != "X"; then
1373 vi_cv_dll_name_python="$python_DLLLIBRARY"
1374 else
1375 vi_cv_dll_name_python="$python_INSTSONAME"
1376 fi
1377 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001378
1379 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1380 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar04249582018-04-10 13:29:34 +02001381 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001382 else
Bram Moolenaar04249582018-04-10 13:29:34 +02001383 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 +00001384 fi
Bram Moolenaar3a21d9c2018-04-10 20:26:20 +02001385 if test "X$have_python_config_dir" = "X1" -a "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaard0882402018-04-10 18:13:05 +02001386 dnl Define PYTHON_HOME if --with-python-config-dir was used
1387 PYTHON_CFLAGS="${PYTHON_CFLAGS} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
1388
1389 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001390 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001391 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001392
1393 dnl On FreeBSD linking with "-pthread" is required to use threads.
1394 dnl _THREAD_SAFE must be used for compiling then.
1395 dnl The "-pthread" is added to $LIBS, so that the following check for
1396 dnl sigaltstack() will look in libc_r (it's there in libc!).
1397 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1398 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1399 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1400 AC_MSG_CHECKING([if -pthread should be used])
1401 threadsafe_flag=
1402 thread_lib=
Bram Moolenaard0573012017-10-28 21:11:06 +02001403 dnl if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001404 if test "$vim_cv_uname_output" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001405 test "$GCC" = yes && threadsafe_flag="-pthread"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001406 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001407 threadsafe_flag="-D_THREAD_SAFE"
1408 thread_lib="-pthread"
1409 fi
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001410 if test "$vim_cv_uname_output" = SunOS; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001411 threadsafe_flag="-pthreads"
1412 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001413 fi
1414 libs_save_old=$LIBS
1415 if test -n "$threadsafe_flag"; then
1416 cflags_save=$CFLAGS
1417 CFLAGS="$CFLAGS $threadsafe_flag"
1418 LIBS="$LIBS $thread_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001419 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001420 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001421 AC_MSG_RESULT(no); LIBS=$libs_save_old
1422 )
1423 CFLAGS=$cflags_save
1424 else
1425 AC_MSG_RESULT(no)
1426 fi
1427
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001428 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001429 dnl added for Python.
1430 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1431 cflags_save=$CFLAGS
1432 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001433 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001434 LIBS="$LIBS $PYTHON_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001435 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001436 AC_MSG_RESULT(yes); python_ok=yes,
1437 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1438 CFLAGS=$cflags_save
1439 LIBS=$libs_save
1440 if test $python_ok = yes; then
1441 AC_DEFINE(FEAT_PYTHON)
1442 else
1443 LIBS=$libs_save_old
1444 PYTHON_SRC=
1445 PYTHON_OBJ=
1446 PYTHON_LIBS=
1447 PYTHON_CFLAGS=
1448 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001449 fi
1450 else
1451 AC_MSG_RESULT(too old)
1452 fi
1453 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001454
1455 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1456 AC_MSG_ERROR([could not configure python])
1457 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001458fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001459
Bram Moolenaar071d4272004-06-13 20:20:40 +00001460AC_SUBST(PYTHON_LIBS)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001461AC_SUBST(PYTHON_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001462AC_SUBST(PYTHON_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463AC_SUBST(PYTHON_SRC)
1464AC_SUBST(PYTHON_OBJ)
1465
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001466
1467AC_MSG_CHECKING(--enable-python3interp argument)
1468AC_ARG_ENABLE(python3interp,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001469 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001470 [enable_python3interp="no"])
1471AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001472if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00001473 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01001474 AC_MSG_ERROR([cannot use Python with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01001475 fi
1476
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001477 dnl -- find the python3 executable
Bram Moolenaare1a32312018-04-15 16:03:25 +02001478 AC_MSG_CHECKING(--with-python3-command argument)
1479 AC_SUBST(vi_cv_path_python3)
1480 AC_ARG_WITH(python3-command, [ --with-python3-command=NAME name of the Python 3 command (default: python3 or python)],
1481 vi_cv_path_python3="$withval"; AC_MSG_RESULT($vi_cv_path_python3),
1482 AC_MSG_RESULT(no))
1483
1484 if test "X$vi_cv_path_python3" = "X"; then
1485 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
1486 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001487 if test "X$vi_cv_path_python3" != "X"; then
1488
1489 dnl -- get its version number
1490 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1491 [[vi_cv_var_python3_version=`
Bram Moolenaar23c01922021-05-21 11:43:58 +02001492 ${vi_cv_path_python3} -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001493 ]])
1494
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001495 dnl -- it must be at least version 3
1496 AC_MSG_CHECKING(Python is 3.0 or better)
1497 if ${vi_cv_path_python3} -c \
1498 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1499 then
1500 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001501
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001502 dnl -- get the stable ABI version if passed in
1503 AC_MSG_CHECKING(--with-python3-stable-abi argument)
1504 AC_SUBST(vi_cv_var_python3_stable_abi)
1505 AC_ARG_WITH(python3-stable-abi, [ --with-python3-stable-abi=VERSION stable ABI version to target (e.g. 3.8)],
1506 vi_cv_var_python3_stable_abi="$withval"; AC_MSG_RESULT($vi_cv_var_python3_stable_abi),
1507 AC_MSG_RESULT(no))
1508 if test "X$vi_cv_var_python3_stable_abi" != "X"; then
1509 AC_CACHE_VAL(vi_cv_var_python3_stable_abi_hex,
1510 [
1511 vi_cv_var_python3_stable_abi_hex=`
1512 ${vi_cv_path_python3} -c \
1513 "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) ))"` ])
1514 if test "X$vi_cv_var_python3_stable_abi_hex" == "X"; then
1515 AC_MSG_ERROR([can't parse Python 3 stable ABI version. It should be "<major>.<minor>"])
1516 fi
1517 fi
1518
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001519 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1520 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001521 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001522 vi_cv_var_python3_abiflags=
1523 if ${vi_cv_path_python3} -c \
1524 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1525 then
Bram Moolenaare5303952022-06-19 17:05:47 +01001526 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001527 "import sys; print(sys.abiflags)"`
1528 fi ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001529
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001530 dnl -- find where python3 thinks it was installed
1531 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1532 [ vi_cv_path_python3_pfx=`
1533 ${vi_cv_path_python3} -c \
1534 "import sys; print(sys.prefix)"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001535
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001536 dnl -- and where it thinks it runs
1537 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1538 [ vi_cv_path_python3_epfx=`
1539 ${vi_cv_path_python3} -c \
1540 "import sys; print(sys.exec_prefix)"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001541
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001542 dnl -- python3's include path
1543 AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_include,
1544 [ vi_cv_path_python3_include=`
1545 ${vi_cv_path_python3} -c \
1546 "import sysconfig; print(sysconfig.get_path(\"include\"))"` ])
1547
1548 dnl -- python3's platform include path
1549 AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_platinclude,
1550 [ vi_cv_path_python3_platinclude=`
1551 ${vi_cv_path_python3} -c \
1552 "import sysconfig; print(sysconfig.get_path(\"platinclude\"))"` ])
1553
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001554 dnl -- python3's internal library path
Bram Moolenaare5303952022-06-19 17:05:47 +01001555
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001556 AC_CACHE_VAL(vi_cv_path_python3path,
1557 [ vi_cv_path_python3path=`
1558 unset PYTHONPATH;
1559 ${vi_cv_path_python3} -c \
1560 "import sys, string; print(':'.join(sys.path))"` ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001561
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001562 dnl -- where the Python implementation library archives are
Bram Moolenaare5303952022-06-19 17:05:47 +01001563
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001564 AC_ARG_WITH(python3-config-dir,
Bram Moolenaare1a32312018-04-15 16:03:25 +02001565 [ --with-python3-config-dir=PATH Python's config directory (deprecated)],
Bram Moolenaard0882402018-04-10 18:13:05 +02001566 [ vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1 ] )
Bram Moolenaare5303952022-06-19 17:05:47 +01001567
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001568 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1569 [
1570 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001571 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Zdenek Dohnal31e299c2021-06-10 18:50:55 +02001572 d=`${vi_cv_path_python3} -c "import sysconfig; print(sysconfig.get_config_var('LIBPL'))" 2> /dev/null`
1573 if test "x$d" = "x"; then
1574 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1575 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001576 if test -d "$d" && test -f "$d/config.c"; then
1577 vi_cv_path_python3_conf="$d"
1578 else
1579 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1580 for subdir in lib64 lib share; do
1581 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1582 if test -d "$d" && test -f "$d/config.c"; then
1583 vi_cv_path_python3_conf="$d"
1584 fi
1585 done
1586 done
1587 fi
1588 ])
Bram Moolenaare5303952022-06-19 17:05:47 +01001589
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001590 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
Bram Moolenaare5303952022-06-19 17:05:47 +01001591
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001592 if test "X$PYTHON3_CONFDIR" = "X"; then
1593 AC_MSG_RESULT([can't find it!])
1594 else
Bram Moolenaare5303952022-06-19 17:05:47 +01001595
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001596 dnl -- we need to examine Python's config/Makefile too
1597 dnl see what the interpreter is built from
1598 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1599 [
1600 pwd=`pwd`
1601 tmp_mkf="$pwd/config-PyMake$$"
1602 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001603__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001604 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001605 @echo "python3_LIBS='$(LIBS)'"
1606 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001607 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001608 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Yee Cheng Chinb6ebe5a2023-04-05 18:24:50 +01001609 @echo "python3_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001610eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001611 dnl -- delete the lines from make about Entering/Leaving directory
1612 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1613 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001614 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 +02001615 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1616 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1617 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1618 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1619 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001620 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001621 [
1622 if test "X$python3_DLLLIBRARY" != "X"; then
1623 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
Yee Cheng Chinb6ebe5a2023-04-05 18:24:50 +01001624 elif test "X$python3_PYTHONFRAMEWORKPREFIX" != "X"; then
1625 vi_cv_dll_name_python3="${python3_PYTHONFRAMEWORKPREFIX}/${python3_INSTSONAME}"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001626 else
1627 vi_cv_dll_name_python3="$python3_INSTSONAME"
1628 fi
1629 ])
1630
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001631 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001632 if test "${vi_cv_path_python3_include}" = "${vi_cv_path_python3_platinclude}"; then
1633 PYTHON3_CFLAGS="-I${vi_cv_path_python3_include}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001634 else
Illia Bobyr74e1dad2023-08-27 18:26:54 +02001635 PYTHON3_CFLAGS="-I${vi_cv_path_python3_include} -I${vi_cv_path_python3_platinclude}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001636 fi
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001637 if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
1638 dnl Define PYTHON3_HOME if --with-python-config-dir was used
1639 PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
1640 fi
1641 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1642 PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPy_LIMITED_API=${vi_cv_var_python3_stable_abi_hex}"
1643 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001644 PYTHON3_SRC="if_python3.c"
1645 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaare5303952022-06-19 17:05:47 +01001646
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001647 dnl On FreeBSD linking with "-pthread" is required to use threads.
1648 dnl _THREAD_SAFE must be used for compiling then.
1649 dnl The "-pthread" is added to $LIBS, so that the following check for
1650 dnl sigaltstack() will look in libc_r (it's there in libc!).
1651 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1652 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1653 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1654 AC_MSG_CHECKING([if -pthread should be used])
1655 threadsafe_flag=
1656 thread_lib=
Bram Moolenaard0573012017-10-28 21:11:06 +02001657 dnl if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001658 if test "$vim_cv_uname_output" != Darwin; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001659 test "$GCC" = yes && threadsafe_flag="-pthread"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001660 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001661 threadsafe_flag="-D_THREAD_SAFE"
1662 thread_lib="-pthread"
1663 fi
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001664 if test "$vim_cv_uname_output" = SunOS; then
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001665 threadsafe_flag="-pthreads"
1666 fi
1667 fi
1668 libs_save_old=$LIBS
1669 if test -n "$threadsafe_flag"; then
1670 cflags_save=$CFLAGS
1671 CFLAGS="$CFLAGS $threadsafe_flag"
1672 LIBS="$LIBS $thread_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001673 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001674 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1675 AC_MSG_RESULT(no); LIBS=$libs_save_old
1676 )
1677 CFLAGS=$cflags_save
1678 else
1679 AC_MSG_RESULT(no)
1680 fi
Bram Moolenaare5303952022-06-19 17:05:47 +01001681
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001682 dnl check that compiling a simple program still works with the flags
1683 dnl added for Python.
1684 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1685 cflags_save=$CFLAGS
1686 libs_save=$LIBS
1687 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1688 LIBS="$LIBS $PYTHON3_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001689 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001690 AC_MSG_RESULT(yes); python3_ok=yes,
1691 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1692 CFLAGS=$cflags_save
1693 LIBS=$libs_save
1694 if test "$python3_ok" = yes; then
1695 AC_DEFINE(FEAT_PYTHON3)
1696 else
1697 LIBS=$libs_save_old
1698 PYTHON3_SRC=
1699 PYTHON3_OBJ=
1700 PYTHON3_LIBS=
1701 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001702 fi
1703 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001704 else
1705 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001706 fi
1707 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001708 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1709 AC_MSG_ERROR([could not configure python3])
1710 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001711fi
1712
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001713AC_SUBST(PYTHON3_LIBS)
1714AC_SUBST(PYTHON3_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00001715AC_SUBST(PYTHON3_CFLAGS_EXTRA)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001716AC_SUBST(PYTHON3_SRC)
1717AC_SUBST(PYTHON3_OBJ)
1718
1719dnl if python2.x and python3.x are enabled one can only link in code
Bram Moolenaare5303952022-06-19 17:05:47 +01001720dnl with dlopen(), dlsym(), dlclose()
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001721if test "$python_ok" = yes && test "$python3_ok" = yes; then
1722 AC_DEFINE(DYNAMIC_PYTHON)
1723 AC_DEFINE(DYNAMIC_PYTHON3)
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001724 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1725 AC_DEFINE(DYNAMIC_PYTHON3_STABLE_ABI)
1726 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001727 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001728 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001729 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001730 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001731 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001732 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001733 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001734 #include <dlfcn.h>
1735 /* If this program fails, then RTLD_GLOBAL is needed.
1736 * RTLD_GLOBAL will be used and then it is not possible to
1737 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001738 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001739 */
1740
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001741 static int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001742 {
1743 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001744 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001745 if (pylib != 0)
1746 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001747 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001748 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1749 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1750 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001751 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001752 (*init)();
1753 needed = (*simple)("import termios") == -1;
1754 (*final)();
1755 dlclose(pylib);
1756 }
1757 return !needed;
1758 }
1759
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001760 int main()
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001761 {
1762 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001763 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001764 not_needed = 1;
1765 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001766 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001767 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001768
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001769 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001770 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001771
1772 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1773 cflags_save=$CFLAGS
1774 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001775 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001776 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001777 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001778 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001779 #include <dlfcn.h>
1780 #include <wchar.h>
1781 /* If this program fails, then RTLD_GLOBAL is needed.
1782 * RTLD_GLOBAL will be used and then it is not possible to
1783 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001784 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001785 */
1786
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001787 static int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001788 {
1789 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001790 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001791 if (pylib != 0)
1792 {
1793 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1794 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1795 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1796 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1797 (*pfx)(prefix);
1798 (*init)();
1799 needed = (*simple)("import termios") == -1;
1800 (*final)();
1801 dlclose(pylib);
1802 }
1803 return !needed;
1804 }
1805
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01001806 int main()
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001807 {
1808 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001809 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001810 not_needed = 1;
1811 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001812 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001813 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1814
1815 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001816 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001817
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001818 PYTHON_SRC="if_python.c"
1819 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001820 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001821 PYTHON_LIBS=
1822 PYTHON3_SRC="if_python3.c"
1823 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001824 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001825 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001826elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1827 AC_DEFINE(DYNAMIC_PYTHON)
1828 PYTHON_SRC="if_python.c"
1829 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001830 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001831 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001832elif test "$python_ok" = yes; then
1833 dnl Check that adding -fPIE works. It may be needed when using a static
1834 dnl Python library.
1835 AC_MSG_CHECKING([if -fPIE can be added for Python])
1836 cflags_save=$CFLAGS
1837 libs_save=$LIBS
1838 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1839 LIBS="$LIBS $PYTHON_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001840 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare741f272013-07-09 21:57:52 +02001841 AC_MSG_RESULT(yes); fpie_ok=yes,
1842 AC_MSG_RESULT(no); fpie_ok=no)
1843 CFLAGS=$cflags_save
1844 LIBS=$libs_save
1845 if test $fpie_ok = yes; then
1846 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1847 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001848elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1849 AC_DEFINE(DYNAMIC_PYTHON3)
Yee Cheng Chinc13b3d12023-08-20 21:18:38 +02001850 if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
1851 AC_DEFINE(DYNAMIC_PYTHON3_STABLE_ABI)
1852 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001853 PYTHON3_SRC="if_python3.c"
1854 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001855 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001856 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001857elif test "$python3_ok" = yes; then
1858 dnl Check that adding -fPIE works. It may be needed when using a static
1859 dnl Python library.
1860 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1861 cflags_save=$CFLAGS
1862 libs_save=$LIBS
1863 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1864 LIBS="$LIBS $PYTHON3_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01001865 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[ ])],
Bram Moolenaare741f272013-07-09 21:57:52 +02001866 AC_MSG_RESULT(yes); fpie_ok=yes,
1867 AC_MSG_RESULT(no); fpie_ok=no)
1868 CFLAGS=$cflags_save
1869 LIBS=$libs_save
1870 if test $fpie_ok = yes; then
1871 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1872 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001873fi
1874
Bram Moolenaar071d4272004-06-13 20:20:40 +00001875AC_MSG_CHECKING(--enable-tclinterp argument)
1876AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001877 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878 [enable_tclinterp="no"])
1879AC_MSG_RESULT($enable_tclinterp)
1880
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001881if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001882
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001883 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 AC_MSG_CHECKING(--with-tclsh argument)
1885 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1886 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001887 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001888 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1889 AC_SUBST(vi_cv_path_tcl)
1890
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001891 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1892 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1893 tclsh_name="tclsh8.4"
1894 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1895 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001896 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001897 tclsh_name="tclsh8.2"
1898 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1899 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001900 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1901 tclsh_name="tclsh8.0"
1902 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1903 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001904 dnl still didn't find it, try without version number
1905 if test "X$vi_cv_path_tcl" = "X"; then
1906 tclsh_name="tclsh"
1907 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1908 fi
1909 if test "X$vi_cv_path_tcl" != "X"; then
1910 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001911 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001912 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1913 AC_MSG_RESULT($tclver - OK);
1914 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 +01001915 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001916
1917 AC_MSG_CHECKING(for location of Tcl include)
Bram Moolenaard0573012017-10-28 21:11:06 +02001918 if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001919 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 +00001920 else
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001921 dnl For all macOS, use the value from TCL in case use of, say, homebrew
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 dnl For Mac OS X 10.3, use the OS-provided framework location
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001923 dnl For Mac OS X 10.14, the OS-provided framework location doesn't contain the headers, so also check the Xcode SDK
1924 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 +00001925 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001926 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001927 for try in $tclinc; do
1928 if test -f "$try/tcl.h"; then
1929 AC_MSG_RESULT($try/tcl.h)
1930 TCL_INC=$try
1931 break
1932 fi
1933 done
1934 if test -z "$TCL_INC"; then
1935 AC_MSG_RESULT(<not found>)
1936 SKIP_TCL=YES
1937 fi
1938 if test -z "$SKIP_TCL"; then
1939 AC_MSG_CHECKING(for location of tclConfig.sh script)
Bram Moolenaard0573012017-10-28 21:11:06 +02001940 if test "x$MACOS_X" != "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001941 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001942 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001943 else
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001944 dnl For all macOS, use the value from TCL in case use of, say, homebrew
Bram Moolenaar071d4272004-06-13 20:20:40 +00001945 dnl For Mac OS X 10.3, use the OS-provided framework location
Bram Moolenaarf4ee5282020-07-30 20:18:08 +02001946 dnl For Mac OS X 10.14, the OS-provided framework location doesn't contain the headers, so also check the Xcode SDK
1947 tclcnf=`echo $tclinc | sed s/include/lib/g`
1948 tclcnf="$tclcnf /System/Library/Frameworks/Tcl.framework `xcrun --show-sdk-path`/System/Library/Frameworks/Tcl.framework"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949 fi
1950 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001951 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001952 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001953 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001954 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001955 if test "$enable_tclinterp" = "dynamic"; then
1956 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1957 else
1958 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1959 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001960 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001961 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001962 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 +00001963 break
1964 fi
1965 done
1966 if test -z "$TCL_LIBS"; then
1967 AC_MSG_RESULT(<not found>)
1968 AC_MSG_CHECKING(for Tcl library by myself)
1969 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001970 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001971 for ext in .so .a ; do
1972 for ver in "" $tclver ; do
1973 for try in $tcllib ; do
1974 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001975 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001976 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001977 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00001978 if test "$vim_cv_uname_output" = SunOS &&
1979 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001980 TCL_LIBS="$TCL_LIBS -R $try"
1981 fi
1982 break 3
1983 fi
1984 done
1985 done
1986 done
1987 if test -z "$TCL_LIBS"; then
1988 AC_MSG_RESULT(<not found>)
1989 SKIP_TCL=YES
1990 fi
1991 fi
1992 if test -z "$SKIP_TCL"; then
1993 AC_DEFINE(FEAT_TCL)
1994 TCL_SRC=if_tcl.c
1995 TCL_OBJ=objects/if_tcl.o
1996 TCL_PRO=if_tcl.pro
1997 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1998 fi
1999 fi
2000 else
2001 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
2002 fi
2003 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01002004 if test "$enable_tclinterp" = "dynamic"; then
2005 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
2006 AC_DEFINE(DYNAMIC_TCL)
2007 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
2008 fi
2009 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01002010 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
2011 AC_MSG_ERROR([could not configure Tcl])
2012 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002013fi
2014AC_SUBST(TCL_SRC)
2015AC_SUBST(TCL_OBJ)
2016AC_SUBST(TCL_PRO)
2017AC_SUBST(TCL_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00002018AC_SUBST(TCL_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002019AC_SUBST(TCL_LIBS)
2020
2021AC_MSG_CHECKING(--enable-rubyinterp argument)
2022AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002023 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 [enable_rubyinterp="no"])
2025AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002026if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002027 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002028 AC_MSG_ERROR([cannot use Ruby with tiny features])
Bram Moolenaar0b105412014-11-30 13:34:23 +01002029 fi
2030
Bram Moolenaar165641d2010-02-17 16:23:09 +01002031 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002032 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02002033 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
2034 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
2035 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01002036 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002037 if test "X$vi_cv_path_ruby" != "X"; then
2038 AC_MSG_CHECKING(Ruby version)
K.Takata236ccbf2022-09-22 16:12:06 +01002039 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 +00002040 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02002041 AC_MSG_CHECKING(Ruby rbconfig)
2042 ruby_rbconfig="RbConfig"
2043 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
2044 ruby_rbconfig="Config"
2045 fi
2046 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002047 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02002048 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 +00002049 if test "X$rubyhdrdir" != "X"; then
2050 AC_MSG_RESULT($rubyhdrdir)
2051 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01002052 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
2053 if test -d "$rubyarchdir"; then
2054 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01002055 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02002056 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02002057 if test "X$rubyversion" = "X"; then
K.Takata236ccbf2022-09-22 16:12:06 +01002058 rubyversion=`$vi_cv_path_ruby -e "print RUBY_VERSION.gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02002059 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01002060 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02002061 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002062 if test "X$rubylibs" != "X"; then
2063 RUBY_LIBS="$rubylibs"
2064 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02002065 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
2066 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02002067 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaard5a986f2020-12-06 21:11:31 +01002068 if test -f "$rubylibdir/$librubya" || expr "$librubyarg" : "-lruby"; then
Bram Moolenaarac499e32013-06-02 19:14:17 +02002069 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
2070 elif test "$librubyarg" = "libruby.a"; then
2071 dnl required on Mac OS 10.3 where libruby.a doesn't exist
2072 librubyarg="-lruby"
2073 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002074 fi
2075
2076 if test "X$librubyarg" != "X"; then
2077 RUBY_LIBS="$librubyarg $RUBY_LIBS"
2078 fi
Zdenek Dohnal1d822af2022-11-23 12:06:08 +00002079
2080 dnl Here the Ruby LDFLAGS used to be added to LDFLAGS, but that turns
2081 dnl out to cause trouble and was removed.
2082
Bram Moolenaar071d4272004-06-13 20:20:40 +00002083 RUBY_SRC="if_ruby.c"
2084 RUBY_OBJ="objects/if_ruby.o"
2085 RUBY_PRO="if_ruby.pro"
2086 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002087 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar92021622017-10-12 12:33:43 +02002088 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_ALIASES']].split[[0]]"`
Bram Moolenaar87ea64c2018-08-04 15:13:34 +02002089 if test -z "$libruby_soname"; then
2090 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
2091 fi
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002092 AC_DEFINE(DYNAMIC_RUBY)
Bram Moolenaar41a41412020-01-07 21:32:19 +01002093 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" $RUBY_CFLAGS"
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02002094 RUBY_LIBS=
2095 fi
Bram Moolenaar864a28b2020-12-28 21:36:56 +01002096 if test "X$CLANG_VERSION" != "X" -a "$rubyversion" -ge 30; then
2097 RUBY_CFLAGS="$RUBY_CFLAGS -fdeclspec"
2098 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002099 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01002100 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002101 fi
2102 else
K.Takata236ccbf2022-09-22 16:12:06 +01002103 AC_MSG_RESULT(too old; need Ruby version 1.9.1 or later)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002104 fi
2105 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01002106
2107 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
2108 AC_MSG_ERROR([could not configure Ruby])
2109 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002110fi
2111AC_SUBST(RUBY_SRC)
2112AC_SUBST(RUBY_OBJ)
2113AC_SUBST(RUBY_PRO)
2114AC_SUBST(RUBY_CFLAGS)
ichizok8bb3fe42021-12-28 15:51:45 +00002115AC_SUBST(RUBY_CFLAGS_EXTRA)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002116AC_SUBST(RUBY_LIBS)
2117
2118AC_MSG_CHECKING(--enable-cscope argument)
2119AC_ARG_ENABLE(cscope,
2120 [ --enable-cscope Include cscope interface.], ,
2121 [enable_cscope="no"])
2122AC_MSG_RESULT($enable_cscope)
2123if test "$enable_cscope" = "yes"; then
2124 AC_DEFINE(FEAT_CSCOPE)
2125fi
2126
Bram Moolenaar071d4272004-06-13 20:20:40 +00002127AC_MSG_CHECKING(--disable-netbeans argument)
2128AC_ARG_ENABLE(netbeans,
2129 [ --disable-netbeans Disable NetBeans integration support.],
2130 , [enable_netbeans="yes"])
2131if test "$enable_netbeans" = "yes"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002132 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002133 AC_MSG_RESULT([cannot use NetBeans with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01002134 enable_netbeans="no"
2135 else
2136 AC_MSG_RESULT(no)
2137 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002138else
2139 AC_MSG_RESULT(yes)
2140fi
2141
2142AC_MSG_CHECKING(--disable-channel argument)
2143AC_ARG_ENABLE(channel,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002144 [ --disable-channel Disable process communication support.],
Bram Moolenaare0874f82016-01-24 20:36:41 +01002145 , [enable_channel="yes"])
2146if test "$enable_channel" = "yes"; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002147 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002148 AC_MSG_RESULT([cannot use channels with tiny features])
Bram Moolenaar3c124e32016-01-31 14:36:58 +01002149 enable_channel="no"
2150 else
2151 AC_MSG_RESULT(no)
2152 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002153else
2154 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01002155 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01002156 enable_netbeans="no"
2157 else
2158 AC_MSG_RESULT(yes)
2159 fi
2160fi
2161
Bram Moolenaar16435482016-01-24 21:31:54 +01002162if test "$enable_channel" = "yes"; then
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002163 dnl On Solaris we need the socket library, or on Haiku the network library.
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002164 if test "x$HAIKU" = "xyes"; then
2165 AC_CHECK_LIB(network, socket)
2166 else
2167 AC_CHECK_LIB(socket, socket)
2168 fi
2169
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002170 AC_CACHE_CHECK([whether compiling with IPv6 networking is possible], [vim_cv_ipv6_networking],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002171 [AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002172#include <stdio.h>
2173#include <stdlib.h>
2174#include <stdarg.h>
2175#include <fcntl.h>
2176#include <netdb.h>
2177#include <netinet/in.h>
2178#include <errno.h>
2179#include <sys/types.h>
2180#include <sys/socket.h>
2181 /* Check bitfields */
2182 struct nbbuf {
2183 unsigned int initDone:1;
2184 unsigned short signmaplen;
2185 };
2186 ], [
2187 /* Check creating a socket. */
2188 struct sockaddr_in server;
2189 struct addrinfo *res;
2190 (void)socket(AF_INET, SOCK_STREAM, 0);
2191 (void)htons(100);
2192 (void)getaddrinfo("microsoft.com", NULL, NULL, &res);
2193 if (errno == ECONNREFUSED)
2194 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2195 (void)freeaddrinfo(res);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002196 ])],
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002197 [vim_cv_ipv6_networking="yes"],
2198 [vim_cv_ipv6_networking="no"])])
2199
2200 if test "x$vim_cv_ipv6_networking" = "xyes"; then
2201 AC_DEFINE(FEAT_IPV6)
Bram Moolenaarb6fb0512020-04-18 18:24:18 +02002202 AC_CHECK_FUNCS(inet_ntop)
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002203 else
2204 dnl On Solaris we need the nsl library.
2205 AC_CHECK_LIB(nsl, gethostbyname)
2206 AC_CACHE_CHECK([whether compiling with IPv4 networking is possible], [vim_cv_ipv4_networking],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002207 [AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002208#include <stdio.h>
2209#include <stdlib.h>
2210#include <stdarg.h>
2211#include <fcntl.h>
2212#include <netdb.h>
2213#include <netinet/in.h>
2214#include <errno.h>
2215#include <sys/types.h>
2216#include <sys/socket.h>
2217 /* Check bitfields */
2218 struct nbbuf {
2219 unsigned int initDone:1;
Bram Moolenaar63de19e2016-12-09 20:11:26 +01002220 unsigned short signmaplen;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002221 };
2222 ], [
2223 /* Check creating a socket. */
2224 struct sockaddr_in server;
2225 (void)socket(AF_INET, SOCK_STREAM, 0);
2226 (void)htons(100);
2227 (void)gethostbyname("microsoft.com");
2228 if (errno == ECONNREFUSED)
2229 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002230 ])],
Bram Moolenaarbfe13cc2020-04-12 17:53:12 +02002231 [vim_cv_ipv4_networking="yes"],
2232 [vim_cv_ipv4_networking="no"; enable_netbeans="no"; enable_channel="no"])])
2233 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002234fi
2235if test "$enable_netbeans" = "yes"; then
2236 AC_DEFINE(FEAT_NETBEANS_INTG)
2237 NETBEANS_SRC="netbeans.c"
2238 AC_SUBST(NETBEANS_SRC)
2239 NETBEANS_OBJ="objects/netbeans.o"
2240 AC_SUBST(NETBEANS_OBJ)
2241fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002242if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002243 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaar8b5866d2020-09-05 15:48:51 +02002244 CHANNEL_SRC="job.c channel.c"
Bram Moolenaare0874f82016-01-24 20:36:41 +01002245 AC_SUBST(CHANNEL_SRC)
Bram Moolenaar8b5866d2020-09-05 15:48:51 +02002246 CHANNEL_OBJ="objects/job.o objects/channel.o"
Bram Moolenaare0874f82016-01-24 20:36:41 +01002247 AC_SUBST(CHANNEL_OBJ)
2248fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002249
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002250AC_MSG_CHECKING(--enable-terminal argument)
2251AC_ARG_ENABLE(terminal,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002252 [ --enable-terminal Enable terminal emulation support.],
Bram Moolenaaref839562017-10-28 20:28:23 +02002253 , [enable_terminal="auto"])
Bram Moolenaar595a4022017-09-03 19:15:57 +02002254if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
Bram Moolenaar12471262022-01-18 11:11:25 +00002255 if test "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01002256 AC_MSG_RESULT([cannot use terminal emulator with tiny features])
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002257 enable_terminal="no"
2258 else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002259 if test "$enable_terminal" = "auto"; then
2260 enable_terminal="yes"
2261 AC_MSG_RESULT(defaulting to yes)
2262 else
2263 AC_MSG_RESULT(yes)
2264 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002265 fi
2266else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002267 if test "$enable_terminal" = "auto"; then
2268 enable_terminal="no"
2269 AC_MSG_RESULT(defaulting to no)
2270 else
2271 AC_MSG_RESULT(no)
2272 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002273fi
Bram Moolenaar8b423282017-12-16 14:37:06 +01002274if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002275 AC_DEFINE(FEAT_TERMINAL)
Bram Moolenaar93268052019-10-10 13:22:54 +02002276 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 +02002277 AC_SUBST(TERM_SRC)
Bram Moolenaar93268052019-10-10 13:22:54 +02002278 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 +02002279 AC_SUBST(TERM_OBJ)
Bram Moolenaar823edd12019-10-23 22:35:36 +02002280 TERM_TEST="test_libvterm"
2281 AC_SUBST(TERM_TEST)
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002282fi
2283
Bram Moolenaare42a6d22017-11-12 19:21:51 +01002284AC_MSG_CHECKING(--enable-autoservername argument)
2285AC_ARG_ENABLE(autoservername,
2286 [ --enable-autoservername Automatically define servername at vim startup.], ,
2287 [enable_autoservername="no"])
2288AC_MSG_RESULT($enable_autoservername)
2289if test "$enable_autoservername" = "yes"; then
2290 AC_DEFINE(FEAT_AUTOSERVERNAME)
2291fi
2292
Bram Moolenaar071d4272004-06-13 20:20:40 +00002293AC_MSG_CHECKING(--enable-multibyte argument)
2294AC_ARG_ENABLE(multibyte,
2295 [ --enable-multibyte Include multibyte editing support.], ,
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01002296 [enable_multibyte="yes"])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002297AC_MSG_RESULT($enable_multibyte)
Bram Moolenaar30276f22019-01-24 17:59:39 +01002298if test "$enable_multibyte" != "yes"; then
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01002299 AC_MSG_ERROR([The multi-byte feature can no longer be disabled. If you have
2300 a problem with this, discuss on the Vim mailing list.])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002301fi
2302
Martin Tournoij25f3a142022-10-08 19:26:41 +01002303dnl Right-to-Left language support for Vim will be included with huge features,
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002304dnl unless ENABLE_RIGHTLEFT is undefined.
2305AC_MSG_CHECKING(--disable-rightleft argument)
2306AC_ARG_ENABLE(rightleft,
2307 [ --disable-rightleft Do not include Right-to-Left language support.],
2308 , [enable_rightleft="yes"])
2309if test "$enable_rightleft" = "yes"; then
2310 AC_MSG_RESULT(no)
2311else
2312 AC_MSG_RESULT(yes)
2313 AC_DEFINE(DISABLE_RIGHTLEFT)
2314fi
2315
Martin Tournoij25f3a142022-10-08 19:26:41 +01002316dnl Arabic language support for Vim will be included with huge features,
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002317dnl unless ENABLE_ARABIC is undefined.
2318AC_MSG_CHECKING(--disable-arabic argument)
2319AC_ARG_ENABLE(arabic,
2320 [ --disable-arabic Do not include Arabic language support.],
2321 , [enable_arabic="yes"])
2322if test "$enable_arabic" = "yes"; then
2323 AC_MSG_RESULT(no)
2324else
2325 AC_MSG_RESULT(yes)
2326 AC_DEFINE(DISABLE_ARABIC)
2327fi
2328
Bram Moolenaar14184a32019-02-16 15:10:30 +01002329dnl Farsi language support has been removed, ignore --disable-farsi
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002330AC_ARG_ENABLE(farsi,
Bram Moolenaar14184a32019-02-16 15:10:30 +01002331 [ --disable-farsi Deprecated.],,)
Bram Moolenaar5c5697f2018-12-12 20:34:09 +01002332
Bram Moolenaar071d4272004-06-13 20:20:40 +00002333AC_MSG_CHECKING(--enable-xim argument)
2334AC_ARG_ENABLE(xim,
2335 [ --enable-xim Include XIM input support.],
2336 AC_MSG_RESULT($enable_xim),
2337 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002338
2339AC_MSG_CHECKING(--enable-fontset argument)
2340AC_ARG_ENABLE(fontset,
2341 [ --enable-fontset Include X fontset output support.], ,
2342 [enable_fontset="no"])
2343AC_MSG_RESULT($enable_fontset)
2344dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2345
2346test -z "$with_x" && with_x=yes
Bram Moolenaard0573012017-10-28 21:11:06 +02002347test "${enable_gui-yes}" != no -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
Bram Moolenaar071d4272004-06-13 20:20:40 +00002348if test "$with_x" = no; then
2349 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2350else
2351 dnl Do this check early, so that its failure can override user requests.
2352
2353 AC_PATH_PROG(xmkmfpath, xmkmf)
2354
2355 AC_PATH_XTRA
2356
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002357 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002358 dnl be compiled with a special option.
2359 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002360 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002361 CFLAGS="$CFLAGS -W c,dll"
2362 LDFLAGS="$LDFLAGS -W l,dll"
2363 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2364 fi
2365
2366 dnl On my HPUX system the X include dir is found, but the lib dir not.
Bram Moolenaar70778922020-02-05 20:44:24 +01002367 dnl This is a desperate try to fix this.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002368
2369 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2370 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2371 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2372 X_LIBS="$X_LIBS -L$x_libraries"
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00002373 if test "$vim_cv_uname_output" = SunOS &&
2374 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002375 X_LIBS="$X_LIBS -R $x_libraries"
2376 fi
2377 fi
2378
2379 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2380 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2381 AC_MSG_RESULT(Corrected X includes to $x_includes)
2382 X_CFLAGS="$X_CFLAGS -I$x_includes"
2383 fi
2384
2385 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2386 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2387 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2388 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2389 dnl Same for "-R/usr/lib ".
2390 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2391
2392
2393 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002394 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2395 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002396 AC_MSG_CHECKING(if X11 header files can be found)
2397 cflags_save=$CFLAGS
2398 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002399 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>
2400#include <X11/Intrinsic.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002401 AC_MSG_RESULT(yes),
2402 AC_MSG_RESULT(no); no_x=yes)
2403 CFLAGS=$cflags_save
2404
2405 if test "${no_x-no}" = yes; then
2406 with_x=no
2407 else
2408 AC_DEFINE(HAVE_X11)
2409 X_LIB="-lXt -lX11";
2410 AC_SUBST(X_LIB)
2411
2412 ac_save_LDFLAGS="$LDFLAGS"
2413 LDFLAGS="-L$x_libraries $LDFLAGS"
2414
2415 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2416 dnl For HP-UX 10.20 it must be before -lSM -lICE
2417 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2418 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2419
2420 dnl Some systems need -lnsl -lsocket when testing for ICE.
2421 dnl The check above doesn't do this, try here (again). Also needed to get
2422 dnl them after Xdmcp. link.sh will remove them when not needed.
2423 dnl Check for other function than above to avoid the cached value
2424 AC_CHECK_LIB(ICE, IceOpenConnection,
2425 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2426
2427 dnl Check for -lXpm (needed for some versions of Motif)
2428 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2429 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2430 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2431
2432 dnl Check that the X11 header files don't use implicit declarations
2433 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2434 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002435 dnl -Werror is GCC only, others like Solaris Studio might not like it
2436 if test "$GCC" = yes; then
2437 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2438 else
2439 CFLAGS="$CFLAGS $X_CFLAGS"
2440 fi
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002441 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002442 AC_MSG_RESULT(no),
2443 CFLAGS="$CFLAGS -Wno-implicit-int"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002444 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlib.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002445 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2446 AC_MSG_RESULT(test failed)
2447 )
2448 )
2449 CFLAGS=$cflags_save
2450
2451 LDFLAGS="$ac_save_LDFLAGS"
2452
Mike Gilberta055b442023-08-20 19:01:41 +02002453 AC_CHECK_SIZEOF([wchar_t])
2454 if test "$ac_cv_sizeof_wchar_t" -le 2; then
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002455 AC_DEFINE(SMALL_WCHAR_T)
2456 fi
2457
Bram Moolenaar071d4272004-06-13 20:20:40 +00002458 fi
2459fi
2460
Bram Moolenaard2a05492018-07-27 22:35:15 +02002461dnl Check if --with-x was given but it doesn't work.
2462if test "x$with_x" = xno -a "x$with_x_arg" = xyes; then
2463 AC_MSG_ERROR([could not configure X])
2464fi
2465
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002466test "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 +00002467
2468AC_MSG_CHECKING(--enable-gui argument)
2469AC_ARG_ENABLE(gui,
Bram Moolenaarf52fac22022-03-11 16:01:26 +00002470 [ --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 +00002471
2472dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2473dnl Do not use character classes for portability with old tools.
2474enable_gui_canon=`echo "_$enable_gui" | \
2475 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2476
2477dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002478SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002479SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480SKIP_GNOME=YES
2481SKIP_MOTIF=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002482SKIP_PHOTON=YES
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002483SKIP_HAIKU=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002484GUITYPE=NONE
2485
Bram Moolenaarb3f74062020-02-26 16:16:53 +01002486if test "x$HAIKU" = "xyes"; then
2487 SKIP_HAIKU=
2488 case "$enable_gui_canon" in
2489 no) AC_MSG_RESULT(no GUI support)
2490 SKIP_HAIKU=YES ;;
2491 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2492 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2493 haiku) AC_MSG_RESULT(Haiku GUI support) ;;
2494 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2495 SKIP_HAIKU=YES ;;
2496 esac
2497elif test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002498 SKIP_PHOTON=
2499 case "$enable_gui_canon" in
2500 no) AC_MSG_RESULT(no GUI support)
2501 SKIP_PHOTON=YES ;;
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002502 yes|""|auto) AC_MSG_RESULT(automatic GUI support)
2503 gui_auto=yes ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002504 photon) AC_MSG_RESULT(Photon GUI support) ;;
2505 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2506 SKIP_PHOTON=YES ;;
2507 esac
2508
Bram Moolenaar040f9752020-08-11 23:08:48 +02002509elif test "x$MACOS_X" = "xyes" -a "x$with_x" = "xno" ; then
2510 case "$enable_gui_canon" in
2511 no) AC_MSG_RESULT(no GUI support) ;;
2512 yes|"") AC_MSG_RESULT(yes - automatic GUI support)
2513 gui_auto=yes ;;
2514 auto) AC_MSG_RESULT(auto - disable GUI support for Mac OS) ;;
Bram Moolenaarbe7529e2020-08-13 21:05:39 +02002515 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
Bram Moolenaar040f9752020-08-11 23:08:48 +02002516 esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002517else
2518
Bram Moolenaar071d4272004-06-13 20:20:40 +00002519 case "$enable_gui_canon" in
2520 no|none) AC_MSG_RESULT(no GUI support) ;;
2521 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002522 gui_auto=yes
Bram Moolenaar071d4272004-06-13 20:20:40 +00002523 SKIP_GTK2=
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002524 SKIP_GTK3=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002525 SKIP_GNOME=
Bram Moolenaarf52fac22022-03-11 16:01:26 +00002526 SKIP_MOTIF=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002528 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002529 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2530 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002532 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2533 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002534 motif) AC_MSG_RESULT(Motif GUI support)
2535 SKIP_MOTIF=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002536 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2537 esac
2538
2539fi
2540
Bram Moolenaar071d4272004-06-13 20:20:40 +00002541if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2542 -a "$enable_gui_canon" != "gnome2"; then
2543 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2544 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002545 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002546 , enable_gtk2_check="yes")
2547 AC_MSG_RESULT($enable_gtk2_check)
2548 if test "x$enable_gtk2_check" = "xno"; then
2549 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002550 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002551 fi
2552fi
2553
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002554if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002555 AC_MSG_CHECKING(whether or not to look for GNOME)
2556 AC_ARG_ENABLE(gnome-check,
2557 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2558 , enable_gnome_check="no")
2559 AC_MSG_RESULT($enable_gnome_check)
2560 if test "x$enable_gnome_check" = "xno"; then
2561 SKIP_GNOME=YES
2562 fi
2563fi
2564
Bram Moolenaar98921892016-02-23 17:14:37 +01002565if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2566 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2567 AC_ARG_ENABLE(gtk3-check,
2568 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2569 , enable_gtk3_check="yes")
2570 AC_MSG_RESULT($enable_gtk3_check)
2571 if test "x$enable_gtk3_check" = "xno"; then
2572 SKIP_GTK3=YES
2573 fi
2574fi
2575
Bram Moolenaar071d4272004-06-13 20:20:40 +00002576if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2577 AC_MSG_CHECKING(whether or not to look for Motif)
2578 AC_ARG_ENABLE(motif-check,
2579 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2580 , enable_motif_check="yes")
2581 AC_MSG_RESULT($enable_motif_check)
2582 if test "x$enable_motif_check" = "xno"; then
2583 SKIP_MOTIF=YES
2584 fi
2585fi
2586
Bram Moolenaar071d4272004-06-13 20:20:40 +00002587dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002588dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002589dnl
2590dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002591dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592dnl
2593AC_DEFUN(AM_PATH_GTK,
2594[
2595 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2596 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002597 no_gtk=""
2598 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2599 && $PKG_CONFIG --exists gtk+-2.0; then
2600 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002601 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2602 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002603 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2604 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2605 dnl something like that.
2606 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002607 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002608 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2609 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2610 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2611 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2612 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2613 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2614 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2615 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002616 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2617 && $PKG_CONFIG --exists gtk+-3.0; then
2618 {
2619 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2620 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2621
2622 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2623 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2624 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2625 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2626 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2627 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2628 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2629 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2630 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2631 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002632 else
Bram Moolenaar67876de2021-01-12 20:51:24 +01002633 dnl Put some text before the "no" to hint at installing the gtk-dev
2634 dnl packages.
2635 AC_MSG_CHECKING(for GTK -dev package)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002636 no_gtk=yes
2637 fi
2638
2639 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2640 {
2641 ac_save_CFLAGS="$CFLAGS"
2642 ac_save_LIBS="$LIBS"
2643 CFLAGS="$CFLAGS $GTK_CFLAGS"
2644 LIBS="$LIBS $GTK_LIBS"
2645
2646 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002647 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002648 dnl
2649 rm -f conf.gtktest
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002650 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002651#include <gtk/gtk.h>
2652#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002653#if STDC_HEADERS
2654# include <stdlib.h>
2655# include <stddef.h>
2656#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002657
2658int
2659main ()
2660{
2661int major, minor, micro;
2662char *tmp_version;
2663
2664system ("touch conf.gtktest");
2665
2666/* HP/UX 9 (%@#!) writes to sscanf strings */
2667tmp_version = g_strdup("$min_gtk_version");
2668if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2669 printf("%s, bad version string\n", "$min_gtk_version");
2670 exit(1);
2671 }
2672
2673if ((gtk_major_version > major) ||
2674 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2675 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2676 (gtk_micro_version >= micro)))
2677{
2678 return 0;
2679}
2680return 1;
2681}
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01002682])],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002683 CFLAGS="$ac_save_CFLAGS"
2684 LIBS="$ac_save_LIBS"
2685 }
2686 fi
2687 if test "x$no_gtk" = x ; then
2688 if test "x$enable_gtktest" = "xyes"; then
2689 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2690 else
2691 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2692 fi
2693 ifelse([$2], , :, [$2])
2694 else
2695 {
2696 AC_MSG_RESULT(no)
2697 GTK_CFLAGS=""
2698 GTK_LIBS=""
2699 ifelse([$3], , :, [$3])
Bram Moolenaaraf0839a2018-12-30 22:55:47 +01002700 if test "$fail_if_missing" = "yes" -a "X$gui_auto" != "Xyes"; then
2701 AC_MSG_ERROR([could not configure GTK])
2702 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002703 }
2704 fi
2705 }
2706 else
2707 GTK_CFLAGS=""
2708 GTK_LIBS=""
2709 ifelse([$3], , :, [$3])
2710 fi
2711 AC_SUBST(GTK_CFLAGS)
2712 AC_SUBST(GTK_LIBS)
2713 rm -f conf.gtktest
2714])
2715
2716dnl ---------------------------------------------------------------------------
2717dnl gnome
2718dnl ---------------------------------------------------------------------------
2719AC_DEFUN([GNOME_INIT_HOOK],
2720[
2721 AC_SUBST(GNOME_LIBS)
2722 AC_SUBST(GNOME_LIBDIR)
2723 AC_SUBST(GNOME_INCLUDEDIR)
2724
2725 AC_ARG_WITH(gnome-includes,
2726 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2727 [CFLAGS="$CFLAGS -I$withval"]
2728 )
2729
2730 AC_ARG_WITH(gnome-libs,
2731 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2732 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2733 )
2734
2735 AC_ARG_WITH(gnome,
2736 [ --with-gnome Specify prefix for GNOME files],
2737 if test x$withval = xyes; then
2738 want_gnome=yes
2739 ifelse([$1], [], :, [$1])
2740 else
2741 if test "x$withval" = xno; then
2742 want_gnome=no
2743 else
2744 want_gnome=yes
2745 LDFLAGS="$LDFLAGS -L$withval/lib"
2746 CFLAGS="$CFLAGS -I$withval/include"
2747 gnome_prefix=$withval/lib
2748 fi
2749 fi,
2750 want_gnome=yes)
2751
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002752 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002753 {
2754 AC_MSG_CHECKING(for libgnomeui-2.0)
2755 if $PKG_CONFIG --exists libgnomeui-2.0; then
2756 AC_MSG_RESULT(yes)
2757 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2758 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2759 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002760
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002761 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2762 dnl This might not be the right way but it works for me...
2763 AC_MSG_CHECKING(for FreeBSD)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00002764 if test "$vim_cv_uname_output" = FreeBSD; then
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002765 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002766 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002767 GNOME_LIBS="$GNOME_LIBS -pthread"
2768 else
2769 AC_MSG_RESULT(no)
2770 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002771 $1
2772 else
2773 AC_MSG_RESULT(not found)
2774 if test "x$2" = xfail; then
2775 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2776 fi
2777 fi
2778 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002779 fi
2780])
2781
2782AC_DEFUN([GNOME_INIT],[
2783 GNOME_INIT_HOOK([],fail)
2784])
2785
Bram Moolenaar427f5b62019-06-09 13:43:51 +02002786if test "X$PKG_CONFIG" = "X"; then
2787 AC_PATH_TOOL(PKG_CONFIG, pkg-config, no)
2788fi
2789
Bram Moolenaar071d4272004-06-13 20:20:40 +00002790
2791dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002792dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002794if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002795
2796 AC_MSG_CHECKING(--disable-gtktest argument)
2797 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2798 , enable_gtktest=yes)
2799 if test "x$enable_gtktest" = "xyes" ; then
2800 AC_MSG_RESULT(gtk test enabled)
2801 else
2802 AC_MSG_RESULT(gtk test disabled)
2803 fi
2804
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002805 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002806 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2807 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002808 dnl Disable checking for GTK3 here, otherwise it's found when GTK2 is not
2809 dnl found.
2810 save_skip_gtk3=$SKIP_GTK3
2811 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002812 AM_PATH_GTK(2.2.0,
2813 [GUI_LIB_LOC="$GTK_LIBDIR"
2814 GTK_LIBNAME="$GTK_LIBS"
2815 GUI_INC_LOC="$GTK_CFLAGS"], )
2816 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002817 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002818 SKIP_MOTIF=YES
2819 GUITYPE=GTK
2820 AC_SUBST(GTK_LIBNAME)
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002821 else
2822 SKIP_GTK3=$save_skip_gtk3
Bram Moolenaar071d4272004-06-13 20:20:40 +00002823 fi
2824 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002825 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002826 dnl
2827 dnl if GTK exists, then check for GNOME.
2828 dnl
2829 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002830 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002831 GNOME_INIT_HOOK([have_gnome=yes])
2832 if test "x$have_gnome" = xyes ; then
2833 AC_DEFINE(FEAT_GUI_GNOME)
2834 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2835 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002836 fi
2837 }
2838 fi
2839 fi
2840fi
2841
Bram Moolenaar98921892016-02-23 17:14:37 +01002842
2843dnl ---------------------------------------------------------------------------
2844dnl Check for GTK3.
2845dnl ---------------------------------------------------------------------------
2846if test -z "$SKIP_GTK3"; then
2847
2848 AC_MSG_CHECKING(--disable-gtktest argument)
2849 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2850 , enable_gtktest=yes)
2851 if test "x$enable_gtktest" = "xyes" ; then
2852 AC_MSG_RESULT(gtk test enabled)
2853 else
2854 AC_MSG_RESULT(gtk test disabled)
2855 fi
2856
Bram Moolenaar98921892016-02-23 17:14:37 +01002857 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002858 save_skip_gtk2=$SKIP_GTK2
2859 SKIP_GTK2=YES
Bram Moolenaar98921892016-02-23 17:14:37 +01002860 AM_PATH_GTK(3.0.0,
2861 [GUI_LIB_LOC="$GTK_LIBDIR"
2862 GTK_LIBNAME="$GTK_LIBS"
2863 GUI_INC_LOC="$GTK_CFLAGS"], )
2864 if test "x$GTK_CFLAGS" != "x"; then
2865 SKIP_GTK2=YES
2866 SKIP_GNOME=YES
Bram Moolenaar98921892016-02-23 17:14:37 +01002867 SKIP_MOTIF=YES
2868 GUITYPE=GTK
2869 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar98921892016-02-23 17:14:37 +01002870 AC_DEFINE(USE_GTK3)
Bram Moolenaarf272ae12021-01-31 19:52:50 +01002871 else
2872 SKIP_GTK2=$save_skip_gtk2
Bram Moolenaar98921892016-02-23 17:14:37 +01002873 fi
2874 fi
2875fi
2876
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002877dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002878dnl glib-compile-resources is found in PATH, use GResource.
2879if test "x$GUITYPE" = "xGTK"; then
2880 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2881 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2882 if test "x$gdk_pixbuf_version" != x ; then
2883 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2884 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2885 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002886 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002887 AC_MSG_RESULT([OK.])
2888 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2889 AC_MSG_CHECKING([glib-compile-resources])
2890 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002891 GLIB_COMPILE_RESOURCES=""
2892 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002893 else
2894 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002895 AC_DEFINE(USE_GRESOURCE)
2896 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2897 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002898 fi
2899 else
2900 AC_MSG_RESULT([not usable.])
2901 fi
2902 else
2903 AC_MSG_RESULT([cannot obtain from pkg_config.])
2904 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002905
2906 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2907 AC_ARG_ENABLE(icon_cache_update,
2908 [ --disable-icon-cache-update update disabled],
2909 [],
2910 [enable_icon_cache_update="yes"])
2911 if test "$enable_icon_cache_update" = "yes"; then
2912 AC_MSG_RESULT([not set])
2913 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2914 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2915 AC_MSG_RESULT([not found in PATH.])
2916 fi
2917 else
2918 AC_MSG_RESULT([update disabled])
2919 fi
2920
2921 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2922 AC_ARG_ENABLE(desktop_database_update,
2923 [ --disable-desktop-database-update update disabled],
2924 [],
2925 [enable_desktop_database_update="yes"])
2926 if test "$enable_desktop_database_update" = "yes"; then
2927 AC_MSG_RESULT([not set])
2928 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2929 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2930 AC_MSG_RESULT([not found in PATH.])
2931 fi
2932 else
2933 AC_MSG_RESULT([update disabled])
2934 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002935fi
2936AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002937AC_SUBST(GRESOURCE_SRC)
2938AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002939AC_SUBST(GTK_UPDATE_ICON_CACHE)
2940AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002941
Bram Moolenaar071d4272004-06-13 20:20:40 +00002942dnl Check for Motif include files location.
2943dnl The LAST one found is used, this makes the highest version to be used,
2944dnl e.g. when Motif1.2 and Motif2.0 are both present.
2945
2946if test -z "$SKIP_MOTIF"; then
2947 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"
2948 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2949 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2950
2951 AC_MSG_CHECKING(for location of Motif GUI includes)
2952 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2953 GUI_INC_LOC=
2954 for try in $gui_includes; do
2955 if test -f "$try/Xm/Xm.h"; then
2956 GUI_INC_LOC=$try
2957 fi
2958 done
2959 if test -n "$GUI_INC_LOC"; then
2960 if test "$GUI_INC_LOC" = /usr/include; then
2961 GUI_INC_LOC=
2962 AC_MSG_RESULT(in default path)
2963 else
2964 AC_MSG_RESULT($GUI_INC_LOC)
2965 fi
2966 else
2967 AC_MSG_RESULT(<not found>)
2968 SKIP_MOTIF=YES
2969 fi
2970fi
2971
2972dnl Check for Motif library files location. In the same order as the include
2973dnl files, to avoid a mixup if several versions are present
2974
2975if test -z "$SKIP_MOTIF"; then
2976 AC_MSG_CHECKING(--with-motif-lib argument)
2977 AC_ARG_WITH(motif-lib,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002978 [ --with-motif-lib=STRING Library for Motif ],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002979 [ MOTIF_LIBNAME="${withval}" ] )
2980
2981 if test -n "$MOTIF_LIBNAME"; then
2982 AC_MSG_RESULT($MOTIF_LIBNAME)
2983 GUI_LIB_LOC=
2984 else
2985 AC_MSG_RESULT(no)
2986
2987 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2988 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2989
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002990 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2991 dnl linker will figure out which one to use, we only check if one exists.
Kelvin Leeb4716902022-04-04 17:20:01 +01002992 dnl Cygwin uses the .dll.a extension.
Bram Moolenaar01967f52023-04-12 16:24:03 +01002993 dnl OpenSUSE appears to use /usr/lib64.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002994 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar01967f52023-04-12 16:24:03 +01002995 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 +00002996 GUI_LIB_LOC=
2997 for try in $gui_libs; do
Kelvin Leeb4716902022-04-04 17:20:01 +01002998 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 +00002999 if test -f "$libtry"; then
3000 GUI_LIB_LOC=$try
3001 fi
3002 done
3003 done
3004 if test -n "$GUI_LIB_LOC"; then
Bram Moolenaar01967f52023-04-12 16:24:03 +01003005 dnl Remove /usr/lib, it causes trouble on some systems.
3006 dnl For consistency also remove other standard lib directories.
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02003007 if test "$GUI_LIB_LOC" = /usr/lib \
Bram Moolenaar01967f52023-04-12 16:24:03 +01003008 -o "$GUI_LIB_LOC" = /usr/lib64 \
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02003009 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
3010 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011 GUI_LIB_LOC=
3012 AC_MSG_RESULT(in default path)
3013 else
3014 if test -n "$GUI_LIB_LOC"; then
3015 AC_MSG_RESULT($GUI_LIB_LOC)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003016 if test "$vim_cv_uname_output" = SunOS &&
3017 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003018 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
3019 fi
3020 fi
3021 fi
3022 MOTIF_LIBNAME=-lXm
3023 else
3024 AC_MSG_RESULT(<not found>)
3025 SKIP_MOTIF=YES
3026 fi
3027 fi
3028fi
3029
3030if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031 GUITYPE=MOTIF
3032 AC_SUBST(MOTIF_LIBNAME)
3033fi
3034
Bram Moolenaare2adcf32022-03-12 11:57:25 +00003035if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
3037 dnl Avoid adding it when it twice
3038 if test -n "$GUI_INC_LOC"; then
3039 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
3040 fi
3041 if test -n "$GUI_LIB_LOC"; then
3042 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
3043 fi
3044
3045 dnl Check for -lXext and then for -lXmu
3046 ldflags_save=$LDFLAGS
3047 LDFLAGS="$X_LIBS $LDFLAGS"
3048 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
3049 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3050 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
3051 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
3052 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3053 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
3054 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3055 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
3056 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3057 if test -z "$SKIP_MOTIF"; then
3058 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
3059 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
3060 fi
3061 LDFLAGS=$ldflags_save
3062
3063 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
3064 AC_MSG_CHECKING(for extra X11 defines)
3065 NARROW_PROTO=
3066 rm -fr conftestdir
3067 if mkdir conftestdir; then
3068 cd conftestdir
3069 cat > Imakefile <<'EOF'
3070acfindx:
3071 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
3072EOF
3073 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
3074 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
3075 fi
3076 cd ..
3077 rm -fr conftestdir
3078 fi
3079 if test -z "$NARROW_PROTO"; then
3080 AC_MSG_RESULT(no)
3081 else
3082 AC_MSG_RESULT($NARROW_PROTO)
3083 fi
3084 AC_SUBST(NARROW_PROTO)
3085fi
3086
3087dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
3088dnl use the X11 include path
3089if test "$enable_xsmp" = "yes"; then
3090 cppflags_save=$CPPFLAGS
3091 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3092 AC_CHECK_HEADERS(X11/SM/SMlib.h)
3093 CPPFLAGS=$cppflags_save
3094fi
3095
3096
Bram Moolenaarf52fac22022-03-11 16:01:26 +00003097if test -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003098 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
3099 cppflags_save=$CPPFLAGS
3100 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3101 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
3102
3103 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
3104 if test ! "$enable_xim" = "no"; then
3105 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
3106 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
3107 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02003108 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00003109 fi
3110 CPPFLAGS=$cppflags_save
3111
Bram Moolenaar54612582019-11-21 17:13:31 +01003112 dnl automatically enable XIM in the GUI
3113 if test "$enable_xim" = "auto" -a "x$GUITYPE" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003114 AC_MSG_RESULT(X GUI selected; xim has been enabled)
3115 enable_xim="yes"
3116 fi
3117fi
3118
Bram Moolenaarf52fac22022-03-11 16:01:26 +00003119if test -z "$SKIP_MOTIF"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003120 cppflags_save=$CPPFLAGS
3121 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003122dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
3123 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003124 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003125#include <X11/Intrinsic.h>
3126#include <X11/Xmu/Editres.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003127 [int i; i = 0;])],
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00003128 AC_MSG_RESULT(yes)
3129 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
3130 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131 CPPFLAGS=$cppflags_save
3132fi
3133
Bram Moolenaar0b40d082022-03-08 13:32:37 +00003134dnl Only use the Xm directory when compiling Motif.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003135if test -z "$SKIP_MOTIF"; then
3136 cppflags_save=$CPPFLAGS
3137 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02003138 if test "$zOSUnix" = "yes"; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003139 AC_CHECK_HEADERS(Xm/Xm.h)
Bram Moolenaar77c19352012-06-13 19:19:41 +02003140 else
Bram Moolenaarde1d7342022-06-05 20:03:17 +01003141 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 +01003142 fi
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003143
Bram Moolenaar77c19352012-06-13 19:19:41 +02003144 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003145 dnl Solaris uses XpmAttributes_21, very annoying.
3146 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003147 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;])],
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003148 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
3149 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
3150 )
3151 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00003152 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003153 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003154 CPPFLAGS=$cppflags_save
3155fi
3156
3157if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
3158 AC_MSG_RESULT(no GUI selected; xim has been disabled)
3159 enable_xim="no"
3160fi
3161if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
3162 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
3163 enable_fontset="no"
3164fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02003165if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003166 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
3167 enable_fontset="no"
3168fi
3169
Bram Moolenaarb3f74062020-02-26 16:16:53 +01003170dnl There is no test for the Haiku GUI, if it's selected it's used
3171if test -z "$SKIP_HAIKU"; then
3172 GUITYPE=HAIKUGUI
3173fi
3174
Bram Moolenaar071d4272004-06-13 20:20:40 +00003175if test -z "$SKIP_PHOTON"; then
3176 GUITYPE=PHOTONGUI
3177fi
3178
3179AC_SUBST(GUI_INC_LOC)
3180AC_SUBST(GUI_LIB_LOC)
3181AC_SUBST(GUITYPE)
3182AC_SUBST(GUI_X_LIBS)
3183
3184if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3185 AC_MSG_ERROR([cannot use workshop without Motif])
3186fi
3187
3188dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3189if test "$enable_xim" = "yes"; then
3190 AC_DEFINE(FEAT_XIM)
3191fi
3192if test "$enable_fontset" = "yes"; then
3193 AC_DEFINE(FEAT_XFONTSET)
3194fi
3195
3196
3197dnl ---------------------------------------------------------------------------
3198dnl end of GUI-checking
3199dnl ---------------------------------------------------------------------------
3200
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003201AC_MSG_CHECKING([for /proc link to executable])
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003202if test -L "/proc/self/exe"; then
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003203 dnl Linux
3204 AC_MSG_RESULT([/proc/self/exe])
3205 AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe")
3206elif test -L "/proc/self/path/a.out"; then
3207 dnl Solaris
3208 AC_MSG_RESULT([/proc/self/path/a.out])
3209 AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out")
3210elif test -L "/proc/curproc/file"; then
3211 dnl FreeBSD
3212 AC_MSG_RESULT([/proc/curproc/file])
3213 AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file")
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003214else
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003215 AC_MSG_RESULT(no)
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003216fi
3217
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003218dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003219AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003220case $vim_cv_uname_output in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003221 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003222 AC_MSG_CHECKING(for CYGWIN clipboard support)
3223 if test "x$with_x" = "xno" ; then
3224 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3225 AC_MSG_RESULT(yes)
3226 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3227 else
3228 AC_MSG_RESULT(no - using X11)
3229 fi ;;
3230
3231 *) CYGWIN=no; AC_MSG_RESULT(no);;
3232esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003233
Bram Moolenaar071d4272004-06-13 20:20:40 +00003234dnl Checks for libraries and include files.
3235
Bram Moolenaar446cb832008-06-24 21:56:24 +00003236AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3237 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003238 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003239#include "confdefs.h"
3240#include <ctype.h>
3241#if STDC_HEADERS
3242# include <stdlib.h>
3243# include <stddef.h>
3244#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003245int main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003246 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003247 vim_cv_toupper_broken=yes
3248 ],[
3249 vim_cv_toupper_broken=no
3250 ],[
3251 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3252 ])])
3253
3254if test "x$vim_cv_toupper_broken" = "xyes" ; then
3255 AC_DEFINE(BROKEN_TOUPPER)
3256fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003257
3258AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003259AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003260 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3261 AC_MSG_RESULT(no))
3262
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003263AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003264AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [int x __attribute__((unused));])],
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003265 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3266 AC_MSG_RESULT(no))
3267
Bram Moolenaar071d4272004-06-13 20:20:40 +00003268dnl Checks for header files.
3269AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3270dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3271if test "$HAS_ELF" = 1; then
3272 AC_CHECK_LIB(elf, main)
3273fi
3274
3275AC_HEADER_DIRENT
3276
Bram Moolenaar071d4272004-06-13 20:20:40 +00003277dnl If sys/wait.h is not found it might still exist but not be POSIX
3278dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3279if test $ac_cv_header_sys_wait_h = no; then
3280 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003281 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/wait.h>],
3282 [union wait xx, yy; xx = yy])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003283 AC_MSG_RESULT(yes)
3284 AC_DEFINE(HAVE_SYS_WAIT_H)
3285 AC_DEFINE(HAVE_UNION_WAIT),
3286 AC_MSG_RESULT(no))
3287fi
3288
Bram Moolenaar779a7752016-01-30 23:26:34 +01003289AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003290 sys/select.h sys/utsname.h termcap.h fcntl.h \
3291 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3292 termio.h iconv.h inttypes.h langinfo.h math.h \
3293 unistd.h stropts.h errno.h sys/resource.h \
3294 sys/systeminfo.h locale.h sys/stream.h termios.h \
3295 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
Bram Moolenaar1ecc5e42019-01-26 15:12:55 +01003296 utime.h sys/param.h sys/ptms.h libintl.h libgen.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003297 util/debug.h util/msg18n.h frame.h sys/acl.h \
3298 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003299
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003300dnl sys/ptem.h depends on sys/stream.h on Solaris
3301AC_CHECK_HEADERS(sys/ptem.h, [], [],
3302[#if defined HAVE_SYS_STREAM_H
3303# include <sys/stream.h>
3304#endif])
3305
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003306dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3307AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3308[#if defined HAVE_SYS_PARAM_H
3309# include <sys/param.h>
3310#endif])
3311
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003312
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003313dnl pthread_np.h may exist but can only be used after including pthread.h
3314AC_MSG_CHECKING([for pthread_np.h])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003315AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003316#include <pthread.h>
3317#include <pthread_np.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003318 [int i; i = 0;])],
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003319 AC_MSG_RESULT(yes)
3320 AC_DEFINE(HAVE_PTHREAD_NP_H),
3321 AC_MSG_RESULT(no))
3322
Bram Moolenaare344bea2005-09-01 20:46:49 +00003323AC_CHECK_HEADERS(strings.h)
Bram Moolenaard0573012017-10-28 21:11:06 +02003324if test "x$MACOS_X" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00003325 dnl The strings.h file on OS/X contains a warning and nothing useful.
3326 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3327else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003328
3329dnl Check if strings.h and string.h can both be included when defined.
3330AC_MSG_CHECKING([if strings.h can be included after string.h])
3331cppflags_save=$CPPFLAGS
3332CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003333AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003334#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3335# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3336 /* but don't do it on AIX 5.1 (Uribarri) */
3337#endif
3338#ifdef HAVE_XM_XM_H
3339# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3340#endif
3341#ifdef HAVE_STRING_H
3342# include <string.h>
3343#endif
3344#if defined(HAVE_STRINGS_H)
3345# include <strings.h>
3346#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003347 ], [int i; i = 0;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003348 AC_MSG_RESULT(yes),
3349 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3350 AC_MSG_RESULT(no))
3351CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003352fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003353
3354dnl Checks for typedefs, structures, and compiler characteristics.
3355AC_PROG_GCC_TRADITIONAL
3356AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003357AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003358AC_TYPE_MODE_T
3359AC_TYPE_OFF_T
3360AC_TYPE_PID_T
3361AC_TYPE_SIZE_T
3362AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003363AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003364
Illia Bobyrf39842f2023-08-27 18:21:23 +02003365AC_CHECK_HEADERS_ONCE([sys/time.h])
3366
Bram Moolenaar071d4272004-06-13 20:20:40 +00003367AC_CHECK_TYPE(ino_t, long)
3368AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003369AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003370AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003371
3372AC_MSG_CHECKING(for rlim_t)
3373if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3374 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3375else
3376 AC_EGREP_CPP(dnl
3377changequote(<<,>>)dnl
3378<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3379changequote([,]),
3380 [
3381#include <sys/types.h>
3382#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003383# include <stdlib.h>
3384# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003385#endif
3386#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003387# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003388#endif
3389 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3390 AC_MSG_RESULT($ac_cv_type_rlim_t)
3391fi
3392if test $ac_cv_type_rlim_t = no; then
3393 cat >> confdefs.h <<\EOF
3394#define rlim_t unsigned long
3395EOF
3396fi
3397
3398AC_MSG_CHECKING(for stack_t)
3399if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3400 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3401else
3402 AC_EGREP_CPP(stack_t,
3403 [
3404#include <sys/types.h>
3405#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003406# include <stdlib.h>
3407# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003408#endif
3409#include <signal.h>
3410 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3411 AC_MSG_RESULT($ac_cv_type_stack_t)
3412fi
3413if test $ac_cv_type_stack_t = no; then
3414 cat >> confdefs.h <<\EOF
3415#define stack_t struct sigaltstack
3416EOF
3417fi
3418
3419dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3420AC_MSG_CHECKING(whether stack_t has an ss_base field)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003421AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003422#include <sys/types.h>
3423#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003424# include <stdlib.h>
3425# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003426#endif
3427#include <signal.h>
3428#include "confdefs.h"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003429 ], [stack_t sigstk; sigstk.ss_base = 0; ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003430 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3431 AC_MSG_RESULT(no))
3432
3433olibs="$LIBS"
3434AC_MSG_CHECKING(--with-tlib argument)
3435AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3436if test -n "$with_tlib"; then
3437 AC_MSG_RESULT($with_tlib)
3438 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003439 AC_MSG_CHECKING(for linking with $with_tlib library)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003440 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003441 dnl Need to check for tgetent() below.
3442 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003443else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003444 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003445 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3446 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003447 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003448 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003449 dnl Older versions of ncurses have bugs, get a new one!
3450 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003451 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar6840a0f2021-12-13 20:37:59 +00003452 case "$vim_cv_uname_output" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003453 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3454 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003455 esac
3456 for libname in $tlibs; do
3457 AC_CHECK_LIB(${libname}, tgetent,,)
3458 if test "x$olibs" != "x$LIBS"; then
3459 dnl It's possible that a library is found but it doesn't work
3460 dnl e.g., shared library that cannot be found
3461 dnl compile and run a test program to be sure
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003462 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003463#ifdef HAVE_TERMCAP_H
3464# include <termcap.h>
3465#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003466#if STDC_HEADERS
3467# include <stdlib.h>
3468# include <stddef.h>
3469#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003470int main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003471 res="OK", res="FAIL", res="FAIL")
3472 if test "$res" = "OK"; then
3473 break
3474 fi
3475 AC_MSG_RESULT($libname library is not usable)
3476 LIBS="$olibs"
3477 fi
3478 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003479 if test "x$olibs" = "x$LIBS"; then
3480 AC_MSG_RESULT(no terminal library found)
3481 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003482fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003483
3484if test "x$olibs" = "x$LIBS"; then
3485 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003486 AC_LINK_IFELSE([AC_LANG_PROGRAM([int tgetent(char *, const char *);],
3487 [[char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");]])],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003488 AC_MSG_RESULT(yes),
3489 AC_MSG_ERROR([NOT FOUND!
3490 You need to install a terminal library; for example ncurses.
Bram Moolenaar16678eb2021-04-21 11:57:59 +02003491 On Linux that would be the libncurses-dev package.
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003492 Or specify the name of the library with --with-tlib.]))
3493fi
3494
Bram Moolenaar446cb832008-06-24 21:56:24 +00003495AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3496 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003497 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003498#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003499#ifdef HAVE_TERMCAP_H
3500# include <termcap.h>
3501#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003502#ifdef HAVE_STRING_H
3503# include <string.h>
3504#endif
3505#if STDC_HEADERS
3506# include <stdlib.h>
3507# include <stddef.h>
3508#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003509int main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003510{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003511 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003512 vim_cv_terminfo=no
3513 ],[
3514 vim_cv_terminfo=yes
3515 ],[
3516 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3517 ])
3518 ])
3519
3520if test "x$vim_cv_terminfo" = "xyes" ; then
3521 AC_DEFINE(TERMINFO)
3522fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003523
Bram Moolenaara88254f2017-11-02 23:04:14 +01003524AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgetent],
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003525 [
3526 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003527#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003528#ifdef HAVE_TERMCAP_H
3529# include <termcap.h>
3530#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003531#if STDC_HEADERS
3532# include <stdlib.h>
3533# include <stddef.h>
3534#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003535int main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003536{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003537 ]])],[
Bram Moolenaara88254f2017-11-02 23:04:14 +01003538 vim_cv_tgetent=zero
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003539 ],[
Bram Moolenaara88254f2017-11-02 23:04:14 +01003540 vim_cv_tgetent=non-zero
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003541 ],[
3542 AC_MSG_ERROR(failed to compile test program.)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003543 ])
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003544 ])
3545
Bram Moolenaara88254f2017-11-02 23:04:14 +01003546if test "x$vim_cv_tgetent" = "xzero" ; then
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003547 AC_DEFINE(TGETENT_ZERO_ERR, 0)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003548fi
3549
3550AC_MSG_CHECKING(whether termcap.h contains ospeed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003551AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003552#ifdef HAVE_TERMCAP_H
3553# include <termcap.h>
3554#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003555 ], [ospeed = 20000])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003556 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3557 [AC_MSG_RESULT(no)
3558 AC_MSG_CHECKING(whether ospeed can be extern)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003559 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003560#ifdef HAVE_TERMCAP_H
3561# include <termcap.h>
3562#endif
3563extern short ospeed;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003564 ], [ospeed = 20000])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003565 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3566 AC_MSG_RESULT(no))]
3567 )
3568
3569AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003570AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003571#ifdef HAVE_TERMCAP_H
3572# include <termcap.h>
3573#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003574 ], [if (UP == 0 && BC == 0) PC = 1])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003575 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3576 [AC_MSG_RESULT(no)
3577 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003578 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003579#ifdef HAVE_TERMCAP_H
3580# include <termcap.h>
3581#endif
3582extern char *UP, *BC, PC;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003583 ], [if (UP == 0 && BC == 0) PC = 1])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003584 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3585 AC_MSG_RESULT(no))]
3586 )
3587
3588AC_MSG_CHECKING(whether tputs() uses outfuntype)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003589AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003590#ifdef HAVE_TERMCAP_H
3591# include <termcap.h>
3592#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003593 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003594 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3595 AC_MSG_RESULT(no))
3596
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003597AC_MSG_CHECKING([whether del_curterm() can be used])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003598AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003599#ifdef HAVE_TERMCAP_H
3600# include <termcap.h>
3601#endif
3602#include <term.h>
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003603 ], [if (cur_term) del_curterm(cur_term);])],
Bram Moolenaarb3a29552021-11-19 11:28:04 +00003604 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DEL_CURTERM),
3605 AC_MSG_RESULT(no))
3606
Bram Moolenaar071d4272004-06-13 20:20:40 +00003607dnl On some SCO machines sys/select redefines struct timeval
3608AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003609AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003610#include <sys/types.h>
3611#include <sys/time.h>
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003612#include <sys/select.h>], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003613 AC_MSG_RESULT(yes)
3614 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3615 AC_MSG_RESULT(no))
3616
Bram Moolenaar071d4272004-06-13 20:20:40 +00003617dnl Checks for pty.c (copied from screen) ==========================
3618AC_MSG_CHECKING(for /dev/ptc)
3619if test -r /dev/ptc; then
3620 AC_DEFINE(HAVE_DEV_PTC)
3621 AC_MSG_RESULT(yes)
3622else
3623 AC_MSG_RESULT(no)
3624fi
3625
3626AC_MSG_CHECKING(for SVR4 ptys)
3627if test -c /dev/ptmx ; then
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003628 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaarce7be3a2020-11-26 20:11:11 +01003629// These should be in stdlib.h, but it depends on _XOPEN_SOURCE.
3630char *ptsname(int);
3631int unlockpt(int);
3632int grantpt(int);
3633 ], [
3634 ptsname(0);
3635 grantpt(0);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003636 unlockpt(0);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003637 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3638 AC_MSG_RESULT(no))
3639else
3640 AC_MSG_RESULT(no)
3641fi
3642
3643AC_MSG_CHECKING(for ptyranges)
3644if test -d /dev/ptym ; then
3645 pdir='/dev/ptym'
3646else
3647 pdir='/dev'
3648fi
3649dnl SCO uses ptyp%d
3650AC_EGREP_CPP(yes,
3651[#ifdef M_UNIX
3652 yes;
3653#endif
3654 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3655dnl if test -c /dev/ptyp19; then
3656dnl ptys=`echo /dev/ptyp??`
3657dnl else
3658dnl ptys=`echo $pdir/pty??`
3659dnl fi
3660if test "$ptys" != "$pdir/pty??" ; then
3661 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3662 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3663 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3664 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3665 AC_MSG_RESULT([$p0 / $p1])
3666else
3667 AC_MSG_RESULT([don't know])
3668fi
3669
Bram Moolenaar071d4272004-06-13 20:20:40 +00003670dnl Checks for library functions. ===================================
3671
Bram Moolenaar071d4272004-06-13 20:20:40 +00003672dnl check if struct sigcontext is defined (used for SGI only)
3673AC_MSG_CHECKING(for struct sigcontext)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003674AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003675#include <signal.h>
Sam Jamesf8ea1062022-11-05 15:13:50 +00003676int test_sig()
Bram Moolenaar071d4272004-06-13 20:20:40 +00003677{
3678 struct sigcontext *scont;
3679 scont = (struct sigcontext *)0;
3680 return 1;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003681} ], )],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003682 AC_MSG_RESULT(yes)
3683 AC_DEFINE(HAVE_SIGCONTEXT),
3684 AC_MSG_RESULT(no))
3685
3686dnl tricky stuff: try to find out if getcwd() is implemented with
3687dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003688AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3689 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003690 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003691#include "confdefs.h"
3692#ifdef HAVE_UNISTD_H
3693#include <unistd.h>
3694#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003695char *dagger[] = { "IFS=pwd", 0 };
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003696int main()
Bram Moolenaar071d4272004-06-13 20:20:40 +00003697{
3698 char buffer[500];
3699 extern char **environ;
3700 environ = dagger;
3701 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003702}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003703 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003704 vim_cv_getcwd_broken=no
3705 ],[
3706 vim_cv_getcwd_broken=yes
3707 ],[
3708 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3709 ])
3710 ])
3711
3712if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3713 AC_DEFINE(BAD_GETCWD)
Bram Moolenaar63d25552019-05-10 21:28:38 +02003714 AC_CHECK_FUNCS(getwd)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003715fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003716
Bram Moolenaar25153e12010-02-24 14:47:08 +01003717dnl Check for functions in one big call, to reduce the size of configure.
3718dnl Can only be used for functions that do not require any include.
Bram Moolenaarcd142e32017-11-16 17:03:45 +01003719AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \
Bram Moolenaar63d25552019-05-10 21:28:38 +02003720 getpwent getpwnam getpwuid getrlimit gettimeofday localtime_r lstat \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003721 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar2fcf6682017-03-11 20:03:42 +01003722 getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar84cf6bd2020-06-16 20:03:43 +02003723 sigprocmask sigvec strcasecmp strcoll strerror strftime stricmp strncasecmp \
Bram Moolenaar10455d42019-11-21 15:36:18 +01003724 strnicmp strpbrk strptime strtol tgetent towlower towupper iswupper \
Bram Moolenaar08210f82023-04-13 19:15:54 +01003725 tzset usleep utime utimes mblen ftruncate unsetenv posix_openpt \
3726 clock_gettime)
Bram Moolenaar643b6142018-09-12 20:29:09 +02003727AC_FUNC_SELECT_ARGTYPES
Bram Moolenaar25153e12010-02-24 14:47:08 +01003728AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003729
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003730dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3731dnl appropriate, so that off_t is 64 bits when needed.
3732AC_SYS_LARGEFILE
3733
Bram Moolenaar21606672019-06-14 20:40:58 +02003734AC_MSG_CHECKING(--enable-canberra argument)
3735AC_ARG_ENABLE(canberra,
3736 [ --disable-canberra Do not use libcanberra.],
3737 , [enable_canberra="maybe"])
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003738
Bram Moolenaar21606672019-06-14 20:40:58 +02003739if test "$enable_canberra" = "maybe"; then
Martin Tournoij25f3a142022-10-08 19:26:41 +01003740 if test "$features" = "huge"; then
Bram Moolenaar21606672019-06-14 20:40:58 +02003741 AC_MSG_RESULT(Defaulting to yes)
3742 enable_canberra="yes"
3743 else
3744 AC_MSG_RESULT(Defaulting to no)
3745 enable_canberra="no"
3746 fi
3747else
Bram Moolenaar12471262022-01-18 11:11:25 +00003748 if test "$enable_canberra" = "yes" -a "$has_eval" = "no"; then
Martin Tournoij7904fa42022-10-04 16:28:45 +01003749 AC_MSG_RESULT([cannot use sound with tiny features])
Bram Moolenaar12471262022-01-18 11:11:25 +00003750 enable_canberra="no"
3751 else
3752 AC_MSG_RESULT($enable_canberra)
3753 fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003754fi
Bram Moolenaar21606672019-06-14 20:40:58 +02003755if test "$enable_canberra" = "yes"; then
3756 if test "x$PKG_CONFIG" != "xno"; then
3757 canberra_lib=`$PKG_CONFIG --libs libcanberra 2>/dev/null`
3758 canberra_cflags=`$PKG_CONFIG --cflags libcanberra 2>/dev/null`
3759 fi
3760 if test "x$canberra_lib" = "x"; then
3761 canberra_lib=-lcanberra
3762 canberra_cflags=-D_REENTRANT
3763 fi
3764 AC_MSG_CHECKING(for libcanberra)
3765 ac_save_CFLAGS="$CFLAGS"
3766 ac_save_LIBS="$LIBS"
Bram Moolenaar12471262022-01-18 11:11:25 +00003767 if `echo "$CFLAGS" | grep -v "$canberra_cflags" 2>/dev/null`; then
Christian Brabandt6b9efdd2021-09-09 17:14:50 +02003768 CFLAGS="$CFLAGS $canberra_cflags"
3769 fi
Bram Moolenaar21606672019-06-14 20:40:58 +02003770 LIBS="$LIBS $canberra_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003771 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar21606672019-06-14 20:40:58 +02003772 # include <canberra.h>
3773 ], [
3774 ca_context *hello;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003775 ca_context_create(&hello);])],
Bram Moolenaar21606672019-06-14 20:40:58 +02003776 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CANBERRA),
Bram Moolenaar91b992c2019-11-17 19:07:42 +01003777 AC_MSG_RESULT(no; try installing libcanberra-dev); CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS")
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003778fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003779
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003780AC_MSG_CHECKING(--enable-libsodium argument)
3781AC_ARG_ENABLE(libsodium,
3782 [ --disable-libsodium Do not use libsodium.],
3783 , [enable_libsodium="maybe"])
3784
3785if test "$enable_libsodium" = "maybe"; then
Martin Tournoij25f3a142022-10-08 19:26:41 +01003786 if test "$features" = "huge"; then
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003787 AC_MSG_RESULT(Defaulting to yes)
3788 enable_libsodium="yes"
3789 else
3790 AC_MSG_RESULT(Defaulting to no)
3791 enable_libsodium="no"
3792 fi
3793else
3794 AC_MSG_RESULT($enable_libsodium)
3795fi
3796if test "$enable_libsodium" = "yes"; then
3797 if test "x$PKG_CONFIG" != "xno"; then
3798 libsodium_lib=`$PKG_CONFIG --libs libsodium 2>/dev/null`
3799 libsodium_cflags=`$PKG_CONFIG --cflags libsodium 2>/dev/null`
3800 fi
3801 if test "x$libsodium_lib" = "x"; then
3802 libsodium_lib=-lsodium
3803 libsodium_cflags=
3804 fi
ichizok8ce3ca82021-06-23 15:41:52 +02003805 AC_MSG_CHECKING(for libsodium)
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003806 ac_save_CFLAGS="$CFLAGS"
3807 ac_save_LIBS="$LIBS"
3808 CFLAGS="$CFLAGS $libsodium_cflags"
3809 LIBS="$LIBS $libsodium_lib"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003810 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003811 # include <sodium.h>
3812 ], [
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003813 printf("%d", sodium_init()); ])],
Christian Brabandtf573c6e2021-06-20 14:02:16 +02003814 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SODIUM),
3815 AC_MSG_RESULT(no; try installing libsodium-dev); CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS")
3816fi
Bram Moolenaar427f5b62019-06-09 13:43:51 +02003817
Bram Moolenaar071d4272004-06-13 20:20:40 +00003818dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3819AC_MSG_CHECKING(for st_blksize)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003820AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00003821[#include <sys/types.h>
3822#include <sys/stat.h>],
3823[ struct stat st;
3824 int n;
3825
3826 stat("/", &st);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003827 n = (int)st.st_blksize;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003828 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3829 AC_MSG_RESULT(no))
3830
Paul Ollis65745772022-06-05 16:55:54 +01003831dnl Check for timer_create. It probably requires the 'rt' library.
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003832dnl Run the program to find out if timer_create(CLOCK_MONOTONIC) actually
3833dnl works, on Solaris timer_create() exists but fails at runtime.
Bram Moolenaarefffa532022-07-28 22:39:54 +01003834AC_CACHE_CHECK([for timer_create without -lrt], [vim_cv_timer_create], [
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003835AC_RUN_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar5748b7f2022-07-28 12:09:04 +01003836#if STDC_HEADERS
3837# include <stdlib.h>
3838# include <stddef.h>
3839#endif
3840#include <signal.h>
3841#include <time.h>
Bram Moolenaare5303952022-06-19 17:05:47 +01003842static void set_flag(union sigval sv) {}
Paul Ollis65745772022-06-05 16:55:54 +01003843], [
3844 struct timespec ts;
3845 struct sigevent action = {0};
3846 timer_t timer_id;
3847
3848 action.sigev_notify = SIGEV_THREAD;
3849 action.sigev_notify_function = set_flag;
Bram Moolenaarf2ce76a2022-07-02 11:40:40 +01003850 if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0)
3851 exit(1); // cannot create a monotonic timer
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003852 ])],
Bram Moolenaarefffa532022-07-28 22:39:54 +01003853 vim_cv_timer_create=yes,
3854 vim_cv_timer_create=no,
Bram Moolenaar5f6cae82022-07-30 11:00:50 +01003855 AC_MSG_WARN([failed to build test program; if cross-compiling please set 'vim_cv_timer_create'])
Bram Moolenaarefffa532022-07-28 22:39:54 +01003856 )])
Paul Ollis65745772022-06-05 16:55:54 +01003857
Bram Moolenaarefffa532022-07-28 22:39:54 +01003858dnl If the previous failed, check for timer_create() and linking with -lrt.
3859if test "x$vim_cv_timer_create" = "xno" ; then
3860 save_LIBS="$LIBS"
3861 LIBS="$LIBS -lrt"
3862 AC_CACHE_CHECK([for timer_create with -lrt], [vim_cv_timer_create_with_lrt], [
3863 AC_RUN_IFELSE([AC_LANG_PROGRAM([
3864 #if STDC_HEADERS
3865 # include <stdlib.h>
3866 # include <stddef.h>
3867 #endif
3868 #include <signal.h>
3869 #include <time.h>
3870 static void set_flag(union sigval sv) {}
3871 ], [
3872 struct timespec ts;
3873 struct sigevent action = {0};
3874 timer_t timer_id;
3875
3876 action.sigev_notify = SIGEV_THREAD;
3877 action.sigev_notify_function = set_flag;
3878 if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0)
3879 exit(1); // cannot create a monotonic timer
3880 ])],
3881 vim_cv_timer_create_with_lrt=yes,
3882 vim_cv_timer_create_with_lrt=no,
Bram Moolenaar5f6cae82022-07-30 11:00:50 +01003883 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 +01003884 )])
3885 LIBS="$save_LIBS"
3886else
3887 vim_cv_timer_create_with_lrt=no
3888fi
Richard Purdie509695c2022-07-24 20:48:00 +01003889
3890if test "x$vim_cv_timer_create" = "xyes" ; then
3891 AC_DEFINE(HAVE_TIMER_CREATE)
3892fi
Bram Moolenaarefffa532022-07-28 22:39:54 +01003893if test "x$vim_cv_timer_create_with_lrt" = "xyes" ; then
3894 AC_DEFINE(HAVE_TIMER_CREATE)
3895 LIBS="$LIBS -lrt"
3896fi
Paul Ollis65745772022-06-05 16:55:54 +01003897
Bram Moolenaar446cb832008-06-24 21:56:24 +00003898AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3899 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003900 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003901#include "confdefs.h"
3902#if STDC_HEADERS
3903# include <stdlib.h>
3904# include <stddef.h>
3905#endif
3906#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003907#include <sys/stat.h>
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01003908int main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003909 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003910 vim_cv_stat_ignores_slash=yes
3911 ],[
3912 vim_cv_stat_ignores_slash=no
3913 ],[
3914 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3915 ])
3916 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003917
Bram Moolenaar446cb832008-06-24 21:56:24 +00003918if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3919 AC_DEFINE(STAT_IGNORES_SLASH)
3920fi
Leah Neukirchen0a7984a2021-10-14 21:27:55 +01003921
3922dnl nanoseconds field of struct stat
3923AC_CACHE_CHECK([for nanoseconds field of struct stat],
3924 ac_cv_struct_st_mtim_nsec,
3925 [ac_save_CPPFLAGS="$CPPFLAGS"
3926 ac_cv_struct_st_mtim_nsec=no
3927 # st_mtim.tv_nsec -- the usual case
3928 # st_mtim._tv_nsec -- Solaris 2.6, if
3929 # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
3930 # && !defined __EXTENSIONS__)
3931 # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2
3932 # st_mtime_n -- AIX 5.2 and above
3933 # st_mtimespec.tv_nsec -- Darwin (Mac OSX)
3934 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
3935 CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003936 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
3937#include <sys/stat.h>], [struct stat s; s.ST_MTIM_NSEC;])],
Leah Neukirchen0a7984a2021-10-14 21:27:55 +01003938 [ac_cv_struct_st_mtim_nsec=$ac_val; break])
3939 done
3940 CPPFLAGS="$ac_save_CPPFLAGS"
3941])
3942if test $ac_cv_struct_st_mtim_nsec != no; then
3943 AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec],
3944 [Define if struct stat contains a nanoseconds field])
3945fi
Bram Moolenaare5303952022-06-19 17:05:47 +01003946
Bram Moolenaar071d4272004-06-13 20:20:40 +00003947dnl Link with iconv for charset translation, if not found without library.
3948dnl check for iconv() requires including iconv.h
3949dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3950dnl has been installed.
3951AC_MSG_CHECKING(for iconv_open())
3952save_LIBS="$LIBS"
3953LIBS="$LIBS -liconv"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003954AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003955#ifdef HAVE_ICONV_H
3956# include <iconv.h>
3957#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003958 ], [iconv_open("fr", "to");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003959 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3960 LIBS="$save_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003961 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003962#ifdef HAVE_ICONV_H
3963# include <iconv.h>
3964#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003965 ], [iconv_open("fr", "to");])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003966 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3967 AC_MSG_RESULT(no)))
3968
3969
3970AC_MSG_CHECKING(for nl_langinfo(CODESET))
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003971AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00003972#ifdef HAVE_LANGINFO_H
3973# include <langinfo.h>
3974#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003975], [char *cs = nl_langinfo(CODESET);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003976 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3977 AC_MSG_RESULT(no))
3978
Bram Moolenaar73e28dc2022-09-17 21:08:33 +01003979dnl Floating point support may require the "m" library
Bram Moolenaar446cb832008-06-24 21:56:24 +00003980AC_CHECK_LIB(m, strtod)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003981
Bram Moolenaara6b89762016-02-29 21:38:26 +01003982dnl isinf() and isnan() need to include header files and may need -lm.
3983AC_MSG_CHECKING([for isinf()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003984AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaara6b89762016-02-29 21:38:26 +01003985#ifdef HAVE_MATH_H
3986# include <math.h>
3987#endif
3988#if STDC_HEADERS
3989# include <stdlib.h>
3990# include <stddef.h>
3991#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003992], [int r = isinf(1.11); ])],
Bram Moolenaara6b89762016-02-29 21:38:26 +01003993 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3994 AC_MSG_RESULT(no))
3995
3996AC_MSG_CHECKING([for isnan()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01003997AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaara6b89762016-02-29 21:38:26 +01003998#ifdef HAVE_MATH_H
3999# include <math.h>
4000#endif
4001#if STDC_HEADERS
4002# include <stdlib.h>
4003# include <stddef.h>
4004#endif
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004005], [int r = isnan(1.11); ])],
Bram Moolenaara6b89762016-02-29 21:38:26 +01004006 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
4007 AC_MSG_RESULT(no))
4008
Bram Moolenaar071d4272004-06-13 20:20:40 +00004009dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
4010dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01004011dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004012AC_MSG_CHECKING(--disable-acl argument)
4013AC_ARG_ENABLE(acl,
Bram Moolenaard6d30422018-01-28 22:48:55 +01004014 [ --disable-acl No check for ACL support.],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004015 , [enable_acl="yes"])
4016if test "$enable_acl" = "yes"; then
Bram Moolenaard6d30422018-01-28 22:48:55 +01004017 AC_MSG_RESULT(no)
4018 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004019 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
4020 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
4021
Bram Moolenaard6d30422018-01-28 22:48:55 +01004022 AC_MSG_CHECKING(for POSIX ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004023 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00004024#include <sys/types.h>
4025#ifdef HAVE_SYS_ACL_H
4026# include <sys/acl.h>
4027#endif
4028acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
4029 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004030 acl_free(acl);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004031 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
4032 AC_MSG_RESULT(no))
4033
Bram Moolenaard6d30422018-01-28 22:48:55 +01004034 AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
4035 AC_MSG_CHECKING(for Solaris ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004036 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar071d4272004-06-13 20:20:40 +00004037#ifdef HAVE_SYS_ACL_H
4038# include <sys/acl.h>
4039#endif], [acl("foo", GETACLCNT, 0, NULL);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004040 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004041 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01004042 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00004043
Bram Moolenaard6d30422018-01-28 22:48:55 +01004044 AC_MSG_CHECKING(for AIX ACL support)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004045 AC_LINK_IFELSE([AC_LANG_PROGRAM([
Bram Moolenaar446cb832008-06-24 21:56:24 +00004046#if STDC_HEADERS
4047# include <stdlib.h>
4048# include <stddef.h>
4049#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00004050#ifdef HAVE_SYS_ACL_H
4051# include <sys/acl.h>
4052#endif
4053#ifdef HAVE_SYS_ACCESS_H
4054# include <sys/access.h>
4055#endif
4056#define _ALL_SOURCE
4057
4058#include <sys/stat.h>
4059
4060int aclsize;
4061struct acl *aclent;], [aclsize = sizeof(struct acl);
4062 aclent = (void *)malloc(aclsize);
4063 statacl("foo", STX_NORMAL, aclent, aclsize);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004064 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004065 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
4066 AC_MSG_RESULT(no))
4067else
4068 AC_MSG_RESULT(yes)
4069fi
4070
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004071if test "x$GTK_CFLAGS" != "x"; then
4072 dnl pango_shape_full() is new, fall back to pango_shape().
4073 AC_MSG_CHECKING(for pango_shape_full)
4074 ac_save_CFLAGS="$CFLAGS"
4075 ac_save_LIBS="$LIBS"
4076 CFLAGS="$CFLAGS $GTK_CFLAGS"
4077 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004078 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004079 [#include <gtk/gtk.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004080 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ])],
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02004081 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
4082 AC_MSG_RESULT(no))
4083 CFLAGS="$ac_save_CFLAGS"
4084 LIBS="$ac_save_LIBS"
4085fi
4086
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004087AC_MSG_CHECKING(--enable-gpm argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004088AC_ARG_ENABLE(gpm,
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004089 [ --enable-gpm=OPTS Use gpm (Linux mouse daemon). default=yes OPTS=yes/no/dynamic], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00004090 [enable_gpm="yes"])
4091
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004092if test "$enable_gpm" = "yes" -o "$enable_gpm" = "dynamic"; then
4093 AC_MSG_RESULT($enable_gpm)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004094 dnl Checking if gpm support can be compiled
4095 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
4096 [olibs="$LIBS" ; LIBS="-lgpm"]
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004097 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004098 [#include <gpm.h>
4099 #include <linux/keyboard.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004100 [Gpm_GetLibVersion(NULL);])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004101 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
4102 dnl FEAT_MOUSE_GPM if mouse support is included
4103 [vi_cv_have_gpm=yes],
4104 [vi_cv_have_gpm=no])
4105 [LIBS="$olibs"]
4106 )
4107 if test $vi_cv_have_gpm = yes; then
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004108 if test "$enable_gpm" = "yes"; then
4109 LIBS="$LIBS -lgpm"
4110 else
4111 AC_DEFINE(DYNAMIC_GPM)
4112 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004113 AC_DEFINE(HAVE_GPM)
4114 fi
4115else
Bram Moolenaar33fc4a62022-02-23 18:07:38 +00004116 AC_MSG_RESULT(no)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004117fi
4118
Bram Moolenaar446cb832008-06-24 21:56:24 +00004119AC_MSG_CHECKING(--disable-sysmouse argument)
4120AC_ARG_ENABLE(sysmouse,
Bram Moolenaar8008b632017-07-18 21:33:20 +02004121 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
Bram Moolenaar446cb832008-06-24 21:56:24 +00004122 [enable_sysmouse="yes"])
4123
4124if test "$enable_sysmouse" = "yes"; then
4125 AC_MSG_RESULT(no)
4126 dnl Checking if sysmouse support can be compiled
4127 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
4128 dnl defines FEAT_SYSMOUSE if mouse support is included
4129 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004130 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar446cb832008-06-24 21:56:24 +00004131 [#include <sys/consio.h>
4132 #include <signal.h>
4133 #include <sys/fbio.h>],
4134 [struct mouse_info mouse;
4135 mouse.operation = MOUSE_MODE;
4136 mouse.operation = MOUSE_SHOW;
4137 mouse.u.mode.mode = 0;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004138 mouse.u.mode.signal = SIGUSR2;])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004139 [vi_cv_have_sysmouse=yes],
4140 [vi_cv_have_sysmouse=no])
4141 )
4142 if test $vi_cv_have_sysmouse = yes; then
4143 AC_DEFINE(HAVE_SYSMOUSE)
4144 fi
4145else
4146 AC_MSG_RESULT(yes)
4147fi
4148
Bram Moolenaarf05da212009-11-17 16:13:15 +00004149dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
4150AC_MSG_CHECKING(for FD_CLOEXEC)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004151AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarf05da212009-11-17 16:13:15 +00004152[#if HAVE_FCNTL_H
4153# include <fcntl.h>
4154#endif],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004155[ int flag = FD_CLOEXEC;])],
Bram Moolenaarf05da212009-11-17 16:13:15 +00004156 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
4157 AC_MSG_RESULT(not usable))
4158
Bram Moolenaar071d4272004-06-13 20:20:40 +00004159dnl rename needs to be checked separately to work on Nextstep with cc
4160AC_MSG_CHECKING(for rename)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004161AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [rename("this", "that")])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004162 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
4163 AC_MSG_RESULT(no))
4164
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004165dnl check for dirfd()
4166AC_MSG_CHECKING(for dirfd)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004167AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004168[#include <sys/types.h>
4169#include <dirent.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004170[DIR * dir=opendir("dirname"); dirfd(dir);])],
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004171AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DIRFD), AC_MSG_RESULT(not usable))
4172
4173dnl check for flock()
4174AC_MSG_CHECKING(for flock)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004175AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004176[#include <sys/file.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004177[flock(10, LOCK_SH);])],
Bram Moolenaarb2d0e512020-05-07 18:37:03 +02004178AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOCK), AC_MSG_RESULT(not usable))
4179
Bram Moolenaar071d4272004-06-13 20:20:40 +00004180dnl sysctl() may exist but not the arguments we use
4181AC_MSG_CHECKING(for sysctl)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004182AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004183[#include <sys/types.h>
4184#include <sys/sysctl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004185[[ int mib[2], r;
Bram Moolenaar071d4272004-06-13 20:20:40 +00004186 size_t len;
4187
4188 mib[0] = CTL_HW;
4189 mib[1] = HW_USERMEM;
4190 len = sizeof(r);
4191 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004192 ]])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004193 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
4194 AC_MSG_RESULT(not usable))
4195
Bram Moolenaare2982d62021-10-06 11:27:21 +01004196dnl sysinfo() may exist but not be Linux compatible.
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004197dnl On some FreeBSD systems it may depend on libsysinfo, try to link
Bram Moolenaar071d4272004-06-13 20:20:40 +00004198AC_MSG_CHECKING(for sysinfo)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004199AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004200[#include <sys/types.h>
4201#include <sys/sysinfo.h>],
4202[ struct sysinfo sinfo;
4203 int t;
4204
4205 (void)sysinfo(&sinfo);
4206 t = sinfo.totalram;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004207 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004208 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
4209 AC_MSG_RESULT(not usable))
4210
Bram Moolenaar914572a2007-05-01 11:37:47 +00004211dnl struct sysinfo may have the mem_unit field or not
4212AC_MSG_CHECKING(for sysinfo.mem_unit)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004213AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar914572a2007-05-01 11:37:47 +00004214[#include <sys/types.h>
4215#include <sys/sysinfo.h>],
4216[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02004217 sinfo.mem_unit = 1;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004218 ])],
Bram Moolenaar914572a2007-05-01 11:37:47 +00004219 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
4220 AC_MSG_RESULT(no))
4221
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004222dnl struct sysinfo may have the uptime field or not
4223AC_MSG_CHECKING(for sysinfo.uptime)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004224AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004225[#include <sys/types.h>
4226#include <sys/sysinfo.h>],
4227[ struct sysinfo sinfo;
4228 long ut;
4229
4230 (void)sysinfo(&sinfo);
4231 ut = sinfo.uptime;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004232 ])],
Bram Moolenaarf52f0602021-03-10 21:26:37 +01004233 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_UPTIME),
4234 AC_MSG_RESULT(no))
4235
Bram Moolenaar071d4272004-06-13 20:20:40 +00004236dnl sysconf() may exist but not support what we want to use
4237AC_MSG_CHECKING(for sysconf)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004238AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004239[#include <unistd.h>],
4240[ (void)sysconf(_SC_PAGESIZE);
4241 (void)sysconf(_SC_PHYS_PAGES);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004242 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004243 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
4244 AC_MSG_RESULT(not usable))
4245
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004246dnl check if we have _SC_SIGSTKSZ via sysconf()
4247AC_MSG_CHECKING(for _SC_SIGSTKSZ via sysconf())
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004248AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004249[#include <unistd.h>],
4250[ (void)sysconf(_SC_SIGSTKSZ);
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004251 ])],
Bram Moolenaar0e62a672021-02-25 17:17:56 +01004252 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF_SIGSTKSZ),
4253 AC_MSG_RESULT(not usable))
4254
Bram Moolenaar914703b2010-05-31 21:59:46 +02004255AC_CHECK_SIZEOF([int])
4256AC_CHECK_SIZEOF([long])
4257AC_CHECK_SIZEOF([time_t])
4258AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02004259
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01004260dnl Use different names to avoid clashing with other header files.
4261AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
4262AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
4263
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004264dnl Make sure that uint32_t is really 32 bits unsigned.
4265AC_MSG_CHECKING([uint32_t is 32 bits])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004266AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004267#ifdef HAVE_STDINT_H
4268# include <stdint.h>
4269#endif
4270#ifdef HAVE_INTTYPES_H
4271# include <inttypes.h>
4272#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01004273int main() {
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004274 uint32_t nr1 = (uint32_t)-1;
4275 uint32_t nr2 = (uint32_t)0xffffffffUL;
Bram Moolenaar52897832020-07-02 22:50:37 +02004276 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) return 1;
4277 return 0;
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004278}])],
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004279AC_MSG_RESULT(ok),
4280AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01004281AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004282
Bram Moolenaar446cb832008-06-24 21:56:24 +00004283dnl Check for memmove() before bcopy(), makes memmove() be used when both are
4284dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
4285
Bram Moolenaar071d4272004-06-13 20:20:40 +00004286[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00004287#include "confdefs.h"
4288#ifdef HAVE_STRING_H
4289# include <string.h>
4290#endif
4291#if STDC_HEADERS
4292# include <stdlib.h>
4293# include <stddef.h>
4294#endif
Bram Moolenaar0f0d3a72022-06-19 18:02:05 +01004295int main() {
Bram Moolenaar071d4272004-06-13 20:20:40 +00004296 char buf[10];
4297 strcpy(buf, "abcdefghi");
4298 mch_memmove(buf, buf + 2, 3);
4299 if (strncmp(buf, "ababcf", 6))
4300 exit(1);
4301 strcpy(buf, "abcdefghi");
4302 mch_memmove(buf + 2, buf, 3);
4303 if (strncmp(buf, "cdedef", 6))
4304 exit(1);
4305 exit(0); /* libc version works properly. */
4306}']
4307
Bram Moolenaar446cb832008-06-24 21:56:24 +00004308AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
4309 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004310 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 +00004311 [
4312 vim_cv_memmove_handles_overlap=yes
4313 ],[
4314 vim_cv_memmove_handles_overlap=no
4315 ],[
4316 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
4317 ])
4318 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004319
Bram Moolenaar446cb832008-06-24 21:56:24 +00004320if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4321 AC_DEFINE(USEMEMMOVE)
4322else
4323 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4324 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004325 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 +00004326 [
4327 vim_cv_bcopy_handles_overlap=yes
4328 ],[
4329 vim_cv_bcopy_handles_overlap=no
4330 ],[
4331 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4332 ])
4333 ])
4334
4335 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4336 AC_DEFINE(USEBCOPY)
4337 else
4338 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4339 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004340 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 +00004341 [
4342 vim_cv_memcpy_handles_overlap=yes
4343 ],[
4344 vim_cv_memcpy_handles_overlap=no
4345 ],[
4346 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4347 ])
4348 ])
4349
4350 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4351 AC_DEFINE(USEMEMCPY)
4352 fi
4353 fi
4354fi
4355
Bram Moolenaar071d4272004-06-13 20:20:40 +00004356
4357dnl Check for multibyte locale functions
4358dnl Find out if _Xsetlocale() is supported by libX11.
4359dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004360if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004361 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004362 libs_save=$LIBS
4363 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4364 CFLAGS="$CFLAGS $X_CFLAGS"
4365
4366 AC_MSG_CHECKING(whether X_LOCALE needed)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004367 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <X11/Xlocale.h>],)],
4368 AC_LINK_IFELSE([AC_LANG_CALL([],[_Xsetlocale])], [AC_MSG_RESULT(yes)
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004369 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4370 AC_MSG_RESULT(no))
4371
4372 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004373 AC_LINK_IFELSE([AC_LANG_CALL([],[Xutf8SetWMProperties])], [AC_MSG_RESULT(yes)
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004374 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4375
Bram Moolenaar071d4272004-06-13 20:20:40 +00004376 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004377 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004378fi
4379
4380dnl Link with xpg4, it is said to make Korean locale working
4381AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4382
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004383dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004384dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004385dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004386dnl -t for typedefs (many ctags have this)
4387dnl -s for static functions (Elvis ctags only?)
4388dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4389dnl -i+m to test for older Exuberant ctags
4390AC_MSG_CHECKING(how to create tags)
4391test -f tags && mv tags tags.save
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004392if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1; then
Bram Moolenaar509ff062020-01-02 22:38:49 +01004393 TAGPRG="ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004394elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1; then
Bram Moolenaar509ff062020-01-02 22:38:49 +01004395 TAGPRG="exctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004396elif (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 +01004397 TAGPRG="exuberant-ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004398else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004399 TAGPRG="ctags"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004400 (eval etags /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="etags"
4401 (eval etags -c /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="etags -c"
4402 (eval ctags /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags"
4403 (eval ctags -t /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -t"
4404 (eval ctags -ts /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -ts"
4405 (eval ctags -tvs /dev/null) < /dev/null 1>&AS_MESSAGE_LOG_FD 2>&1 && TAGPRG="ctags -tvs"
4406 (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 +00004407fi
4408test -f tags.save && mv tags.save tags
4409AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4410
4411dnl Check how we can run man with a section number
4412AC_MSG_CHECKING(how to run man with a section nr)
4413MANDEF="man"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004414(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 +00004415AC_MSG_RESULT($MANDEF)
4416if test "$MANDEF" = "man -s"; then
4417 AC_DEFINE(USEMAN_S)
4418fi
4419
4420dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004421dnl We take care to base this on an empty LIBS: on some systems libelf would be
4422dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4423dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004424AC_MSG_CHECKING(--disable-nls argument)
4425AC_ARG_ENABLE(nls,
4426 [ --disable-nls Don't support NLS (gettext()).], ,
4427 [enable_nls="yes"])
4428
4429if test "$enable_nls" = "yes"; then
4430 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004431
4432 INSTALL_LANGS=install-languages
4433 AC_SUBST(INSTALL_LANGS)
4434 INSTALL_TOOL_LANGS=install-tool-languages
4435 AC_SUBST(INSTALL_TOOL_LANGS)
4436
Bram Moolenaar071d4272004-06-13 20:20:40 +00004437 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4438 AC_MSG_CHECKING([for NLS])
4439 if test -f po/Makefile; then
4440 have_gettext="no"
4441 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004442 olibs=$LIBS
4443 LIBS=""
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004444 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004445 [#include <libintl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004446 [gettext("Test");])],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004447 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4448 LIBS="-lintl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004449 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004450 [#include <libintl.h>],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004451 [gettext("Test");])],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004452 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4453 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004454 AC_MSG_RESULT([gettext() doesn't work]);
4455 LIBS=$olibs))
4456 else
4457 AC_MSG_RESULT([msgfmt not found - disabled]);
4458 fi
Martin Tournoij7904fa42022-10-04 16:28:45 +01004459 if test $have_gettext = "yes" -a "x$features" != "xtiny"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004460 AC_DEFINE(HAVE_GETTEXT)
4461 MAKEMO=yes
4462 AC_SUBST(MAKEMO)
4463 dnl this was added in GNU gettext 0.10.36
4464 AC_CHECK_FUNCS(bind_textdomain_codeset)
4465 dnl _nl_msg_cat_cntr is required for GNU gettext
4466 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004467 AC_LINK_IFELSE([AC_LANG_PROGRAM(
Bram Moolenaar071d4272004-06-13 20:20:40 +00004468 [#include <libintl.h>
4469 extern int _nl_msg_cat_cntr;],
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004470 [++_nl_msg_cat_cntr;])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004471 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4472 AC_MSG_RESULT([no]))
Bram Moolenaar26096cc2019-04-11 15:25:40 +02004473 AC_MSG_CHECKING([if msgfmt supports --desktop])
4474 MSGFMT_DESKTOP=
4475 if "$MSGFMT" --help | grep -e '--desktop' >/dev/null; then
Bram Moolenaar62a88f42019-06-07 20:44:40 +02004476 if "$MSGFMT" --version | grep '0.19.[[3-7]]$' >/dev/null; then
4477 dnl GNU gettext 0.19.7's --desktop is broken. We assume back to
4478 dnl 0.19.3 is also broken.
4479 AC_MSG_RESULT([broken])
4480 else
4481 AC_MSG_RESULT([yes])
4482 MSGFMT_DESKTOP="gvim.desktop vim.desktop"
4483 fi
Bram Moolenaar26096cc2019-04-11 15:25:40 +02004484 else
4485 AC_MSG_RESULT([no])
4486 fi
4487 AC_SUBST(MSGFMT_DESKTOP)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004488 fi
4489 else
4490 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4491 fi
4492else
4493 AC_MSG_RESULT(yes)
4494fi
4495
4496dnl Check for dynamic linking loader
4497AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4498if test x${DLL} = xdlfcn.h; then
4499 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4500 AC_MSG_CHECKING([for dlopen()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004501 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004502 extern void* dlopen();
4503 dlopen();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004504 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004505 AC_MSG_RESULT(yes);
4506 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4507 AC_MSG_RESULT(no);
4508 AC_MSG_CHECKING([for dlopen() in -ldl])
4509 olibs=$LIBS
4510 LIBS="$LIBS -ldl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004511 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004512 extern void* dlopen();
4513 dlopen();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004514 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004515 AC_MSG_RESULT(yes);
4516 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4517 AC_MSG_RESULT(no);
4518 LIBS=$olibs))
4519 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4520 dnl ick :-)
4521 AC_MSG_CHECKING([for dlsym()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004522 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004523 extern void* dlsym();
4524 dlsym();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004525 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004526 AC_MSG_RESULT(yes);
4527 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4528 AC_MSG_RESULT(no);
4529 AC_MSG_CHECKING([for dlsym() in -ldl])
4530 olibs=$LIBS
4531 LIBS="$LIBS -ldl"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004532 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004533 extern void* dlsym();
4534 dlsym();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004535 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004536 AC_MSG_RESULT(yes);
4537 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4538 AC_MSG_RESULT(no);
4539 LIBS=$olibs))
4540elif test x${DLL} = xdl.h; then
4541 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4542 AC_MSG_CHECKING([for shl_load()])
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004543 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004544 extern void* shl_load();
4545 shl_load();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004546 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004547 AC_MSG_RESULT(yes);
4548 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4549 AC_MSG_RESULT(no);
4550 AC_MSG_CHECKING([for shl_load() in -ldld])
4551 olibs=$LIBS
4552 LIBS="$LIBS -ldld"
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004553 AC_LINK_IFELSE([AC_LANG_PROGRAM(,[
Bram Moolenaar071d4272004-06-13 20:20:40 +00004554 extern void* shl_load();
4555 shl_load();
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004556 ])],
Bram Moolenaar071d4272004-06-13 20:20:40 +00004557 AC_MSG_RESULT(yes);
4558 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4559 AC_MSG_RESULT(no);
4560 LIBS=$olibs))
4561fi
4562AC_CHECK_HEADERS(setjmp.h)
4563
Bram Moolenaard0573012017-10-28 21:11:06 +02004564if test "x$MACOS_X" = "xyes" -a -n "$PERL"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004565 dnl -ldl must come after DynaLoader.a
4566 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4567 LIBS=`echo $LIBS | sed s/-ldl//`
4568 PERL_LIBS="$PERL_LIBS -ldl"
4569 fi
4570fi
4571
Bram Moolenaard0573012017-10-28 21:11:06 +02004572if test "$MACOS_X" = "yes"; then
4573 AC_MSG_CHECKING([whether we need macOS frameworks])
Bram Moolenaar097148e2020-08-11 21:58:20 +02004574 if test "$MACOS_X_DARWIN" = "yes"; then
Bram Moolenaard0573012017-10-28 21:11:06 +02004575 if test "$features" = "tiny"; then
Yee Cheng Chin4314e4f2022-10-08 13:50:05 +01004576 dnl Since no FEAT_CLIPBOARD or FEAT_SOUND, no need for os_macosx.m.
Bram Moolenaard0573012017-10-28 21:11:06 +02004577 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4578 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
Bram Moolenaar2be7cb72019-01-12 16:10:51 +01004579 AC_MSG_RESULT([yes, we need CoreServices])
4580 LIBS="$LIBS -framework CoreServices"
Bram Moolenaard0573012017-10-28 21:11:06 +02004581 else
4582 AC_MSG_RESULT([yes, we need AppKit])
4583 LIBS="$LIBS -framework AppKit"
Bram Moolenaard0573012017-10-28 21:11:06 +02004584 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004585 else
Bram Moolenaard0573012017-10-28 21:11:06 +02004586 AC_MSG_RESULT([no])
Bram Moolenaar3437b912013-07-03 19:52:53 +02004587 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004588fi
4589
Bram Moolenaar3ae5fc92021-09-06 18:57:30 +02004590dnl On some systems REENTRANT needs to be defined. It should not hurt to use
4591dnl it everywhere.
4592if `echo "$CFLAGS" | grep -v D_REENTRANT >/dev/null`; then
4593 CFLAGS="$CFLAGS -D_REENTRANT"
4594fi
4595
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004596dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4597dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4598dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004599dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4600dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004601DEPEND_CFLAGS_FILTER=
4602if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004603 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar348808f2020-02-07 20:50:07 +01004604 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]][[0-9]]*\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004605 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004606 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004607 AC_MSG_RESULT(yes)
4608 else
4609 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004610 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004611 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4612 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004613 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004614 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004615 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4616 if test "$gccmajor" -gt "3"; then
Zdenek Dohnal42196982023-01-18 16:09:51 +00004617 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/'`
4618 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 +00004619 AC_MSG_RESULT(yes)
4620 else
4621 AC_MSG_RESULT(no)
4622 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004623fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004624AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004625
Bram Moolenaarec0557f2018-01-31 14:41:37 +01004626dnl On some systems AC_SYS_LARGEFILE determines that -D_FILE_OFFSET_BITS=64
4627dnl isn't required, but the CFLAGS for some of the libraries we're using
4628dnl include the define. Since the define changes the size of some datatypes
4629dnl (e.g. ino_t and off_t), all of Vim's modules must be compiled with a
4630dnl consistent value. It's therefore safest to force the use of the define
4631dnl if it's present in any of the *_CFLAGS variables.
4632AC_MSG_CHECKING(whether we need to force -D_FILE_OFFSET_BITS=64)
Bram Moolenaar9ce42132018-04-11 22:19:36 +02004633if 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 +01004634 AC_MSG_RESULT(yes)
4635 AC_DEFINE(_FILE_OFFSET_BITS, 64)
4636else
4637 AC_MSG_RESULT(no)
4638fi
4639
Bram Moolenaar6cd42db2020-12-04 18:09:54 +01004640dnl $LDFLAGS is passed to glibtool in libvterm, it doesn't like a space
4641dnl between "-L" and the path that follows.
4642LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-L /-L/g'`
4643
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004644dnl link.sh tries to avoid overlinking in a hackish way.
4645dnl At least GNU ld supports --as-needed which provides the same functionality
4646dnl at linker level. Let's use it.
4647AC_MSG_CHECKING(linker --as-needed support)
4648LINK_AS_NEEDED=
4649# Check if linker supports --as-needed and --no-as-needed options
4650if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Natanael Copa761ead42021-05-15 14:25:37 +02004651 if ! echo "$LDFLAGS" | grep -q -- '-Wl,[[^[:space:]]]*--as-needed'; then
4652 LDFLAGS="$LDFLAGS -Wl,--as-needed"
4653 fi
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004654 LINK_AS_NEEDED=yes
4655fi
4656if test "$LINK_AS_NEEDED" = yes; then
4657 AC_MSG_RESULT(yes)
4658else
4659 AC_MSG_RESULT(no)
4660fi
4661AC_SUBST(LINK_AS_NEEDED)
4662
Bram Moolenaar77c19352012-06-13 19:19:41 +02004663# IBM z/OS reset CFLAGS for config.mk
4664if test "$zOSUnix" = "yes"; then
4665 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4666fi
4667
Bram Moolenaar071d4272004-06-13 20:20:40 +00004668dnl write output files
Bram Moolenaar1004b3d2022-06-05 19:51:55 +01004669AC_CONFIG_FILES(auto/config.mk:config.mk.in)
4670AC_OUTPUT
Bram Moolenaar071d4272004-06-13 20:20:40 +00004671
4672dnl vim: set sw=2 tw=78 fo+=l: