blob: 279ed47227967df3969225633a5bcc7740a18ce2 [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
1929AC_MSG_CHECKING(--enable-workshop argument)
1930AC_ARG_ENABLE(workshop,
1931 [ --enable-workshop Include Sun Visual Workshop support.], ,
1932 [enable_workshop="no"])
1933AC_MSG_RESULT($enable_workshop)
1934if test "$enable_workshop" = "yes"; then
1935 AC_DEFINE(FEAT_SUN_WORKSHOP)
1936 WORKSHOP_SRC="workshop.c integration.c"
1937 AC_SUBST(WORKSHOP_SRC)
1938 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1939 AC_SUBST(WORKSHOP_OBJ)
1940 if test "${enable_gui-xxx}" = xxx; then
1941 enable_gui=motif
1942 fi
1943fi
1944
1945AC_MSG_CHECKING(--disable-netbeans argument)
1946AC_ARG_ENABLE(netbeans,
1947 [ --disable-netbeans Disable NetBeans integration support.],
1948 , [enable_netbeans="yes"])
1949if test "$enable_netbeans" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001950 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1951 AC_MSG_RESULT([cannot use NetBeans with tiny or small features])
1952 enable_netbeans="no"
1953 else
1954 AC_MSG_RESULT(no)
1955 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001956else
1957 AC_MSG_RESULT(yes)
1958fi
1959
1960AC_MSG_CHECKING(--disable-channel argument)
1961AC_ARG_ENABLE(channel,
1962 [ --disable-channel Disable process communication support.],
1963 , [enable_channel="yes"])
1964if test "$enable_channel" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001965 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1966 AC_MSG_RESULT([cannot use channels with tiny or small features])
1967 enable_channel="no"
1968 else
1969 AC_MSG_RESULT(no)
1970 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001971else
1972 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01001973 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01001974 enable_netbeans="no"
1975 else
1976 AC_MSG_RESULT(yes)
1977 fi
1978fi
1979
Bram Moolenaar16435482016-01-24 21:31:54 +01001980if test "$enable_channel" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001981 dnl On Solaris we need the socket and nsl library.
1982 AC_CHECK_LIB(socket, socket)
1983 AC_CHECK_LIB(nsl, gethostbyname)
Bram Moolenaare0874f82016-01-24 20:36:41 +01001984 AC_MSG_CHECKING(whether compiling with process communication is possible)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001985 AC_TRY_LINK([
1986#include <stdio.h>
1987#include <stdlib.h>
1988#include <stdarg.h>
1989#include <fcntl.h>
1990#include <netdb.h>
1991#include <netinet/in.h>
1992#include <errno.h>
1993#include <sys/types.h>
1994#include <sys/socket.h>
1995 /* Check bitfields */
1996 struct nbbuf {
1997 unsigned int initDone:1;
1998 ushort signmaplen;
1999 };
2000 ], [
2001 /* Check creating a socket. */
2002 struct sockaddr_in server;
2003 (void)socket(AF_INET, SOCK_STREAM, 0);
2004 (void)htons(100);
2005 (void)gethostbyname("microsoft.com");
2006 if (errno == ECONNREFUSED)
2007 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2008 ],
2009 AC_MSG_RESULT(yes),
Bram Moolenaare0874f82016-01-24 20:36:41 +01002010 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002011fi
2012if test "$enable_netbeans" = "yes"; then
2013 AC_DEFINE(FEAT_NETBEANS_INTG)
2014 NETBEANS_SRC="netbeans.c"
2015 AC_SUBST(NETBEANS_SRC)
2016 NETBEANS_OBJ="objects/netbeans.o"
2017 AC_SUBST(NETBEANS_OBJ)
2018fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002019if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002020 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaare0874f82016-01-24 20:36:41 +01002021 CHANNEL_SRC="channel.c"
2022 AC_SUBST(CHANNEL_SRC)
2023 CHANNEL_OBJ="objects/channel.o"
2024 AC_SUBST(CHANNEL_OBJ)
2025fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026
Bram Moolenaar071d4272004-06-13 20:20:40 +00002027AC_MSG_CHECKING(--enable-multibyte argument)
2028AC_ARG_ENABLE(multibyte,
2029 [ --enable-multibyte Include multibyte editing support.], ,
2030 [enable_multibyte="no"])
2031AC_MSG_RESULT($enable_multibyte)
2032if test "$enable_multibyte" = "yes"; then
2033 AC_DEFINE(FEAT_MBYTE)
2034fi
2035
2036AC_MSG_CHECKING(--enable-hangulinput argument)
2037AC_ARG_ENABLE(hangulinput,
2038 [ --enable-hangulinput Include Hangul input support.], ,
2039 [enable_hangulinput="no"])
2040AC_MSG_RESULT($enable_hangulinput)
2041
2042AC_MSG_CHECKING(--enable-xim argument)
2043AC_ARG_ENABLE(xim,
2044 [ --enable-xim Include XIM input support.],
2045 AC_MSG_RESULT($enable_xim),
2046 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002047
2048AC_MSG_CHECKING(--enable-fontset argument)
2049AC_ARG_ENABLE(fontset,
2050 [ --enable-fontset Include X fontset output support.], ,
2051 [enable_fontset="no"])
2052AC_MSG_RESULT($enable_fontset)
2053dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2054
2055test -z "$with_x" && with_x=yes
2056test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2057if test "$with_x" = no; then
2058 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2059else
2060 dnl Do this check early, so that its failure can override user requests.
2061
2062 AC_PATH_PROG(xmkmfpath, xmkmf)
2063
2064 AC_PATH_XTRA
2065
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002066 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067 dnl be compiled with a special option.
2068 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002069 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002070 CFLAGS="$CFLAGS -W c,dll"
2071 LDFLAGS="$LDFLAGS -W l,dll"
2072 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2073 fi
2074
2075 dnl On my HPUX system the X include dir is found, but the lib dir not.
2076 dnl This is a desparate try to fix this.
2077
2078 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2079 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2080 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2081 X_LIBS="$X_LIBS -L$x_libraries"
2082 if test "`(uname) 2>/dev/null`" = SunOS &&
2083 uname -r | grep '^5' >/dev/null; then
2084 X_LIBS="$X_LIBS -R $x_libraries"
2085 fi
2086 fi
2087
2088 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2089 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2090 AC_MSG_RESULT(Corrected X includes to $x_includes)
2091 X_CFLAGS="$X_CFLAGS -I$x_includes"
2092 fi
2093
2094 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2095 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2096 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2097 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2098 dnl Same for "-R/usr/lib ".
2099 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2100
2101
2102 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002103 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2104 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105 AC_MSG_CHECKING(if X11 header files can be found)
2106 cflags_save=$CFLAGS
2107 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002108 AC_TRY_COMPILE([#include <X11/Xlib.h>
2109#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002110 AC_MSG_RESULT(yes),
2111 AC_MSG_RESULT(no); no_x=yes)
2112 CFLAGS=$cflags_save
2113
2114 if test "${no_x-no}" = yes; then
2115 with_x=no
2116 else
2117 AC_DEFINE(HAVE_X11)
2118 X_LIB="-lXt -lX11";
2119 AC_SUBST(X_LIB)
2120
2121 ac_save_LDFLAGS="$LDFLAGS"
2122 LDFLAGS="-L$x_libraries $LDFLAGS"
2123
2124 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2125 dnl For HP-UX 10.20 it must be before -lSM -lICE
2126 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2127 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2128
2129 dnl Some systems need -lnsl -lsocket when testing for ICE.
2130 dnl The check above doesn't do this, try here (again). Also needed to get
2131 dnl them after Xdmcp. link.sh will remove them when not needed.
2132 dnl Check for other function than above to avoid the cached value
2133 AC_CHECK_LIB(ICE, IceOpenConnection,
2134 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2135
2136 dnl Check for -lXpm (needed for some versions of Motif)
2137 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2138 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2139 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2140
2141 dnl Check that the X11 header files don't use implicit declarations
2142 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2143 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002144 dnl -Werror is GCC only, others like Solaris Studio might not like it
2145 if test "$GCC" = yes; then
2146 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2147 else
2148 CFLAGS="$CFLAGS $X_CFLAGS"
2149 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2151 AC_MSG_RESULT(no),
2152 CFLAGS="$CFLAGS -Wno-implicit-int"
2153 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2154 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2155 AC_MSG_RESULT(test failed)
2156 )
2157 )
2158 CFLAGS=$cflags_save
2159
2160 LDFLAGS="$ac_save_LDFLAGS"
2161
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002162 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2163 AC_CACHE_VAL(ac_cv_small_wchar_t,
2164 [AC_TRY_RUN([
2165#include <X11/Xlib.h>
2166#if STDC_HEADERS
2167# include <stdlib.h>
2168# include <stddef.h>
2169#endif
2170 main()
2171 {
2172 if (sizeof(wchar_t) <= 2)
2173 exit(1);
2174 exit(0);
2175 }],
2176 ac_cv_small_wchar_t="no",
2177 ac_cv_small_wchar_t="yes",
2178 AC_MSG_ERROR(failed to compile test program))])
2179 AC_MSG_RESULT($ac_cv_small_wchar_t)
2180 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2181 AC_DEFINE(SMALL_WCHAR_T)
2182 fi
2183
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184 fi
2185fi
2186
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002187test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002188
2189AC_MSG_CHECKING(--enable-gui argument)
2190AC_ARG_ENABLE(gui,
Bram Moolenaar98921892016-02-23 17:14:37 +01002191 [ --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 +00002192
2193dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2194dnl Do not use character classes for portability with old tools.
2195enable_gui_canon=`echo "_$enable_gui" | \
2196 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2197
2198dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002199SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002200SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002201SKIP_GNOME=YES
2202SKIP_MOTIF=YES
2203SKIP_ATHENA=YES
2204SKIP_NEXTAW=YES
2205SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002206SKIP_CARBON=YES
2207GUITYPE=NONE
2208
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002209if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002210 SKIP_PHOTON=
2211 case "$enable_gui_canon" in
2212 no) AC_MSG_RESULT(no GUI support)
2213 SKIP_PHOTON=YES ;;
2214 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2215 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2216 photon) AC_MSG_RESULT(Photon GUI support) ;;
2217 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2218 SKIP_PHOTON=YES ;;
2219 esac
2220
2221elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2222 SKIP_CARBON=
2223 case "$enable_gui_canon" in
2224 no) AC_MSG_RESULT(no GUI support)
2225 SKIP_CARBON=YES ;;
2226 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002227 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2228 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002229 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2230 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2231 SKIP_CARBON=YES ;;
2232 esac
2233
2234else
2235
Bram Moolenaar071d4272004-06-13 20:20:40 +00002236 case "$enable_gui_canon" in
2237 no|none) AC_MSG_RESULT(no GUI support) ;;
2238 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002239 SKIP_GTK2=
2240 SKIP_GNOME=
2241 SKIP_MOTIF=
2242 SKIP_ATHENA=
2243 SKIP_NEXTAW=
2244 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002245 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002247 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2248 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002249 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002250 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2251 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002252 motif) AC_MSG_RESULT(Motif GUI support)
2253 SKIP_MOTIF=;;
2254 athena) AC_MSG_RESULT(Athena GUI support)
2255 SKIP_ATHENA=;;
2256 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2257 SKIP_NEXTAW=;;
2258 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2259 esac
2260
2261fi
2262
Bram Moolenaar071d4272004-06-13 20:20:40 +00002263if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2264 -a "$enable_gui_canon" != "gnome2"; then
2265 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2266 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002267 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002268 , enable_gtk2_check="yes")
2269 AC_MSG_RESULT($enable_gtk2_check)
2270 if test "x$enable_gtk2_check" = "xno"; then
2271 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002272 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273 fi
2274fi
2275
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002276if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002277 AC_MSG_CHECKING(whether or not to look for GNOME)
2278 AC_ARG_ENABLE(gnome-check,
2279 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2280 , enable_gnome_check="no")
2281 AC_MSG_RESULT($enable_gnome_check)
2282 if test "x$enable_gnome_check" = "xno"; then
2283 SKIP_GNOME=YES
2284 fi
2285fi
2286
Bram Moolenaar98921892016-02-23 17:14:37 +01002287if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2288 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2289 AC_ARG_ENABLE(gtk3-check,
2290 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2291 , enable_gtk3_check="yes")
2292 AC_MSG_RESULT($enable_gtk3_check)
2293 if test "x$enable_gtk3_check" = "xno"; then
2294 SKIP_GTK3=YES
2295 fi
2296fi
2297
Bram Moolenaar071d4272004-06-13 20:20:40 +00002298if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2299 AC_MSG_CHECKING(whether or not to look for Motif)
2300 AC_ARG_ENABLE(motif-check,
2301 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2302 , enable_motif_check="yes")
2303 AC_MSG_RESULT($enable_motif_check)
2304 if test "x$enable_motif_check" = "xno"; then
2305 SKIP_MOTIF=YES
2306 fi
2307fi
2308
2309if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2310 AC_MSG_CHECKING(whether or not to look for Athena)
2311 AC_ARG_ENABLE(athena-check,
2312 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2313 , enable_athena_check="yes")
2314 AC_MSG_RESULT($enable_athena_check)
2315 if test "x$enable_athena_check" = "xno"; then
2316 SKIP_ATHENA=YES
2317 fi
2318fi
2319
2320if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2321 AC_MSG_CHECKING(whether or not to look for neXtaw)
2322 AC_ARG_ENABLE(nextaw-check,
2323 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2324 , enable_nextaw_check="yes")
2325 AC_MSG_RESULT($enable_nextaw_check);
2326 if test "x$enable_nextaw_check" = "xno"; then
2327 SKIP_NEXTAW=YES
2328 fi
2329fi
2330
2331if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2332 AC_MSG_CHECKING(whether or not to look for Carbon)
2333 AC_ARG_ENABLE(carbon-check,
2334 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2335 , enable_carbon_check="yes")
2336 AC_MSG_RESULT($enable_carbon_check);
2337 if test "x$enable_carbon_check" = "xno"; then
2338 SKIP_CARBON=YES
2339 fi
2340fi
2341
Bram Moolenaar843ee412004-06-30 16:16:41 +00002342
Bram Moolenaar071d4272004-06-13 20:20:40 +00002343if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2344 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002345 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002346 AC_MSG_RESULT(yes);
2347 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002348 if test "$VIMNAME" = "vim"; then
2349 VIMNAME=Vim
2350 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002351
Bram Moolenaar164fca32010-07-14 13:58:07 +02002352 if test "x$MACARCH" = "xboth"; then
2353 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2354 else
2355 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2356 fi
2357
Bram Moolenaar14716812006-05-04 21:54:08 +00002358 dnl Default install directory is not /usr/local
2359 if test x$prefix = xNONE; then
2360 prefix=/Applications
2361 fi
2362
2363 dnl Sorry for the hard coded default
2364 datadir='${prefix}/Vim.app/Contents/Resources'
2365
Bram Moolenaar071d4272004-06-13 20:20:40 +00002366 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002367 SKIP_GTK2=YES;
2368 SKIP_GNOME=YES;
2369 SKIP_MOTIF=YES;
2370 SKIP_ATHENA=YES;
2371 SKIP_NEXTAW=YES;
2372 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002373 SKIP_CARBON=YES
2374fi
2375
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002377dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002378dnl
2379dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002380dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002381dnl
2382AC_DEFUN(AM_PATH_GTK,
2383[
2384 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2385 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002386 no_gtk=""
2387 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2388 && $PKG_CONFIG --exists gtk+-2.0; then
2389 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002390 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2391 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002392 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2393 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2394 dnl something like that.
2395 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002396 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002397 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2398 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2399 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2400 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2401 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2402 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2403 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2404 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002405 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2406 && $PKG_CONFIG --exists gtk+-3.0; then
2407 {
2408 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2409 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2410
2411 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2412 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2413 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2414 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2415 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2416 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2417 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2418 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2419 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2420 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002421 else
2422 no_gtk=yes
2423 fi
2424
2425 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2426 {
2427 ac_save_CFLAGS="$CFLAGS"
2428 ac_save_LIBS="$LIBS"
2429 CFLAGS="$CFLAGS $GTK_CFLAGS"
2430 LIBS="$LIBS $GTK_LIBS"
2431
2432 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002433 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002434 dnl
2435 rm -f conf.gtktest
2436 AC_TRY_RUN([
2437#include <gtk/gtk.h>
2438#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002439#if STDC_HEADERS
2440# include <stdlib.h>
2441# include <stddef.h>
2442#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002443
2444int
2445main ()
2446{
2447int major, minor, micro;
2448char *tmp_version;
2449
2450system ("touch conf.gtktest");
2451
2452/* HP/UX 9 (%@#!) writes to sscanf strings */
2453tmp_version = g_strdup("$min_gtk_version");
2454if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2455 printf("%s, bad version string\n", "$min_gtk_version");
2456 exit(1);
2457 }
2458
2459if ((gtk_major_version > major) ||
2460 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2461 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2462 (gtk_micro_version >= micro)))
2463{
2464 return 0;
2465}
2466return 1;
2467}
2468],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2469 CFLAGS="$ac_save_CFLAGS"
2470 LIBS="$ac_save_LIBS"
2471 }
2472 fi
2473 if test "x$no_gtk" = x ; then
2474 if test "x$enable_gtktest" = "xyes"; then
2475 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2476 else
2477 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2478 fi
2479 ifelse([$2], , :, [$2])
2480 else
2481 {
2482 AC_MSG_RESULT(no)
2483 GTK_CFLAGS=""
2484 GTK_LIBS=""
2485 ifelse([$3], , :, [$3])
2486 }
2487 fi
2488 }
2489 else
2490 GTK_CFLAGS=""
2491 GTK_LIBS=""
2492 ifelse([$3], , :, [$3])
2493 fi
2494 AC_SUBST(GTK_CFLAGS)
2495 AC_SUBST(GTK_LIBS)
2496 rm -f conf.gtktest
2497])
2498
2499dnl ---------------------------------------------------------------------------
2500dnl gnome
2501dnl ---------------------------------------------------------------------------
2502AC_DEFUN([GNOME_INIT_HOOK],
2503[
2504 AC_SUBST(GNOME_LIBS)
2505 AC_SUBST(GNOME_LIBDIR)
2506 AC_SUBST(GNOME_INCLUDEDIR)
2507
2508 AC_ARG_WITH(gnome-includes,
2509 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2510 [CFLAGS="$CFLAGS -I$withval"]
2511 )
2512
2513 AC_ARG_WITH(gnome-libs,
2514 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2515 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2516 )
2517
2518 AC_ARG_WITH(gnome,
2519 [ --with-gnome Specify prefix for GNOME files],
2520 if test x$withval = xyes; then
2521 want_gnome=yes
2522 ifelse([$1], [], :, [$1])
2523 else
2524 if test "x$withval" = xno; then
2525 want_gnome=no
2526 else
2527 want_gnome=yes
2528 LDFLAGS="$LDFLAGS -L$withval/lib"
2529 CFLAGS="$CFLAGS -I$withval/include"
2530 gnome_prefix=$withval/lib
2531 fi
2532 fi,
2533 want_gnome=yes)
2534
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002535 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002536 {
2537 AC_MSG_CHECKING(for libgnomeui-2.0)
2538 if $PKG_CONFIG --exists libgnomeui-2.0; then
2539 AC_MSG_RESULT(yes)
2540 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2541 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2542 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002543
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002544 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2545 dnl This might not be the right way but it works for me...
2546 AC_MSG_CHECKING(for FreeBSD)
2547 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2548 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002549 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002550 GNOME_LIBS="$GNOME_LIBS -pthread"
2551 else
2552 AC_MSG_RESULT(no)
2553 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002554 $1
2555 else
2556 AC_MSG_RESULT(not found)
2557 if test "x$2" = xfail; then
2558 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2559 fi
2560 fi
2561 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002562 fi
2563])
2564
2565AC_DEFUN([GNOME_INIT],[
2566 GNOME_INIT_HOOK([],fail)
2567])
2568
2569
2570dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002571dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002573if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002574
2575 AC_MSG_CHECKING(--disable-gtktest argument)
2576 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2577 , enable_gtktest=yes)
2578 if test "x$enable_gtktest" = "xyes" ; then
2579 AC_MSG_RESULT(gtk test enabled)
2580 else
2581 AC_MSG_RESULT(gtk test disabled)
2582 fi
2583
Bram Moolenaar071d4272004-06-13 20:20:40 +00002584 if test "X$PKG_CONFIG" = "X"; then
2585 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2586 fi
2587
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002588 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002589 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2590 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002591 AM_PATH_GTK(2.2.0,
2592 [GUI_LIB_LOC="$GTK_LIBDIR"
2593 GTK_LIBNAME="$GTK_LIBS"
2594 GUI_INC_LOC="$GTK_CFLAGS"], )
2595 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002596 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002597 SKIP_ATHENA=YES
2598 SKIP_NEXTAW=YES
2599 SKIP_MOTIF=YES
2600 GUITYPE=GTK
2601 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002602 fi
2603 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002604 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002605 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2606 || test "0$gtk_minor_version" -ge 2; then
2607 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2608 fi
2609 dnl
2610 dnl if GTK exists, then check for GNOME.
2611 dnl
2612 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002613 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002614 GNOME_INIT_HOOK([have_gnome=yes])
2615 if test "x$have_gnome" = xyes ; then
2616 AC_DEFINE(FEAT_GUI_GNOME)
2617 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2618 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002619 fi
2620 }
2621 fi
2622 fi
2623fi
2624
Bram Moolenaar98921892016-02-23 17:14:37 +01002625
2626dnl ---------------------------------------------------------------------------
2627dnl Check for GTK3.
2628dnl ---------------------------------------------------------------------------
2629if test -z "$SKIP_GTK3"; then
2630
2631 AC_MSG_CHECKING(--disable-gtktest argument)
2632 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2633 , enable_gtktest=yes)
2634 if test "x$enable_gtktest" = "xyes" ; then
2635 AC_MSG_RESULT(gtk test enabled)
2636 else
2637 AC_MSG_RESULT(gtk test disabled)
2638 fi
2639
2640 if test "X$PKG_CONFIG" = "X"; then
2641 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2642 fi
2643
2644 if test "x$PKG_CONFIG" != "xno"; then
2645 AM_PATH_GTK(3.0.0,
2646 [GUI_LIB_LOC="$GTK_LIBDIR"
2647 GTK_LIBNAME="$GTK_LIBS"
2648 GUI_INC_LOC="$GTK_CFLAGS"], )
2649 if test "x$GTK_CFLAGS" != "x"; then
2650 SKIP_GTK2=YES
2651 SKIP_GNOME=YES
2652 SKIP_ATHENA=YES
2653 SKIP_NEXTAW=YES
2654 SKIP_MOTIF=YES
2655 GUITYPE=GTK
2656 AC_SUBST(GTK_LIBNAME)
2657 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2658 AC_DEFINE(USE_GTK3)
2659 fi
2660 fi
2661fi
2662
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002663dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002664dnl glib-compile-resources is found in PATH, use GResource.
2665if test "x$GUITYPE" = "xGTK"; then
2666 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2667 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2668 if test "x$gdk_pixbuf_version" != x ; then
2669 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2670 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2671 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002672 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002673 AC_MSG_RESULT([OK.])
2674 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2675 AC_MSG_CHECKING([glib-compile-resources])
2676 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002677 GLIB_COMPILE_RESOURCES=""
2678 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002679 else
2680 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002681 AC_DEFINE(USE_GRESOURCE)
2682 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2683 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002684 fi
2685 else
2686 AC_MSG_RESULT([not usable.])
2687 fi
2688 else
2689 AC_MSG_RESULT([cannot obtain from pkg_config.])
2690 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002691
2692 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2693 AC_ARG_ENABLE(icon_cache_update,
2694 [ --disable-icon-cache-update update disabled],
2695 [],
2696 [enable_icon_cache_update="yes"])
2697 if test "$enable_icon_cache_update" = "yes"; then
2698 AC_MSG_RESULT([not set])
2699 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2700 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2701 AC_MSG_RESULT([not found in PATH.])
2702 fi
2703 else
2704 AC_MSG_RESULT([update disabled])
2705 fi
2706
2707 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2708 AC_ARG_ENABLE(desktop_database_update,
2709 [ --disable-desktop-database-update update disabled],
2710 [],
2711 [enable_desktop_database_update="yes"])
2712 if test "$enable_desktop_database_update" = "yes"; then
2713 AC_MSG_RESULT([not set])
2714 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2715 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2716 AC_MSG_RESULT([not found in PATH.])
2717 fi
2718 else
2719 AC_MSG_RESULT([update disabled])
2720 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002721fi
2722AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002723AC_SUBST(GRESOURCE_SRC)
2724AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002725AC_SUBST(GTK_UPDATE_ICON_CACHE)
2726AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002727
Bram Moolenaar071d4272004-06-13 20:20:40 +00002728dnl Check for Motif include files location.
2729dnl The LAST one found is used, this makes the highest version to be used,
2730dnl e.g. when Motif1.2 and Motif2.0 are both present.
2731
2732if test -z "$SKIP_MOTIF"; then
2733 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"
2734 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2735 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2736
2737 AC_MSG_CHECKING(for location of Motif GUI includes)
2738 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2739 GUI_INC_LOC=
2740 for try in $gui_includes; do
2741 if test -f "$try/Xm/Xm.h"; then
2742 GUI_INC_LOC=$try
2743 fi
2744 done
2745 if test -n "$GUI_INC_LOC"; then
2746 if test "$GUI_INC_LOC" = /usr/include; then
2747 GUI_INC_LOC=
2748 AC_MSG_RESULT(in default path)
2749 else
2750 AC_MSG_RESULT($GUI_INC_LOC)
2751 fi
2752 else
2753 AC_MSG_RESULT(<not found>)
2754 SKIP_MOTIF=YES
2755 fi
2756fi
2757
2758dnl Check for Motif library files location. In the same order as the include
2759dnl files, to avoid a mixup if several versions are present
2760
2761if test -z "$SKIP_MOTIF"; then
2762 AC_MSG_CHECKING(--with-motif-lib argument)
2763 AC_ARG_WITH(motif-lib,
2764 [ --with-motif-lib=STRING Library for Motif ],
2765 [ MOTIF_LIBNAME="${withval}" ] )
2766
2767 if test -n "$MOTIF_LIBNAME"; then
2768 AC_MSG_RESULT($MOTIF_LIBNAME)
2769 GUI_LIB_LOC=
2770 else
2771 AC_MSG_RESULT(no)
2772
2773 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2774 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2775
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002776 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2777 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002778 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002779 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 +00002780 GUI_LIB_LOC=
2781 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002782 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002783 if test -f "$libtry"; then
2784 GUI_LIB_LOC=$try
2785 fi
2786 done
2787 done
2788 if test -n "$GUI_LIB_LOC"; then
2789 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002790 if test "$GUI_LIB_LOC" = /usr/lib \
2791 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2792 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793 GUI_LIB_LOC=
2794 AC_MSG_RESULT(in default path)
2795 else
2796 if test -n "$GUI_LIB_LOC"; then
2797 AC_MSG_RESULT($GUI_LIB_LOC)
2798 if test "`(uname) 2>/dev/null`" = SunOS &&
2799 uname -r | grep '^5' >/dev/null; then
2800 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2801 fi
2802 fi
2803 fi
2804 MOTIF_LIBNAME=-lXm
2805 else
2806 AC_MSG_RESULT(<not found>)
2807 SKIP_MOTIF=YES
2808 fi
2809 fi
2810fi
2811
2812if test -z "$SKIP_MOTIF"; then
2813 SKIP_ATHENA=YES
2814 SKIP_NEXTAW=YES
2815 GUITYPE=MOTIF
2816 AC_SUBST(MOTIF_LIBNAME)
2817fi
2818
2819dnl Check if the Athena files can be found
2820
2821GUI_X_LIBS=
2822
2823if test -z "$SKIP_ATHENA"; then
2824 AC_MSG_CHECKING(if Athena header files can be found)
2825 cflags_save=$CFLAGS
2826 CFLAGS="$CFLAGS $X_CFLAGS"
2827 AC_TRY_COMPILE([
2828#include <X11/Intrinsic.h>
2829#include <X11/Xaw/Paned.h>], ,
2830 AC_MSG_RESULT(yes),
2831 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2832 CFLAGS=$cflags_save
2833fi
2834
2835if test -z "$SKIP_ATHENA"; then
2836 GUITYPE=ATHENA
2837fi
2838
2839if test -z "$SKIP_NEXTAW"; then
2840 AC_MSG_CHECKING(if neXtaw header files can be found)
2841 cflags_save=$CFLAGS
2842 CFLAGS="$CFLAGS $X_CFLAGS"
2843 AC_TRY_COMPILE([
2844#include <X11/Intrinsic.h>
2845#include <X11/neXtaw/Paned.h>], ,
2846 AC_MSG_RESULT(yes),
2847 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2848 CFLAGS=$cflags_save
2849fi
2850
2851if test -z "$SKIP_NEXTAW"; then
2852 GUITYPE=NEXTAW
2853fi
2854
2855if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2856 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2857 dnl Avoid adding it when it twice
2858 if test -n "$GUI_INC_LOC"; then
2859 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2860 fi
2861 if test -n "$GUI_LIB_LOC"; then
2862 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2863 fi
2864
2865 dnl Check for -lXext and then for -lXmu
2866 ldflags_save=$LDFLAGS
2867 LDFLAGS="$X_LIBS $LDFLAGS"
2868 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2869 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2870 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2871 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2872 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2873 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2874 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2875 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2876 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2877 if test -z "$SKIP_MOTIF"; then
2878 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2879 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2880 fi
2881 LDFLAGS=$ldflags_save
2882
2883 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2884 AC_MSG_CHECKING(for extra X11 defines)
2885 NARROW_PROTO=
2886 rm -fr conftestdir
2887 if mkdir conftestdir; then
2888 cd conftestdir
2889 cat > Imakefile <<'EOF'
2890acfindx:
2891 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2892EOF
2893 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2894 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2895 fi
2896 cd ..
2897 rm -fr conftestdir
2898 fi
2899 if test -z "$NARROW_PROTO"; then
2900 AC_MSG_RESULT(no)
2901 else
2902 AC_MSG_RESULT($NARROW_PROTO)
2903 fi
2904 AC_SUBST(NARROW_PROTO)
2905fi
2906
2907dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2908dnl use the X11 include path
2909if test "$enable_xsmp" = "yes"; then
2910 cppflags_save=$CPPFLAGS
2911 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2912 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2913 CPPFLAGS=$cppflags_save
2914fi
2915
2916
Bram Moolenaar98921892016-02-23 17:14:37 +01002917if 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 +00002918 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2919 cppflags_save=$CPPFLAGS
2920 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2921 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2922
2923 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2924 if test ! "$enable_xim" = "no"; then
2925 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2926 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2927 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002928 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002929 fi
2930 CPPFLAGS=$cppflags_save
2931
2932 dnl automatically enable XIM when hangul input isn't enabled
2933 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2934 -a "x$GUITYPE" != "xNONE" ; then
2935 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2936 enable_xim="yes"
2937 fi
2938fi
2939
2940if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2941 cppflags_save=$CPPFLAGS
2942 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002943dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2944 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2945 AC_TRY_COMPILE([
2946#include <X11/Intrinsic.h>
2947#include <X11/Xmu/Editres.h>],
2948 [int i; i = 0;],
2949 AC_MSG_RESULT(yes)
2950 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2951 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002952 CPPFLAGS=$cppflags_save
2953fi
2954
2955dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2956if test -z "$SKIP_MOTIF"; then
2957 cppflags_save=$CPPFLAGS
2958 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002959 if test "$zOSUnix" = "yes"; then
2960 xmheader="Xm/Xm.h"
2961 else
2962 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002963 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002964 fi
2965 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002966
Bram Moolenaar77c19352012-06-13 19:19:41 +02002967 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002968 dnl Solaris uses XpmAttributes_21, very annoying.
2969 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2970 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2971 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2972 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2973 )
2974 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002975 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002976 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002977 CPPFLAGS=$cppflags_save
2978fi
2979
2980if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2981 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2982 enable_xim="no"
2983fi
2984if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2985 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2986 enable_fontset="no"
2987fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002988if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002989 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2990 enable_fontset="no"
2991fi
2992
Bram Moolenaar071d4272004-06-13 20:20:40 +00002993if test -z "$SKIP_PHOTON"; then
2994 GUITYPE=PHOTONGUI
2995fi
2996
2997AC_SUBST(GUI_INC_LOC)
2998AC_SUBST(GUI_LIB_LOC)
2999AC_SUBST(GUITYPE)
3000AC_SUBST(GUI_X_LIBS)
3001
3002if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3003 AC_MSG_ERROR([cannot use workshop without Motif])
3004fi
3005
3006dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3007if test "$enable_xim" = "yes"; then
3008 AC_DEFINE(FEAT_XIM)
3009fi
3010if test "$enable_fontset" = "yes"; then
3011 AC_DEFINE(FEAT_XFONTSET)
3012fi
3013
3014
3015dnl ---------------------------------------------------------------------------
3016dnl end of GUI-checking
3017dnl ---------------------------------------------------------------------------
3018
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003019dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003020AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003021case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003022 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003023 AC_MSG_CHECKING(for CYGWIN clipboard support)
3024 if test "x$with_x" = "xno" ; then
3025 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3026 AC_MSG_RESULT(yes)
3027 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3028 else
3029 AC_MSG_RESULT(no - using X11)
3030 fi ;;
3031
3032 *) CYGWIN=no; AC_MSG_RESULT(no);;
3033esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003034
3035dnl Only really enable hangul input when GUI and XFONTSET are available
3036if test "$enable_hangulinput" = "yes"; then
3037 if test "x$GUITYPE" = "xNONE"; then
3038 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
3039 enable_hangulinput=no
3040 else
3041 AC_DEFINE(FEAT_HANGULIN)
3042 HANGULIN_SRC=hangulin.c
3043 AC_SUBST(HANGULIN_SRC)
3044 HANGULIN_OBJ=objects/hangulin.o
3045 AC_SUBST(HANGULIN_OBJ)
3046 fi
3047fi
3048
3049dnl Checks for libraries and include files.
3050
Bram Moolenaar446cb832008-06-24 21:56:24 +00003051AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3052 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003053 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003054#include "confdefs.h"
3055#include <ctype.h>
3056#if STDC_HEADERS
3057# include <stdlib.h>
3058# include <stddef.h>
3059#endif
3060main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003061 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003062 vim_cv_toupper_broken=yes
3063 ],[
3064 vim_cv_toupper_broken=no
3065 ],[
3066 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3067 ])])
3068
3069if test "x$vim_cv_toupper_broken" = "xyes" ; then
3070 AC_DEFINE(BROKEN_TOUPPER)
3071fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003072
3073AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003074AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003075 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3076 AC_MSG_RESULT(no))
3077
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003078AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
3079AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
3080 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3081 AC_MSG_RESULT(no))
3082
Bram Moolenaar071d4272004-06-13 20:20:40 +00003083dnl Checks for header files.
3084AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3085dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3086if test "$HAS_ELF" = 1; then
3087 AC_CHECK_LIB(elf, main)
3088fi
3089
3090AC_HEADER_DIRENT
3091
Bram Moolenaar071d4272004-06-13 20:20:40 +00003092dnl If sys/wait.h is not found it might still exist but not be POSIX
3093dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3094if test $ac_cv_header_sys_wait_h = no; then
3095 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
3096 AC_TRY_COMPILE([#include <sys/wait.h>],
3097 [union wait xx, yy; xx = yy],
3098 AC_MSG_RESULT(yes)
3099 AC_DEFINE(HAVE_SYS_WAIT_H)
3100 AC_DEFINE(HAVE_UNION_WAIT),
3101 AC_MSG_RESULT(no))
3102fi
3103
Bram Moolenaar779a7752016-01-30 23:26:34 +01003104AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003105 sys/select.h sys/utsname.h termcap.h fcntl.h \
3106 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3107 termio.h iconv.h inttypes.h langinfo.h math.h \
3108 unistd.h stropts.h errno.h sys/resource.h \
3109 sys/systeminfo.h locale.h sys/stream.h termios.h \
3110 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
3111 utime.h sys/param.h libintl.h libgen.h \
3112 util/debug.h util/msg18n.h frame.h sys/acl.h \
3113 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003114
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003115dnl sys/ptem.h depends on sys/stream.h on Solaris
3116AC_CHECK_HEADERS(sys/ptem.h, [], [],
3117[#if defined HAVE_SYS_STREAM_H
3118# include <sys/stream.h>
3119#endif])
3120
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003121dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3122AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3123[#if defined HAVE_SYS_PARAM_H
3124# include <sys/param.h>
3125#endif])
3126
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003127
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003128dnl pthread_np.h may exist but can only be used after including pthread.h
3129AC_MSG_CHECKING([for pthread_np.h])
3130AC_TRY_COMPILE([
3131#include <pthread.h>
3132#include <pthread_np.h>],
3133 [int i; i = 0;],
3134 AC_MSG_RESULT(yes)
3135 AC_DEFINE(HAVE_PTHREAD_NP_H),
3136 AC_MSG_RESULT(no))
3137
Bram Moolenaare344bea2005-09-01 20:46:49 +00003138AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003139if test "x$MACOSX" = "xyes"; then
3140 dnl The strings.h file on OS/X contains a warning and nothing useful.
3141 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3142else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003143
3144dnl Check if strings.h and string.h can both be included when defined.
3145AC_MSG_CHECKING([if strings.h can be included after string.h])
3146cppflags_save=$CPPFLAGS
3147CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3148AC_TRY_COMPILE([
3149#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3150# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3151 /* but don't do it on AIX 5.1 (Uribarri) */
3152#endif
3153#ifdef HAVE_XM_XM_H
3154# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3155#endif
3156#ifdef HAVE_STRING_H
3157# include <string.h>
3158#endif
3159#if defined(HAVE_STRINGS_H)
3160# include <strings.h>
3161#endif
3162 ], [int i; i = 0;],
3163 AC_MSG_RESULT(yes),
3164 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3165 AC_MSG_RESULT(no))
3166CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003167fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003168
3169dnl Checks for typedefs, structures, and compiler characteristics.
3170AC_PROG_GCC_TRADITIONAL
3171AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003172AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003173AC_TYPE_MODE_T
3174AC_TYPE_OFF_T
3175AC_TYPE_PID_T
3176AC_TYPE_SIZE_T
3177AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003178AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003179
Bram Moolenaar071d4272004-06-13 20:20:40 +00003180AC_HEADER_TIME
3181AC_CHECK_TYPE(ino_t, long)
3182AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003183AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003184AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003185
3186AC_MSG_CHECKING(for rlim_t)
3187if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3188 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3189else
3190 AC_EGREP_CPP(dnl
3191changequote(<<,>>)dnl
3192<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3193changequote([,]),
3194 [
3195#include <sys/types.h>
3196#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003197# include <stdlib.h>
3198# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003199#endif
3200#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003201# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003202#endif
3203 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3204 AC_MSG_RESULT($ac_cv_type_rlim_t)
3205fi
3206if test $ac_cv_type_rlim_t = no; then
3207 cat >> confdefs.h <<\EOF
3208#define rlim_t unsigned long
3209EOF
3210fi
3211
3212AC_MSG_CHECKING(for stack_t)
3213if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3214 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3215else
3216 AC_EGREP_CPP(stack_t,
3217 [
3218#include <sys/types.h>
3219#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003220# include <stdlib.h>
3221# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003222#endif
3223#include <signal.h>
3224 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3225 AC_MSG_RESULT($ac_cv_type_stack_t)
3226fi
3227if test $ac_cv_type_stack_t = no; then
3228 cat >> confdefs.h <<\EOF
3229#define stack_t struct sigaltstack
3230EOF
3231fi
3232
3233dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3234AC_MSG_CHECKING(whether stack_t has an ss_base field)
3235AC_TRY_COMPILE([
3236#include <sys/types.h>
3237#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003238# include <stdlib.h>
3239# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003240#endif
3241#include <signal.h>
3242#include "confdefs.h"
3243 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3244 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3245 AC_MSG_RESULT(no))
3246
3247olibs="$LIBS"
3248AC_MSG_CHECKING(--with-tlib argument)
3249AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3250if test -n "$with_tlib"; then
3251 AC_MSG_RESULT($with_tlib)
3252 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003253 AC_MSG_CHECKING(for linking with $with_tlib library)
3254 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3255 dnl Need to check for tgetent() below.
3256 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003257else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003258 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003259 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3260 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003261 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003262 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003263 dnl Older versions of ncurses have bugs, get a new one!
3264 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003265 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003266 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003267 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3268 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003269 esac
3270 for libname in $tlibs; do
3271 AC_CHECK_LIB(${libname}, tgetent,,)
3272 if test "x$olibs" != "x$LIBS"; then
3273 dnl It's possible that a library is found but it doesn't work
3274 dnl e.g., shared library that cannot be found
3275 dnl compile and run a test program to be sure
3276 AC_TRY_RUN([
3277#ifdef HAVE_TERMCAP_H
3278# include <termcap.h>
3279#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003280#if STDC_HEADERS
3281# include <stdlib.h>
3282# include <stddef.h>
3283#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003284main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3285 res="OK", res="FAIL", res="FAIL")
3286 if test "$res" = "OK"; then
3287 break
3288 fi
3289 AC_MSG_RESULT($libname library is not usable)
3290 LIBS="$olibs"
3291 fi
3292 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003293 if test "x$olibs" = "x$LIBS"; then
3294 AC_MSG_RESULT(no terminal library found)
3295 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003296fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003297
3298if test "x$olibs" = "x$LIBS"; then
3299 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003300 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003301 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3302 AC_MSG_RESULT(yes),
3303 AC_MSG_ERROR([NOT FOUND!
3304 You need to install a terminal library; for example ncurses.
3305 Or specify the name of the library with --with-tlib.]))
3306fi
3307
Bram Moolenaar446cb832008-06-24 21:56:24 +00003308AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3309 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003310 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003311#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003312#ifdef HAVE_TERMCAP_H
3313# include <termcap.h>
3314#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003315#ifdef HAVE_STRING_H
3316# include <string.h>
3317#endif
3318#if STDC_HEADERS
3319# include <stdlib.h>
3320# include <stddef.h>
3321#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003322main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003323{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003324 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003325 vim_cv_terminfo=no
3326 ],[
3327 vim_cv_terminfo=yes
3328 ],[
3329 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3330 ])
3331 ])
3332
3333if test "x$vim_cv_terminfo" = "xyes" ; then
3334 AC_DEFINE(TERMINFO)
3335fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003336
3337if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003338 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3339 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003340 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003341#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003342#ifdef HAVE_TERMCAP_H
3343# include <termcap.h>
3344#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003345#if STDC_HEADERS
3346# include <stdlib.h>
3347# include <stddef.h>
3348#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003349main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003350{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003351 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003352 vim_cv_tgent=zero
3353 ],[
3354 vim_cv_tgent=non-zero
3355 ],[
3356 AC_MSG_ERROR(failed to compile test program.)
3357 ])
3358 ])
3359
3360 if test "x$vim_cv_tgent" = "xzero" ; then
3361 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3362 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003363fi
3364
3365AC_MSG_CHECKING(whether termcap.h contains ospeed)
3366AC_TRY_LINK([
3367#ifdef HAVE_TERMCAP_H
3368# include <termcap.h>
3369#endif
3370 ], [ospeed = 20000],
3371 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3372 [AC_MSG_RESULT(no)
3373 AC_MSG_CHECKING(whether ospeed can be extern)
3374 AC_TRY_LINK([
3375#ifdef HAVE_TERMCAP_H
3376# include <termcap.h>
3377#endif
3378extern short ospeed;
3379 ], [ospeed = 20000],
3380 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3381 AC_MSG_RESULT(no))]
3382 )
3383
3384AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3385AC_TRY_LINK([
3386#ifdef HAVE_TERMCAP_H
3387# include <termcap.h>
3388#endif
3389 ], [if (UP == 0 && BC == 0) PC = 1],
3390 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3391 [AC_MSG_RESULT(no)
3392 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3393 AC_TRY_LINK([
3394#ifdef HAVE_TERMCAP_H
3395# include <termcap.h>
3396#endif
3397extern char *UP, *BC, PC;
3398 ], [if (UP == 0 && BC == 0) PC = 1],
3399 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3400 AC_MSG_RESULT(no))]
3401 )
3402
3403AC_MSG_CHECKING(whether tputs() uses outfuntype)
3404AC_TRY_COMPILE([
3405#ifdef HAVE_TERMCAP_H
3406# include <termcap.h>
3407#endif
3408 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3409 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3410 AC_MSG_RESULT(no))
3411
3412dnl On some SCO machines sys/select redefines struct timeval
3413AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3414AC_TRY_COMPILE([
3415#include <sys/types.h>
3416#include <sys/time.h>
3417#include <sys/select.h>], ,
3418 AC_MSG_RESULT(yes)
3419 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3420 AC_MSG_RESULT(no))
3421
3422dnl AC_DECL_SYS_SIGLIST
3423
3424dnl Checks for pty.c (copied from screen) ==========================
3425AC_MSG_CHECKING(for /dev/ptc)
3426if test -r /dev/ptc; then
3427 AC_DEFINE(HAVE_DEV_PTC)
3428 AC_MSG_RESULT(yes)
3429else
3430 AC_MSG_RESULT(no)
3431fi
3432
3433AC_MSG_CHECKING(for SVR4 ptys)
3434if test -c /dev/ptmx ; then
3435 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3436 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3437 AC_MSG_RESULT(no))
3438else
3439 AC_MSG_RESULT(no)
3440fi
3441
3442AC_MSG_CHECKING(for ptyranges)
3443if test -d /dev/ptym ; then
3444 pdir='/dev/ptym'
3445else
3446 pdir='/dev'
3447fi
3448dnl SCO uses ptyp%d
3449AC_EGREP_CPP(yes,
3450[#ifdef M_UNIX
3451 yes;
3452#endif
3453 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3454dnl if test -c /dev/ptyp19; then
3455dnl ptys=`echo /dev/ptyp??`
3456dnl else
3457dnl ptys=`echo $pdir/pty??`
3458dnl fi
3459if test "$ptys" != "$pdir/pty??" ; then
3460 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3461 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3462 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3463 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3464 AC_MSG_RESULT([$p0 / $p1])
3465else
3466 AC_MSG_RESULT([don't know])
3467fi
3468
3469dnl **** pty mode/group handling ****
3470dnl
3471dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003472rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003473AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3474 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003475 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003476#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003477#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003478#if STDC_HEADERS
3479# include <stdlib.h>
3480# include <stddef.h>
3481#endif
3482#ifdef HAVE_UNISTD_H
3483#include <unistd.h>
3484#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003485#include <sys/stat.h>
3486#include <stdio.h>
3487main()
3488{
3489 struct stat sb;
3490 char *x,*ttyname();
3491 int om, m;
3492 FILE *fp;
3493
3494 if (!(x = ttyname(0))) exit(1);
3495 if (stat(x, &sb)) exit(1);
3496 om = sb.st_mode;
3497 if (om & 002) exit(0);
3498 m = system("mesg y");
3499 if (m == -1 || m == 127) exit(1);
3500 if (stat(x, &sb)) exit(1);
3501 m = sb.st_mode;
3502 if (chmod(x, om)) exit(1);
3503 if (m & 002) exit(0);
3504 if (sb.st_gid == getgid()) exit(1);
3505 if (!(fp=fopen("conftest_grp", "w")))
3506 exit(1);
3507 fprintf(fp, "%d\n", sb.st_gid);
3508 fclose(fp);
3509 exit(0);
3510}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003511 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003512 if test -f conftest_grp; then
3513 vim_cv_tty_group=`cat conftest_grp`
3514 if test "x$vim_cv_tty_mode" = "x" ; then
3515 vim_cv_tty_mode=0620
3516 fi
3517 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3518 else
3519 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003520 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003521 fi
3522 ],[
3523 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003524 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003525 ],[
3526 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3527 ])
3528 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003529rm -f conftest_grp
3530
Bram Moolenaar446cb832008-06-24 21:56:24 +00003531if test "x$vim_cv_tty_group" != "xworld" ; then
3532 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3533 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003534 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 +00003535 else
3536 AC_DEFINE(PTYMODE, 0620)
3537 fi
3538fi
3539
Bram Moolenaar071d4272004-06-13 20:20:40 +00003540dnl Checks for library functions. ===================================
3541
3542AC_TYPE_SIGNAL
3543
3544dnl find out what to use at the end of a signal function
3545if test $ac_cv_type_signal = void; then
3546 AC_DEFINE(SIGRETURN, [return])
3547else
3548 AC_DEFINE(SIGRETURN, [return 0])
3549fi
3550
3551dnl check if struct sigcontext is defined (used for SGI only)
3552AC_MSG_CHECKING(for struct sigcontext)
3553AC_TRY_COMPILE([
3554#include <signal.h>
3555test_sig()
3556{
3557 struct sigcontext *scont;
3558 scont = (struct sigcontext *)0;
3559 return 1;
3560} ], ,
3561 AC_MSG_RESULT(yes)
3562 AC_DEFINE(HAVE_SIGCONTEXT),
3563 AC_MSG_RESULT(no))
3564
3565dnl tricky stuff: try to find out if getcwd() is implemented with
3566dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003567AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3568 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003569 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003570#include "confdefs.h"
3571#ifdef HAVE_UNISTD_H
3572#include <unistd.h>
3573#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003574char *dagger[] = { "IFS=pwd", 0 };
3575main()
3576{
3577 char buffer[500];
3578 extern char **environ;
3579 environ = dagger;
3580 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003581}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003582 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003583 vim_cv_getcwd_broken=no
3584 ],[
3585 vim_cv_getcwd_broken=yes
3586 ],[
3587 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3588 ])
3589 ])
3590
3591if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3592 AC_DEFINE(BAD_GETCWD)
3593fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003594
Bram Moolenaar25153e12010-02-24 14:47:08 +01003595dnl Check for functions in one big call, to reduce the size of configure.
3596dnl Can only be used for functions that do not require any include.
3597AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003598 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003599 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003600 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003601 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003602 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
Bram Moolenaara6b89762016-02-29 21:38:26 +01003603 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003604AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003605
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003606dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3607dnl appropriate, so that off_t is 64 bits when needed.
3608AC_SYS_LARGEFILE
3609
Bram Moolenaar071d4272004-06-13 20:20:40 +00003610dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3611AC_MSG_CHECKING(for st_blksize)
3612AC_TRY_COMPILE(
3613[#include <sys/types.h>
3614#include <sys/stat.h>],
3615[ struct stat st;
3616 int n;
3617
3618 stat("/", &st);
3619 n = (int)st.st_blksize;],
3620 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3621 AC_MSG_RESULT(no))
3622
Bram Moolenaar446cb832008-06-24 21:56:24 +00003623AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3624 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003625 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003626#include "confdefs.h"
3627#if STDC_HEADERS
3628# include <stdlib.h>
3629# include <stddef.h>
3630#endif
3631#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003632#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003633main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003634 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003635 vim_cv_stat_ignores_slash=yes
3636 ],[
3637 vim_cv_stat_ignores_slash=no
3638 ],[
3639 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3640 ])
3641 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003642
Bram Moolenaar446cb832008-06-24 21:56:24 +00003643if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3644 AC_DEFINE(STAT_IGNORES_SLASH)
3645fi
3646
Bram Moolenaar071d4272004-06-13 20:20:40 +00003647dnl Link with iconv for charset translation, if not found without library.
3648dnl check for iconv() requires including iconv.h
3649dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3650dnl has been installed.
3651AC_MSG_CHECKING(for iconv_open())
3652save_LIBS="$LIBS"
3653LIBS="$LIBS -liconv"
3654AC_TRY_LINK([
3655#ifdef HAVE_ICONV_H
3656# include <iconv.h>
3657#endif
3658 ], [iconv_open("fr", "to");],
3659 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3660 LIBS="$save_LIBS"
3661 AC_TRY_LINK([
3662#ifdef HAVE_ICONV_H
3663# include <iconv.h>
3664#endif
3665 ], [iconv_open("fr", "to");],
3666 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3667 AC_MSG_RESULT(no)))
3668
3669
3670AC_MSG_CHECKING(for nl_langinfo(CODESET))
3671AC_TRY_LINK([
3672#ifdef HAVE_LANGINFO_H
3673# include <langinfo.h>
3674#endif
3675], [char *cs = nl_langinfo(CODESET);],
3676 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3677 AC_MSG_RESULT(no))
3678
Bram Moolenaar446cb832008-06-24 21:56:24 +00003679dnl Need various functions for floating point support. Only enable
3680dnl floating point when they are all present.
3681AC_CHECK_LIB(m, strtod)
3682AC_MSG_CHECKING([for strtod() and other floating point functions])
3683AC_TRY_LINK([
3684#ifdef HAVE_MATH_H
3685# include <math.h>
3686#endif
3687#if STDC_HEADERS
3688# include <stdlib.h>
3689# include <stddef.h>
3690#endif
3691], [char *s; double d;
3692 d = strtod("1.1", &s);
3693 d = fabs(1.11);
3694 d = ceil(1.11);
3695 d = floor(1.11);
3696 d = log10(1.11);
3697 d = pow(1.11, 2.22);
3698 d = sqrt(1.11);
3699 d = sin(1.11);
3700 d = cos(1.11);
3701 d = atan(1.11);
3702 ],
3703 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3704 AC_MSG_RESULT(no))
3705
Bram Moolenaara6b89762016-02-29 21:38:26 +01003706dnl isinf() and isnan() need to include header files and may need -lm.
3707AC_MSG_CHECKING([for isinf()])
3708AC_TRY_LINK([
3709#ifdef HAVE_MATH_H
3710# include <math.h>
3711#endif
3712#if STDC_HEADERS
3713# include <stdlib.h>
3714# include <stddef.h>
3715#endif
3716], [int r = isinf(1.11); ],
3717 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3718 AC_MSG_RESULT(no))
3719
3720AC_MSG_CHECKING([for isnan()])
3721AC_TRY_LINK([
3722#ifdef HAVE_MATH_H
3723# include <math.h>
3724#endif
3725#if STDC_HEADERS
3726# include <stdlib.h>
3727# include <stddef.h>
3728#endif
3729], [int r = isnan(1.11); ],
3730 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
3731 AC_MSG_RESULT(no))
3732
Bram Moolenaar071d4272004-06-13 20:20:40 +00003733dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3734dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003735dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003736AC_MSG_CHECKING(--disable-acl argument)
3737AC_ARG_ENABLE(acl,
3738 [ --disable-acl Don't check for ACL support.],
3739 , [enable_acl="yes"])
3740if test "$enable_acl" = "yes"; then
3741AC_MSG_RESULT(no)
3742AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3743 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3744 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3745
3746AC_MSG_CHECKING(for POSIX ACL support)
3747AC_TRY_LINK([
3748#include <sys/types.h>
3749#ifdef HAVE_SYS_ACL_H
3750# include <sys/acl.h>
3751#endif
3752acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3753 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3754 acl_free(acl);],
3755 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3756 AC_MSG_RESULT(no))
3757
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003758AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003759AC_MSG_CHECKING(for Solaris ACL support)
3760AC_TRY_LINK([
3761#ifdef HAVE_SYS_ACL_H
3762# include <sys/acl.h>
3763#endif], [acl("foo", GETACLCNT, 0, NULL);
3764 ],
3765 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003766 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003767
3768AC_MSG_CHECKING(for AIX ACL support)
3769AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003770#if STDC_HEADERS
3771# include <stdlib.h>
3772# include <stddef.h>
3773#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003774#ifdef HAVE_SYS_ACL_H
3775# include <sys/acl.h>
3776#endif
3777#ifdef HAVE_SYS_ACCESS_H
3778# include <sys/access.h>
3779#endif
3780#define _ALL_SOURCE
3781
3782#include <sys/stat.h>
3783
3784int aclsize;
3785struct acl *aclent;], [aclsize = sizeof(struct acl);
3786 aclent = (void *)malloc(aclsize);
3787 statacl("foo", STX_NORMAL, aclent, aclsize);
3788 ],
3789 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3790 AC_MSG_RESULT(no))
3791else
3792 AC_MSG_RESULT(yes)
3793fi
3794
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003795if test "x$GTK_CFLAGS" != "x"; then
3796 dnl pango_shape_full() is new, fall back to pango_shape().
3797 AC_MSG_CHECKING(for pango_shape_full)
3798 ac_save_CFLAGS="$CFLAGS"
3799 ac_save_LIBS="$LIBS"
3800 CFLAGS="$CFLAGS $GTK_CFLAGS"
3801 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003802 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003803 [#include <gtk/gtk.h>],
3804 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3805 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3806 AC_MSG_RESULT(no))
3807 CFLAGS="$ac_save_CFLAGS"
3808 LIBS="$ac_save_LIBS"
3809fi
3810
Bram Moolenaar071d4272004-06-13 20:20:40 +00003811AC_MSG_CHECKING(--disable-gpm argument)
3812AC_ARG_ENABLE(gpm,
3813 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3814 [enable_gpm="yes"])
3815
3816if test "$enable_gpm" = "yes"; then
3817 AC_MSG_RESULT(no)
3818 dnl Checking if gpm support can be compiled
3819 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3820 [olibs="$LIBS" ; LIBS="-lgpm"]
3821 AC_TRY_LINK(
3822 [#include <gpm.h>
3823 #include <linux/keyboard.h>],
3824 [Gpm_GetLibVersion(NULL);],
3825 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3826 dnl FEAT_MOUSE_GPM if mouse support is included
3827 [vi_cv_have_gpm=yes],
3828 [vi_cv_have_gpm=no])
3829 [LIBS="$olibs"]
3830 )
3831 if test $vi_cv_have_gpm = yes; then
3832 LIBS="$LIBS -lgpm"
3833 AC_DEFINE(HAVE_GPM)
3834 fi
3835else
3836 AC_MSG_RESULT(yes)
3837fi
3838
Bram Moolenaar446cb832008-06-24 21:56:24 +00003839AC_MSG_CHECKING(--disable-sysmouse argument)
3840AC_ARG_ENABLE(sysmouse,
3841 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3842 [enable_sysmouse="yes"])
3843
3844if test "$enable_sysmouse" = "yes"; then
3845 AC_MSG_RESULT(no)
3846 dnl Checking if sysmouse support can be compiled
3847 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3848 dnl defines FEAT_SYSMOUSE if mouse support is included
3849 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3850 AC_TRY_LINK(
3851 [#include <sys/consio.h>
3852 #include <signal.h>
3853 #include <sys/fbio.h>],
3854 [struct mouse_info mouse;
3855 mouse.operation = MOUSE_MODE;
3856 mouse.operation = MOUSE_SHOW;
3857 mouse.u.mode.mode = 0;
3858 mouse.u.mode.signal = SIGUSR2;],
3859 [vi_cv_have_sysmouse=yes],
3860 [vi_cv_have_sysmouse=no])
3861 )
3862 if test $vi_cv_have_sysmouse = yes; then
3863 AC_DEFINE(HAVE_SYSMOUSE)
3864 fi
3865else
3866 AC_MSG_RESULT(yes)
3867fi
3868
Bram Moolenaarf05da212009-11-17 16:13:15 +00003869dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3870AC_MSG_CHECKING(for FD_CLOEXEC)
3871AC_TRY_COMPILE(
3872[#if HAVE_FCNTL_H
3873# include <fcntl.h>
3874#endif],
3875[ int flag = FD_CLOEXEC;],
3876 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3877 AC_MSG_RESULT(not usable))
3878
Bram Moolenaar071d4272004-06-13 20:20:40 +00003879dnl rename needs to be checked separately to work on Nextstep with cc
3880AC_MSG_CHECKING(for rename)
3881AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3882 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3883 AC_MSG_RESULT(no))
3884
3885dnl sysctl() may exist but not the arguments we use
3886AC_MSG_CHECKING(for sysctl)
3887AC_TRY_COMPILE(
3888[#include <sys/types.h>
3889#include <sys/sysctl.h>],
3890[ int mib[2], r;
3891 size_t len;
3892
3893 mib[0] = CTL_HW;
3894 mib[1] = HW_USERMEM;
3895 len = sizeof(r);
3896 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3897 ],
3898 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3899 AC_MSG_RESULT(not usable))
3900
3901dnl sysinfo() may exist but not be Linux compatible
3902AC_MSG_CHECKING(for sysinfo)
3903AC_TRY_COMPILE(
3904[#include <sys/types.h>
3905#include <sys/sysinfo.h>],
3906[ struct sysinfo sinfo;
3907 int t;
3908
3909 (void)sysinfo(&sinfo);
3910 t = sinfo.totalram;
3911 ],
3912 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3913 AC_MSG_RESULT(not usable))
3914
Bram Moolenaar914572a2007-05-01 11:37:47 +00003915dnl struct sysinfo may have the mem_unit field or not
3916AC_MSG_CHECKING(for sysinfo.mem_unit)
3917AC_TRY_COMPILE(
3918[#include <sys/types.h>
3919#include <sys/sysinfo.h>],
3920[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003921 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003922 ],
3923 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3924 AC_MSG_RESULT(no))
3925
Bram Moolenaar071d4272004-06-13 20:20:40 +00003926dnl sysconf() may exist but not support what we want to use
3927AC_MSG_CHECKING(for sysconf)
3928AC_TRY_COMPILE(
3929[#include <unistd.h>],
3930[ (void)sysconf(_SC_PAGESIZE);
3931 (void)sysconf(_SC_PHYS_PAGES);
3932 ],
3933 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3934 AC_MSG_RESULT(not usable))
3935
Bram Moolenaar914703b2010-05-31 21:59:46 +02003936AC_CHECK_SIZEOF([int])
3937AC_CHECK_SIZEOF([long])
3938AC_CHECK_SIZEOF([time_t])
3939AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003940
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003941dnl Use different names to avoid clashing with other header files.
3942AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3943AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3944
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003945dnl Make sure that uint32_t is really 32 bits unsigned.
3946AC_MSG_CHECKING([uint32_t is 32 bits])
3947AC_TRY_RUN([
3948#ifdef HAVE_STDINT_H
3949# include <stdint.h>
3950#endif
3951#ifdef HAVE_INTTYPES_H
3952# include <inttypes.h>
3953#endif
3954main() {
3955 uint32_t nr1 = (uint32_t)-1;
3956 uint32_t nr2 = (uint32_t)0xffffffffUL;
3957 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3958 exit(0);
3959}],
3960AC_MSG_RESULT(ok),
3961AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003962AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003963
Bram Moolenaar446cb832008-06-24 21:56:24 +00003964dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3965dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3966
Bram Moolenaar071d4272004-06-13 20:20:40 +00003967[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003968#include "confdefs.h"
3969#ifdef HAVE_STRING_H
3970# include <string.h>
3971#endif
3972#if STDC_HEADERS
3973# include <stdlib.h>
3974# include <stddef.h>
3975#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003976main() {
3977 char buf[10];
3978 strcpy(buf, "abcdefghi");
3979 mch_memmove(buf, buf + 2, 3);
3980 if (strncmp(buf, "ababcf", 6))
3981 exit(1);
3982 strcpy(buf, "abcdefghi");
3983 mch_memmove(buf + 2, buf, 3);
3984 if (strncmp(buf, "cdedef", 6))
3985 exit(1);
3986 exit(0); /* libc version works properly. */
3987}']
3988
Bram Moolenaar446cb832008-06-24 21:56:24 +00003989AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3990 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003991 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 +00003992 [
3993 vim_cv_memmove_handles_overlap=yes
3994 ],[
3995 vim_cv_memmove_handles_overlap=no
3996 ],[
3997 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3998 ])
3999 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004000
Bram Moolenaar446cb832008-06-24 21:56:24 +00004001if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4002 AC_DEFINE(USEMEMMOVE)
4003else
4004 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4005 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004006 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 +00004007 [
4008 vim_cv_bcopy_handles_overlap=yes
4009 ],[
4010 vim_cv_bcopy_handles_overlap=no
4011 ],[
4012 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4013 ])
4014 ])
4015
4016 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4017 AC_DEFINE(USEBCOPY)
4018 else
4019 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4020 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004021 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 +00004022 [
4023 vim_cv_memcpy_handles_overlap=yes
4024 ],[
4025 vim_cv_memcpy_handles_overlap=no
4026 ],[
4027 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4028 ])
4029 ])
4030
4031 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4032 AC_DEFINE(USEMEMCPY)
4033 fi
4034 fi
4035fi
4036
Bram Moolenaar071d4272004-06-13 20:20:40 +00004037
4038dnl Check for multibyte locale functions
4039dnl Find out if _Xsetlocale() is supported by libX11.
4040dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004041if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004042 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004043 libs_save=$LIBS
4044 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4045 CFLAGS="$CFLAGS $X_CFLAGS"
4046
4047 AC_MSG_CHECKING(whether X_LOCALE needed)
4048 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
4049 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
4050 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4051 AC_MSG_RESULT(no))
4052
4053 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
4054 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
4055 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4056
Bram Moolenaar071d4272004-06-13 20:20:40 +00004057 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004058 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004059fi
4060
4061dnl Link with xpg4, it is said to make Korean locale working
4062AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4063
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004064dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004065dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004066dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004067dnl -t for typedefs (many ctags have this)
4068dnl -s for static functions (Elvis ctags only?)
4069dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4070dnl -i+m to test for older Exuberant ctags
4071AC_MSG_CHECKING(how to create tags)
4072test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004073if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004074 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004075elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4076 TAGPRG="exctags -I INIT+ --fields=+S"
4077elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4078 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004079else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004080 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004081 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
4082 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
4083 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
4084 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
4085 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
4086 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
4087 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
4088fi
4089test -f tags.save && mv tags.save tags
4090AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4091
4092dnl Check how we can run man with a section number
4093AC_MSG_CHECKING(how to run man with a section nr)
4094MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00004095(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 +00004096AC_MSG_RESULT($MANDEF)
4097if test "$MANDEF" = "man -s"; then
4098 AC_DEFINE(USEMAN_S)
4099fi
4100
4101dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004102dnl We take care to base this on an empty LIBS: on some systems libelf would be
4103dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4104dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004105AC_MSG_CHECKING(--disable-nls argument)
4106AC_ARG_ENABLE(nls,
4107 [ --disable-nls Don't support NLS (gettext()).], ,
4108 [enable_nls="yes"])
4109
4110if test "$enable_nls" = "yes"; then
4111 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004112
4113 INSTALL_LANGS=install-languages
4114 AC_SUBST(INSTALL_LANGS)
4115 INSTALL_TOOL_LANGS=install-tool-languages
4116 AC_SUBST(INSTALL_TOOL_LANGS)
4117
Bram Moolenaar071d4272004-06-13 20:20:40 +00004118 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4119 AC_MSG_CHECKING([for NLS])
4120 if test -f po/Makefile; then
4121 have_gettext="no"
4122 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004123 olibs=$LIBS
4124 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00004125 AC_TRY_LINK(
4126 [#include <libintl.h>],
4127 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004128 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4129 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004130 AC_TRY_LINK(
4131 [#include <libintl.h>],
4132 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004133 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4134 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004135 AC_MSG_RESULT([gettext() doesn't work]);
4136 LIBS=$olibs))
4137 else
4138 AC_MSG_RESULT([msgfmt not found - disabled]);
4139 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02004140 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004141 AC_DEFINE(HAVE_GETTEXT)
4142 MAKEMO=yes
4143 AC_SUBST(MAKEMO)
4144 dnl this was added in GNU gettext 0.10.36
4145 AC_CHECK_FUNCS(bind_textdomain_codeset)
4146 dnl _nl_msg_cat_cntr is required for GNU gettext
4147 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
4148 AC_TRY_LINK(
4149 [#include <libintl.h>
4150 extern int _nl_msg_cat_cntr;],
4151 [++_nl_msg_cat_cntr;],
4152 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4153 AC_MSG_RESULT([no]))
4154 fi
4155 else
4156 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4157 fi
4158else
4159 AC_MSG_RESULT(yes)
4160fi
4161
4162dnl Check for dynamic linking loader
4163AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4164if test x${DLL} = xdlfcn.h; then
4165 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4166 AC_MSG_CHECKING([for dlopen()])
4167 AC_TRY_LINK(,[
4168 extern void* dlopen();
4169 dlopen();
4170 ],
4171 AC_MSG_RESULT(yes);
4172 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4173 AC_MSG_RESULT(no);
4174 AC_MSG_CHECKING([for dlopen() in -ldl])
4175 olibs=$LIBS
4176 LIBS="$LIBS -ldl"
4177 AC_TRY_LINK(,[
4178 extern void* dlopen();
4179 dlopen();
4180 ],
4181 AC_MSG_RESULT(yes);
4182 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4183 AC_MSG_RESULT(no);
4184 LIBS=$olibs))
4185 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4186 dnl ick :-)
4187 AC_MSG_CHECKING([for dlsym()])
4188 AC_TRY_LINK(,[
4189 extern void* dlsym();
4190 dlsym();
4191 ],
4192 AC_MSG_RESULT(yes);
4193 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4194 AC_MSG_RESULT(no);
4195 AC_MSG_CHECKING([for dlsym() in -ldl])
4196 olibs=$LIBS
4197 LIBS="$LIBS -ldl"
4198 AC_TRY_LINK(,[
4199 extern void* dlsym();
4200 dlsym();
4201 ],
4202 AC_MSG_RESULT(yes);
4203 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4204 AC_MSG_RESULT(no);
4205 LIBS=$olibs))
4206elif test x${DLL} = xdl.h; then
4207 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4208 AC_MSG_CHECKING([for shl_load()])
4209 AC_TRY_LINK(,[
4210 extern void* shl_load();
4211 shl_load();
4212 ],
4213 AC_MSG_RESULT(yes);
4214 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4215 AC_MSG_RESULT(no);
4216 AC_MSG_CHECKING([for shl_load() in -ldld])
4217 olibs=$LIBS
4218 LIBS="$LIBS -ldld"
4219 AC_TRY_LINK(,[
4220 extern void* shl_load();
4221 shl_load();
4222 ],
4223 AC_MSG_RESULT(yes);
4224 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4225 AC_MSG_RESULT(no);
4226 LIBS=$olibs))
4227fi
4228AC_CHECK_HEADERS(setjmp.h)
4229
4230if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4231 dnl -ldl must come after DynaLoader.a
4232 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4233 LIBS=`echo $LIBS | sed s/-ldl//`
4234 PERL_LIBS="$PERL_LIBS -ldl"
4235 fi
4236fi
4237
Bram Moolenaar164fca32010-07-14 13:58:07 +02004238if test "x$MACOSX" = "xyes"; then
4239 AC_MSG_CHECKING(whether we need -framework Cocoa)
4240 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4241 dnl disabled during tiny build)
4242 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4243 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004244 AC_MSG_RESULT(yes)
4245 else
4246 AC_MSG_RESULT(no)
4247 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004248 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4249 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4250 dnl missing Objective-C symbols.
4251 if test "x$features" = "xtiny"; then
4252 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4253 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4254 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004255fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004256if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004257 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004258fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004259
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004260dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4261dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4262dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004263dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4264dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004265DEPEND_CFLAGS_FILTER=
4266if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004267 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004268 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004269 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004270 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004271 AC_MSG_RESULT(yes)
4272 else
4273 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004274 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004275 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4276 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004277 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004278 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004279 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4280 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004281 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 +00004282 AC_MSG_RESULT(yes)
4283 else
4284 AC_MSG_RESULT(no)
4285 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004286fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004287AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004288
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004289dnl link.sh tries to avoid overlinking in a hackish way.
4290dnl At least GNU ld supports --as-needed which provides the same functionality
4291dnl at linker level. Let's use it.
4292AC_MSG_CHECKING(linker --as-needed support)
4293LINK_AS_NEEDED=
4294# Check if linker supports --as-needed and --no-as-needed options
4295if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004296 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004297 LINK_AS_NEEDED=yes
4298fi
4299if test "$LINK_AS_NEEDED" = yes; then
4300 AC_MSG_RESULT(yes)
4301else
4302 AC_MSG_RESULT(no)
4303fi
4304AC_SUBST(LINK_AS_NEEDED)
4305
Bram Moolenaar77c19352012-06-13 19:19:41 +02004306# IBM z/OS reset CFLAGS for config.mk
4307if test "$zOSUnix" = "yes"; then
4308 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4309fi
4310
Bram Moolenaar071d4272004-06-13 20:20:40 +00004311dnl write output files
4312AC_OUTPUT(auto/config.mk:config.mk.in)
4313
4314dnl vim: set sw=2 tw=78 fo+=l: