blob: d1d78388020f753bb555eed824109052069769d0 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
Bram Moolenaar2bcaec32014-03-27 18:51:11 +010017AC_PROG_FGREP dnl finds working grep -F
Bram Moolenaar071d4272004-06-13 20:20:40 +000018AC_ISC_POSIX dnl required by AC_C_CROSS
19AC_PROG_AWK dnl required for "make html" in ../doc
20
21dnl Don't strip if we don't have it
22AC_CHECK_PROG(STRIP, strip, strip, :)
23
Bram Moolenaar325b7a22004-07-05 15:58:32 +000024dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000025AC_EXEEXT
26
Bram Moolenaar446cb832008-06-24 21:56:24 +000027dnl Check for standard headers. We don't use this in Vim but other stuff
28dnl in autoconf needs it, where it uses STDC_HEADERS.
29AC_HEADER_STDC
30AC_HEADER_SYS_WAIT
31
Bram Moolenaarf788a062011-12-14 20:51:25 +010032dnl Check for the flag that fails if stuff are missing.
33
34AC_MSG_CHECKING(--enable-fail-if-missing argument)
35AC_ARG_ENABLE(fail_if_missing,
36 [ --enable-fail-if-missing Fail if dependencies on additional features
37 specified on the command line are missing.],
38 [fail_if_missing="yes"],
39 [fail_if_missing="no"])
40AC_MSG_RESULT($fail_if_missing)
41
Bram Moolenaar071d4272004-06-13 20:20:40 +000042dnl Set default value for CFLAGS if none is defined or it's empty
43if test -z "$CFLAGS"; then
44 CFLAGS="-O"
45 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
46fi
47if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000048 dnl method that should work for nearly all versions
Bram Moolenaarc8836f72014-04-12 13:12:24 +020049 gccversion=`$CC -dumpversion`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000050 if test "x$gccversion" = "x"; then
51 dnl old method; fall-back for when -dumpversion doesn't work
Bram Moolenaarc8836f72014-04-12 13:12:24 +020052 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 +000053 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000054 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
55 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000056 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000057 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
58 else
59 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
60 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
61 CFLAGS="$CFLAGS -fno-strength-reduce"
62 fi
63 fi
64fi
65
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020066dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
67dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
68dnl the version number of the clang in use.
69dnl Note that this does not work to get the version of clang 3.1 or 3.2.
70AC_MSG_CHECKING(for recent clang version)
Bram Moolenaarc8836f72014-04-12 13:12:24 +020071CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'`
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020072if test x"$CLANG_VERSION_STRING" != x"" ; then
73 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
74 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
75 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
76 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
77 AC_MSG_RESULT($CLANG_VERSION)
78 dnl If you find the same issue with versions earlier than 500.2.75,
79 dnl change the constant 500002075 below appropriately. To get the
80 dnl integer corresponding to a version number, refer to the
81 dnl definition of CLANG_VERSION above.
82 if test "$CLANG_VERSION" -ge 500002075 ; then
83 CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
84 fi
85else
86 AC_MSG_RESULT(no)
87fi
88
Bram Moolenaar446cb832008-06-24 21:56:24 +000089dnl If configure thinks we are cross compiling, there might be something
90dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar839e9542016-04-14 16:46:02 +020091CROSS_COMPILING=
Bram Moolenaar071d4272004-06-13 20:20:40 +000092if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000093 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar839e9542016-04-14 16:46:02 +020094 CROSS_COMPILING=1
Bram Moolenaar071d4272004-06-13 20:20:40 +000095fi
Bram Moolenaar839e9542016-04-14 16:46:02 +020096AC_SUBST(CROSS_COMPILING)
Bram Moolenaar071d4272004-06-13 20:20:40 +000097
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000098dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
99dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000100test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
101
102if test -f ./toolcheck; then
103 AC_CHECKING(for buggy tools)
104 sh ./toolcheck 1>&AC_FD_MSG
105fi
106
107OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
108
109dnl Check for BeOS, which needs an extra source file
110AC_MSG_CHECKING(for BeOS)
111case `uname` in
112 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
113 BEOS=yes; AC_MSG_RESULT(yes);;
114 *) BEOS=no; AC_MSG_RESULT(no);;
115esac
116
117dnl If QNX is found, assume we don't want to use Xphoton
118dnl unless it was specifically asked for (--with-x)
119AC_MSG_CHECKING(for QNX)
120case `uname` in
121 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
122 test -z "$with_x" && with_x=no
123 QNX=yes; AC_MSG_RESULT(yes);;
124 *) QNX=no; AC_MSG_RESULT(no);;
125esac
126
127dnl Check for Darwin and MacOS X
128dnl We do a check for MacOS X in the very beginning because there
129dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130AC_MSG_CHECKING([for Darwin (Mac OS X)])
131if test "`(uname) 2>/dev/null`" = Darwin; then
132 AC_MSG_RESULT(yes)
133
134 AC_MSG_CHECKING(--disable-darwin argument)
135 AC_ARG_ENABLE(darwin,
136 [ --disable-darwin Disable Darwin (Mac OS X) support.],
137 , [enable_darwin="yes"])
138 if test "$enable_darwin" = "yes"; then
139 AC_MSG_RESULT(no)
140 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200141 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142 AC_MSG_RESULT(yes)
143 else
144 AC_MSG_RESULT([no, Darwin support disabled])
145 enable_darwin=no
146 fi
147 else
148 AC_MSG_RESULT([yes, Darwin support excluded])
149 fi
150
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000151 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000152 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000154 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 AC_MSG_CHECKING(--with-developer-dir argument)
157 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
158 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
Bram Moolenaar32d03b32015-11-19 13:46:48 +0100159 AC_MSG_RESULT(not present))
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100160
161 if test "x$DEVELOPER_DIR" = "x"; then
162 AC_PATH_PROG(XCODE_SELECT, xcode-select)
163 if test "x$XCODE_SELECT" != "x"; then
164 AC_MSG_CHECKING(for developer dir using xcode-select)
165 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
166 AC_MSG_RESULT([$DEVELOPER_DIR])
167 else
168 DEVELOPER_DIR=/Developer
169 fi
170 fi
171
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000172 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000173 AC_MSG_CHECKING(for 10.4 universal SDK)
174 dnl There is a terrible inconsistency (but we appear to get away with it):
175 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
176 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
177 dnl tests using the preprocessor are actually done with the wrong header
178 dnl files. $LDFLAGS is set at the end, because configure uses it together
179 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000180 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000181 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000182 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100183 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000184 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000185 AC_MSG_RESULT(found, will make universal binary),
186
187 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000188 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000189 AC_MSG_CHECKING(if Intel architecture is supported)
190 CPPFLAGS="$CPPFLAGS -arch i386"
191 LDFLAGS="$save_ldflags -arch i386"
192 AC_TRY_LINK([ ], [ ],
193 AC_MSG_RESULT(yes); MACARCH="intel",
194 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000195 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000196 CPPFLAGS="$save_cppflags -arch ppc"
197 LDFLAGS="$save_ldflags -arch ppc"))
198 elif test "x$MACARCH" = "xintel"; then
199 CPPFLAGS="$CPPFLAGS -arch intel"
200 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000201 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000202 CPPFLAGS="$CPPFLAGS -arch ppc"
203 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000204 fi
205
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206 if test "$enable_darwin" = "yes"; then
207 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200208 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000209 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000210 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100211 dnl Removed -no-cpp-precomp, only for very old compilers.
212 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213
214 dnl If Carbon is found, assume we don't want X11
215 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000216 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
218 if test "x$CARBON" = "xyes"; then
Bram Moolenaar98921892016-02-23 17:14:37 +0100219 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2 -a "X$enable_gui" != Xgtk3; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000221 fi
222 fi
223 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000224
Bram Moolenaardb552d602006-03-23 22:59:57 +0000225 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000226 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000227 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000228 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
229 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
230 fi
231
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232else
233 AC_MSG_RESULT(no)
234fi
235
Bram Moolenaar39766a72013-11-03 00:41:00 +0100236dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
237dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100238AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100239
Bram Moolenaar071d4272004-06-13 20:20:40 +0000240AC_SUBST(OS_EXTRA_SRC)
241AC_SUBST(OS_EXTRA_OBJ)
242
243dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
244dnl Only when the directory exists and it wasn't there yet.
245dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000246dnl Skip all of this when cross-compiling.
247if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000248 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000249 have_local_include=''
250 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000251 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
252 --without-local-dir do not search /usr/local for local libraries.], [
253 local_dir="$withval"
254 case "$withval" in
255 */*) ;;
256 no)
257 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200258 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000259 have_local_lib=yes
260 ;;
261 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
262 esac
263 AC_MSG_RESULT($local_dir)
264 ], [
265 local_dir=/usr/local
266 AC_MSG_RESULT(Defaulting to $local_dir)
267 ])
268 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000269 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100270 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
271 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000272 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000273 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000275 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
276 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 +0000277 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000278 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000279 fi
280 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
282 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 +0000283 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000284 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000285 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000286 fi
287fi
288
289AC_MSG_CHECKING(--with-vim-name argument)
290AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
291 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000292 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000293AC_SUBST(VIMNAME)
294AC_MSG_CHECKING(--with-ex-name argument)
295AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
296 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
297 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
298AC_SUBST(EXNAME)
299AC_MSG_CHECKING(--with-view-name argument)
300AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
301 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
302 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
303AC_SUBST(VIEWNAME)
304
305AC_MSG_CHECKING(--with-global-runtime argument)
306AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
307 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
308 AC_MSG_RESULT(no))
309
310AC_MSG_CHECKING(--with-modified-by argument)
311AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
312 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
313 AC_MSG_RESULT(no))
314
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200315dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000316AC_MSG_CHECKING(if character set is EBCDIC)
317AC_TRY_COMPILE([ ],
318[ /* TryCompile function for CharSet.
319 Treat any failure as ASCII for compatibility with existing art.
320 Use compile-time rather than run-time tests for cross-compiler
321 tolerance. */
322#if '0'!=240
323make an error "Character set is not EBCDIC"
324#endif ],
325[ # TryCompile action if true
326cf_cv_ebcdic=yes ],
327[ # TryCompile action if false
328cf_cv_ebcdic=no])
329# end of TryCompile ])
330# end of CacheVal CvEbcdic
331AC_MSG_RESULT($cf_cv_ebcdic)
332case "$cf_cv_ebcdic" in #(vi
333 yes) AC_DEFINE(EBCDIC)
334 line_break='"\\n"'
335 ;;
336 *) line_break='"\\012"';;
337esac
338AC_SUBST(line_break)
339
340if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200341dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200342AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000343case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200344 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000345 dnl If using cc the environment variable _CC_CCMODE must be
346 dnl set to "1", so that some compiler extensions are enabled.
347 dnl If using c89 the environment variable is named _CC_C89MODE.
348 dnl Note: compile with c89 never tested.
349 if test "$CC" = "cc"; then
350 ccm="$_CC_CCMODE"
351 ccn="CC"
352 else
353 if test "$CC" = "c89"; then
354 ccm="$_CC_C89MODE"
355 ccn="C89"
356 else
357 ccm=1
358 fi
359 fi
360 if test "$ccm" != "1"; then
361 echo ""
362 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200363 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200364 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000365 echo " Do:"
366 echo " export _CC_${ccn}MODE=1"
367 echo " and then call configure again."
368 echo "------------------------------------------"
369 exit 1
370 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200371 # Set CFLAGS for configure process.
372 # This will be reset later for config.mk.
373 # Use haltonmsg to force error for missing H files.
374 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
375 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000376 AC_MSG_RESULT(yes)
377 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200378 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000379 AC_MSG_RESULT(no)
380 ;;
381esac
382fi
383
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200384dnl Set QUOTESED. Needs additional backslashes on zOS
385if test "$zOSUnix" = "yes"; then
386 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
387else
388 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
389fi
390AC_SUBST(QUOTESED)
391
392
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200393dnl Link with -lsmack for Smack stuff; if not found
394AC_MSG_CHECKING(--disable-smack argument)
395AC_ARG_ENABLE(smack,
396 [ --disable-smack Do not check for Smack support.],
397 , enable_smack="yes")
398if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200399 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200400 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200401else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200402 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200403fi
404if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200405 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
406fi
407if test "$enable_smack" = "yes"; then
408 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
409 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
410 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200411 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200412fi
413if test "$enable_smack" = "yes"; then
414 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200415 [LIBS="$LIBS -lattr"
416 found_smack="yes"
417 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000418fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000419
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200420dnl When smack was found don't search for SELinux
421if test "x$found_smack" = "x"; then
422 dnl Link with -lselinux for SELinux stuff; if not found
423 AC_MSG_CHECKING(--disable-selinux argument)
424 AC_ARG_ENABLE(selinux,
425 [ --disable-selinux Do not check for SELinux support.],
426 , enable_selinux="yes")
427 if test "$enable_selinux" = "yes"; then
428 AC_MSG_RESULT(no)
429 AC_CHECK_LIB(selinux, is_selinux_enabled,
430 [LIBS="$LIBS -lselinux"
431 AC_DEFINE(HAVE_SELINUX)])
432 else
433 AC_MSG_RESULT(yes)
434 fi
435fi
436
Bram Moolenaar071d4272004-06-13 20:20:40 +0000437dnl Check user requested features.
438
439AC_MSG_CHECKING(--with-features argument)
440AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
441 features="$withval"; AC_MSG_RESULT($features),
Bram Moolenaar23c4f712016-01-20 22:11:59 +0100442 features="huge"; AC_MSG_RESULT(Defaulting to huge))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000443
444dovimdiff=""
445dogvimdiff=""
446case "$features" in
447 tiny) AC_DEFINE(FEAT_TINY) ;;
448 small) AC_DEFINE(FEAT_SMALL) ;;
449 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
450 dogvimdiff="installgvimdiff" ;;
451 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
452 dogvimdiff="installgvimdiff" ;;
453 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
454 dogvimdiff="installgvimdiff" ;;
455 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
456esac
457
458AC_SUBST(dovimdiff)
459AC_SUBST(dogvimdiff)
460
461AC_MSG_CHECKING(--with-compiledby argument)
462AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
463 compiledby="$withval"; AC_MSG_RESULT($withval),
464 compiledby=""; AC_MSG_RESULT(no))
465AC_SUBST(compiledby)
466
467AC_MSG_CHECKING(--disable-xsmp argument)
468AC_ARG_ENABLE(xsmp,
469 [ --disable-xsmp Disable XSMP session management],
470 , enable_xsmp="yes")
471
472if test "$enable_xsmp" = "yes"; then
473 AC_MSG_RESULT(no)
474 AC_MSG_CHECKING(--disable-xsmp-interact argument)
475 AC_ARG_ENABLE(xsmp-interact,
476 [ --disable-xsmp-interact Disable XSMP interaction],
477 , enable_xsmp_interact="yes")
478 if test "$enable_xsmp_interact" = "yes"; then
479 AC_MSG_RESULT(no)
480 AC_DEFINE(USE_XSMP_INTERACT)
481 else
482 AC_MSG_RESULT(yes)
483 fi
484else
485 AC_MSG_RESULT(yes)
486fi
487
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200488dnl Check for Lua feature.
489AC_MSG_CHECKING(--enable-luainterp argument)
490AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200491 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200492 [enable_luainterp="no"])
493AC_MSG_RESULT($enable_luainterp)
494
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200495if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100496 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
497 AC_MSG_ERROR([cannot use Lua with tiny or small features])
498 fi
499
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200500 dnl -- find the lua executable
501 AC_SUBST(vi_cv_path_lua)
502
503 AC_MSG_CHECKING(--with-lua-prefix argument)
504 AC_ARG_WITH(lua_prefix,
505 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
506 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200507 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200508
509 if test "X$with_lua_prefix" != "X"; then
510 vi_cv_path_lua_pfx="$with_lua_prefix"
511 else
512 AC_MSG_CHECKING(LUA_PREFIX environment var)
513 if test "X$LUA_PREFIX" != "X"; then
514 AC_MSG_RESULT("$LUA_PREFIX")
515 vi_cv_path_lua_pfx="$LUA_PREFIX"
516 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200517 AC_MSG_RESULT([not set, default to /usr])
518 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200519 fi
520 fi
521
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200522 AC_MSG_CHECKING(--with-luajit)
523 AC_ARG_WITH(luajit,
524 [ --with-luajit Link with LuaJIT instead of Lua.],
525 [vi_cv_with_luajit="$withval"],
526 [vi_cv_with_luajit="no"])
527 AC_MSG_RESULT($vi_cv_with_luajit)
528
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200529 LUA_INC=
530 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200531 if test "x$vi_cv_with_luajit" != "xno"; then
532 dnl -- try to find LuaJIT executable
533 AC_PATH_PROG(vi_cv_path_luajit, luajit)
534 if test "X$vi_cv_path_luajit" != "X"; then
535 dnl -- find LuaJIT version
536 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100537 [ 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 +0200538 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
539 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
540 vi_cv_path_lua="$vi_cv_path_luajit"
541 vi_cv_version_lua="$vi_cv_version_lua_luajit"
542 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200543 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200544 dnl -- try to find Lua executable
545 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
546 if test "X$vi_cv_path_plain_lua" != "X"; then
547 dnl -- find Lua version
548 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
549 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
550 fi
551 vi_cv_path_lua="$vi_cv_path_plain_lua"
552 vi_cv_version_lua="$vi_cv_version_plain_lua"
553 fi
554 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
555 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 +0100556 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200557 AC_MSG_RESULT(yes)
558 LUA_INC=/luajit-$vi_cv_version_luajit
559 fi
560 fi
561 if test "X$LUA_INC" = "X"; then
562 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100563 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200564 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200565 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200566 AC_MSG_RESULT(no)
567 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 +0100568 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200569 AC_MSG_RESULT(yes)
570 LUA_INC=/lua$vi_cv_version_lua
571 else
572 AC_MSG_RESULT(no)
573 vi_cv_path_lua_pfx=
574 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200575 fi
576 fi
577 fi
578
579 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200580 if test "x$vi_cv_with_luajit" != "xno"; then
581 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
582 if test "X$multiarch" != "X"; then
583 lib_multiarch="lib/${multiarch}"
584 else
585 lib_multiarch="lib"
586 fi
587 if test "X$vi_cv_version_lua" = "X"; then
588 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
589 else
590 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
591 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200592 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200593 if test "X$LUA_INC" != "X"; then
594 dnl Test alternate location using version
595 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
596 else
597 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
598 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200599 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200600 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200601 lua_ok="yes"
602 else
603 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
604 libs_save=$LIBS
605 LIBS="$LIBS $LUA_LIBS"
606 AC_TRY_LINK(,[ ],
607 AC_MSG_RESULT(yes); lua_ok="yes",
608 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
609 LIBS=$libs_save
610 fi
611 if test "x$lua_ok" = "xyes"; then
612 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
613 LUA_SRC="if_lua.c"
614 LUA_OBJ="objects/if_lua.o"
615 LUA_PRO="if_lua.pro"
616 AC_DEFINE(FEAT_LUA)
617 fi
618 if test "$enable_luainterp" = "dynamic"; then
619 if test "x$vi_cv_with_luajit" != "xno"; then
620 luajit="jit"
621 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200622 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
623 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
624 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200625 if test "x$MACOSX" = "xyes"; then
626 ext="dylib"
627 indexes=""
628 else
629 ext="so"
630 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
631 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
632 if test "X$multiarch" != "X"; then
633 lib_multiarch="lib/${multiarch}"
634 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200635 fi
636 dnl Determine the sover for the current version, but fallback to
637 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200638 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200639 for subdir in "${lib_multiarch}" lib64 lib; do
640 if test -z "$subdir"; then
641 continue
642 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200643 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
644 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
645 for i in $indexes ""; do
646 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200647 sover2="$i"
648 break 3
649 fi
650 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100651 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200652 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200653 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200654 if test "X$sover" = "X"; then
655 AC_MSG_RESULT(no)
656 lua_ok="no"
657 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
658 else
659 AC_MSG_RESULT(yes)
660 lua_ok="yes"
661 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
662 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200663 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200664 AC_DEFINE(DYNAMIC_LUA)
665 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200666 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200667 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
669 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
670 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
671 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
672 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
673 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200674 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200675 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100676 AC_MSG_ERROR([could not configure lua])
677 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200678 AC_SUBST(LUA_SRC)
679 AC_SUBST(LUA_OBJ)
680 AC_SUBST(LUA_PRO)
681 AC_SUBST(LUA_LIBS)
682 AC_SUBST(LUA_CFLAGS)
683fi
684
685
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000686dnl Check for MzScheme feature.
687AC_MSG_CHECKING(--enable-mzschemeinterp argument)
688AC_ARG_ENABLE(mzschemeinterp,
689 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
690 [enable_mzschemeinterp="no"])
691AC_MSG_RESULT($enable_mzschemeinterp)
692
693if test "$enable_mzschemeinterp" = "yes"; then
694 dnl -- find the mzscheme executable
695 AC_SUBST(vi_cv_path_mzscheme)
696
697 AC_MSG_CHECKING(--with-plthome argument)
698 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000699 [ --with-plthome=PLTHOME Use PLTHOME.],
700 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000701 with_plthome="";AC_MSG_RESULT("no"))
702
703 if test "X$with_plthome" != "X"; then
704 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100705 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000706 else
707 AC_MSG_CHECKING(PLTHOME environment var)
708 if test "X$PLTHOME" != "X"; then
709 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000710 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100711 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000712 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000713 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000714 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000715 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000716
717 dnl resolve symbolic link, the executable is often elsewhere and there
718 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000719 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000720 lsout=`ls -l $vi_cv_path_mzscheme`
721 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
722 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
723 fi
724 fi
725
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000726 if test "X$vi_cv_path_mzscheme" != "X"; then
727 dnl -- find where MzScheme thinks it was installed
728 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000729 dnl different versions of MzScheme differ in command line processing
730 dnl use universal approach
731 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000732 (build-path (call-with-values \
733 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000734 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
735 dnl Remove a trailing slash
736 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
737 sed -e 's+/$++'` ])
738 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000739 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000740 fi
741 fi
742
743 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100744 AC_MSG_CHECKING(for racket include directory)
745 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
746 if test "X$SCHEME_INC" != "X"; then
747 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000748 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100749 AC_MSG_RESULT(not found)
750 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
751 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
752 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000753 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000754 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000755 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100756 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
757 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000758 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100759 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000760 else
761 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100762 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
763 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100764 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100765 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100766 else
767 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100768 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
769 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100770 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100771 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100772 else
773 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100774 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
775 if test -f /usr/include/racket/scheme.h; then
776 AC_MSG_RESULT(yes)
777 SCHEME_INC=/usr/include/racket
778 else
779 AC_MSG_RESULT(no)
780 vi_cv_path_mzscheme_pfx=
781 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100782 fi
783 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000784 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000785 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000786 fi
787 fi
788
789 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100790
791 AC_MSG_CHECKING(for racket lib directory)
792 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
793 if test "X$SCHEME_LIB" != "X"; then
794 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000795 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100796 AC_MSG_RESULT(not found)
797 fi
798
799 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
800 if test "X$path" != "X"; then
801 if test "x$MACOSX" = "xyes"; then
802 MZSCHEME_LIBS="-framework Racket"
803 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
804 elif test -f "${path}/libmzscheme3m.a"; then
805 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
806 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
807 elif test -f "${path}/libracket3m.a"; then
808 MZSCHEME_LIBS="${path}/libracket3m.a"
809 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
810 elif test -f "${path}/libracket.a"; then
811 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
812 elif test -f "${path}/libmzscheme.a"; then
813 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
814 else
815 dnl Using shared objects
816 if test -f "${path}/libmzscheme3m.so"; then
817 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
818 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
819 elif test -f "${path}/libracket3m.so"; then
820 MZSCHEME_LIBS="-L${path} -lracket3m"
821 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
822 elif test -f "${path}/libracket.so"; then
823 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
824 else
825 dnl try next until last
826 if test "$path" != "$SCHEME_LIB"; then
827 continue
828 fi
829 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
830 fi
831 if test "$GCC" = yes; then
832 dnl Make Vim remember the path to the library. For when it's not in
833 dnl $LD_LIBRARY_PATH.
834 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
835 elif test "`(uname) 2>/dev/null`" = SunOS &&
836 uname -r | grep '^5' >/dev/null; then
837 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
838 fi
839 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000840 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100841 if test "X$MZSCHEME_LIBS" != "X"; then
842 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000843 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100844 done
845
846 AC_MSG_CHECKING([if racket requires -pthread])
847 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
848 AC_MSG_RESULT(yes)
849 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
850 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
851 else
852 AC_MSG_RESULT(no)
853 fi
854
855 AC_MSG_CHECKING(for racket config directory)
856 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
857 if test "X$SCHEME_CONFIGDIR" != "X"; then
858 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
859 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
860 else
861 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000862 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100863
864 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100865 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))))'`
866 if test "X$SCHEME_COLLECTS" = "X"; then
867 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
868 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100869 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100870 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
871 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100872 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100873 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
874 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
875 else
876 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
877 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
878 fi
Bram Moolenaar75676462013-01-30 14:55:42 +0100879 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100880 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100881 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000882 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100883 if test "X$SCHEME_COLLECTS" != "X" ; then
884 AC_MSG_RESULT(${SCHEME_COLLECTS})
885 else
886 AC_MSG_RESULT(not found)
887 fi
888
889 AC_MSG_CHECKING(for mzscheme_base.c)
890 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000891 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100892 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
893 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100894 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100895 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100896 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100897 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
898 MZSCHEME_MOD="++lib scheme/base"
899 else
900 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
901 MZSCHEME_EXTRA="mzscheme_base.c"
902 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
903 MZSCHEME_MOD=""
904 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100905 fi
906 fi
907 if test "X$MZSCHEME_EXTRA" != "X" ; then
908 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000909 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100910 AC_MSG_RESULT(needed)
911 else
912 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000913 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100914
Bram Moolenaar9e902192013-07-17 18:58:11 +0200915 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
916 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
917
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000918 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100919 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200920
921 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
922 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
923 cflags_save=$CFLAGS
924 libs_save=$LIBS
925 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
926 LIBS="$LIBS $MZSCHEME_LIBS"
927 AC_TRY_LINK(,[ ],
928 AC_MSG_RESULT(yes); mzs_ok=yes,
929 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
930 CFLAGS=$cflags_save
931 LIBS=$libs_save
932 if test $mzs_ok = yes; then
933 MZSCHEME_SRC="if_mzsch.c"
934 MZSCHEME_OBJ="objects/if_mzsch.o"
935 MZSCHEME_PRO="if_mzsch.pro"
936 AC_DEFINE(FEAT_MZSCHEME)
937 else
938 MZSCHEME_CFLAGS=
939 MZSCHEME_LIBS=
940 MZSCHEME_EXTRA=
941 MZSCHEME_MZC=
942 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000943 fi
944 AC_SUBST(MZSCHEME_SRC)
945 AC_SUBST(MZSCHEME_OBJ)
946 AC_SUBST(MZSCHEME_PRO)
947 AC_SUBST(MZSCHEME_LIBS)
948 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000949 AC_SUBST(MZSCHEME_EXTRA)
950 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000951fi
952
953
Bram Moolenaar071d4272004-06-13 20:20:40 +0000954AC_MSG_CHECKING(--enable-perlinterp argument)
955AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200956 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000957 [enable_perlinterp="no"])
958AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200959if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100960 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
961 AC_MSG_ERROR([cannot use Perl with tiny or small features])
962 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963 AC_SUBST(vi_cv_path_perl)
964 AC_PATH_PROG(vi_cv_path_perl, perl)
965 if test "X$vi_cv_path_perl" != "X"; then
966 AC_MSG_CHECKING(Perl version)
967 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
968 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200969 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000970 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
971 badthreads=no
972 else
973 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
974 eval `$vi_cv_path_perl -V:use5005threads`
975 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
976 badthreads=no
977 else
978 badthreads=yes
979 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
980 fi
981 else
982 badthreads=yes
983 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
984 fi
985 fi
986 if test $badthreads = no; then
987 AC_MSG_RESULT(OK)
988 eval `$vi_cv_path_perl -V:shrpenv`
989 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
990 shrpenv=""
991 fi
992 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
993 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200994 vi_cv_perl_extutils=unknown_perl_extutils_path
995 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
996 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
997 if test -f "$xsubpp_path"; then
998 vi_cv_perl_xsubpp="$xsubpp_path"
999 fi
1000 done
1001 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001002 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +02001003 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001004 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaar280a8682015-06-21 13:41:08 +02001005 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1006 -e 's/-fdebug-prefix-map[[^ ]]*//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001007 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1008 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1009 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1010 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1011 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1012 dnl a test in configure may fail because of that.
1013 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1014 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1015
1016 dnl check that compiling a simple program still works with the flags
1017 dnl added for Perl.
1018 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1019 cflags_save=$CFLAGS
1020 libs_save=$LIBS
1021 ldflags_save=$LDFLAGS
1022 CFLAGS="$CFLAGS $perlcppflags"
1023 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001024 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001025 LDFLAGS="$perlldflags $LDFLAGS"
1026 AC_TRY_LINK(,[ ],
1027 AC_MSG_RESULT(yes); perl_ok=yes,
1028 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1029 CFLAGS=$cflags_save
1030 LIBS=$libs_save
1031 LDFLAGS=$ldflags_save
1032 if test $perl_ok = yes; then
1033 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +00001034 dnl remove -pipe and -Wxxx, it confuses cproto
1035 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001036 fi
1037 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001038 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001039 LDFLAGS="$perlldflags $LDFLAGS"
1040 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001041 fi
1042 PERL_LIBS=$perllibs
1043 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1044 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1045 PERL_PRO="if_perl.pro if_perlsfio.pro"
1046 AC_DEFINE(FEAT_PERL)
1047 fi
1048 fi
1049 else
1050 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1051 fi
1052 fi
1053
1054 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001055 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001056 dir=/System/Library/Perl
1057 darwindir=$dir/darwin
1058 if test -d $darwindir; then
1059 PERL=/usr/bin/perl
1060 else
1061 dnl Mac OS X 10.3
1062 dir=/System/Library/Perl/5.8.1
1063 darwindir=$dir/darwin-thread-multi-2level
1064 if test -d $darwindir; then
1065 PERL=/usr/bin/perl
1066 fi
1067 fi
1068 if test -n "$PERL"; then
1069 PERL_DIR="$dir"
1070 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1071 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1072 PERL_LIBS="-L$darwindir/CORE -lperl"
1073 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001074 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1075 dnl be included if requested by passing --with-mac-arch to
1076 dnl configure, so strip these flags first (if present)
1077 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1078 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 +00001079 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001080 if test "$enable_perlinterp" = "dynamic"; then
1081 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1082 AC_DEFINE(DYNAMIC_PERL)
1083 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1084 fi
1085 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001086
1087 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1088 AC_MSG_ERROR([could not configure perl])
1089 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001090fi
1091AC_SUBST(shrpenv)
1092AC_SUBST(PERL_SRC)
1093AC_SUBST(PERL_OBJ)
1094AC_SUBST(PERL_PRO)
1095AC_SUBST(PERL_CFLAGS)
1096AC_SUBST(PERL_LIBS)
1097
1098AC_MSG_CHECKING(--enable-pythoninterp argument)
1099AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001100 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001101 [enable_pythoninterp="no"])
1102AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001103if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001104 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1105 AC_MSG_ERROR([cannot use Python with tiny or small features])
1106 fi
1107
Bram Moolenaar071d4272004-06-13 20:20:40 +00001108 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001109 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001110 if test "X$vi_cv_path_python" != "X"; then
1111
1112 dnl -- get its version number
1113 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1114 [[vi_cv_var_python_version=`
1115 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1116 ]])
1117
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001118 dnl -- it must be at least version 2.3
1119 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001120 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001121 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001122 then
1123 AC_MSG_RESULT(yep)
1124
1125 dnl -- find where python thinks it was installed
1126 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1127 [ vi_cv_path_python_pfx=`
1128 ${vi_cv_path_python} -c \
1129 "import sys; print sys.prefix"` ])
1130
1131 dnl -- and where it thinks it runs
1132 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1133 [ vi_cv_path_python_epfx=`
1134 ${vi_cv_path_python} -c \
1135 "import sys; print sys.exec_prefix"` ])
1136
1137 dnl -- python's internal library path
1138
1139 AC_CACHE_VAL(vi_cv_path_pythonpath,
1140 [ vi_cv_path_pythonpath=`
1141 unset PYTHONPATH;
1142 ${vi_cv_path_python} -c \
1143 "import sys, string; print string.join(sys.path,':')"` ])
1144
1145 dnl -- where the Python implementation library archives are
1146
1147 AC_ARG_WITH(python-config-dir,
1148 [ --with-python-config-dir=PATH Python's config directory],
1149 [ vi_cv_path_python_conf="${withval}" ] )
1150
1151 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1152 [
1153 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001154 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1155 if test -d "$d" && test -f "$d/config.c"; then
1156 vi_cv_path_python_conf="$d"
1157 else
1158 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1159 for subdir in lib64 lib share; do
1160 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1161 if test -d "$d" && test -f "$d/config.c"; then
1162 vi_cv_path_python_conf="$d"
1163 fi
1164 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001165 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001166 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001167 ])
1168
1169 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1170
1171 if test "X$PYTHON_CONFDIR" = "X"; then
1172 AC_MSG_RESULT([can't find it!])
1173 else
1174
1175 dnl -- we need to examine Python's config/Makefile too
1176 dnl see what the interpreter is built from
1177 AC_CACHE_VAL(vi_cv_path_python_plibs,
1178 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001179 pwd=`pwd`
1180 tmp_mkf="$pwd/config-PyMake$$"
1181 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001182__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001183 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001184 @echo "python_LIBS='$(LIBS)'"
1185 @echo "python_SYSLIBS='$(SYSLIBS)'"
1186 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001187 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001188 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001189 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1190 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1191 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001192eof
1193 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001194 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1195 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001196 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1197 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1198 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001199 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1200 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1201 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001202 else
1203 if test "${vi_cv_var_python_version}" = "1.4"; then
1204 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1205 else
1206 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1207 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001208 dnl -- Check if the path contained in python_LINKFORSHARED is
1209 dnl usable for vim build. If not, make and try other
1210 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001211 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001212 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1213 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1214 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1215 dnl -- The path looks relative. Guess the absolute one using
1216 dnl the prefix and try that.
1217 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1218 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1219 dnl -- A last resort.
1220 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1221 dnl -- No check is done. The last word is left to the
1222 dnl "sanity" test on link flags that follows shortly.
1223 fi
1224 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1225 fi
1226 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001227 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 +00001228 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1229 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1230 fi
1231 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001232 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001233 [
1234 if test "X$python_DLLLIBRARY" != "X"; then
1235 vi_cv_dll_name_python="$python_DLLLIBRARY"
1236 else
1237 vi_cv_dll_name_python="$python_INSTSONAME"
1238 fi
1239 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001240
1241 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1242 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001243 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001244 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001245 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} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001246 fi
1247 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001248 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001249 if test "${vi_cv_var_python_version}" = "1.4"; then
1250 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1251 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001252 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001253
1254 dnl On FreeBSD linking with "-pthread" is required to use threads.
1255 dnl _THREAD_SAFE must be used for compiling then.
1256 dnl The "-pthread" is added to $LIBS, so that the following check for
1257 dnl sigaltstack() will look in libc_r (it's there in libc!).
1258 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1259 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1260 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1261 AC_MSG_CHECKING([if -pthread should be used])
1262 threadsafe_flag=
1263 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001264 dnl if test "x$MACOSX" != "xyes"; then
1265 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001266 test "$GCC" = yes && threadsafe_flag="-pthread"
1267 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1268 threadsafe_flag="-D_THREAD_SAFE"
1269 thread_lib="-pthread"
1270 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001271 if test "`(uname) 2>/dev/null`" = SunOS; then
1272 threadsafe_flag="-pthreads"
1273 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001274 fi
1275 libs_save_old=$LIBS
1276 if test -n "$threadsafe_flag"; then
1277 cflags_save=$CFLAGS
1278 CFLAGS="$CFLAGS $threadsafe_flag"
1279 LIBS="$LIBS $thread_lib"
1280 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001281 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001282 AC_MSG_RESULT(no); LIBS=$libs_save_old
1283 )
1284 CFLAGS=$cflags_save
1285 else
1286 AC_MSG_RESULT(no)
1287 fi
1288
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001289 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001290 dnl added for Python.
1291 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1292 cflags_save=$CFLAGS
1293 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001294 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001295 LIBS="$LIBS $PYTHON_LIBS"
1296 AC_TRY_LINK(,[ ],
1297 AC_MSG_RESULT(yes); python_ok=yes,
1298 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1299 CFLAGS=$cflags_save
1300 LIBS=$libs_save
1301 if test $python_ok = yes; then
1302 AC_DEFINE(FEAT_PYTHON)
1303 else
1304 LIBS=$libs_save_old
1305 PYTHON_SRC=
1306 PYTHON_OBJ=
1307 PYTHON_LIBS=
1308 PYTHON_CFLAGS=
1309 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001310 fi
1311 else
1312 AC_MSG_RESULT(too old)
1313 fi
1314 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001315
1316 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1317 AC_MSG_ERROR([could not configure python])
1318 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001319fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001320
Bram Moolenaar071d4272004-06-13 20:20:40 +00001321AC_SUBST(PYTHON_CONFDIR)
1322AC_SUBST(PYTHON_LIBS)
1323AC_SUBST(PYTHON_GETPATH_CFLAGS)
1324AC_SUBST(PYTHON_CFLAGS)
1325AC_SUBST(PYTHON_SRC)
1326AC_SUBST(PYTHON_OBJ)
1327
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001328
1329AC_MSG_CHECKING(--enable-python3interp argument)
1330AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001331 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001332 [enable_python3interp="no"])
1333AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001334if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001335 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1336 AC_MSG_ERROR([cannot use Python with tiny or small features])
1337 fi
1338
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001339 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001340 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001341 if test "X$vi_cv_path_python3" != "X"; then
1342
1343 dnl -- get its version number
1344 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1345 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001346 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001347 ]])
1348
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001349 dnl -- it must be at least version 3
1350 AC_MSG_CHECKING(Python is 3.0 or better)
1351 if ${vi_cv_path_python3} -c \
1352 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1353 then
1354 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001355
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001356 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1357 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001358 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001359 vi_cv_var_python3_abiflags=
1360 if ${vi_cv_path_python3} -c \
1361 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1362 then
1363 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1364 "import sys; print(sys.abiflags)"`
1365 fi ])
1366
1367 dnl -- find where python3 thinks it was installed
1368 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1369 [ vi_cv_path_python3_pfx=`
1370 ${vi_cv_path_python3} -c \
1371 "import sys; print(sys.prefix)"` ])
1372
1373 dnl -- and where it thinks it runs
1374 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1375 [ vi_cv_path_python3_epfx=`
1376 ${vi_cv_path_python3} -c \
1377 "import sys; print(sys.exec_prefix)"` ])
1378
1379 dnl -- python3's internal library path
1380
1381 AC_CACHE_VAL(vi_cv_path_python3path,
1382 [ vi_cv_path_python3path=`
1383 unset PYTHONPATH;
1384 ${vi_cv_path_python3} -c \
1385 "import sys, string; print(':'.join(sys.path))"` ])
1386
1387 dnl -- where the Python implementation library archives are
1388
1389 AC_ARG_WITH(python3-config-dir,
1390 [ --with-python3-config-dir=PATH Python's config directory],
1391 [ vi_cv_path_python3_conf="${withval}" ] )
1392
1393 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1394 [
1395 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001396 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001397 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1398 if test -d "$d" && test -f "$d/config.c"; then
1399 vi_cv_path_python3_conf="$d"
1400 else
1401 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1402 for subdir in lib64 lib share; do
1403 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1404 if test -d "$d" && test -f "$d/config.c"; then
1405 vi_cv_path_python3_conf="$d"
1406 fi
1407 done
1408 done
1409 fi
1410 ])
1411
1412 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1413
1414 if test "X$PYTHON3_CONFDIR" = "X"; then
1415 AC_MSG_RESULT([can't find it!])
1416 else
1417
1418 dnl -- we need to examine Python's config/Makefile too
1419 dnl see what the interpreter is built from
1420 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1421 [
1422 pwd=`pwd`
1423 tmp_mkf="$pwd/config-PyMake$$"
1424 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001425__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001426 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001427 @echo "python3_LIBS='$(LIBS)'"
1428 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001429 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001430 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001431eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001432 dnl -- delete the lines from make about Entering/Leaving directory
1433 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1434 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001435 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 +02001436 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1437 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1438 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1439 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1440 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001441 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001442 [
1443 if test "X$python3_DLLLIBRARY" != "X"; then
1444 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1445 else
1446 vi_cv_dll_name_python3="$python3_INSTSONAME"
1447 fi
1448 ])
1449
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001450 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1451 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001452 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001453 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001454 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001455 fi
1456 PYTHON3_SRC="if_python3.c"
1457 PYTHON3_OBJ="objects/if_python3.o"
1458
1459 dnl On FreeBSD linking with "-pthread" is required to use threads.
1460 dnl _THREAD_SAFE must be used for compiling then.
1461 dnl The "-pthread" is added to $LIBS, so that the following check for
1462 dnl sigaltstack() will look in libc_r (it's there in libc!).
1463 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1464 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1465 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1466 AC_MSG_CHECKING([if -pthread should be used])
1467 threadsafe_flag=
1468 thread_lib=
1469 dnl if test "x$MACOSX" != "xyes"; then
1470 if test "`(uname) 2>/dev/null`" != Darwin; then
1471 test "$GCC" = yes && threadsafe_flag="-pthread"
1472 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1473 threadsafe_flag="-D_THREAD_SAFE"
1474 thread_lib="-pthread"
1475 fi
1476 if test "`(uname) 2>/dev/null`" = SunOS; then
1477 threadsafe_flag="-pthreads"
1478 fi
1479 fi
1480 libs_save_old=$LIBS
1481 if test -n "$threadsafe_flag"; then
1482 cflags_save=$CFLAGS
1483 CFLAGS="$CFLAGS $threadsafe_flag"
1484 LIBS="$LIBS $thread_lib"
1485 AC_TRY_LINK(,[ ],
1486 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1487 AC_MSG_RESULT(no); LIBS=$libs_save_old
1488 )
1489 CFLAGS=$cflags_save
1490 else
1491 AC_MSG_RESULT(no)
1492 fi
1493
1494 dnl check that compiling a simple program still works with the flags
1495 dnl added for Python.
1496 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1497 cflags_save=$CFLAGS
1498 libs_save=$LIBS
1499 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1500 LIBS="$LIBS $PYTHON3_LIBS"
1501 AC_TRY_LINK(,[ ],
1502 AC_MSG_RESULT(yes); python3_ok=yes,
1503 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1504 CFLAGS=$cflags_save
1505 LIBS=$libs_save
1506 if test "$python3_ok" = yes; then
1507 AC_DEFINE(FEAT_PYTHON3)
1508 else
1509 LIBS=$libs_save_old
1510 PYTHON3_SRC=
1511 PYTHON3_OBJ=
1512 PYTHON3_LIBS=
1513 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001514 fi
1515 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001516 else
1517 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001518 fi
1519 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001520 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1521 AC_MSG_ERROR([could not configure python3])
1522 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001523fi
1524
1525AC_SUBST(PYTHON3_CONFDIR)
1526AC_SUBST(PYTHON3_LIBS)
1527AC_SUBST(PYTHON3_CFLAGS)
1528AC_SUBST(PYTHON3_SRC)
1529AC_SUBST(PYTHON3_OBJ)
1530
1531dnl if python2.x and python3.x are enabled one can only link in code
1532dnl with dlopen(), dlsym(), dlclose()
1533if test "$python_ok" = yes && test "$python3_ok" = yes; then
1534 AC_DEFINE(DYNAMIC_PYTHON)
1535 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001536 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001537 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001538 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001539 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001540 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001541 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001542 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001543 #include <dlfcn.h>
1544 /* If this program fails, then RTLD_GLOBAL is needed.
1545 * RTLD_GLOBAL will be used and then it is not possible to
1546 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001547 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001548 */
1549
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001550 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001551 {
1552 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001553 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001554 if (pylib != 0)
1555 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001556 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001557 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1558 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1559 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001560 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001561 (*init)();
1562 needed = (*simple)("import termios") == -1;
1563 (*final)();
1564 dlclose(pylib);
1565 }
1566 return !needed;
1567 }
1568
1569 int main(int argc, char** argv)
1570 {
1571 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001572 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001573 not_needed = 1;
1574 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001575 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001576 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001577
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001578 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001579 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001580
1581 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1582 cflags_save=$CFLAGS
1583 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001584 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001585 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001586 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001587 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001588 #include <dlfcn.h>
1589 #include <wchar.h>
1590 /* If this program fails, then RTLD_GLOBAL is needed.
1591 * RTLD_GLOBAL will be used and then it is not possible to
1592 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001593 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001594 */
1595
1596 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1597 {
1598 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001599 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001600 if (pylib != 0)
1601 {
1602 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1603 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1604 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1605 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1606 (*pfx)(prefix);
1607 (*init)();
1608 needed = (*simple)("import termios") == -1;
1609 (*final)();
1610 dlclose(pylib);
1611 }
1612 return !needed;
1613 }
1614
1615 int main(int argc, char** argv)
1616 {
1617 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001618 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001619 not_needed = 1;
1620 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001621 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001622 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1623
1624 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001625 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001626
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001627 PYTHON_SRC="if_python.c"
1628 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001629 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001630 PYTHON_LIBS=
1631 PYTHON3_SRC="if_python3.c"
1632 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001633 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001634 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001635elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1636 AC_DEFINE(DYNAMIC_PYTHON)
1637 PYTHON_SRC="if_python.c"
1638 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001639 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001640 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001641elif test "$python_ok" = yes; then
1642 dnl Check that adding -fPIE works. It may be needed when using a static
1643 dnl Python library.
1644 AC_MSG_CHECKING([if -fPIE can be added for Python])
1645 cflags_save=$CFLAGS
1646 libs_save=$LIBS
1647 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1648 LIBS="$LIBS $PYTHON_LIBS"
1649 AC_TRY_LINK(,[ ],
1650 AC_MSG_RESULT(yes); fpie_ok=yes,
1651 AC_MSG_RESULT(no); fpie_ok=no)
1652 CFLAGS=$cflags_save
1653 LIBS=$libs_save
1654 if test $fpie_ok = yes; then
1655 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1656 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001657elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1658 AC_DEFINE(DYNAMIC_PYTHON3)
1659 PYTHON3_SRC="if_python3.c"
1660 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001661 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001662 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001663elif test "$python3_ok" = yes; then
1664 dnl Check that adding -fPIE works. It may be needed when using a static
1665 dnl Python library.
1666 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1667 cflags_save=$CFLAGS
1668 libs_save=$LIBS
1669 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1670 LIBS="$LIBS $PYTHON3_LIBS"
1671 AC_TRY_LINK(,[ ],
1672 AC_MSG_RESULT(yes); fpie_ok=yes,
1673 AC_MSG_RESULT(no); fpie_ok=no)
1674 CFLAGS=$cflags_save
1675 LIBS=$libs_save
1676 if test $fpie_ok = yes; then
1677 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1678 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001679fi
1680
Bram Moolenaar071d4272004-06-13 20:20:40 +00001681AC_MSG_CHECKING(--enable-tclinterp argument)
1682AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001683 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001684 [enable_tclinterp="no"])
1685AC_MSG_RESULT($enable_tclinterp)
1686
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001687if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001688
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001689 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001690 AC_MSG_CHECKING(--with-tclsh argument)
1691 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1692 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001693 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001694 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1695 AC_SUBST(vi_cv_path_tcl)
1696
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001697 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1698 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1699 tclsh_name="tclsh8.4"
1700 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1701 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001702 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001703 tclsh_name="tclsh8.2"
1704 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1705 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001706 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1707 tclsh_name="tclsh8.0"
1708 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1709 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001710 dnl still didn't find it, try without version number
1711 if test "X$vi_cv_path_tcl" = "X"; then
1712 tclsh_name="tclsh"
1713 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1714 fi
1715 if test "X$vi_cv_path_tcl" != "X"; then
1716 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001717 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1719 AC_MSG_RESULT($tclver - OK);
1720 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 +01001721 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001722
1723 AC_MSG_CHECKING(for location of Tcl include)
1724 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001725 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 +00001726 else
1727 dnl For Mac OS X 10.3, use the OS-provided framework location
1728 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1729 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001730 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001731 for try in $tclinc; do
1732 if test -f "$try/tcl.h"; then
1733 AC_MSG_RESULT($try/tcl.h)
1734 TCL_INC=$try
1735 break
1736 fi
1737 done
1738 if test -z "$TCL_INC"; then
1739 AC_MSG_RESULT(<not found>)
1740 SKIP_TCL=YES
1741 fi
1742 if test -z "$SKIP_TCL"; then
1743 AC_MSG_CHECKING(for location of tclConfig.sh script)
1744 if test "x$MACOSX" != "xyes"; then
1745 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001746 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001747 else
1748 dnl For Mac OS X 10.3, use the OS-provided framework location
1749 tclcnf="/System/Library/Frameworks/Tcl.framework"
1750 fi
1751 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001752 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001753 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001754 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001755 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001756 if test "$enable_tclinterp" = "dynamic"; then
1757 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1758 else
1759 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1760 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001761 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001762 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001763 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 +00001764 break
1765 fi
1766 done
1767 if test -z "$TCL_LIBS"; then
1768 AC_MSG_RESULT(<not found>)
1769 AC_MSG_CHECKING(for Tcl library by myself)
1770 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001771 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001772 for ext in .so .a ; do
1773 for ver in "" $tclver ; do
1774 for try in $tcllib ; do
1775 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001776 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001778 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001779 if test "`(uname) 2>/dev/null`" = SunOS &&
1780 uname -r | grep '^5' >/dev/null; then
1781 TCL_LIBS="$TCL_LIBS -R $try"
1782 fi
1783 break 3
1784 fi
1785 done
1786 done
1787 done
1788 if test -z "$TCL_LIBS"; then
1789 AC_MSG_RESULT(<not found>)
1790 SKIP_TCL=YES
1791 fi
1792 fi
1793 if test -z "$SKIP_TCL"; then
1794 AC_DEFINE(FEAT_TCL)
1795 TCL_SRC=if_tcl.c
1796 TCL_OBJ=objects/if_tcl.o
1797 TCL_PRO=if_tcl.pro
1798 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1799 fi
1800 fi
1801 else
1802 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1803 fi
1804 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001805 if test "$enable_tclinterp" = "dynamic"; then
1806 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
1807 AC_DEFINE(DYNAMIC_TCL)
1808 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
1809 fi
1810 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001811 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1812 AC_MSG_ERROR([could not configure Tcl])
1813 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001814fi
1815AC_SUBST(TCL_SRC)
1816AC_SUBST(TCL_OBJ)
1817AC_SUBST(TCL_PRO)
1818AC_SUBST(TCL_CFLAGS)
1819AC_SUBST(TCL_LIBS)
1820
1821AC_MSG_CHECKING(--enable-rubyinterp argument)
1822AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001823 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001824 [enable_rubyinterp="no"])
1825AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001826if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001827 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1828 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1829 fi
1830
Bram Moolenaar165641d2010-02-17 16:23:09 +01001831 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001832 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001833 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1834 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1835 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001836 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837 if test "X$vi_cv_path_ruby" != "X"; then
1838 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001839 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001841 AC_MSG_CHECKING(Ruby rbconfig)
1842 ruby_rbconfig="RbConfig"
1843 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1844 ruby_rbconfig="Config"
1845 fi
1846 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001847 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001848 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 +00001849 if test "X$rubyhdrdir" != "X"; then
1850 AC_MSG_RESULT($rubyhdrdir)
1851 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001852 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1853 if test -d "$rubyarchdir"; then
1854 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001855 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001856 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001857 if test "X$rubyversion" = "X"; then
1858 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1859 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001860 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001861 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001862 if test "X$rubylibs" != "X"; then
1863 RUBY_LIBS="$rubylibs"
1864 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001865 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1866 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001867 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001868 if test -f "$rubylibdir/$librubya"; then
1869 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001870 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1871 elif test "$librubyarg" = "libruby.a"; then
1872 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1873 librubyarg="-lruby"
1874 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001875 fi
1876
1877 if test "X$librubyarg" != "X"; then
1878 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1879 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001880 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001882 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1883 dnl be included if requested by passing --with-mac-arch to
1884 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001885 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001886 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001887 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001888 LDFLAGS="$rubyldflags $LDFLAGS"
1889 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001890 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001891 fi
1892 RUBY_SRC="if_ruby.c"
1893 RUBY_OBJ="objects/if_ruby.o"
1894 RUBY_PRO="if_ruby.pro"
1895 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001896 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001897 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001898 AC_DEFINE(DYNAMIC_RUBY)
1899 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1900 RUBY_LIBS=
1901 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001902 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001903 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001904 fi
1905 else
1906 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1907 fi
1908 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001909
1910 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1911 AC_MSG_ERROR([could not configure Ruby])
1912 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913fi
1914AC_SUBST(RUBY_SRC)
1915AC_SUBST(RUBY_OBJ)
1916AC_SUBST(RUBY_PRO)
1917AC_SUBST(RUBY_CFLAGS)
1918AC_SUBST(RUBY_LIBS)
1919
1920AC_MSG_CHECKING(--enable-cscope argument)
1921AC_ARG_ENABLE(cscope,
1922 [ --enable-cscope Include cscope interface.], ,
1923 [enable_cscope="no"])
1924AC_MSG_RESULT($enable_cscope)
1925if test "$enable_cscope" = "yes"; then
1926 AC_DEFINE(FEAT_CSCOPE)
1927fi
1928
Bram Moolenaar8a633e32016-04-21 21:10:14 +02001929AC_MSG_CHECKING(--enable-termtruecolor argument)
1930AC_ARG_ENABLE(termtruecolor,
1931 [ --enable-termtruecolor Include support for 24-bit colors in ISO-8613-3 compatible terminals], ,
1932 [enable_termtruecolor="no"])
1933AC_MSG_RESULT($enable_termtruecolor)
1934if test "$enable_termtruecolor" = "yes"; then
1935 AC_DEFINE(FEAT_TERMTRUECOLOR)
1936fi
1937
Bram Moolenaar071d4272004-06-13 20:20:40 +00001938AC_MSG_CHECKING(--enable-workshop argument)
1939AC_ARG_ENABLE(workshop,
1940 [ --enable-workshop Include Sun Visual Workshop support.], ,
1941 [enable_workshop="no"])
1942AC_MSG_RESULT($enable_workshop)
1943if test "$enable_workshop" = "yes"; then
1944 AC_DEFINE(FEAT_SUN_WORKSHOP)
1945 WORKSHOP_SRC="workshop.c integration.c"
1946 AC_SUBST(WORKSHOP_SRC)
1947 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1948 AC_SUBST(WORKSHOP_OBJ)
1949 if test "${enable_gui-xxx}" = xxx; then
1950 enable_gui=motif
1951 fi
1952fi
1953
1954AC_MSG_CHECKING(--disable-netbeans argument)
1955AC_ARG_ENABLE(netbeans,
1956 [ --disable-netbeans Disable NetBeans integration support.],
1957 , [enable_netbeans="yes"])
1958if test "$enable_netbeans" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001959 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1960 AC_MSG_RESULT([cannot use NetBeans with tiny or small features])
1961 enable_netbeans="no"
1962 else
1963 AC_MSG_RESULT(no)
1964 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001965else
1966 AC_MSG_RESULT(yes)
1967fi
1968
1969AC_MSG_CHECKING(--disable-channel argument)
1970AC_ARG_ENABLE(channel,
1971 [ --disable-channel Disable process communication support.],
1972 , [enable_channel="yes"])
1973if test "$enable_channel" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001974 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1975 AC_MSG_RESULT([cannot use channels with tiny or small features])
1976 enable_channel="no"
1977 else
1978 AC_MSG_RESULT(no)
1979 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001980else
1981 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01001982 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01001983 enable_netbeans="no"
1984 else
1985 AC_MSG_RESULT(yes)
1986 fi
1987fi
1988
Bram Moolenaar16435482016-01-24 21:31:54 +01001989if test "$enable_channel" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001990 dnl On Solaris we need the socket and nsl library.
1991 AC_CHECK_LIB(socket, socket)
1992 AC_CHECK_LIB(nsl, gethostbyname)
Bram Moolenaare0874f82016-01-24 20:36:41 +01001993 AC_MSG_CHECKING(whether compiling with process communication is possible)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001994 AC_TRY_LINK([
1995#include <stdio.h>
1996#include <stdlib.h>
1997#include <stdarg.h>
1998#include <fcntl.h>
1999#include <netdb.h>
2000#include <netinet/in.h>
2001#include <errno.h>
2002#include <sys/types.h>
2003#include <sys/socket.h>
2004 /* Check bitfields */
2005 struct nbbuf {
2006 unsigned int initDone:1;
2007 ushort signmaplen;
2008 };
2009 ], [
2010 /* Check creating a socket. */
2011 struct sockaddr_in server;
2012 (void)socket(AF_INET, SOCK_STREAM, 0);
2013 (void)htons(100);
2014 (void)gethostbyname("microsoft.com");
2015 if (errno == ECONNREFUSED)
2016 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2017 ],
2018 AC_MSG_RESULT(yes),
Bram Moolenaare0874f82016-01-24 20:36:41 +01002019 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002020fi
2021if test "$enable_netbeans" = "yes"; then
2022 AC_DEFINE(FEAT_NETBEANS_INTG)
2023 NETBEANS_SRC="netbeans.c"
2024 AC_SUBST(NETBEANS_SRC)
2025 NETBEANS_OBJ="objects/netbeans.o"
2026 AC_SUBST(NETBEANS_OBJ)
2027fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002028if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002029 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaare0874f82016-01-24 20:36:41 +01002030 CHANNEL_SRC="channel.c"
2031 AC_SUBST(CHANNEL_SRC)
2032 CHANNEL_OBJ="objects/channel.o"
2033 AC_SUBST(CHANNEL_OBJ)
2034fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002035
Bram Moolenaar071d4272004-06-13 20:20:40 +00002036AC_MSG_CHECKING(--enable-multibyte argument)
2037AC_ARG_ENABLE(multibyte,
2038 [ --enable-multibyte Include multibyte editing support.], ,
2039 [enable_multibyte="no"])
2040AC_MSG_RESULT($enable_multibyte)
2041if test "$enable_multibyte" = "yes"; then
2042 AC_DEFINE(FEAT_MBYTE)
2043fi
2044
2045AC_MSG_CHECKING(--enable-hangulinput argument)
2046AC_ARG_ENABLE(hangulinput,
2047 [ --enable-hangulinput Include Hangul input support.], ,
2048 [enable_hangulinput="no"])
2049AC_MSG_RESULT($enable_hangulinput)
2050
2051AC_MSG_CHECKING(--enable-xim argument)
2052AC_ARG_ENABLE(xim,
2053 [ --enable-xim Include XIM input support.],
2054 AC_MSG_RESULT($enable_xim),
2055 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056
2057AC_MSG_CHECKING(--enable-fontset argument)
2058AC_ARG_ENABLE(fontset,
2059 [ --enable-fontset Include X fontset output support.], ,
2060 [enable_fontset="no"])
2061AC_MSG_RESULT($enable_fontset)
2062dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2063
2064test -z "$with_x" && with_x=yes
2065test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2066if test "$with_x" = no; then
2067 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2068else
2069 dnl Do this check early, so that its failure can override user requests.
2070
2071 AC_PATH_PROG(xmkmfpath, xmkmf)
2072
2073 AC_PATH_XTRA
2074
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002075 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002076 dnl be compiled with a special option.
2077 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002078 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002079 CFLAGS="$CFLAGS -W c,dll"
2080 LDFLAGS="$LDFLAGS -W l,dll"
2081 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2082 fi
2083
2084 dnl On my HPUX system the X include dir is found, but the lib dir not.
2085 dnl This is a desparate try to fix this.
2086
2087 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2088 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2089 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2090 X_LIBS="$X_LIBS -L$x_libraries"
2091 if test "`(uname) 2>/dev/null`" = SunOS &&
2092 uname -r | grep '^5' >/dev/null; then
2093 X_LIBS="$X_LIBS -R $x_libraries"
2094 fi
2095 fi
2096
2097 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2098 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2099 AC_MSG_RESULT(Corrected X includes to $x_includes)
2100 X_CFLAGS="$X_CFLAGS -I$x_includes"
2101 fi
2102
2103 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2104 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2105 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2106 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2107 dnl Same for "-R/usr/lib ".
2108 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2109
2110
2111 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002112 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2113 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114 AC_MSG_CHECKING(if X11 header files can be found)
2115 cflags_save=$CFLAGS
2116 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002117 AC_TRY_COMPILE([#include <X11/Xlib.h>
2118#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002119 AC_MSG_RESULT(yes),
2120 AC_MSG_RESULT(no); no_x=yes)
2121 CFLAGS=$cflags_save
2122
2123 if test "${no_x-no}" = yes; then
2124 with_x=no
2125 else
2126 AC_DEFINE(HAVE_X11)
2127 X_LIB="-lXt -lX11";
2128 AC_SUBST(X_LIB)
2129
2130 ac_save_LDFLAGS="$LDFLAGS"
2131 LDFLAGS="-L$x_libraries $LDFLAGS"
2132
2133 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2134 dnl For HP-UX 10.20 it must be before -lSM -lICE
2135 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2136 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2137
2138 dnl Some systems need -lnsl -lsocket when testing for ICE.
2139 dnl The check above doesn't do this, try here (again). Also needed to get
2140 dnl them after Xdmcp. link.sh will remove them when not needed.
2141 dnl Check for other function than above to avoid the cached value
2142 AC_CHECK_LIB(ICE, IceOpenConnection,
2143 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2144
2145 dnl Check for -lXpm (needed for some versions of Motif)
2146 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2147 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2148 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2149
2150 dnl Check that the X11 header files don't use implicit declarations
2151 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2152 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002153 dnl -Werror is GCC only, others like Solaris Studio might not like it
2154 if test "$GCC" = yes; then
2155 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2156 else
2157 CFLAGS="$CFLAGS $X_CFLAGS"
2158 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002159 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2160 AC_MSG_RESULT(no),
2161 CFLAGS="$CFLAGS -Wno-implicit-int"
2162 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2163 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2164 AC_MSG_RESULT(test failed)
2165 )
2166 )
2167 CFLAGS=$cflags_save
2168
2169 LDFLAGS="$ac_save_LDFLAGS"
2170
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002171 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2172 AC_CACHE_VAL(ac_cv_small_wchar_t,
2173 [AC_TRY_RUN([
2174#include <X11/Xlib.h>
2175#if STDC_HEADERS
2176# include <stdlib.h>
2177# include <stddef.h>
2178#endif
2179 main()
2180 {
2181 if (sizeof(wchar_t) <= 2)
2182 exit(1);
2183 exit(0);
2184 }],
2185 ac_cv_small_wchar_t="no",
2186 ac_cv_small_wchar_t="yes",
2187 AC_MSG_ERROR(failed to compile test program))])
2188 AC_MSG_RESULT($ac_cv_small_wchar_t)
2189 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2190 AC_DEFINE(SMALL_WCHAR_T)
2191 fi
2192
Bram Moolenaar071d4272004-06-13 20:20:40 +00002193 fi
2194fi
2195
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002196test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002197
2198AC_MSG_CHECKING(--enable-gui argument)
2199AC_ARG_ENABLE(gui,
Bram Moolenaar98921892016-02-23 17:14:37 +01002200 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002201
2202dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2203dnl Do not use character classes for portability with old tools.
2204enable_gui_canon=`echo "_$enable_gui" | \
2205 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2206
2207dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002208SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002209SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002210SKIP_GNOME=YES
2211SKIP_MOTIF=YES
2212SKIP_ATHENA=YES
2213SKIP_NEXTAW=YES
2214SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002215SKIP_CARBON=YES
2216GUITYPE=NONE
2217
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002218if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002219 SKIP_PHOTON=
2220 case "$enable_gui_canon" in
2221 no) AC_MSG_RESULT(no GUI support)
2222 SKIP_PHOTON=YES ;;
2223 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2224 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2225 photon) AC_MSG_RESULT(Photon GUI support) ;;
2226 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2227 SKIP_PHOTON=YES ;;
2228 esac
2229
2230elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2231 SKIP_CARBON=
2232 case "$enable_gui_canon" in
2233 no) AC_MSG_RESULT(no GUI support)
2234 SKIP_CARBON=YES ;;
2235 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002236 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2237 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002238 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2239 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2240 SKIP_CARBON=YES ;;
2241 esac
2242
2243else
2244
Bram Moolenaar071d4272004-06-13 20:20:40 +00002245 case "$enable_gui_canon" in
2246 no|none) AC_MSG_RESULT(no GUI support) ;;
2247 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002248 SKIP_GTK2=
2249 SKIP_GNOME=
2250 SKIP_MOTIF=
2251 SKIP_ATHENA=
2252 SKIP_NEXTAW=
2253 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002254 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002255 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002256 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2257 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002258 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002259 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2260 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002261 motif) AC_MSG_RESULT(Motif GUI support)
2262 SKIP_MOTIF=;;
2263 athena) AC_MSG_RESULT(Athena GUI support)
2264 SKIP_ATHENA=;;
2265 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2266 SKIP_NEXTAW=;;
2267 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2268 esac
2269
2270fi
2271
Bram Moolenaar071d4272004-06-13 20:20:40 +00002272if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2273 -a "$enable_gui_canon" != "gnome2"; then
2274 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2275 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002276 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002277 , enable_gtk2_check="yes")
2278 AC_MSG_RESULT($enable_gtk2_check)
2279 if test "x$enable_gtk2_check" = "xno"; then
2280 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002281 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 fi
2283fi
2284
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002285if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002286 AC_MSG_CHECKING(whether or not to look for GNOME)
2287 AC_ARG_ENABLE(gnome-check,
2288 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2289 , enable_gnome_check="no")
2290 AC_MSG_RESULT($enable_gnome_check)
2291 if test "x$enable_gnome_check" = "xno"; then
2292 SKIP_GNOME=YES
2293 fi
2294fi
2295
Bram Moolenaar98921892016-02-23 17:14:37 +01002296if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2297 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2298 AC_ARG_ENABLE(gtk3-check,
2299 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2300 , enable_gtk3_check="yes")
2301 AC_MSG_RESULT($enable_gtk3_check)
2302 if test "x$enable_gtk3_check" = "xno"; then
2303 SKIP_GTK3=YES
2304 fi
2305fi
2306
Bram Moolenaar071d4272004-06-13 20:20:40 +00002307if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2308 AC_MSG_CHECKING(whether or not to look for Motif)
2309 AC_ARG_ENABLE(motif-check,
2310 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2311 , enable_motif_check="yes")
2312 AC_MSG_RESULT($enable_motif_check)
2313 if test "x$enable_motif_check" = "xno"; then
2314 SKIP_MOTIF=YES
2315 fi
2316fi
2317
2318if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2319 AC_MSG_CHECKING(whether or not to look for Athena)
2320 AC_ARG_ENABLE(athena-check,
2321 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2322 , enable_athena_check="yes")
2323 AC_MSG_RESULT($enable_athena_check)
2324 if test "x$enable_athena_check" = "xno"; then
2325 SKIP_ATHENA=YES
2326 fi
2327fi
2328
2329if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2330 AC_MSG_CHECKING(whether or not to look for neXtaw)
2331 AC_ARG_ENABLE(nextaw-check,
2332 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2333 , enable_nextaw_check="yes")
2334 AC_MSG_RESULT($enable_nextaw_check);
2335 if test "x$enable_nextaw_check" = "xno"; then
2336 SKIP_NEXTAW=YES
2337 fi
2338fi
2339
2340if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2341 AC_MSG_CHECKING(whether or not to look for Carbon)
2342 AC_ARG_ENABLE(carbon-check,
2343 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2344 , enable_carbon_check="yes")
2345 AC_MSG_RESULT($enable_carbon_check);
2346 if test "x$enable_carbon_check" = "xno"; then
2347 SKIP_CARBON=YES
2348 fi
2349fi
2350
Bram Moolenaar843ee412004-06-30 16:16:41 +00002351
Bram Moolenaar071d4272004-06-13 20:20:40 +00002352if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2353 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002354 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002355 AC_MSG_RESULT(yes);
2356 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002357 if test "$VIMNAME" = "vim"; then
2358 VIMNAME=Vim
2359 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002360
Bram Moolenaar164fca32010-07-14 13:58:07 +02002361 if test "x$MACARCH" = "xboth"; then
2362 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2363 else
2364 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2365 fi
2366
Bram Moolenaar14716812006-05-04 21:54:08 +00002367 dnl Default install directory is not /usr/local
2368 if test x$prefix = xNONE; then
2369 prefix=/Applications
2370 fi
2371
2372 dnl Sorry for the hard coded default
2373 datadir='${prefix}/Vim.app/Contents/Resources'
2374
Bram Moolenaar071d4272004-06-13 20:20:40 +00002375 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 SKIP_GTK2=YES;
2377 SKIP_GNOME=YES;
2378 SKIP_MOTIF=YES;
2379 SKIP_ATHENA=YES;
2380 SKIP_NEXTAW=YES;
2381 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002382 SKIP_CARBON=YES
2383fi
2384
Bram Moolenaar071d4272004-06-13 20:20:40 +00002385dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002386dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002387dnl
2388dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002389dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002390dnl
2391AC_DEFUN(AM_PATH_GTK,
2392[
2393 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2394 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002395 no_gtk=""
2396 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2397 && $PKG_CONFIG --exists gtk+-2.0; then
2398 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002399 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2400 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002401 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2402 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2403 dnl something like that.
2404 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002405 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002406 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2407 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2408 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2409 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2410 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2411 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2412 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2413 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002414 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2415 && $PKG_CONFIG --exists gtk+-3.0; then
2416 {
2417 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2418 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2419
2420 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2421 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2422 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2423 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2424 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2425 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2426 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2427 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2428 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2429 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002430 else
2431 no_gtk=yes
2432 fi
2433
2434 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2435 {
2436 ac_save_CFLAGS="$CFLAGS"
2437 ac_save_LIBS="$LIBS"
2438 CFLAGS="$CFLAGS $GTK_CFLAGS"
2439 LIBS="$LIBS $GTK_LIBS"
2440
2441 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002442 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002443 dnl
2444 rm -f conf.gtktest
2445 AC_TRY_RUN([
2446#include <gtk/gtk.h>
2447#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002448#if STDC_HEADERS
2449# include <stdlib.h>
2450# include <stddef.h>
2451#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002452
2453int
2454main ()
2455{
2456int major, minor, micro;
2457char *tmp_version;
2458
2459system ("touch conf.gtktest");
2460
2461/* HP/UX 9 (%@#!) writes to sscanf strings */
2462tmp_version = g_strdup("$min_gtk_version");
2463if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2464 printf("%s, bad version string\n", "$min_gtk_version");
2465 exit(1);
2466 }
2467
2468if ((gtk_major_version > major) ||
2469 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2470 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2471 (gtk_micro_version >= micro)))
2472{
2473 return 0;
2474}
2475return 1;
2476}
2477],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2478 CFLAGS="$ac_save_CFLAGS"
2479 LIBS="$ac_save_LIBS"
2480 }
2481 fi
2482 if test "x$no_gtk" = x ; then
2483 if test "x$enable_gtktest" = "xyes"; then
2484 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2485 else
2486 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2487 fi
2488 ifelse([$2], , :, [$2])
2489 else
2490 {
2491 AC_MSG_RESULT(no)
2492 GTK_CFLAGS=""
2493 GTK_LIBS=""
2494 ifelse([$3], , :, [$3])
2495 }
2496 fi
2497 }
2498 else
2499 GTK_CFLAGS=""
2500 GTK_LIBS=""
2501 ifelse([$3], , :, [$3])
2502 fi
2503 AC_SUBST(GTK_CFLAGS)
2504 AC_SUBST(GTK_LIBS)
2505 rm -f conf.gtktest
2506])
2507
2508dnl ---------------------------------------------------------------------------
2509dnl gnome
2510dnl ---------------------------------------------------------------------------
2511AC_DEFUN([GNOME_INIT_HOOK],
2512[
2513 AC_SUBST(GNOME_LIBS)
2514 AC_SUBST(GNOME_LIBDIR)
2515 AC_SUBST(GNOME_INCLUDEDIR)
2516
2517 AC_ARG_WITH(gnome-includes,
2518 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2519 [CFLAGS="$CFLAGS -I$withval"]
2520 )
2521
2522 AC_ARG_WITH(gnome-libs,
2523 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2524 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2525 )
2526
2527 AC_ARG_WITH(gnome,
2528 [ --with-gnome Specify prefix for GNOME files],
2529 if test x$withval = xyes; then
2530 want_gnome=yes
2531 ifelse([$1], [], :, [$1])
2532 else
2533 if test "x$withval" = xno; then
2534 want_gnome=no
2535 else
2536 want_gnome=yes
2537 LDFLAGS="$LDFLAGS -L$withval/lib"
2538 CFLAGS="$CFLAGS -I$withval/include"
2539 gnome_prefix=$withval/lib
2540 fi
2541 fi,
2542 want_gnome=yes)
2543
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002544 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002545 {
2546 AC_MSG_CHECKING(for libgnomeui-2.0)
2547 if $PKG_CONFIG --exists libgnomeui-2.0; then
2548 AC_MSG_RESULT(yes)
2549 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2550 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2551 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002552
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002553 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2554 dnl This might not be the right way but it works for me...
2555 AC_MSG_CHECKING(for FreeBSD)
2556 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2557 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002558 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002559 GNOME_LIBS="$GNOME_LIBS -pthread"
2560 else
2561 AC_MSG_RESULT(no)
2562 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002563 $1
2564 else
2565 AC_MSG_RESULT(not found)
2566 if test "x$2" = xfail; then
2567 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2568 fi
2569 fi
2570 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002571 fi
2572])
2573
2574AC_DEFUN([GNOME_INIT],[
2575 GNOME_INIT_HOOK([],fail)
2576])
2577
2578
2579dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002580dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002581dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002582if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002583
2584 AC_MSG_CHECKING(--disable-gtktest argument)
2585 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2586 , enable_gtktest=yes)
2587 if test "x$enable_gtktest" = "xyes" ; then
2588 AC_MSG_RESULT(gtk test enabled)
2589 else
2590 AC_MSG_RESULT(gtk test disabled)
2591 fi
2592
Bram Moolenaar071d4272004-06-13 20:20:40 +00002593 if test "X$PKG_CONFIG" = "X"; then
2594 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2595 fi
2596
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002597 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002598 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2599 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002600 AM_PATH_GTK(2.2.0,
2601 [GUI_LIB_LOC="$GTK_LIBDIR"
2602 GTK_LIBNAME="$GTK_LIBS"
2603 GUI_INC_LOC="$GTK_CFLAGS"], )
2604 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002605 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002606 SKIP_ATHENA=YES
2607 SKIP_NEXTAW=YES
2608 SKIP_MOTIF=YES
2609 GUITYPE=GTK
2610 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002611 fi
2612 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002613 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002614 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2615 || test "0$gtk_minor_version" -ge 2; then
2616 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2617 fi
2618 dnl
2619 dnl if GTK exists, then check for GNOME.
2620 dnl
2621 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002622 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002623 GNOME_INIT_HOOK([have_gnome=yes])
2624 if test "x$have_gnome" = xyes ; then
2625 AC_DEFINE(FEAT_GUI_GNOME)
2626 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2627 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002628 fi
2629 }
2630 fi
2631 fi
2632fi
2633
Bram Moolenaar98921892016-02-23 17:14:37 +01002634
2635dnl ---------------------------------------------------------------------------
2636dnl Check for GTK3.
2637dnl ---------------------------------------------------------------------------
2638if test -z "$SKIP_GTK3"; then
2639
2640 AC_MSG_CHECKING(--disable-gtktest argument)
2641 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2642 , enable_gtktest=yes)
2643 if test "x$enable_gtktest" = "xyes" ; then
2644 AC_MSG_RESULT(gtk test enabled)
2645 else
2646 AC_MSG_RESULT(gtk test disabled)
2647 fi
2648
2649 if test "X$PKG_CONFIG" = "X"; then
2650 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2651 fi
2652
2653 if test "x$PKG_CONFIG" != "xno"; then
2654 AM_PATH_GTK(3.0.0,
2655 [GUI_LIB_LOC="$GTK_LIBDIR"
2656 GTK_LIBNAME="$GTK_LIBS"
2657 GUI_INC_LOC="$GTK_CFLAGS"], )
2658 if test "x$GTK_CFLAGS" != "x"; then
2659 SKIP_GTK2=YES
2660 SKIP_GNOME=YES
2661 SKIP_ATHENA=YES
2662 SKIP_NEXTAW=YES
2663 SKIP_MOTIF=YES
2664 GUITYPE=GTK
2665 AC_SUBST(GTK_LIBNAME)
2666 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2667 AC_DEFINE(USE_GTK3)
2668 fi
2669 fi
2670fi
2671
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002672dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002673dnl glib-compile-resources is found in PATH, use GResource.
2674if test "x$GUITYPE" = "xGTK"; then
2675 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2676 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2677 if test "x$gdk_pixbuf_version" != x ; then
2678 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2679 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2680 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002681 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002682 AC_MSG_RESULT([OK.])
2683 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2684 AC_MSG_CHECKING([glib-compile-resources])
2685 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002686 GLIB_COMPILE_RESOURCES=""
2687 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002688 else
2689 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002690 AC_DEFINE(USE_GRESOURCE)
2691 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2692 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002693 fi
2694 else
2695 AC_MSG_RESULT([not usable.])
2696 fi
2697 else
2698 AC_MSG_RESULT([cannot obtain from pkg_config.])
2699 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002700
2701 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2702 AC_ARG_ENABLE(icon_cache_update,
2703 [ --disable-icon-cache-update update disabled],
2704 [],
2705 [enable_icon_cache_update="yes"])
2706 if test "$enable_icon_cache_update" = "yes"; then
2707 AC_MSG_RESULT([not set])
2708 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2709 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2710 AC_MSG_RESULT([not found in PATH.])
2711 fi
2712 else
2713 AC_MSG_RESULT([update disabled])
2714 fi
2715
2716 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2717 AC_ARG_ENABLE(desktop_database_update,
2718 [ --disable-desktop-database-update update disabled],
2719 [],
2720 [enable_desktop_database_update="yes"])
2721 if test "$enable_desktop_database_update" = "yes"; then
2722 AC_MSG_RESULT([not set])
2723 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2724 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2725 AC_MSG_RESULT([not found in PATH.])
2726 fi
2727 else
2728 AC_MSG_RESULT([update disabled])
2729 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002730fi
2731AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002732AC_SUBST(GRESOURCE_SRC)
2733AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002734AC_SUBST(GTK_UPDATE_ICON_CACHE)
2735AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002736
Bram Moolenaar071d4272004-06-13 20:20:40 +00002737dnl Check for Motif include files location.
2738dnl The LAST one found is used, this makes the highest version to be used,
2739dnl e.g. when Motif1.2 and Motif2.0 are both present.
2740
2741if test -z "$SKIP_MOTIF"; then
2742 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"
2743 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2744 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2745
2746 AC_MSG_CHECKING(for location of Motif GUI includes)
2747 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2748 GUI_INC_LOC=
2749 for try in $gui_includes; do
2750 if test -f "$try/Xm/Xm.h"; then
2751 GUI_INC_LOC=$try
2752 fi
2753 done
2754 if test -n "$GUI_INC_LOC"; then
2755 if test "$GUI_INC_LOC" = /usr/include; then
2756 GUI_INC_LOC=
2757 AC_MSG_RESULT(in default path)
2758 else
2759 AC_MSG_RESULT($GUI_INC_LOC)
2760 fi
2761 else
2762 AC_MSG_RESULT(<not found>)
2763 SKIP_MOTIF=YES
2764 fi
2765fi
2766
2767dnl Check for Motif library files location. In the same order as the include
2768dnl files, to avoid a mixup if several versions are present
2769
2770if test -z "$SKIP_MOTIF"; then
2771 AC_MSG_CHECKING(--with-motif-lib argument)
2772 AC_ARG_WITH(motif-lib,
2773 [ --with-motif-lib=STRING Library for Motif ],
2774 [ MOTIF_LIBNAME="${withval}" ] )
2775
2776 if test -n "$MOTIF_LIBNAME"; then
2777 AC_MSG_RESULT($MOTIF_LIBNAME)
2778 GUI_LIB_LOC=
2779 else
2780 AC_MSG_RESULT(no)
2781
2782 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2783 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2784
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002785 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2786 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002787 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002788 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /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 +00002789 GUI_LIB_LOC=
2790 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002791 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002792 if test -f "$libtry"; then
2793 GUI_LIB_LOC=$try
2794 fi
2795 done
2796 done
2797 if test -n "$GUI_LIB_LOC"; then
2798 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002799 if test "$GUI_LIB_LOC" = /usr/lib \
2800 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2801 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002802 GUI_LIB_LOC=
2803 AC_MSG_RESULT(in default path)
2804 else
2805 if test -n "$GUI_LIB_LOC"; then
2806 AC_MSG_RESULT($GUI_LIB_LOC)
2807 if test "`(uname) 2>/dev/null`" = SunOS &&
2808 uname -r | grep '^5' >/dev/null; then
2809 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2810 fi
2811 fi
2812 fi
2813 MOTIF_LIBNAME=-lXm
2814 else
2815 AC_MSG_RESULT(<not found>)
2816 SKIP_MOTIF=YES
2817 fi
2818 fi
2819fi
2820
2821if test -z "$SKIP_MOTIF"; then
2822 SKIP_ATHENA=YES
2823 SKIP_NEXTAW=YES
2824 GUITYPE=MOTIF
2825 AC_SUBST(MOTIF_LIBNAME)
2826fi
2827
2828dnl Check if the Athena files can be found
2829
2830GUI_X_LIBS=
2831
2832if test -z "$SKIP_ATHENA"; then
2833 AC_MSG_CHECKING(if Athena header files can be found)
2834 cflags_save=$CFLAGS
2835 CFLAGS="$CFLAGS $X_CFLAGS"
2836 AC_TRY_COMPILE([
2837#include <X11/Intrinsic.h>
2838#include <X11/Xaw/Paned.h>], ,
2839 AC_MSG_RESULT(yes),
2840 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2841 CFLAGS=$cflags_save
2842fi
2843
2844if test -z "$SKIP_ATHENA"; then
2845 GUITYPE=ATHENA
2846fi
2847
2848if test -z "$SKIP_NEXTAW"; then
2849 AC_MSG_CHECKING(if neXtaw header files can be found)
2850 cflags_save=$CFLAGS
2851 CFLAGS="$CFLAGS $X_CFLAGS"
2852 AC_TRY_COMPILE([
2853#include <X11/Intrinsic.h>
2854#include <X11/neXtaw/Paned.h>], ,
2855 AC_MSG_RESULT(yes),
2856 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2857 CFLAGS=$cflags_save
2858fi
2859
2860if test -z "$SKIP_NEXTAW"; then
2861 GUITYPE=NEXTAW
2862fi
2863
2864if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2865 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2866 dnl Avoid adding it when it twice
2867 if test -n "$GUI_INC_LOC"; then
2868 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2869 fi
2870 if test -n "$GUI_LIB_LOC"; then
2871 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2872 fi
2873
2874 dnl Check for -lXext and then for -lXmu
2875 ldflags_save=$LDFLAGS
2876 LDFLAGS="$X_LIBS $LDFLAGS"
2877 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2878 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2879 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2880 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2881 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2882 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2883 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2884 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2885 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2886 if test -z "$SKIP_MOTIF"; then
2887 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2888 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2889 fi
2890 LDFLAGS=$ldflags_save
2891
2892 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2893 AC_MSG_CHECKING(for extra X11 defines)
2894 NARROW_PROTO=
2895 rm -fr conftestdir
2896 if mkdir conftestdir; then
2897 cd conftestdir
2898 cat > Imakefile <<'EOF'
2899acfindx:
2900 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2901EOF
2902 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2903 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2904 fi
2905 cd ..
2906 rm -fr conftestdir
2907 fi
2908 if test -z "$NARROW_PROTO"; then
2909 AC_MSG_RESULT(no)
2910 else
2911 AC_MSG_RESULT($NARROW_PROTO)
2912 fi
2913 AC_SUBST(NARROW_PROTO)
2914fi
2915
2916dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2917dnl use the X11 include path
2918if test "$enable_xsmp" = "yes"; then
2919 cppflags_save=$CPPFLAGS
2920 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2921 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2922 CPPFLAGS=$cppflags_save
2923fi
2924
2925
Bram Moolenaar98921892016-02-23 17:14:37 +01002926if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002927 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2928 cppflags_save=$CPPFLAGS
2929 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2930 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2931
2932 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2933 if test ! "$enable_xim" = "no"; then
2934 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2935 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2936 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002937 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002938 fi
2939 CPPFLAGS=$cppflags_save
2940
2941 dnl automatically enable XIM when hangul input isn't enabled
2942 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2943 -a "x$GUITYPE" != "xNONE" ; then
2944 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2945 enable_xim="yes"
2946 fi
2947fi
2948
2949if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2950 cppflags_save=$CPPFLAGS
2951 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002952dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2953 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2954 AC_TRY_COMPILE([
2955#include <X11/Intrinsic.h>
2956#include <X11/Xmu/Editres.h>],
2957 [int i; i = 0;],
2958 AC_MSG_RESULT(yes)
2959 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2960 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002961 CPPFLAGS=$cppflags_save
2962fi
2963
2964dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2965if test -z "$SKIP_MOTIF"; then
2966 cppflags_save=$CPPFLAGS
2967 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002968 if test "$zOSUnix" = "yes"; then
2969 xmheader="Xm/Xm.h"
2970 else
2971 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002972 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002973 fi
2974 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002975
Bram Moolenaar77c19352012-06-13 19:19:41 +02002976 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002977 dnl Solaris uses XpmAttributes_21, very annoying.
2978 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2979 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2980 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2981 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2982 )
2983 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002984 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002985 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002986 CPPFLAGS=$cppflags_save
2987fi
2988
2989if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2990 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2991 enable_xim="no"
2992fi
2993if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2994 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2995 enable_fontset="no"
2996fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002997if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002998 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2999 enable_fontset="no"
3000fi
3001
Bram Moolenaar071d4272004-06-13 20:20:40 +00003002if test -z "$SKIP_PHOTON"; then
3003 GUITYPE=PHOTONGUI
3004fi
3005
3006AC_SUBST(GUI_INC_LOC)
3007AC_SUBST(GUI_LIB_LOC)
3008AC_SUBST(GUITYPE)
3009AC_SUBST(GUI_X_LIBS)
3010
3011if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3012 AC_MSG_ERROR([cannot use workshop without Motif])
3013fi
3014
3015dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3016if test "$enable_xim" = "yes"; then
3017 AC_DEFINE(FEAT_XIM)
3018fi
3019if test "$enable_fontset" = "yes"; then
3020 AC_DEFINE(FEAT_XFONTSET)
3021fi
3022
3023
3024dnl ---------------------------------------------------------------------------
3025dnl end of GUI-checking
3026dnl ---------------------------------------------------------------------------
3027
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003028dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003029AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003030case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003031 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003032 AC_MSG_CHECKING(for CYGWIN clipboard support)
3033 if test "x$with_x" = "xno" ; then
3034 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3035 AC_MSG_RESULT(yes)
3036 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3037 else
3038 AC_MSG_RESULT(no - using X11)
3039 fi ;;
3040
3041 *) CYGWIN=no; AC_MSG_RESULT(no);;
3042esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043
3044dnl Only really enable hangul input when GUI and XFONTSET are available
3045if test "$enable_hangulinput" = "yes"; then
3046 if test "x$GUITYPE" = "xNONE"; then
3047 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
3048 enable_hangulinput=no
3049 else
3050 AC_DEFINE(FEAT_HANGULIN)
3051 HANGULIN_SRC=hangulin.c
3052 AC_SUBST(HANGULIN_SRC)
3053 HANGULIN_OBJ=objects/hangulin.o
3054 AC_SUBST(HANGULIN_OBJ)
3055 fi
3056fi
3057
3058dnl Checks for libraries and include files.
3059
Bram Moolenaar446cb832008-06-24 21:56:24 +00003060AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3061 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003062 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003063#include "confdefs.h"
3064#include <ctype.h>
3065#if STDC_HEADERS
3066# include <stdlib.h>
3067# include <stddef.h>
3068#endif
3069main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003070 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003071 vim_cv_toupper_broken=yes
3072 ],[
3073 vim_cv_toupper_broken=no
3074 ],[
3075 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3076 ])])
3077
3078if test "x$vim_cv_toupper_broken" = "xyes" ; then
3079 AC_DEFINE(BROKEN_TOUPPER)
3080fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003081
3082AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003083AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003084 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3085 AC_MSG_RESULT(no))
3086
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003087AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
3088AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
3089 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3090 AC_MSG_RESULT(no))
3091
Bram Moolenaar071d4272004-06-13 20:20:40 +00003092dnl Checks for header files.
3093AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3094dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3095if test "$HAS_ELF" = 1; then
3096 AC_CHECK_LIB(elf, main)
3097fi
3098
3099AC_HEADER_DIRENT
3100
Bram Moolenaar071d4272004-06-13 20:20:40 +00003101dnl If sys/wait.h is not found it might still exist but not be POSIX
3102dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3103if test $ac_cv_header_sys_wait_h = no; then
3104 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
3105 AC_TRY_COMPILE([#include <sys/wait.h>],
3106 [union wait xx, yy; xx = yy],
3107 AC_MSG_RESULT(yes)
3108 AC_DEFINE(HAVE_SYS_WAIT_H)
3109 AC_DEFINE(HAVE_UNION_WAIT),
3110 AC_MSG_RESULT(no))
3111fi
3112
Bram Moolenaar779a7752016-01-30 23:26:34 +01003113AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003114 sys/select.h sys/utsname.h termcap.h fcntl.h \
3115 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3116 termio.h iconv.h inttypes.h langinfo.h math.h \
3117 unistd.h stropts.h errno.h sys/resource.h \
3118 sys/systeminfo.h locale.h sys/stream.h termios.h \
3119 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
3120 utime.h sys/param.h libintl.h libgen.h \
3121 util/debug.h util/msg18n.h frame.h sys/acl.h \
3122 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003123
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003124dnl sys/ptem.h depends on sys/stream.h on Solaris
3125AC_CHECK_HEADERS(sys/ptem.h, [], [],
3126[#if defined HAVE_SYS_STREAM_H
3127# include <sys/stream.h>
3128#endif])
3129
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003130dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3131AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3132[#if defined HAVE_SYS_PARAM_H
3133# include <sys/param.h>
3134#endif])
3135
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003136
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003137dnl pthread_np.h may exist but can only be used after including pthread.h
3138AC_MSG_CHECKING([for pthread_np.h])
3139AC_TRY_COMPILE([
3140#include <pthread.h>
3141#include <pthread_np.h>],
3142 [int i; i = 0;],
3143 AC_MSG_RESULT(yes)
3144 AC_DEFINE(HAVE_PTHREAD_NP_H),
3145 AC_MSG_RESULT(no))
3146
Bram Moolenaare344bea2005-09-01 20:46:49 +00003147AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003148if test "x$MACOSX" = "xyes"; then
3149 dnl The strings.h file on OS/X contains a warning and nothing useful.
3150 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3151else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003152
3153dnl Check if strings.h and string.h can both be included when defined.
3154AC_MSG_CHECKING([if strings.h can be included after string.h])
3155cppflags_save=$CPPFLAGS
3156CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3157AC_TRY_COMPILE([
3158#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3159# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3160 /* but don't do it on AIX 5.1 (Uribarri) */
3161#endif
3162#ifdef HAVE_XM_XM_H
3163# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3164#endif
3165#ifdef HAVE_STRING_H
3166# include <string.h>
3167#endif
3168#if defined(HAVE_STRINGS_H)
3169# include <strings.h>
3170#endif
3171 ], [int i; i = 0;],
3172 AC_MSG_RESULT(yes),
3173 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3174 AC_MSG_RESULT(no))
3175CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003176fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003177
3178dnl Checks for typedefs, structures, and compiler characteristics.
3179AC_PROG_GCC_TRADITIONAL
3180AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003181AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003182AC_TYPE_MODE_T
3183AC_TYPE_OFF_T
3184AC_TYPE_PID_T
3185AC_TYPE_SIZE_T
3186AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003187AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003188
Bram Moolenaar071d4272004-06-13 20:20:40 +00003189AC_HEADER_TIME
3190AC_CHECK_TYPE(ino_t, long)
3191AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003192AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003193AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003194
3195AC_MSG_CHECKING(for rlim_t)
3196if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3197 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3198else
3199 AC_EGREP_CPP(dnl
3200changequote(<<,>>)dnl
3201<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3202changequote([,]),
3203 [
3204#include <sys/types.h>
3205#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003206# include <stdlib.h>
3207# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003208#endif
3209#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003210# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003211#endif
3212 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3213 AC_MSG_RESULT($ac_cv_type_rlim_t)
3214fi
3215if test $ac_cv_type_rlim_t = no; then
3216 cat >> confdefs.h <<\EOF
3217#define rlim_t unsigned long
3218EOF
3219fi
3220
3221AC_MSG_CHECKING(for stack_t)
3222if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3223 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3224else
3225 AC_EGREP_CPP(stack_t,
3226 [
3227#include <sys/types.h>
3228#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003229# include <stdlib.h>
3230# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003231#endif
3232#include <signal.h>
3233 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3234 AC_MSG_RESULT($ac_cv_type_stack_t)
3235fi
3236if test $ac_cv_type_stack_t = no; then
3237 cat >> confdefs.h <<\EOF
3238#define stack_t struct sigaltstack
3239EOF
3240fi
3241
3242dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3243AC_MSG_CHECKING(whether stack_t has an ss_base field)
3244AC_TRY_COMPILE([
3245#include <sys/types.h>
3246#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003247# include <stdlib.h>
3248# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003249#endif
3250#include <signal.h>
3251#include "confdefs.h"
3252 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3253 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3254 AC_MSG_RESULT(no))
3255
3256olibs="$LIBS"
3257AC_MSG_CHECKING(--with-tlib argument)
3258AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3259if test -n "$with_tlib"; then
3260 AC_MSG_RESULT($with_tlib)
3261 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003262 AC_MSG_CHECKING(for linking with $with_tlib library)
3263 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3264 dnl Need to check for tgetent() below.
3265 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003266else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003267 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003268 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3269 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003270 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003271 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003272 dnl Older versions of ncurses have bugs, get a new one!
3273 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003274 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003275 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003276 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3277 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003278 esac
3279 for libname in $tlibs; do
3280 AC_CHECK_LIB(${libname}, tgetent,,)
3281 if test "x$olibs" != "x$LIBS"; then
3282 dnl It's possible that a library is found but it doesn't work
3283 dnl e.g., shared library that cannot be found
3284 dnl compile and run a test program to be sure
3285 AC_TRY_RUN([
3286#ifdef HAVE_TERMCAP_H
3287# include <termcap.h>
3288#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003289#if STDC_HEADERS
3290# include <stdlib.h>
3291# include <stddef.h>
3292#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003293main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3294 res="OK", res="FAIL", res="FAIL")
3295 if test "$res" = "OK"; then
3296 break
3297 fi
3298 AC_MSG_RESULT($libname library is not usable)
3299 LIBS="$olibs"
3300 fi
3301 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003302 if test "x$olibs" = "x$LIBS"; then
3303 AC_MSG_RESULT(no terminal library found)
3304 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003305fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003306
3307if test "x$olibs" = "x$LIBS"; then
3308 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003309 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003310 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3311 AC_MSG_RESULT(yes),
3312 AC_MSG_ERROR([NOT FOUND!
3313 You need to install a terminal library; for example ncurses.
3314 Or specify the name of the library with --with-tlib.]))
3315fi
3316
Bram Moolenaar446cb832008-06-24 21:56:24 +00003317AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3318 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003319 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003320#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003321#ifdef HAVE_TERMCAP_H
3322# include <termcap.h>
3323#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003324#ifdef HAVE_STRING_H
3325# include <string.h>
3326#endif
3327#if STDC_HEADERS
3328# include <stdlib.h>
3329# include <stddef.h>
3330#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003331main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003332{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003333 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003334 vim_cv_terminfo=no
3335 ],[
3336 vim_cv_terminfo=yes
3337 ],[
3338 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3339 ])
3340 ])
3341
3342if test "x$vim_cv_terminfo" = "xyes" ; then
3343 AC_DEFINE(TERMINFO)
3344fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003345
3346if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003347 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3348 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003349 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003350#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003351#ifdef HAVE_TERMCAP_H
3352# include <termcap.h>
3353#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003354#if STDC_HEADERS
3355# include <stdlib.h>
3356# include <stddef.h>
3357#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003358main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003359{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003360 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003361 vim_cv_tgent=zero
3362 ],[
3363 vim_cv_tgent=non-zero
3364 ],[
3365 AC_MSG_ERROR(failed to compile test program.)
3366 ])
3367 ])
3368
3369 if test "x$vim_cv_tgent" = "xzero" ; then
3370 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3371 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003372fi
3373
3374AC_MSG_CHECKING(whether termcap.h contains ospeed)
3375AC_TRY_LINK([
3376#ifdef HAVE_TERMCAP_H
3377# include <termcap.h>
3378#endif
3379 ], [ospeed = 20000],
3380 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3381 [AC_MSG_RESULT(no)
3382 AC_MSG_CHECKING(whether ospeed can be extern)
3383 AC_TRY_LINK([
3384#ifdef HAVE_TERMCAP_H
3385# include <termcap.h>
3386#endif
3387extern short ospeed;
3388 ], [ospeed = 20000],
3389 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3390 AC_MSG_RESULT(no))]
3391 )
3392
3393AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3394AC_TRY_LINK([
3395#ifdef HAVE_TERMCAP_H
3396# include <termcap.h>
3397#endif
3398 ], [if (UP == 0 && BC == 0) PC = 1],
3399 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3400 [AC_MSG_RESULT(no)
3401 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3402 AC_TRY_LINK([
3403#ifdef HAVE_TERMCAP_H
3404# include <termcap.h>
3405#endif
3406extern char *UP, *BC, PC;
3407 ], [if (UP == 0 && BC == 0) PC = 1],
3408 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3409 AC_MSG_RESULT(no))]
3410 )
3411
3412AC_MSG_CHECKING(whether tputs() uses outfuntype)
3413AC_TRY_COMPILE([
3414#ifdef HAVE_TERMCAP_H
3415# include <termcap.h>
3416#endif
3417 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3418 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3419 AC_MSG_RESULT(no))
3420
3421dnl On some SCO machines sys/select redefines struct timeval
3422AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3423AC_TRY_COMPILE([
3424#include <sys/types.h>
3425#include <sys/time.h>
3426#include <sys/select.h>], ,
3427 AC_MSG_RESULT(yes)
3428 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3429 AC_MSG_RESULT(no))
3430
3431dnl AC_DECL_SYS_SIGLIST
3432
3433dnl Checks for pty.c (copied from screen) ==========================
3434AC_MSG_CHECKING(for /dev/ptc)
3435if test -r /dev/ptc; then
3436 AC_DEFINE(HAVE_DEV_PTC)
3437 AC_MSG_RESULT(yes)
3438else
3439 AC_MSG_RESULT(no)
3440fi
3441
3442AC_MSG_CHECKING(for SVR4 ptys)
3443if test -c /dev/ptmx ; then
3444 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3445 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3446 AC_MSG_RESULT(no))
3447else
3448 AC_MSG_RESULT(no)
3449fi
3450
3451AC_MSG_CHECKING(for ptyranges)
3452if test -d /dev/ptym ; then
3453 pdir='/dev/ptym'
3454else
3455 pdir='/dev'
3456fi
3457dnl SCO uses ptyp%d
3458AC_EGREP_CPP(yes,
3459[#ifdef M_UNIX
3460 yes;
3461#endif
3462 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3463dnl if test -c /dev/ptyp19; then
3464dnl ptys=`echo /dev/ptyp??`
3465dnl else
3466dnl ptys=`echo $pdir/pty??`
3467dnl fi
3468if test "$ptys" != "$pdir/pty??" ; then
3469 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3470 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3471 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3472 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3473 AC_MSG_RESULT([$p0 / $p1])
3474else
3475 AC_MSG_RESULT([don't know])
3476fi
3477
3478dnl **** pty mode/group handling ****
3479dnl
3480dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003481rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003482AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3483 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003484 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003485#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003486#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003487#if STDC_HEADERS
3488# include <stdlib.h>
3489# include <stddef.h>
3490#endif
3491#ifdef HAVE_UNISTD_H
3492#include <unistd.h>
3493#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003494#include <sys/stat.h>
3495#include <stdio.h>
3496main()
3497{
3498 struct stat sb;
3499 char *x,*ttyname();
3500 int om, m;
3501 FILE *fp;
3502
3503 if (!(x = ttyname(0))) exit(1);
3504 if (stat(x, &sb)) exit(1);
3505 om = sb.st_mode;
3506 if (om & 002) exit(0);
3507 m = system("mesg y");
3508 if (m == -1 || m == 127) exit(1);
3509 if (stat(x, &sb)) exit(1);
3510 m = sb.st_mode;
3511 if (chmod(x, om)) exit(1);
3512 if (m & 002) exit(0);
3513 if (sb.st_gid == getgid()) exit(1);
3514 if (!(fp=fopen("conftest_grp", "w")))
3515 exit(1);
3516 fprintf(fp, "%d\n", sb.st_gid);
3517 fclose(fp);
3518 exit(0);
3519}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003520 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003521 if test -f conftest_grp; then
3522 vim_cv_tty_group=`cat conftest_grp`
3523 if test "x$vim_cv_tty_mode" = "x" ; then
3524 vim_cv_tty_mode=0620
3525 fi
3526 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3527 else
3528 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003529 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003530 fi
3531 ],[
3532 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003533 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003534 ],[
3535 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3536 ])
3537 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003538rm -f conftest_grp
3539
Bram Moolenaar446cb832008-06-24 21:56:24 +00003540if test "x$vim_cv_tty_group" != "xworld" ; then
3541 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3542 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003543 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003544 else
3545 AC_DEFINE(PTYMODE, 0620)
3546 fi
3547fi
3548
Bram Moolenaar071d4272004-06-13 20:20:40 +00003549dnl Checks for library functions. ===================================
3550
3551AC_TYPE_SIGNAL
3552
3553dnl find out what to use at the end of a signal function
3554if test $ac_cv_type_signal = void; then
3555 AC_DEFINE(SIGRETURN, [return])
3556else
3557 AC_DEFINE(SIGRETURN, [return 0])
3558fi
3559
3560dnl check if struct sigcontext is defined (used for SGI only)
3561AC_MSG_CHECKING(for struct sigcontext)
3562AC_TRY_COMPILE([
3563#include <signal.h>
3564test_sig()
3565{
3566 struct sigcontext *scont;
3567 scont = (struct sigcontext *)0;
3568 return 1;
3569} ], ,
3570 AC_MSG_RESULT(yes)
3571 AC_DEFINE(HAVE_SIGCONTEXT),
3572 AC_MSG_RESULT(no))
3573
3574dnl tricky stuff: try to find out if getcwd() is implemented with
3575dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003576AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3577 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003578 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003579#include "confdefs.h"
3580#ifdef HAVE_UNISTD_H
3581#include <unistd.h>
3582#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003583char *dagger[] = { "IFS=pwd", 0 };
3584main()
3585{
3586 char buffer[500];
3587 extern char **environ;
3588 environ = dagger;
3589 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003590}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003591 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003592 vim_cv_getcwd_broken=no
3593 ],[
3594 vim_cv_getcwd_broken=yes
3595 ],[
3596 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3597 ])
3598 ])
3599
3600if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3601 AC_DEFINE(BAD_GETCWD)
3602fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003603
Bram Moolenaar25153e12010-02-24 14:47:08 +01003604dnl Check for functions in one big call, to reduce the size of configure.
3605dnl Can only be used for functions that do not require any include.
3606AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003607 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003608 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003609 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003610 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003611 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
Bram Moolenaara6b89762016-02-29 21:38:26 +01003612 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003613AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003614
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003615dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3616dnl appropriate, so that off_t is 64 bits when needed.
3617AC_SYS_LARGEFILE
3618
Bram Moolenaar071d4272004-06-13 20:20:40 +00003619dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3620AC_MSG_CHECKING(for st_blksize)
3621AC_TRY_COMPILE(
3622[#include <sys/types.h>
3623#include <sys/stat.h>],
3624[ struct stat st;
3625 int n;
3626
3627 stat("/", &st);
3628 n = (int)st.st_blksize;],
3629 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3630 AC_MSG_RESULT(no))
3631
Bram Moolenaar446cb832008-06-24 21:56:24 +00003632AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3633 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003634 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003635#include "confdefs.h"
3636#if STDC_HEADERS
3637# include <stdlib.h>
3638# include <stddef.h>
3639#endif
3640#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003641#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003642main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003643 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003644 vim_cv_stat_ignores_slash=yes
3645 ],[
3646 vim_cv_stat_ignores_slash=no
3647 ],[
3648 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3649 ])
3650 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003651
Bram Moolenaar446cb832008-06-24 21:56:24 +00003652if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3653 AC_DEFINE(STAT_IGNORES_SLASH)
3654fi
3655
Bram Moolenaar071d4272004-06-13 20:20:40 +00003656dnl Link with iconv for charset translation, if not found without library.
3657dnl check for iconv() requires including iconv.h
3658dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3659dnl has been installed.
3660AC_MSG_CHECKING(for iconv_open())
3661save_LIBS="$LIBS"
3662LIBS="$LIBS -liconv"
3663AC_TRY_LINK([
3664#ifdef HAVE_ICONV_H
3665# include <iconv.h>
3666#endif
3667 ], [iconv_open("fr", "to");],
3668 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3669 LIBS="$save_LIBS"
3670 AC_TRY_LINK([
3671#ifdef HAVE_ICONV_H
3672# include <iconv.h>
3673#endif
3674 ], [iconv_open("fr", "to");],
3675 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3676 AC_MSG_RESULT(no)))
3677
3678
3679AC_MSG_CHECKING(for nl_langinfo(CODESET))
3680AC_TRY_LINK([
3681#ifdef HAVE_LANGINFO_H
3682# include <langinfo.h>
3683#endif
3684], [char *cs = nl_langinfo(CODESET);],
3685 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3686 AC_MSG_RESULT(no))
3687
Bram Moolenaar446cb832008-06-24 21:56:24 +00003688dnl Need various functions for floating point support. Only enable
3689dnl floating point when they are all present.
3690AC_CHECK_LIB(m, strtod)
3691AC_MSG_CHECKING([for strtod() and other floating point functions])
3692AC_TRY_LINK([
3693#ifdef HAVE_MATH_H
3694# include <math.h>
3695#endif
3696#if STDC_HEADERS
3697# include <stdlib.h>
3698# include <stddef.h>
3699#endif
3700], [char *s; double d;
3701 d = strtod("1.1", &s);
3702 d = fabs(1.11);
3703 d = ceil(1.11);
3704 d = floor(1.11);
3705 d = log10(1.11);
3706 d = pow(1.11, 2.22);
3707 d = sqrt(1.11);
3708 d = sin(1.11);
3709 d = cos(1.11);
3710 d = atan(1.11);
3711 ],
3712 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3713 AC_MSG_RESULT(no))
3714
Bram Moolenaara6b89762016-02-29 21:38:26 +01003715dnl isinf() and isnan() need to include header files and may need -lm.
3716AC_MSG_CHECKING([for isinf()])
3717AC_TRY_LINK([
3718#ifdef HAVE_MATH_H
3719# include <math.h>
3720#endif
3721#if STDC_HEADERS
3722# include <stdlib.h>
3723# include <stddef.h>
3724#endif
3725], [int r = isinf(1.11); ],
3726 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3727 AC_MSG_RESULT(no))
3728
3729AC_MSG_CHECKING([for isnan()])
3730AC_TRY_LINK([
3731#ifdef HAVE_MATH_H
3732# include <math.h>
3733#endif
3734#if STDC_HEADERS
3735# include <stdlib.h>
3736# include <stddef.h>
3737#endif
3738], [int r = isnan(1.11); ],
3739 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
3740 AC_MSG_RESULT(no))
3741
Bram Moolenaar071d4272004-06-13 20:20:40 +00003742dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3743dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003744dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003745AC_MSG_CHECKING(--disable-acl argument)
3746AC_ARG_ENABLE(acl,
3747 [ --disable-acl Don't check for ACL support.],
3748 , [enable_acl="yes"])
3749if test "$enable_acl" = "yes"; then
3750AC_MSG_RESULT(no)
3751AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3752 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3753 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3754
3755AC_MSG_CHECKING(for POSIX ACL support)
3756AC_TRY_LINK([
3757#include <sys/types.h>
3758#ifdef HAVE_SYS_ACL_H
3759# include <sys/acl.h>
3760#endif
3761acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3762 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3763 acl_free(acl);],
3764 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3765 AC_MSG_RESULT(no))
3766
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003767AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003768AC_MSG_CHECKING(for Solaris ACL support)
3769AC_TRY_LINK([
3770#ifdef HAVE_SYS_ACL_H
3771# include <sys/acl.h>
3772#endif], [acl("foo", GETACLCNT, 0, NULL);
3773 ],
3774 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003775 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003776
3777AC_MSG_CHECKING(for AIX ACL support)
3778AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003779#if STDC_HEADERS
3780# include <stdlib.h>
3781# include <stddef.h>
3782#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003783#ifdef HAVE_SYS_ACL_H
3784# include <sys/acl.h>
3785#endif
3786#ifdef HAVE_SYS_ACCESS_H
3787# include <sys/access.h>
3788#endif
3789#define _ALL_SOURCE
3790
3791#include <sys/stat.h>
3792
3793int aclsize;
3794struct acl *aclent;], [aclsize = sizeof(struct acl);
3795 aclent = (void *)malloc(aclsize);
3796 statacl("foo", STX_NORMAL, aclent, aclsize);
3797 ],
3798 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3799 AC_MSG_RESULT(no))
3800else
3801 AC_MSG_RESULT(yes)
3802fi
3803
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003804if test "x$GTK_CFLAGS" != "x"; then
3805 dnl pango_shape_full() is new, fall back to pango_shape().
3806 AC_MSG_CHECKING(for pango_shape_full)
3807 ac_save_CFLAGS="$CFLAGS"
3808 ac_save_LIBS="$LIBS"
3809 CFLAGS="$CFLAGS $GTK_CFLAGS"
3810 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003811 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003812 [#include <gtk/gtk.h>],
3813 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3814 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3815 AC_MSG_RESULT(no))
3816 CFLAGS="$ac_save_CFLAGS"
3817 LIBS="$ac_save_LIBS"
3818fi
3819
Bram Moolenaar071d4272004-06-13 20:20:40 +00003820AC_MSG_CHECKING(--disable-gpm argument)
3821AC_ARG_ENABLE(gpm,
3822 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3823 [enable_gpm="yes"])
3824
3825if test "$enable_gpm" = "yes"; then
3826 AC_MSG_RESULT(no)
3827 dnl Checking if gpm support can be compiled
3828 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3829 [olibs="$LIBS" ; LIBS="-lgpm"]
3830 AC_TRY_LINK(
3831 [#include <gpm.h>
3832 #include <linux/keyboard.h>],
3833 [Gpm_GetLibVersion(NULL);],
3834 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3835 dnl FEAT_MOUSE_GPM if mouse support is included
3836 [vi_cv_have_gpm=yes],
3837 [vi_cv_have_gpm=no])
3838 [LIBS="$olibs"]
3839 )
3840 if test $vi_cv_have_gpm = yes; then
3841 LIBS="$LIBS -lgpm"
3842 AC_DEFINE(HAVE_GPM)
3843 fi
3844else
3845 AC_MSG_RESULT(yes)
3846fi
3847
Bram Moolenaar446cb832008-06-24 21:56:24 +00003848AC_MSG_CHECKING(--disable-sysmouse argument)
3849AC_ARG_ENABLE(sysmouse,
3850 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3851 [enable_sysmouse="yes"])
3852
3853if test "$enable_sysmouse" = "yes"; then
3854 AC_MSG_RESULT(no)
3855 dnl Checking if sysmouse support can be compiled
3856 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3857 dnl defines FEAT_SYSMOUSE if mouse support is included
3858 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3859 AC_TRY_LINK(
3860 [#include <sys/consio.h>
3861 #include <signal.h>
3862 #include <sys/fbio.h>],
3863 [struct mouse_info mouse;
3864 mouse.operation = MOUSE_MODE;
3865 mouse.operation = MOUSE_SHOW;
3866 mouse.u.mode.mode = 0;
3867 mouse.u.mode.signal = SIGUSR2;],
3868 [vi_cv_have_sysmouse=yes],
3869 [vi_cv_have_sysmouse=no])
3870 )
3871 if test $vi_cv_have_sysmouse = yes; then
3872 AC_DEFINE(HAVE_SYSMOUSE)
3873 fi
3874else
3875 AC_MSG_RESULT(yes)
3876fi
3877
Bram Moolenaarf05da212009-11-17 16:13:15 +00003878dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3879AC_MSG_CHECKING(for FD_CLOEXEC)
3880AC_TRY_COMPILE(
3881[#if HAVE_FCNTL_H
3882# include <fcntl.h>
3883#endif],
3884[ int flag = FD_CLOEXEC;],
3885 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3886 AC_MSG_RESULT(not usable))
3887
Bram Moolenaar071d4272004-06-13 20:20:40 +00003888dnl rename needs to be checked separately to work on Nextstep with cc
3889AC_MSG_CHECKING(for rename)
3890AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3891 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3892 AC_MSG_RESULT(no))
3893
3894dnl sysctl() may exist but not the arguments we use
3895AC_MSG_CHECKING(for sysctl)
3896AC_TRY_COMPILE(
3897[#include <sys/types.h>
3898#include <sys/sysctl.h>],
3899[ int mib[2], r;
3900 size_t len;
3901
3902 mib[0] = CTL_HW;
3903 mib[1] = HW_USERMEM;
3904 len = sizeof(r);
3905 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3906 ],
3907 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3908 AC_MSG_RESULT(not usable))
3909
3910dnl sysinfo() may exist but not be Linux compatible
3911AC_MSG_CHECKING(for sysinfo)
3912AC_TRY_COMPILE(
3913[#include <sys/types.h>
3914#include <sys/sysinfo.h>],
3915[ struct sysinfo sinfo;
3916 int t;
3917
3918 (void)sysinfo(&sinfo);
3919 t = sinfo.totalram;
3920 ],
3921 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3922 AC_MSG_RESULT(not usable))
3923
Bram Moolenaar914572a2007-05-01 11:37:47 +00003924dnl struct sysinfo may have the mem_unit field or not
3925AC_MSG_CHECKING(for sysinfo.mem_unit)
3926AC_TRY_COMPILE(
3927[#include <sys/types.h>
3928#include <sys/sysinfo.h>],
3929[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003930 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003931 ],
3932 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3933 AC_MSG_RESULT(no))
3934
Bram Moolenaar071d4272004-06-13 20:20:40 +00003935dnl sysconf() may exist but not support what we want to use
3936AC_MSG_CHECKING(for sysconf)
3937AC_TRY_COMPILE(
3938[#include <unistd.h>],
3939[ (void)sysconf(_SC_PAGESIZE);
3940 (void)sysconf(_SC_PHYS_PAGES);
3941 ],
3942 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3943 AC_MSG_RESULT(not usable))
3944
Bram Moolenaar914703b2010-05-31 21:59:46 +02003945AC_CHECK_SIZEOF([int])
3946AC_CHECK_SIZEOF([long])
3947AC_CHECK_SIZEOF([time_t])
3948AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003949
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003950dnl Use different names to avoid clashing with other header files.
3951AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3952AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3953
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003954dnl Make sure that uint32_t is really 32 bits unsigned.
3955AC_MSG_CHECKING([uint32_t is 32 bits])
3956AC_TRY_RUN([
3957#ifdef HAVE_STDINT_H
3958# include <stdint.h>
3959#endif
3960#ifdef HAVE_INTTYPES_H
3961# include <inttypes.h>
3962#endif
3963main() {
3964 uint32_t nr1 = (uint32_t)-1;
3965 uint32_t nr2 = (uint32_t)0xffffffffUL;
3966 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3967 exit(0);
3968}],
3969AC_MSG_RESULT(ok),
3970AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003971AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003972
Bram Moolenaar446cb832008-06-24 21:56:24 +00003973dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3974dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3975
Bram Moolenaar071d4272004-06-13 20:20:40 +00003976[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003977#include "confdefs.h"
3978#ifdef HAVE_STRING_H
3979# include <string.h>
3980#endif
3981#if STDC_HEADERS
3982# include <stdlib.h>
3983# include <stddef.h>
3984#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003985main() {
3986 char buf[10];
3987 strcpy(buf, "abcdefghi");
3988 mch_memmove(buf, buf + 2, 3);
3989 if (strncmp(buf, "ababcf", 6))
3990 exit(1);
3991 strcpy(buf, "abcdefghi");
3992 mch_memmove(buf + 2, buf, 3);
3993 if (strncmp(buf, "cdedef", 6))
3994 exit(1);
3995 exit(0); /* libc version works properly. */
3996}']
3997
Bram Moolenaar446cb832008-06-24 21:56:24 +00003998AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3999 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004000 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 +00004001 [
4002 vim_cv_memmove_handles_overlap=yes
4003 ],[
4004 vim_cv_memmove_handles_overlap=no
4005 ],[
4006 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
4007 ])
4008 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004009
Bram Moolenaar446cb832008-06-24 21:56:24 +00004010if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4011 AC_DEFINE(USEMEMMOVE)
4012else
4013 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4014 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004015 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 +00004016 [
4017 vim_cv_bcopy_handles_overlap=yes
4018 ],[
4019 vim_cv_bcopy_handles_overlap=no
4020 ],[
4021 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4022 ])
4023 ])
4024
4025 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4026 AC_DEFINE(USEBCOPY)
4027 else
4028 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4029 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004030 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 +00004031 [
4032 vim_cv_memcpy_handles_overlap=yes
4033 ],[
4034 vim_cv_memcpy_handles_overlap=no
4035 ],[
4036 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4037 ])
4038 ])
4039
4040 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4041 AC_DEFINE(USEMEMCPY)
4042 fi
4043 fi
4044fi
4045
Bram Moolenaar071d4272004-06-13 20:20:40 +00004046
4047dnl Check for multibyte locale functions
4048dnl Find out if _Xsetlocale() is supported by libX11.
4049dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004050if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004051 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004052 libs_save=$LIBS
4053 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4054 CFLAGS="$CFLAGS $X_CFLAGS"
4055
4056 AC_MSG_CHECKING(whether X_LOCALE needed)
4057 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
4058 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
4059 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4060 AC_MSG_RESULT(no))
4061
4062 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
4063 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
4064 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4065
Bram Moolenaar071d4272004-06-13 20:20:40 +00004066 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004067 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004068fi
4069
4070dnl Link with xpg4, it is said to make Korean locale working
4071AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4072
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004073dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004074dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004075dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004076dnl -t for typedefs (many ctags have this)
4077dnl -s for static functions (Elvis ctags only?)
4078dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4079dnl -i+m to test for older Exuberant ctags
4080AC_MSG_CHECKING(how to create tags)
4081test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004082if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004083 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004084elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4085 TAGPRG="exctags -I INIT+ --fields=+S"
4086elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4087 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004088else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004089 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004090 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
4091 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
4092 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
4093 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
4094 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
4095 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
4096 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
4097fi
4098test -f tags.save && mv tags.save tags
4099AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4100
4101dnl Check how we can run man with a section number
4102AC_MSG_CHECKING(how to run man with a section nr)
4103MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00004104(eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004105AC_MSG_RESULT($MANDEF)
4106if test "$MANDEF" = "man -s"; then
4107 AC_DEFINE(USEMAN_S)
4108fi
4109
4110dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004111dnl We take care to base this on an empty LIBS: on some systems libelf would be
4112dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4113dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004114AC_MSG_CHECKING(--disable-nls argument)
4115AC_ARG_ENABLE(nls,
4116 [ --disable-nls Don't support NLS (gettext()).], ,
4117 [enable_nls="yes"])
4118
4119if test "$enable_nls" = "yes"; then
4120 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004121
4122 INSTALL_LANGS=install-languages
4123 AC_SUBST(INSTALL_LANGS)
4124 INSTALL_TOOL_LANGS=install-tool-languages
4125 AC_SUBST(INSTALL_TOOL_LANGS)
4126
Bram Moolenaar071d4272004-06-13 20:20:40 +00004127 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4128 AC_MSG_CHECKING([for NLS])
4129 if test -f po/Makefile; then
4130 have_gettext="no"
4131 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004132 olibs=$LIBS
4133 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00004134 AC_TRY_LINK(
4135 [#include <libintl.h>],
4136 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004137 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4138 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004139 AC_TRY_LINK(
4140 [#include <libintl.h>],
4141 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004142 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4143 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004144 AC_MSG_RESULT([gettext() doesn't work]);
4145 LIBS=$olibs))
4146 else
4147 AC_MSG_RESULT([msgfmt not found - disabled]);
4148 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02004149 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004150 AC_DEFINE(HAVE_GETTEXT)
4151 MAKEMO=yes
4152 AC_SUBST(MAKEMO)
4153 dnl this was added in GNU gettext 0.10.36
4154 AC_CHECK_FUNCS(bind_textdomain_codeset)
4155 dnl _nl_msg_cat_cntr is required for GNU gettext
4156 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
4157 AC_TRY_LINK(
4158 [#include <libintl.h>
4159 extern int _nl_msg_cat_cntr;],
4160 [++_nl_msg_cat_cntr;],
4161 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4162 AC_MSG_RESULT([no]))
4163 fi
4164 else
4165 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4166 fi
4167else
4168 AC_MSG_RESULT(yes)
4169fi
4170
4171dnl Check for dynamic linking loader
4172AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4173if test x${DLL} = xdlfcn.h; then
4174 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4175 AC_MSG_CHECKING([for dlopen()])
4176 AC_TRY_LINK(,[
4177 extern void* dlopen();
4178 dlopen();
4179 ],
4180 AC_MSG_RESULT(yes);
4181 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4182 AC_MSG_RESULT(no);
4183 AC_MSG_CHECKING([for dlopen() in -ldl])
4184 olibs=$LIBS
4185 LIBS="$LIBS -ldl"
4186 AC_TRY_LINK(,[
4187 extern void* dlopen();
4188 dlopen();
4189 ],
4190 AC_MSG_RESULT(yes);
4191 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4192 AC_MSG_RESULT(no);
4193 LIBS=$olibs))
4194 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4195 dnl ick :-)
4196 AC_MSG_CHECKING([for dlsym()])
4197 AC_TRY_LINK(,[
4198 extern void* dlsym();
4199 dlsym();
4200 ],
4201 AC_MSG_RESULT(yes);
4202 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4203 AC_MSG_RESULT(no);
4204 AC_MSG_CHECKING([for dlsym() in -ldl])
4205 olibs=$LIBS
4206 LIBS="$LIBS -ldl"
4207 AC_TRY_LINK(,[
4208 extern void* dlsym();
4209 dlsym();
4210 ],
4211 AC_MSG_RESULT(yes);
4212 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4213 AC_MSG_RESULT(no);
4214 LIBS=$olibs))
4215elif test x${DLL} = xdl.h; then
4216 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4217 AC_MSG_CHECKING([for shl_load()])
4218 AC_TRY_LINK(,[
4219 extern void* shl_load();
4220 shl_load();
4221 ],
4222 AC_MSG_RESULT(yes);
4223 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4224 AC_MSG_RESULT(no);
4225 AC_MSG_CHECKING([for shl_load() in -ldld])
4226 olibs=$LIBS
4227 LIBS="$LIBS -ldld"
4228 AC_TRY_LINK(,[
4229 extern void* shl_load();
4230 shl_load();
4231 ],
4232 AC_MSG_RESULT(yes);
4233 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4234 AC_MSG_RESULT(no);
4235 LIBS=$olibs))
4236fi
4237AC_CHECK_HEADERS(setjmp.h)
4238
4239if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4240 dnl -ldl must come after DynaLoader.a
4241 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4242 LIBS=`echo $LIBS | sed s/-ldl//`
4243 PERL_LIBS="$PERL_LIBS -ldl"
4244 fi
4245fi
4246
Bram Moolenaar164fca32010-07-14 13:58:07 +02004247if test "x$MACOSX" = "xyes"; then
4248 AC_MSG_CHECKING(whether we need -framework Cocoa)
4249 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4250 dnl disabled during tiny build)
4251 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4252 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004253 AC_MSG_RESULT(yes)
4254 else
4255 AC_MSG_RESULT(no)
4256 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004257 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4258 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4259 dnl missing Objective-C symbols.
4260 if test "x$features" = "xtiny"; then
4261 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4262 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4263 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004264fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004265if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004266 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004267fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004268
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004269dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4270dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4271dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004272dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4273dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004274DEPEND_CFLAGS_FILTER=
4275if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004276 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004277 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004278 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004279 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004280 AC_MSG_RESULT(yes)
4281 else
4282 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004283 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004284 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4285 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004286 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004287 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004288 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4289 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004290 CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004291 AC_MSG_RESULT(yes)
4292 else
4293 AC_MSG_RESULT(no)
4294 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004295fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004296AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004297
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004298dnl link.sh tries to avoid overlinking in a hackish way.
4299dnl At least GNU ld supports --as-needed which provides the same functionality
4300dnl at linker level. Let's use it.
4301AC_MSG_CHECKING(linker --as-needed support)
4302LINK_AS_NEEDED=
4303# Check if linker supports --as-needed and --no-as-needed options
4304if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004305 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004306 LINK_AS_NEEDED=yes
4307fi
4308if test "$LINK_AS_NEEDED" = yes; then
4309 AC_MSG_RESULT(yes)
4310else
4311 AC_MSG_RESULT(no)
4312fi
4313AC_SUBST(LINK_AS_NEEDED)
4314
Bram Moolenaar77c19352012-06-13 19:19:41 +02004315# IBM z/OS reset CFLAGS for config.mk
4316if test "$zOSUnix" = "yes"; then
4317 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4318fi
4319
Bram Moolenaar071d4272004-06-13 20:20:40 +00004320dnl write output files
4321AC_OUTPUT(auto/config.mk:config.mk.in)
4322
4323dnl vim: set sw=2 tw=78 fo+=l: