blob: 17a80367be19dbd25a0cfbf73266dd2007298734 [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
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 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 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 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 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000705 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100706 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 MZSCHEME_SRC="if_mzsch.c"
708 MZSCHEME_OBJ="objects/if_mzsch.o"
709 MZSCHEME_PRO="if_mzsch.pro"
710 AC_DEFINE(FEAT_MZSCHEME)
711 fi
712 AC_SUBST(MZSCHEME_SRC)
713 AC_SUBST(MZSCHEME_OBJ)
714 AC_SUBST(MZSCHEME_PRO)
715 AC_SUBST(MZSCHEME_LIBS)
716 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_SUBST(MZSCHEME_EXTRA)
718 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000719fi
720
721
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722AC_MSG_CHECKING(--enable-perlinterp argument)
723AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200724 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 [enable_perlinterp="no"])
726AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200727if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000728 AC_SUBST(vi_cv_path_perl)
729 AC_PATH_PROG(vi_cv_path_perl, perl)
730 if test "X$vi_cv_path_perl" != "X"; then
731 AC_MSG_CHECKING(Perl version)
732 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
733 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200734 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000735 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
736 badthreads=no
737 else
738 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
739 eval `$vi_cv_path_perl -V:use5005threads`
740 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
741 badthreads=no
742 else
743 badthreads=yes
744 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
745 fi
746 else
747 badthreads=yes
748 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
749 fi
750 fi
751 if test $badthreads = no; then
752 AC_MSG_RESULT(OK)
753 eval `$vi_cv_path_perl -V:shrpenv`
754 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
755 shrpenv=""
756 fi
757 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
758 AC_SUBST(vi_cv_perllib)
759 dnl Remove "-fno-something", it breaks using cproto.
760 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
761 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
762 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
763 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
764 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
765 -e 's/-bE:perl.exp//' -e 's/-lc //'`
766 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
767 dnl a test in configure may fail because of that.
768 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
769 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
770
771 dnl check that compiling a simple program still works with the flags
772 dnl added for Perl.
773 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
774 cflags_save=$CFLAGS
775 libs_save=$LIBS
776 ldflags_save=$LDFLAGS
777 CFLAGS="$CFLAGS $perlcppflags"
778 LIBS="$LIBS $perllibs"
779 LDFLAGS="$perlldflags $LDFLAGS"
780 AC_TRY_LINK(,[ ],
781 AC_MSG_RESULT(yes); perl_ok=yes,
782 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
783 CFLAGS=$cflags_save
784 LIBS=$libs_save
785 LDFLAGS=$ldflags_save
786 if test $perl_ok = yes; then
787 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000788 dnl remove -pipe and -Wxxx, it confuses cproto
789 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000790 fi
791 if test "X$perlldflags" != "X"; then
792 LDFLAGS="$perlldflags $LDFLAGS"
793 fi
794 PERL_LIBS=$perllibs
795 PERL_SRC="auto/if_perl.c if_perlsfio.c"
796 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
797 PERL_PRO="if_perl.pro if_perlsfio.pro"
798 AC_DEFINE(FEAT_PERL)
799 fi
800 fi
801 else
802 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
803 fi
804 fi
805
806 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000807 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000808 dir=/System/Library/Perl
809 darwindir=$dir/darwin
810 if test -d $darwindir; then
811 PERL=/usr/bin/perl
812 else
813 dnl Mac OS X 10.3
814 dir=/System/Library/Perl/5.8.1
815 darwindir=$dir/darwin-thread-multi-2level
816 if test -d $darwindir; then
817 PERL=/usr/bin/perl
818 fi
819 fi
820 if test -n "$PERL"; then
821 PERL_DIR="$dir"
822 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
823 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
824 PERL_LIBS="-L$darwindir/CORE -lperl"
825 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200826 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
827 dnl be included if requested by passing --with-mac-arch to
828 dnl configure, so strip these flags first (if present)
829 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
830 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 +0000831 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200832 if test "$enable_perlinterp" = "dynamic"; then
833 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
834 AC_DEFINE(DYNAMIC_PERL)
835 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
836 fi
837 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100838
839 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
840 AC_MSG_ERROR([could not configure perl])
841 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842fi
843AC_SUBST(shrpenv)
844AC_SUBST(PERL_SRC)
845AC_SUBST(PERL_OBJ)
846AC_SUBST(PERL_PRO)
847AC_SUBST(PERL_CFLAGS)
848AC_SUBST(PERL_LIBS)
849
850AC_MSG_CHECKING(--enable-pythoninterp argument)
851AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200852 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000853 [enable_pythoninterp="no"])
854AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100857 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 if test "X$vi_cv_path_python" != "X"; then
859
860 dnl -- get its version number
861 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
862 [[vi_cv_var_python_version=`
863 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
864 ]])
865
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200866 dnl -- it must be at least version 2.3
867 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200869 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000870 then
871 AC_MSG_RESULT(yep)
872
873 dnl -- find where python thinks it was installed
874 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
875 [ vi_cv_path_python_pfx=`
876 ${vi_cv_path_python} -c \
877 "import sys; print sys.prefix"` ])
878
879 dnl -- and where it thinks it runs
880 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
881 [ vi_cv_path_python_epfx=`
882 ${vi_cv_path_python} -c \
883 "import sys; print sys.exec_prefix"` ])
884
885 dnl -- python's internal library path
886
887 AC_CACHE_VAL(vi_cv_path_pythonpath,
888 [ vi_cv_path_pythonpath=`
889 unset PYTHONPATH;
890 ${vi_cv_path_python} -c \
891 "import sys, string; print string.join(sys.path,':')"` ])
892
893 dnl -- where the Python implementation library archives are
894
895 AC_ARG_WITH(python-config-dir,
896 [ --with-python-config-dir=PATH Python's config directory],
897 [ vi_cv_path_python_conf="${withval}" ] )
898
899 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
900 [
901 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200902 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
903 if test -d "$d" && test -f "$d/config.c"; then
904 vi_cv_path_python_conf="$d"
905 else
906 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
907 for subdir in lib64 lib share; do
908 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
909 if test -d "$d" && test -f "$d/config.c"; then
910 vi_cv_path_python_conf="$d"
911 fi
912 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000913 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200914 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000915 ])
916
917 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
918
919 if test "X$PYTHON_CONFDIR" = "X"; then
920 AC_MSG_RESULT([can't find it!])
921 else
922
923 dnl -- we need to examine Python's config/Makefile too
924 dnl see what the interpreter is built from
925 AC_CACHE_VAL(vi_cv_path_python_plibs,
926 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000927 pwd=`pwd`
928 tmp_mkf="$pwd/config-PyMake$$"
929 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000930__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200931 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000932 @echo "python_LIBS='$(LIBS)'"
933 @echo "python_SYSLIBS='$(SYSLIBS)'"
934 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200935 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200936 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937eof
938 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000939 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
940 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000941 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
942 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
943 vi_cv_path_python_plibs="-framework Python"
944 else
945 if test "${vi_cv_var_python_version}" = "1.4"; then
946 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
947 else
948 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
949 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200950 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 +0000951 dnl remove -ltermcap, it can conflict with an earlier -lncurses
952 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
953 fi
954 ])
955
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200956 if test "X$python_DLLLIBRARY" != "X"; then
957 python_INSTSONAME="$python_DLLLIBRARY"
958 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000959 PYTHON_LIBS="${vi_cv_path_python_plibs}"
960 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100961 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 +0000962 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100963 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 +0000964 fi
965 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200966 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 if test "${vi_cv_var_python_version}" = "1.4"; then
968 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
969 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100970 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 +0000971
972 dnl On FreeBSD linking with "-pthread" is required to use threads.
973 dnl _THREAD_SAFE must be used for compiling then.
974 dnl The "-pthread" is added to $LIBS, so that the following check for
975 dnl sigaltstack() will look in libc_r (it's there in libc!).
976 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
977 dnl will then define target-specific defines, e.g., -D_REENTRANT.
978 dnl Don't do this for Mac OSX, -pthread will generate a warning.
979 AC_MSG_CHECKING([if -pthread should be used])
980 threadsafe_flag=
981 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000982 dnl if test "x$MACOSX" != "xyes"; then
983 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000984 test "$GCC" = yes && threadsafe_flag="-pthread"
985 if test "`(uname) 2>/dev/null`" = FreeBSD; then
986 threadsafe_flag="-D_THREAD_SAFE"
987 thread_lib="-pthread"
988 fi
989 fi
990 libs_save_old=$LIBS
991 if test -n "$threadsafe_flag"; then
992 cflags_save=$CFLAGS
993 CFLAGS="$CFLAGS $threadsafe_flag"
994 LIBS="$LIBS $thread_lib"
995 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200996 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000997 AC_MSG_RESULT(no); LIBS=$libs_save_old
998 )
999 CFLAGS=$cflags_save
1000 else
1001 AC_MSG_RESULT(no)
1002 fi
1003
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001004 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001005 dnl added for Python.
1006 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1007 cflags_save=$CFLAGS
1008 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001009 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001010 LIBS="$LIBS $PYTHON_LIBS"
1011 AC_TRY_LINK(,[ ],
1012 AC_MSG_RESULT(yes); python_ok=yes,
1013 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1014 CFLAGS=$cflags_save
1015 LIBS=$libs_save
1016 if test $python_ok = yes; then
1017 AC_DEFINE(FEAT_PYTHON)
1018 else
1019 LIBS=$libs_save_old
1020 PYTHON_SRC=
1021 PYTHON_OBJ=
1022 PYTHON_LIBS=
1023 PYTHON_CFLAGS=
1024 fi
1025
1026 fi
1027 else
1028 AC_MSG_RESULT(too old)
1029 fi
1030 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001031
1032 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1033 AC_MSG_ERROR([could not configure python])
1034 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001035fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001036
Bram Moolenaar071d4272004-06-13 20:20:40 +00001037AC_SUBST(PYTHON_CONFDIR)
1038AC_SUBST(PYTHON_LIBS)
1039AC_SUBST(PYTHON_GETPATH_CFLAGS)
1040AC_SUBST(PYTHON_CFLAGS)
1041AC_SUBST(PYTHON_SRC)
1042AC_SUBST(PYTHON_OBJ)
1043
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001044
1045AC_MSG_CHECKING(--enable-python3interp argument)
1046AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001047 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001048 [enable_python3interp="no"])
1049AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001050if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001051 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001052 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053 if test "X$vi_cv_path_python3" != "X"; then
1054
1055 dnl -- get its version number
1056 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1057 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001058 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001059 ]])
1060
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001061 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1062 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1063 [
1064 vi_cv_var_python3_abiflags=
1065 if ${vi_cv_path_python3} -c \
1066 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1067 then
1068 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1069 "import sys; print(sys.abiflags)"`
1070 fi ])
1071
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001072 dnl -- find where python3 thinks it was installed
1073 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1074 [ vi_cv_path_python3_pfx=`
1075 ${vi_cv_path_python3} -c \
1076 "import sys; print(sys.prefix)"` ])
1077
1078 dnl -- and where it thinks it runs
1079 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1080 [ vi_cv_path_python3_epfx=`
1081 ${vi_cv_path_python3} -c \
1082 "import sys; print(sys.exec_prefix)"` ])
1083
1084 dnl -- python3's internal library path
1085
1086 AC_CACHE_VAL(vi_cv_path_python3path,
1087 [ vi_cv_path_python3path=`
1088 unset PYTHONPATH;
1089 ${vi_cv_path_python3} -c \
1090 "import sys, string; print(':'.join(sys.path))"` ])
1091
1092 dnl -- where the Python implementation library archives are
1093
1094 AC_ARG_WITH(python3-config-dir,
1095 [ --with-python3-config-dir=PATH Python's config directory],
1096 [ vi_cv_path_python3_conf="${withval}" ] )
1097
1098 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1099 [
1100 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001101 config_dir="config"
1102 if test "${vi_cv_var_python3_abiflags}" != ""; then
1103 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1104 fi
Bram Moolenaarac499e32013-06-02 19:14:17 +02001105 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1106 if test -d "$d" && test -f "$d/config.c"; then
1107 vi_cv_path_python3_conf="$d"
1108 else
1109 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1110 for subdir in lib64 lib share; do
1111 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1112 if test -d "$d" && test -f "$d/config.c"; then
1113 vi_cv_path_python3_conf="$d"
1114 fi
1115 done
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001116 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001117 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001118 ])
1119
1120 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1121
1122 if test "X$PYTHON3_CONFDIR" = "X"; then
1123 AC_MSG_RESULT([can't find it!])
1124 else
1125
1126 dnl -- we need to examine Python's config/Makefile too
1127 dnl see what the interpreter is built from
1128 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1129 [
1130 pwd=`pwd`
1131 tmp_mkf="$pwd/config-PyMake$$"
1132 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1133__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001134 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001135 @echo "python3_LIBS='$(LIBS)'"
1136 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001137 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001138 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001139eof
1140 dnl -- delete the lines from make about Entering/Leaving directory
1141 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1142 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001143 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001144 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001145 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1146 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1147 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1148 ])
1149
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001150 if test "X$python3_DLLLIBRARY" != "X"; then
1151 python3_INSTSONAME="$python3_DLLLIBRARY"
1152 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001153 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1154 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001155 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 Moolenaarbd5e15f2010-07-17 21:19:38 +02001156 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001157 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 Moolenaarbd5e15f2010-07-17 21:19:38 +02001158 fi
1159 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001160 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001161
1162 dnl On FreeBSD linking with "-pthread" is required to use threads.
1163 dnl _THREAD_SAFE must be used for compiling then.
1164 dnl The "-pthread" is added to $LIBS, so that the following check for
1165 dnl sigaltstack() will look in libc_r (it's there in libc!).
1166 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1167 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1168 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1169 AC_MSG_CHECKING([if -pthread should be used])
1170 threadsafe_flag=
1171 thread_lib=
1172 dnl if test "x$MACOSX" != "xyes"; then
1173 if test "`(uname) 2>/dev/null`" != Darwin; then
1174 test "$GCC" = yes && threadsafe_flag="-pthread"
1175 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1176 threadsafe_flag="-D_THREAD_SAFE"
1177 thread_lib="-pthread"
1178 fi
1179 fi
1180 libs_save_old=$LIBS
1181 if test -n "$threadsafe_flag"; then
1182 cflags_save=$CFLAGS
1183 CFLAGS="$CFLAGS $threadsafe_flag"
1184 LIBS="$LIBS $thread_lib"
1185 AC_TRY_LINK(,[ ],
1186 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1187 AC_MSG_RESULT(no); LIBS=$libs_save_old
1188 )
1189 CFLAGS=$cflags_save
1190 else
1191 AC_MSG_RESULT(no)
1192 fi
1193
1194 dnl check that compiling a simple program still works with the flags
1195 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001196 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001197 cflags_save=$CFLAGS
1198 libs_save=$LIBS
1199 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1200 LIBS="$LIBS $PYTHON3_LIBS"
1201 AC_TRY_LINK(,[ ],
1202 AC_MSG_RESULT(yes); python3_ok=yes,
1203 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1204 CFLAGS=$cflags_save
1205 LIBS=$libs_save
1206 if test "$python3_ok" = yes; then
1207 AC_DEFINE(FEAT_PYTHON3)
1208 else
1209 LIBS=$libs_save_old
1210 PYTHON3_SRC=
1211 PYTHON3_OBJ=
1212 PYTHON3_LIBS=
1213 PYTHON3_CFLAGS=
1214 fi
1215 fi
1216 fi
1217fi
1218
1219AC_SUBST(PYTHON3_CONFDIR)
1220AC_SUBST(PYTHON3_LIBS)
1221AC_SUBST(PYTHON3_CFLAGS)
1222AC_SUBST(PYTHON3_SRC)
1223AC_SUBST(PYTHON3_OBJ)
1224
1225dnl if python2.x and python3.x are enabled one can only link in code
1226dnl with dlopen(), dlsym(), dlclose()
1227if test "$python_ok" = yes && test "$python3_ok" = yes; then
1228 AC_DEFINE(DYNAMIC_PYTHON)
1229 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001230 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001231 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001232 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001233 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001234 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1235 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001236 AC_RUN_IFELSE([
1237 #include <dlfcn.h>
1238 /* If this program fails, then RTLD_GLOBAL is needed.
1239 * RTLD_GLOBAL will be used and then it is not possible to
1240 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001241 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001242 */
1243
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001244 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001245 {
1246 int needed = 0;
1247 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1248 if (pylib != 0)
1249 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001250 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001251 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1252 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1253 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001254 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001255 (*init)();
1256 needed = (*simple)("import termios") == -1;
1257 (*final)();
1258 dlclose(pylib);
1259 }
1260 return !needed;
1261 }
1262
1263 int main(int argc, char** argv)
1264 {
1265 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001266 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001267 not_needed = 1;
1268 return !not_needed;
1269 }],
1270 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001271
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001272 CFLAGS=$cflags_save
1273 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001274
1275 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1276 cflags_save=$CFLAGS
1277 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1278 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001279 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1280 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001281 AC_RUN_IFELSE([
1282 #include <dlfcn.h>
1283 #include <wchar.h>
1284 /* If this program fails, then RTLD_GLOBAL is needed.
1285 * RTLD_GLOBAL will be used and then it is not possible to
1286 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001287 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001288 */
1289
1290 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1291 {
1292 int needed = 0;
1293 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1294 if (pylib != 0)
1295 {
1296 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1297 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1298 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1299 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1300 (*pfx)(prefix);
1301 (*init)();
1302 needed = (*simple)("import termios") == -1;
1303 (*final)();
1304 dlclose(pylib);
1305 }
1306 return !needed;
1307 }
1308
1309 int main(int argc, char** argv)
1310 {
1311 int not_needed = 0;
1312 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1313 not_needed = 1;
1314 return !not_needed;
1315 }],
1316 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1317
1318 CFLAGS=$cflags_save
1319 LDFLAGS=$ldflags_save
1320
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001321 PYTHON_SRC="if_python.c"
1322 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001323 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001324 PYTHON_LIBS=
1325 PYTHON3_SRC="if_python3.c"
1326 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001327 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001328 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001329elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1330 AC_DEFINE(DYNAMIC_PYTHON)
1331 PYTHON_SRC="if_python.c"
1332 PYTHON_OBJ="objects/if_python.o"
1333 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1334 PYTHON_LIBS=
1335elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1336 AC_DEFINE(DYNAMIC_PYTHON3)
1337 PYTHON3_SRC="if_python3.c"
1338 PYTHON3_OBJ="objects/if_python3.o"
1339 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1340 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001341fi
1342
Bram Moolenaar071d4272004-06-13 20:20:40 +00001343AC_MSG_CHECKING(--enable-tclinterp argument)
1344AC_ARG_ENABLE(tclinterp,
1345 [ --enable-tclinterp Include Tcl interpreter.], ,
1346 [enable_tclinterp="no"])
1347AC_MSG_RESULT($enable_tclinterp)
1348
1349if test "$enable_tclinterp" = "yes"; then
1350
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001351 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001352 AC_MSG_CHECKING(--with-tclsh argument)
1353 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1354 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001355 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001356 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1357 AC_SUBST(vi_cv_path_tcl)
1358
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001359 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1360 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1361 tclsh_name="tclsh8.4"
1362 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1363 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001364 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001365 tclsh_name="tclsh8.2"
1366 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1367 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001368 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1369 tclsh_name="tclsh8.0"
1370 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1371 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001372 dnl still didn't find it, try without version number
1373 if test "X$vi_cv_path_tcl" = "X"; then
1374 tclsh_name="tclsh"
1375 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1376 fi
1377 if test "X$vi_cv_path_tcl" != "X"; then
1378 AC_MSG_CHECKING(Tcl version)
1379 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1380 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1381 AC_MSG_RESULT($tclver - OK);
1382 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 -`
1383
1384 AC_MSG_CHECKING(for location of Tcl include)
1385 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001386 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 +00001387 else
1388 dnl For Mac OS X 10.3, use the OS-provided framework location
1389 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1390 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001391 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001392 for try in $tclinc; do
1393 if test -f "$try/tcl.h"; then
1394 AC_MSG_RESULT($try/tcl.h)
1395 TCL_INC=$try
1396 break
1397 fi
1398 done
1399 if test -z "$TCL_INC"; then
1400 AC_MSG_RESULT(<not found>)
1401 SKIP_TCL=YES
1402 fi
1403 if test -z "$SKIP_TCL"; then
1404 AC_MSG_CHECKING(for location of tclConfig.sh script)
1405 if test "x$MACOSX" != "xyes"; then
1406 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001407 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001408 else
1409 dnl For Mac OS X 10.3, use the OS-provided framework location
1410 tclcnf="/System/Library/Frameworks/Tcl.framework"
1411 fi
1412 for try in $tclcnf; do
1413 if test -f $try/tclConfig.sh; then
1414 AC_MSG_RESULT($try/tclConfig.sh)
1415 . $try/tclConfig.sh
1416 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1417 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1418 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001419 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001420 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 +00001421 break
1422 fi
1423 done
1424 if test -z "$TCL_LIBS"; then
1425 AC_MSG_RESULT(<not found>)
1426 AC_MSG_CHECKING(for Tcl library by myself)
1427 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001428 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001429 for ext in .so .a ; do
1430 for ver in "" $tclver ; do
1431 for try in $tcllib ; do
1432 trylib=tcl$ver$ext
1433 if test -f $try/lib$trylib ; then
1434 AC_MSG_RESULT($try/lib$trylib)
1435 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1436 if test "`(uname) 2>/dev/null`" = SunOS &&
1437 uname -r | grep '^5' >/dev/null; then
1438 TCL_LIBS="$TCL_LIBS -R $try"
1439 fi
1440 break 3
1441 fi
1442 done
1443 done
1444 done
1445 if test -z "$TCL_LIBS"; then
1446 AC_MSG_RESULT(<not found>)
1447 SKIP_TCL=YES
1448 fi
1449 fi
1450 if test -z "$SKIP_TCL"; then
1451 AC_DEFINE(FEAT_TCL)
1452 TCL_SRC=if_tcl.c
1453 TCL_OBJ=objects/if_tcl.o
1454 TCL_PRO=if_tcl.pro
1455 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1456 fi
1457 fi
1458 else
1459 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1460 fi
1461 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001462 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1463 AC_MSG_ERROR([could not configure Tcl])
1464 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465fi
1466AC_SUBST(TCL_SRC)
1467AC_SUBST(TCL_OBJ)
1468AC_SUBST(TCL_PRO)
1469AC_SUBST(TCL_CFLAGS)
1470AC_SUBST(TCL_LIBS)
1471
1472AC_MSG_CHECKING(--enable-rubyinterp argument)
1473AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001474 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001475 [enable_rubyinterp="no"])
1476AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001477if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001478 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001480 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1481 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1482 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001483 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001484 if test "X$vi_cv_path_ruby" != "X"; then
1485 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001486 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 +00001487 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001488 AC_MSG_CHECKING(Ruby rbconfig)
1489 ruby_rbconfig="RbConfig"
1490 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1491 ruby_rbconfig="Config"
1492 fi
1493 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001494 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001495 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 +00001496 if test "X$rubyhdrdir" != "X"; then
1497 AC_MSG_RESULT($rubyhdrdir)
1498 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001499 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001500 if test -d "$rubyhdrdir/$rubyarch"; then
1501 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1502 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001503 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001504 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001505 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001506 if test "X$rubylibs" != "X"; then
1507 RUBY_LIBS="$rubylibs"
1508 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001509 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1510 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001511 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001512 if test -f "$rubylibdir/$librubya"; then
1513 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001514 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1515 elif test "$librubyarg" = "libruby.a"; then
1516 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1517 librubyarg="-lruby"
1518 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001519 fi
1520
1521 if test "X$librubyarg" != "X"; then
1522 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1523 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001524 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001525 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001526 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1527 dnl be included if requested by passing --with-mac-arch to
1528 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001529 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001530 if test "X$rubyldflags" != "X"; then
1531 LDFLAGS="$rubyldflags $LDFLAGS"
1532 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001533 fi
1534 RUBY_SRC="if_ruby.c"
1535 RUBY_OBJ="objects/if_ruby.o"
1536 RUBY_PRO="if_ruby.pro"
1537 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001538 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001539 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001540 AC_DEFINE(DYNAMIC_RUBY)
1541 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1542 RUBY_LIBS=
1543 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001544 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001545 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001546 fi
1547 else
1548 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1549 fi
1550 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001551
1552 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1553 AC_MSG_ERROR([could not configure Ruby])
1554 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001555fi
1556AC_SUBST(RUBY_SRC)
1557AC_SUBST(RUBY_OBJ)
1558AC_SUBST(RUBY_PRO)
1559AC_SUBST(RUBY_CFLAGS)
1560AC_SUBST(RUBY_LIBS)
1561
1562AC_MSG_CHECKING(--enable-cscope argument)
1563AC_ARG_ENABLE(cscope,
1564 [ --enable-cscope Include cscope interface.], ,
1565 [enable_cscope="no"])
1566AC_MSG_RESULT($enable_cscope)
1567if test "$enable_cscope" = "yes"; then
1568 AC_DEFINE(FEAT_CSCOPE)
1569fi
1570
1571AC_MSG_CHECKING(--enable-workshop argument)
1572AC_ARG_ENABLE(workshop,
1573 [ --enable-workshop Include Sun Visual Workshop support.], ,
1574 [enable_workshop="no"])
1575AC_MSG_RESULT($enable_workshop)
1576if test "$enable_workshop" = "yes"; then
1577 AC_DEFINE(FEAT_SUN_WORKSHOP)
1578 WORKSHOP_SRC="workshop.c integration.c"
1579 AC_SUBST(WORKSHOP_SRC)
1580 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1581 AC_SUBST(WORKSHOP_OBJ)
1582 if test "${enable_gui-xxx}" = xxx; then
1583 enable_gui=motif
1584 fi
1585fi
1586
1587AC_MSG_CHECKING(--disable-netbeans argument)
1588AC_ARG_ENABLE(netbeans,
1589 [ --disable-netbeans Disable NetBeans integration support.],
1590 , [enable_netbeans="yes"])
1591if test "$enable_netbeans" = "yes"; then
1592 AC_MSG_RESULT(no)
1593 dnl On Solaris we need the socket and nsl library.
1594 AC_CHECK_LIB(socket, socket)
1595 AC_CHECK_LIB(nsl, gethostbyname)
1596 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1597 AC_TRY_LINK([
1598#include <stdio.h>
1599#include <stdlib.h>
1600#include <stdarg.h>
1601#include <fcntl.h>
1602#include <netdb.h>
1603#include <netinet/in.h>
1604#include <errno.h>
1605#include <sys/types.h>
1606#include <sys/socket.h>
1607 /* Check bitfields */
1608 struct nbbuf {
1609 unsigned int initDone:1;
1610 ushort signmaplen;
1611 };
1612 ], [
1613 /* Check creating a socket. */
1614 struct sockaddr_in server;
1615 (void)socket(AF_INET, SOCK_STREAM, 0);
1616 (void)htons(100);
1617 (void)gethostbyname("microsoft.com");
1618 if (errno == ECONNREFUSED)
1619 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1620 ],
1621 AC_MSG_RESULT(yes),
1622 AC_MSG_RESULT(no); enable_netbeans="no")
1623else
1624 AC_MSG_RESULT(yes)
1625fi
1626if test "$enable_netbeans" = "yes"; then
1627 AC_DEFINE(FEAT_NETBEANS_INTG)
1628 NETBEANS_SRC="netbeans.c"
1629 AC_SUBST(NETBEANS_SRC)
1630 NETBEANS_OBJ="objects/netbeans.o"
1631 AC_SUBST(NETBEANS_OBJ)
1632fi
1633
1634AC_MSG_CHECKING(--enable-sniff argument)
1635AC_ARG_ENABLE(sniff,
1636 [ --enable-sniff Include Sniff interface.], ,
1637 [enable_sniff="no"])
1638AC_MSG_RESULT($enable_sniff)
1639if test "$enable_sniff" = "yes"; then
1640 AC_DEFINE(FEAT_SNIFF)
1641 SNIFF_SRC="if_sniff.c"
1642 AC_SUBST(SNIFF_SRC)
1643 SNIFF_OBJ="objects/if_sniff.o"
1644 AC_SUBST(SNIFF_OBJ)
1645fi
1646
1647AC_MSG_CHECKING(--enable-multibyte argument)
1648AC_ARG_ENABLE(multibyte,
1649 [ --enable-multibyte Include multibyte editing support.], ,
1650 [enable_multibyte="no"])
1651AC_MSG_RESULT($enable_multibyte)
1652if test "$enable_multibyte" = "yes"; then
1653 AC_DEFINE(FEAT_MBYTE)
1654fi
1655
1656AC_MSG_CHECKING(--enable-hangulinput argument)
1657AC_ARG_ENABLE(hangulinput,
1658 [ --enable-hangulinput Include Hangul input support.], ,
1659 [enable_hangulinput="no"])
1660AC_MSG_RESULT($enable_hangulinput)
1661
1662AC_MSG_CHECKING(--enable-xim argument)
1663AC_ARG_ENABLE(xim,
1664 [ --enable-xim Include XIM input support.],
1665 AC_MSG_RESULT($enable_xim),
1666 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001667
1668AC_MSG_CHECKING(--enable-fontset argument)
1669AC_ARG_ENABLE(fontset,
1670 [ --enable-fontset Include X fontset output support.], ,
1671 [enable_fontset="no"])
1672AC_MSG_RESULT($enable_fontset)
1673dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1674
1675test -z "$with_x" && with_x=yes
1676test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1677if test "$with_x" = no; then
1678 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1679else
1680 dnl Do this check early, so that its failure can override user requests.
1681
1682 AC_PATH_PROG(xmkmfpath, xmkmf)
1683
1684 AC_PATH_XTRA
1685
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001686 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001687 dnl be compiled with a special option.
1688 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001689 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001690 CFLAGS="$CFLAGS -W c,dll"
1691 LDFLAGS="$LDFLAGS -W l,dll"
1692 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1693 fi
1694
1695 dnl On my HPUX system the X include dir is found, but the lib dir not.
1696 dnl This is a desparate try to fix this.
1697
1698 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1699 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1700 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1701 X_LIBS="$X_LIBS -L$x_libraries"
1702 if test "`(uname) 2>/dev/null`" = SunOS &&
1703 uname -r | grep '^5' >/dev/null; then
1704 X_LIBS="$X_LIBS -R $x_libraries"
1705 fi
1706 fi
1707
1708 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1709 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1710 AC_MSG_RESULT(Corrected X includes to $x_includes)
1711 X_CFLAGS="$X_CFLAGS -I$x_includes"
1712 fi
1713
1714 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1715 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1716 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1717 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1718 dnl Same for "-R/usr/lib ".
1719 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1720
1721
1722 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001723 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1724 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001725 AC_MSG_CHECKING(if X11 header files can be found)
1726 cflags_save=$CFLAGS
1727 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001728 AC_TRY_COMPILE([#include <X11/Xlib.h>
1729#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001730 AC_MSG_RESULT(yes),
1731 AC_MSG_RESULT(no); no_x=yes)
1732 CFLAGS=$cflags_save
1733
1734 if test "${no_x-no}" = yes; then
1735 with_x=no
1736 else
1737 AC_DEFINE(HAVE_X11)
1738 X_LIB="-lXt -lX11";
1739 AC_SUBST(X_LIB)
1740
1741 ac_save_LDFLAGS="$LDFLAGS"
1742 LDFLAGS="-L$x_libraries $LDFLAGS"
1743
1744 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1745 dnl For HP-UX 10.20 it must be before -lSM -lICE
1746 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1747 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1748
1749 dnl Some systems need -lnsl -lsocket when testing for ICE.
1750 dnl The check above doesn't do this, try here (again). Also needed to get
1751 dnl them after Xdmcp. link.sh will remove them when not needed.
1752 dnl Check for other function than above to avoid the cached value
1753 AC_CHECK_LIB(ICE, IceOpenConnection,
1754 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1755
1756 dnl Check for -lXpm (needed for some versions of Motif)
1757 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1758 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1759 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1760
1761 dnl Check that the X11 header files don't use implicit declarations
1762 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1763 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001764 dnl -Werror is GCC only, others like Solaris Studio might not like it
1765 if test "$GCC" = yes; then
1766 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1767 else
1768 CFLAGS="$CFLAGS $X_CFLAGS"
1769 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001770 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1771 AC_MSG_RESULT(no),
1772 CFLAGS="$CFLAGS -Wno-implicit-int"
1773 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1774 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1775 AC_MSG_RESULT(test failed)
1776 )
1777 )
1778 CFLAGS=$cflags_save
1779
1780 LDFLAGS="$ac_save_LDFLAGS"
1781
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001782 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1783 AC_CACHE_VAL(ac_cv_small_wchar_t,
1784 [AC_TRY_RUN([
1785#include <X11/Xlib.h>
1786#if STDC_HEADERS
1787# include <stdlib.h>
1788# include <stddef.h>
1789#endif
1790 main()
1791 {
1792 if (sizeof(wchar_t) <= 2)
1793 exit(1);
1794 exit(0);
1795 }],
1796 ac_cv_small_wchar_t="no",
1797 ac_cv_small_wchar_t="yes",
1798 AC_MSG_ERROR(failed to compile test program))])
1799 AC_MSG_RESULT($ac_cv_small_wchar_t)
1800 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1801 AC_DEFINE(SMALL_WCHAR_T)
1802 fi
1803
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804 fi
1805fi
1806
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001807test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001808
1809AC_MSG_CHECKING(--enable-gui argument)
1810AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001811 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001812
1813dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1814dnl Do not use character classes for portability with old tools.
1815enable_gui_canon=`echo "_$enable_gui" | \
1816 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1817
1818dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001819SKIP_GTK2=YES
1820SKIP_GNOME=YES
1821SKIP_MOTIF=YES
1822SKIP_ATHENA=YES
1823SKIP_NEXTAW=YES
1824SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001825SKIP_CARBON=YES
1826GUITYPE=NONE
1827
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001828if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001829 SKIP_PHOTON=
1830 case "$enable_gui_canon" in
1831 no) AC_MSG_RESULT(no GUI support)
1832 SKIP_PHOTON=YES ;;
1833 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1834 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1835 photon) AC_MSG_RESULT(Photon GUI support) ;;
1836 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1837 SKIP_PHOTON=YES ;;
1838 esac
1839
1840elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1841 SKIP_CARBON=
1842 case "$enable_gui_canon" in
1843 no) AC_MSG_RESULT(no GUI support)
1844 SKIP_CARBON=YES ;;
1845 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001846 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1847 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001848 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1849 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1850 SKIP_CARBON=YES ;;
1851 esac
1852
1853else
1854
Bram Moolenaar071d4272004-06-13 20:20:40 +00001855 case "$enable_gui_canon" in
1856 no|none) AC_MSG_RESULT(no GUI support) ;;
1857 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001858 SKIP_GTK2=
1859 SKIP_GNOME=
1860 SKIP_MOTIF=
1861 SKIP_ATHENA=
1862 SKIP_NEXTAW=
1863 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001864 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001865 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001866 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1867 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001868 SKIP_GTK2=;;
1869 motif) AC_MSG_RESULT(Motif GUI support)
1870 SKIP_MOTIF=;;
1871 athena) AC_MSG_RESULT(Athena GUI support)
1872 SKIP_ATHENA=;;
1873 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1874 SKIP_NEXTAW=;;
1875 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1876 esac
1877
1878fi
1879
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1881 -a "$enable_gui_canon" != "gnome2"; then
1882 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1883 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001884 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001885 , enable_gtk2_check="yes")
1886 AC_MSG_RESULT($enable_gtk2_check)
1887 if test "x$enable_gtk2_check" = "xno"; then
1888 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001889 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001890 fi
1891fi
1892
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001893if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001894 AC_MSG_CHECKING(whether or not to look for GNOME)
1895 AC_ARG_ENABLE(gnome-check,
1896 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1897 , enable_gnome_check="no")
1898 AC_MSG_RESULT($enable_gnome_check)
1899 if test "x$enable_gnome_check" = "xno"; then
1900 SKIP_GNOME=YES
1901 fi
1902fi
1903
1904if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1905 AC_MSG_CHECKING(whether or not to look for Motif)
1906 AC_ARG_ENABLE(motif-check,
1907 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1908 , enable_motif_check="yes")
1909 AC_MSG_RESULT($enable_motif_check)
1910 if test "x$enable_motif_check" = "xno"; then
1911 SKIP_MOTIF=YES
1912 fi
1913fi
1914
1915if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1916 AC_MSG_CHECKING(whether or not to look for Athena)
1917 AC_ARG_ENABLE(athena-check,
1918 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1919 , enable_athena_check="yes")
1920 AC_MSG_RESULT($enable_athena_check)
1921 if test "x$enable_athena_check" = "xno"; then
1922 SKIP_ATHENA=YES
1923 fi
1924fi
1925
1926if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1927 AC_MSG_CHECKING(whether or not to look for neXtaw)
1928 AC_ARG_ENABLE(nextaw-check,
1929 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1930 , enable_nextaw_check="yes")
1931 AC_MSG_RESULT($enable_nextaw_check);
1932 if test "x$enable_nextaw_check" = "xno"; then
1933 SKIP_NEXTAW=YES
1934 fi
1935fi
1936
1937if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1938 AC_MSG_CHECKING(whether or not to look for Carbon)
1939 AC_ARG_ENABLE(carbon-check,
1940 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1941 , enable_carbon_check="yes")
1942 AC_MSG_RESULT($enable_carbon_check);
1943 if test "x$enable_carbon_check" = "xno"; then
1944 SKIP_CARBON=YES
1945 fi
1946fi
1947
Bram Moolenaar843ee412004-06-30 16:16:41 +00001948
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1950 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001951 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001952 AC_MSG_RESULT(yes);
1953 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001954 if test "$VIMNAME" = "vim"; then
1955 VIMNAME=Vim
1956 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001957
Bram Moolenaar164fca32010-07-14 13:58:07 +02001958 if test "x$MACARCH" = "xboth"; then
1959 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1960 else
1961 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1962 fi
1963
Bram Moolenaar14716812006-05-04 21:54:08 +00001964 dnl Default install directory is not /usr/local
1965 if test x$prefix = xNONE; then
1966 prefix=/Applications
1967 fi
1968
1969 dnl Sorry for the hard coded default
1970 datadir='${prefix}/Vim.app/Contents/Resources'
1971
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001973 SKIP_GTK2=YES;
1974 SKIP_GNOME=YES;
1975 SKIP_MOTIF=YES;
1976 SKIP_ATHENA=YES;
1977 SKIP_NEXTAW=YES;
1978 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001979 SKIP_CARBON=YES
1980fi
1981
Bram Moolenaar071d4272004-06-13 20:20:40 +00001982dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001983dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001984dnl
1985dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001986dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987dnl
1988AC_DEFUN(AM_PATH_GTK,
1989[
1990 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1991 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001992 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001993 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1994 no_gtk=""
1995 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1996 && $PKG_CONFIG --exists gtk+-2.0; then
1997 {
1998 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1999 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2000 dnl something like that.
2001 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002002 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002003 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2004 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2005 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2006 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2007 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2008 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2009 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2010 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002011 else
2012 no_gtk=yes
2013 fi
2014
2015 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2016 {
2017 ac_save_CFLAGS="$CFLAGS"
2018 ac_save_LIBS="$LIBS"
2019 CFLAGS="$CFLAGS $GTK_CFLAGS"
2020 LIBS="$LIBS $GTK_LIBS"
2021
2022 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002023 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 dnl
2025 rm -f conf.gtktest
2026 AC_TRY_RUN([
2027#include <gtk/gtk.h>
2028#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002029#if STDC_HEADERS
2030# include <stdlib.h>
2031# include <stddef.h>
2032#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002033
2034int
2035main ()
2036{
2037int major, minor, micro;
2038char *tmp_version;
2039
2040system ("touch conf.gtktest");
2041
2042/* HP/UX 9 (%@#!) writes to sscanf strings */
2043tmp_version = g_strdup("$min_gtk_version");
2044if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2045 printf("%s, bad version string\n", "$min_gtk_version");
2046 exit(1);
2047 }
2048
2049if ((gtk_major_version > major) ||
2050 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2051 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2052 (gtk_micro_version >= micro)))
2053{
2054 return 0;
2055}
2056return 1;
2057}
2058],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2059 CFLAGS="$ac_save_CFLAGS"
2060 LIBS="$ac_save_LIBS"
2061 }
2062 fi
2063 if test "x$no_gtk" = x ; then
2064 if test "x$enable_gtktest" = "xyes"; then
2065 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2066 else
2067 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2068 fi
2069 ifelse([$2], , :, [$2])
2070 else
2071 {
2072 AC_MSG_RESULT(no)
2073 GTK_CFLAGS=""
2074 GTK_LIBS=""
2075 ifelse([$3], , :, [$3])
2076 }
2077 fi
2078 }
2079 else
2080 GTK_CFLAGS=""
2081 GTK_LIBS=""
2082 ifelse([$3], , :, [$3])
2083 fi
2084 AC_SUBST(GTK_CFLAGS)
2085 AC_SUBST(GTK_LIBS)
2086 rm -f conf.gtktest
2087])
2088
2089dnl ---------------------------------------------------------------------------
2090dnl gnome
2091dnl ---------------------------------------------------------------------------
2092AC_DEFUN([GNOME_INIT_HOOK],
2093[
2094 AC_SUBST(GNOME_LIBS)
2095 AC_SUBST(GNOME_LIBDIR)
2096 AC_SUBST(GNOME_INCLUDEDIR)
2097
2098 AC_ARG_WITH(gnome-includes,
2099 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2100 [CFLAGS="$CFLAGS -I$withval"]
2101 )
2102
2103 AC_ARG_WITH(gnome-libs,
2104 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2105 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2106 )
2107
2108 AC_ARG_WITH(gnome,
2109 [ --with-gnome Specify prefix for GNOME files],
2110 if test x$withval = xyes; then
2111 want_gnome=yes
2112 ifelse([$1], [], :, [$1])
2113 else
2114 if test "x$withval" = xno; then
2115 want_gnome=no
2116 else
2117 want_gnome=yes
2118 LDFLAGS="$LDFLAGS -L$withval/lib"
2119 CFLAGS="$CFLAGS -I$withval/include"
2120 gnome_prefix=$withval/lib
2121 fi
2122 fi,
2123 want_gnome=yes)
2124
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002125 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 {
2127 AC_MSG_CHECKING(for libgnomeui-2.0)
2128 if $PKG_CONFIG --exists libgnomeui-2.0; then
2129 AC_MSG_RESULT(yes)
2130 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2131 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2132 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002133
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002134 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2135 dnl This might not be the right way but it works for me...
2136 AC_MSG_CHECKING(for FreeBSD)
2137 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2138 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002139 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002140 GNOME_LIBS="$GNOME_LIBS -pthread"
2141 else
2142 AC_MSG_RESULT(no)
2143 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144 $1
2145 else
2146 AC_MSG_RESULT(not found)
2147 if test "x$2" = xfail; then
2148 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2149 fi
2150 fi
2151 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002152 fi
2153])
2154
2155AC_DEFUN([GNOME_INIT],[
2156 GNOME_INIT_HOOK([],fail)
2157])
2158
2159
2160dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002161dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002162dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002163if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002164
2165 AC_MSG_CHECKING(--disable-gtktest argument)
2166 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2167 , enable_gtktest=yes)
2168 if test "x$enable_gtktest" = "xyes" ; then
2169 AC_MSG_RESULT(gtk test enabled)
2170 else
2171 AC_MSG_RESULT(gtk test disabled)
2172 fi
2173
Bram Moolenaar071d4272004-06-13 20:20:40 +00002174 if test "X$PKG_CONFIG" = "X"; then
2175 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2176 fi
2177
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002178 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002179 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2180 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002181 AM_PATH_GTK(2.2.0,
2182 [GUI_LIB_LOC="$GTK_LIBDIR"
2183 GTK_LIBNAME="$GTK_LIBS"
2184 GUI_INC_LOC="$GTK_CFLAGS"], )
2185 if test "x$GTK_CFLAGS" != "x"; then
2186 SKIP_ATHENA=YES
2187 SKIP_NEXTAW=YES
2188 SKIP_MOTIF=YES
2189 GUITYPE=GTK
2190 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002191 fi
2192 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002193 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002194 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2195 || test "0$gtk_minor_version" -ge 2; then
2196 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2197 fi
2198 dnl
2199 dnl if GTK exists, then check for GNOME.
2200 dnl
2201 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002202 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002203 GNOME_INIT_HOOK([have_gnome=yes])
2204 if test "x$have_gnome" = xyes ; then
2205 AC_DEFINE(FEAT_GUI_GNOME)
2206 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2207 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002208 fi
2209 }
2210 fi
2211 fi
2212fi
2213
2214dnl Check for Motif include files location.
2215dnl The LAST one found is used, this makes the highest version to be used,
2216dnl e.g. when Motif1.2 and Motif2.0 are both present.
2217
2218if test -z "$SKIP_MOTIF"; then
2219 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"
2220 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2221 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2222
2223 AC_MSG_CHECKING(for location of Motif GUI includes)
2224 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2225 GUI_INC_LOC=
2226 for try in $gui_includes; do
2227 if test -f "$try/Xm/Xm.h"; then
2228 GUI_INC_LOC=$try
2229 fi
2230 done
2231 if test -n "$GUI_INC_LOC"; then
2232 if test "$GUI_INC_LOC" = /usr/include; then
2233 GUI_INC_LOC=
2234 AC_MSG_RESULT(in default path)
2235 else
2236 AC_MSG_RESULT($GUI_INC_LOC)
2237 fi
2238 else
2239 AC_MSG_RESULT(<not found>)
2240 SKIP_MOTIF=YES
2241 fi
2242fi
2243
2244dnl Check for Motif library files location. In the same order as the include
2245dnl files, to avoid a mixup if several versions are present
2246
2247if test -z "$SKIP_MOTIF"; then
2248 AC_MSG_CHECKING(--with-motif-lib argument)
2249 AC_ARG_WITH(motif-lib,
2250 [ --with-motif-lib=STRING Library for Motif ],
2251 [ MOTIF_LIBNAME="${withval}" ] )
2252
2253 if test -n "$MOTIF_LIBNAME"; then
2254 AC_MSG_RESULT($MOTIF_LIBNAME)
2255 GUI_LIB_LOC=
2256 else
2257 AC_MSG_RESULT(no)
2258
2259 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2260 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2261
2262 AC_MSG_CHECKING(for location of Motif GUI libs)
2263 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
2264 GUI_LIB_LOC=
2265 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002266 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002267 if test -f "$libtry"; then
2268 GUI_LIB_LOC=$try
2269 fi
2270 done
2271 done
2272 if test -n "$GUI_LIB_LOC"; then
2273 dnl Remove /usr/lib, it causes trouble on some systems
2274 if test "$GUI_LIB_LOC" = /usr/lib; then
2275 GUI_LIB_LOC=
2276 AC_MSG_RESULT(in default path)
2277 else
2278 if test -n "$GUI_LIB_LOC"; then
2279 AC_MSG_RESULT($GUI_LIB_LOC)
2280 if test "`(uname) 2>/dev/null`" = SunOS &&
2281 uname -r | grep '^5' >/dev/null; then
2282 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2283 fi
2284 fi
2285 fi
2286 MOTIF_LIBNAME=-lXm
2287 else
2288 AC_MSG_RESULT(<not found>)
2289 SKIP_MOTIF=YES
2290 fi
2291 fi
2292fi
2293
2294if test -z "$SKIP_MOTIF"; then
2295 SKIP_ATHENA=YES
2296 SKIP_NEXTAW=YES
2297 GUITYPE=MOTIF
2298 AC_SUBST(MOTIF_LIBNAME)
2299fi
2300
2301dnl Check if the Athena files can be found
2302
2303GUI_X_LIBS=
2304
2305if test -z "$SKIP_ATHENA"; then
2306 AC_MSG_CHECKING(if Athena header files can be found)
2307 cflags_save=$CFLAGS
2308 CFLAGS="$CFLAGS $X_CFLAGS"
2309 AC_TRY_COMPILE([
2310#include <X11/Intrinsic.h>
2311#include <X11/Xaw/Paned.h>], ,
2312 AC_MSG_RESULT(yes),
2313 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2314 CFLAGS=$cflags_save
2315fi
2316
2317if test -z "$SKIP_ATHENA"; then
2318 GUITYPE=ATHENA
2319fi
2320
2321if test -z "$SKIP_NEXTAW"; then
2322 AC_MSG_CHECKING(if neXtaw header files can be found)
2323 cflags_save=$CFLAGS
2324 CFLAGS="$CFLAGS $X_CFLAGS"
2325 AC_TRY_COMPILE([
2326#include <X11/Intrinsic.h>
2327#include <X11/neXtaw/Paned.h>], ,
2328 AC_MSG_RESULT(yes),
2329 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2330 CFLAGS=$cflags_save
2331fi
2332
2333if test -z "$SKIP_NEXTAW"; then
2334 GUITYPE=NEXTAW
2335fi
2336
2337if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2338 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2339 dnl Avoid adding it when it twice
2340 if test -n "$GUI_INC_LOC"; then
2341 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2342 fi
2343 if test -n "$GUI_LIB_LOC"; then
2344 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2345 fi
2346
2347 dnl Check for -lXext and then for -lXmu
2348 ldflags_save=$LDFLAGS
2349 LDFLAGS="$X_LIBS $LDFLAGS"
2350 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2351 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2352 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2353 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2354 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2355 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2356 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2357 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2358 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2359 if test -z "$SKIP_MOTIF"; then
2360 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2361 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2362 fi
2363 LDFLAGS=$ldflags_save
2364
2365 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2366 AC_MSG_CHECKING(for extra X11 defines)
2367 NARROW_PROTO=
2368 rm -fr conftestdir
2369 if mkdir conftestdir; then
2370 cd conftestdir
2371 cat > Imakefile <<'EOF'
2372acfindx:
2373 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2374EOF
2375 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2376 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2377 fi
2378 cd ..
2379 rm -fr conftestdir
2380 fi
2381 if test -z "$NARROW_PROTO"; then
2382 AC_MSG_RESULT(no)
2383 else
2384 AC_MSG_RESULT($NARROW_PROTO)
2385 fi
2386 AC_SUBST(NARROW_PROTO)
2387fi
2388
2389dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2390dnl use the X11 include path
2391if test "$enable_xsmp" = "yes"; then
2392 cppflags_save=$CPPFLAGS
2393 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2394 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2395 CPPFLAGS=$cppflags_save
2396fi
2397
2398
Bram Moolenaare667c952010-07-05 22:57:59 +02002399if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002400 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2401 cppflags_save=$CPPFLAGS
2402 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2403 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2404
2405 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2406 if test ! "$enable_xim" = "no"; then
2407 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2408 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2409 AC_MSG_RESULT(yes),
2410 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2411 fi
2412 CPPFLAGS=$cppflags_save
2413
2414 dnl automatically enable XIM when hangul input isn't enabled
2415 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2416 -a "x$GUITYPE" != "xNONE" ; then
2417 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2418 enable_xim="yes"
2419 fi
2420fi
2421
2422if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2423 cppflags_save=$CPPFLAGS
2424 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002425dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2426 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2427 AC_TRY_COMPILE([
2428#include <X11/Intrinsic.h>
2429#include <X11/Xmu/Editres.h>],
2430 [int i; i = 0;],
2431 AC_MSG_RESULT(yes)
2432 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2433 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002434 CPPFLAGS=$cppflags_save
2435fi
2436
2437dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2438if test -z "$SKIP_MOTIF"; then
2439 cppflags_save=$CPPFLAGS
2440 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002441 if test "$zOSUnix" = "yes"; then
2442 xmheader="Xm/Xm.h"
2443 else
2444 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2445 Xm/UnhighlightT.h Xm/Notebook.h"
2446 fi
2447 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002448
Bram Moolenaar77c19352012-06-13 19:19:41 +02002449 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002450 dnl Solaris uses XpmAttributes_21, very annoying.
2451 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2452 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2453 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2454 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2455 )
2456 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002457 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002458 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002459 CPPFLAGS=$cppflags_save
2460fi
2461
2462if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2463 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2464 enable_xim="no"
2465fi
2466if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2467 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2468 enable_fontset="no"
2469fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002470if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002471 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2472 enable_fontset="no"
2473fi
2474
Bram Moolenaar071d4272004-06-13 20:20:40 +00002475if test -z "$SKIP_PHOTON"; then
2476 GUITYPE=PHOTONGUI
2477fi
2478
2479AC_SUBST(GUI_INC_LOC)
2480AC_SUBST(GUI_LIB_LOC)
2481AC_SUBST(GUITYPE)
2482AC_SUBST(GUI_X_LIBS)
2483
2484if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2485 AC_MSG_ERROR([cannot use workshop without Motif])
2486fi
2487
2488dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2489if test "$enable_xim" = "yes"; then
2490 AC_DEFINE(FEAT_XIM)
2491fi
2492if test "$enable_fontset" = "yes"; then
2493 AC_DEFINE(FEAT_XFONTSET)
2494fi
2495
2496
2497dnl ---------------------------------------------------------------------------
2498dnl end of GUI-checking
2499dnl ---------------------------------------------------------------------------
2500
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002501dnl Check for Cygwin, which needs an extra source file if not using X11
2502AC_MSG_CHECKING(for CYGWIN environment)
2503case `uname` in
2504 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2505 AC_MSG_CHECKING(for CYGWIN clipboard support)
2506 if test "x$with_x" = "xno" ; then
2507 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2508 AC_MSG_RESULT(yes)
2509 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2510 else
2511 AC_MSG_RESULT(no - using X11)
2512 fi ;;
2513
2514 *) CYGWIN=no; AC_MSG_RESULT(no);;
2515esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002516
2517dnl Only really enable hangul input when GUI and XFONTSET are available
2518if test "$enable_hangulinput" = "yes"; then
2519 if test "x$GUITYPE" = "xNONE"; then
2520 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2521 enable_hangulinput=no
2522 else
2523 AC_DEFINE(FEAT_HANGULIN)
2524 HANGULIN_SRC=hangulin.c
2525 AC_SUBST(HANGULIN_SRC)
2526 HANGULIN_OBJ=objects/hangulin.o
2527 AC_SUBST(HANGULIN_OBJ)
2528 fi
2529fi
2530
2531dnl Checks for libraries and include files.
2532
Bram Moolenaar446cb832008-06-24 21:56:24 +00002533AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2534 [
2535 AC_RUN_IFELSE([[
2536#include "confdefs.h"
2537#include <ctype.h>
2538#if STDC_HEADERS
2539# include <stdlib.h>
2540# include <stddef.h>
2541#endif
2542main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2543 ]],[
2544 vim_cv_toupper_broken=yes
2545 ],[
2546 vim_cv_toupper_broken=no
2547 ],[
2548 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2549 ])])
2550
2551if test "x$vim_cv_toupper_broken" = "xyes" ; then
2552 AC_DEFINE(BROKEN_TOUPPER)
2553fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002554
2555AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002556AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002557 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2558 AC_MSG_RESULT(no))
2559
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002560AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2561AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2562 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2563 AC_MSG_RESULT(no))
2564
Bram Moolenaar071d4272004-06-13 20:20:40 +00002565dnl Checks for header files.
2566AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2567dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2568if test "$HAS_ELF" = 1; then
2569 AC_CHECK_LIB(elf, main)
2570fi
2571
2572AC_HEADER_DIRENT
2573
Bram Moolenaar071d4272004-06-13 20:20:40 +00002574dnl If sys/wait.h is not found it might still exist but not be POSIX
2575dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2576if test $ac_cv_header_sys_wait_h = no; then
2577 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2578 AC_TRY_COMPILE([#include <sys/wait.h>],
2579 [union wait xx, yy; xx = yy],
2580 AC_MSG_RESULT(yes)
2581 AC_DEFINE(HAVE_SYS_WAIT_H)
2582 AC_DEFINE(HAVE_UNION_WAIT),
2583 AC_MSG_RESULT(no))
2584fi
2585
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002586AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2587 sys/select.h sys/utsname.h termcap.h fcntl.h \
2588 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2589 termio.h iconv.h inttypes.h langinfo.h math.h \
2590 unistd.h stropts.h errno.h sys/resource.h \
2591 sys/systeminfo.h locale.h sys/stream.h termios.h \
2592 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2593 utime.h sys/param.h libintl.h libgen.h \
2594 util/debug.h util/msg18n.h frame.h sys/acl.h \
2595 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002596
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002597dnl sys/ptem.h depends on sys/stream.h on Solaris
2598AC_CHECK_HEADERS(sys/ptem.h, [], [],
2599[#if defined HAVE_SYS_STREAM_H
2600# include <sys/stream.h>
2601#endif])
2602
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002603dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2604AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2605[#if defined HAVE_SYS_PARAM_H
2606# include <sys/param.h>
2607#endif])
2608
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002609
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002610dnl pthread_np.h may exist but can only be used after including pthread.h
2611AC_MSG_CHECKING([for pthread_np.h])
2612AC_TRY_COMPILE([
2613#include <pthread.h>
2614#include <pthread_np.h>],
2615 [int i; i = 0;],
2616 AC_MSG_RESULT(yes)
2617 AC_DEFINE(HAVE_PTHREAD_NP_H),
2618 AC_MSG_RESULT(no))
2619
Bram Moolenaare344bea2005-09-01 20:46:49 +00002620AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002621if test "x$MACOSX" = "xyes"; then
2622 dnl The strings.h file on OS/X contains a warning and nothing useful.
2623 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2624else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002625
2626dnl Check if strings.h and string.h can both be included when defined.
2627AC_MSG_CHECKING([if strings.h can be included after string.h])
2628cppflags_save=$CPPFLAGS
2629CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2630AC_TRY_COMPILE([
2631#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2632# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2633 /* but don't do it on AIX 5.1 (Uribarri) */
2634#endif
2635#ifdef HAVE_XM_XM_H
2636# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2637#endif
2638#ifdef HAVE_STRING_H
2639# include <string.h>
2640#endif
2641#if defined(HAVE_STRINGS_H)
2642# include <strings.h>
2643#endif
2644 ], [int i; i = 0;],
2645 AC_MSG_RESULT(yes),
2646 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2647 AC_MSG_RESULT(no))
2648CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002649fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002650
2651dnl Checks for typedefs, structures, and compiler characteristics.
2652AC_PROG_GCC_TRADITIONAL
2653AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002654AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002655AC_TYPE_MODE_T
2656AC_TYPE_OFF_T
2657AC_TYPE_PID_T
2658AC_TYPE_SIZE_T
2659AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002660AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002661
Bram Moolenaar071d4272004-06-13 20:20:40 +00002662AC_HEADER_TIME
2663AC_CHECK_TYPE(ino_t, long)
2664AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002665AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666
2667AC_MSG_CHECKING(for rlim_t)
2668if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2669 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2670else
2671 AC_EGREP_CPP(dnl
2672changequote(<<,>>)dnl
2673<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2674changequote([,]),
2675 [
2676#include <sys/types.h>
2677#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002678# include <stdlib.h>
2679# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680#endif
2681#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002682# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002683#endif
2684 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2685 AC_MSG_RESULT($ac_cv_type_rlim_t)
2686fi
2687if test $ac_cv_type_rlim_t = no; then
2688 cat >> confdefs.h <<\EOF
2689#define rlim_t unsigned long
2690EOF
2691fi
2692
2693AC_MSG_CHECKING(for stack_t)
2694if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2695 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2696else
2697 AC_EGREP_CPP(stack_t,
2698 [
2699#include <sys/types.h>
2700#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002701# include <stdlib.h>
2702# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002703#endif
2704#include <signal.h>
2705 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2706 AC_MSG_RESULT($ac_cv_type_stack_t)
2707fi
2708if test $ac_cv_type_stack_t = no; then
2709 cat >> confdefs.h <<\EOF
2710#define stack_t struct sigaltstack
2711EOF
2712fi
2713
2714dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2715AC_MSG_CHECKING(whether stack_t has an ss_base field)
2716AC_TRY_COMPILE([
2717#include <sys/types.h>
2718#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002719# include <stdlib.h>
2720# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721#endif
2722#include <signal.h>
2723#include "confdefs.h"
2724 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2725 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2726 AC_MSG_RESULT(no))
2727
2728olibs="$LIBS"
2729AC_MSG_CHECKING(--with-tlib argument)
2730AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2731if test -n "$with_tlib"; then
2732 AC_MSG_RESULT($with_tlib)
2733 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002734 AC_MSG_CHECKING(for linking with $with_tlib library)
2735 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2736 dnl Need to check for tgetent() below.
2737 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002738else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002739 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002740 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2741 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002742 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002743 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002744 dnl Older versions of ncurses have bugs, get a new one!
2745 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002746 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002747 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002748 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2749 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002750 esac
2751 for libname in $tlibs; do
2752 AC_CHECK_LIB(${libname}, tgetent,,)
2753 if test "x$olibs" != "x$LIBS"; then
2754 dnl It's possible that a library is found but it doesn't work
2755 dnl e.g., shared library that cannot be found
2756 dnl compile and run a test program to be sure
2757 AC_TRY_RUN([
2758#ifdef HAVE_TERMCAP_H
2759# include <termcap.h>
2760#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002761#if STDC_HEADERS
2762# include <stdlib.h>
2763# include <stddef.h>
2764#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002765main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2766 res="OK", res="FAIL", res="FAIL")
2767 if test "$res" = "OK"; then
2768 break
2769 fi
2770 AC_MSG_RESULT($libname library is not usable)
2771 LIBS="$olibs"
2772 fi
2773 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002774 if test "x$olibs" = "x$LIBS"; then
2775 AC_MSG_RESULT(no terminal library found)
2776 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002777fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002778
2779if test "x$olibs" = "x$LIBS"; then
2780 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002781 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002782 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2783 AC_MSG_RESULT(yes),
2784 AC_MSG_ERROR([NOT FOUND!
2785 You need to install a terminal library; for example ncurses.
2786 Or specify the name of the library with --with-tlib.]))
2787fi
2788
Bram Moolenaar446cb832008-06-24 21:56:24 +00002789AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2790 [
2791 AC_RUN_IFELSE([[
2792#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793#ifdef HAVE_TERMCAP_H
2794# include <termcap.h>
2795#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002796#ifdef HAVE_STRING_H
2797# include <string.h>
2798#endif
2799#if STDC_HEADERS
2800# include <stdlib.h>
2801# include <stddef.h>
2802#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002803main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002804{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2805 ]],[
2806 vim_cv_terminfo=no
2807 ],[
2808 vim_cv_terminfo=yes
2809 ],[
2810 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2811 ])
2812 ])
2813
2814if test "x$vim_cv_terminfo" = "xyes" ; then
2815 AC_DEFINE(TERMINFO)
2816fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002817
2818if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002819 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2820 [
2821 AC_RUN_IFELSE([[
2822#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002823#ifdef HAVE_TERMCAP_H
2824# include <termcap.h>
2825#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002826#if STDC_HEADERS
2827# include <stdlib.h>
2828# include <stddef.h>
2829#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002830main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002831{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2832 ]],[
2833 vim_cv_tgent=zero
2834 ],[
2835 vim_cv_tgent=non-zero
2836 ],[
2837 AC_MSG_ERROR(failed to compile test program.)
2838 ])
2839 ])
2840
2841 if test "x$vim_cv_tgent" = "xzero" ; then
2842 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2843 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002844fi
2845
2846AC_MSG_CHECKING(whether termcap.h contains ospeed)
2847AC_TRY_LINK([
2848#ifdef HAVE_TERMCAP_H
2849# include <termcap.h>
2850#endif
2851 ], [ospeed = 20000],
2852 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2853 [AC_MSG_RESULT(no)
2854 AC_MSG_CHECKING(whether ospeed can be extern)
2855 AC_TRY_LINK([
2856#ifdef HAVE_TERMCAP_H
2857# include <termcap.h>
2858#endif
2859extern short ospeed;
2860 ], [ospeed = 20000],
2861 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2862 AC_MSG_RESULT(no))]
2863 )
2864
2865AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2866AC_TRY_LINK([
2867#ifdef HAVE_TERMCAP_H
2868# include <termcap.h>
2869#endif
2870 ], [if (UP == 0 && BC == 0) PC = 1],
2871 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2872 [AC_MSG_RESULT(no)
2873 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2874 AC_TRY_LINK([
2875#ifdef HAVE_TERMCAP_H
2876# include <termcap.h>
2877#endif
2878extern char *UP, *BC, PC;
2879 ], [if (UP == 0 && BC == 0) PC = 1],
2880 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2881 AC_MSG_RESULT(no))]
2882 )
2883
2884AC_MSG_CHECKING(whether tputs() uses outfuntype)
2885AC_TRY_COMPILE([
2886#ifdef HAVE_TERMCAP_H
2887# include <termcap.h>
2888#endif
2889 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2890 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2891 AC_MSG_RESULT(no))
2892
2893dnl On some SCO machines sys/select redefines struct timeval
2894AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2895AC_TRY_COMPILE([
2896#include <sys/types.h>
2897#include <sys/time.h>
2898#include <sys/select.h>], ,
2899 AC_MSG_RESULT(yes)
2900 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2901 AC_MSG_RESULT(no))
2902
2903dnl AC_DECL_SYS_SIGLIST
2904
2905dnl Checks for pty.c (copied from screen) ==========================
2906AC_MSG_CHECKING(for /dev/ptc)
2907if test -r /dev/ptc; then
2908 AC_DEFINE(HAVE_DEV_PTC)
2909 AC_MSG_RESULT(yes)
2910else
2911 AC_MSG_RESULT(no)
2912fi
2913
2914AC_MSG_CHECKING(for SVR4 ptys)
2915if test -c /dev/ptmx ; then
2916 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2917 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2918 AC_MSG_RESULT(no))
2919else
2920 AC_MSG_RESULT(no)
2921fi
2922
2923AC_MSG_CHECKING(for ptyranges)
2924if test -d /dev/ptym ; then
2925 pdir='/dev/ptym'
2926else
2927 pdir='/dev'
2928fi
2929dnl SCO uses ptyp%d
2930AC_EGREP_CPP(yes,
2931[#ifdef M_UNIX
2932 yes;
2933#endif
2934 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2935dnl if test -c /dev/ptyp19; then
2936dnl ptys=`echo /dev/ptyp??`
2937dnl else
2938dnl ptys=`echo $pdir/pty??`
2939dnl fi
2940if test "$ptys" != "$pdir/pty??" ; then
2941 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2942 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2943 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2944 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2945 AC_MSG_RESULT([$p0 / $p1])
2946else
2947 AC_MSG_RESULT([don't know])
2948fi
2949
2950dnl **** pty mode/group handling ****
2951dnl
2952dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002953rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002954AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2955 [
2956 AC_RUN_IFELSE([[
2957#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002958#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002959#if STDC_HEADERS
2960# include <stdlib.h>
2961# include <stddef.h>
2962#endif
2963#ifdef HAVE_UNISTD_H
2964#include <unistd.h>
2965#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002966#include <sys/stat.h>
2967#include <stdio.h>
2968main()
2969{
2970 struct stat sb;
2971 char *x,*ttyname();
2972 int om, m;
2973 FILE *fp;
2974
2975 if (!(x = ttyname(0))) exit(1);
2976 if (stat(x, &sb)) exit(1);
2977 om = sb.st_mode;
2978 if (om & 002) exit(0);
2979 m = system("mesg y");
2980 if (m == -1 || m == 127) exit(1);
2981 if (stat(x, &sb)) exit(1);
2982 m = sb.st_mode;
2983 if (chmod(x, om)) exit(1);
2984 if (m & 002) exit(0);
2985 if (sb.st_gid == getgid()) exit(1);
2986 if (!(fp=fopen("conftest_grp", "w")))
2987 exit(1);
2988 fprintf(fp, "%d\n", sb.st_gid);
2989 fclose(fp);
2990 exit(0);
2991}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002992 ]],[
2993 if test -f conftest_grp; then
2994 vim_cv_tty_group=`cat conftest_grp`
2995 if test "x$vim_cv_tty_mode" = "x" ; then
2996 vim_cv_tty_mode=0620
2997 fi
2998 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2999 else
3000 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003001 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003002 fi
3003 ],[
3004 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003005 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003006 ],[
3007 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3008 ])
3009 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003010rm -f conftest_grp
3011
Bram Moolenaar446cb832008-06-24 21:56:24 +00003012if test "x$vim_cv_tty_group" != "xworld" ; then
3013 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3014 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003015 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 +00003016 else
3017 AC_DEFINE(PTYMODE, 0620)
3018 fi
3019fi
3020
Bram Moolenaar071d4272004-06-13 20:20:40 +00003021dnl Checks for library functions. ===================================
3022
3023AC_TYPE_SIGNAL
3024
3025dnl find out what to use at the end of a signal function
3026if test $ac_cv_type_signal = void; then
3027 AC_DEFINE(SIGRETURN, [return])
3028else
3029 AC_DEFINE(SIGRETURN, [return 0])
3030fi
3031
3032dnl check if struct sigcontext is defined (used for SGI only)
3033AC_MSG_CHECKING(for struct sigcontext)
3034AC_TRY_COMPILE([
3035#include <signal.h>
3036test_sig()
3037{
3038 struct sigcontext *scont;
3039 scont = (struct sigcontext *)0;
3040 return 1;
3041} ], ,
3042 AC_MSG_RESULT(yes)
3043 AC_DEFINE(HAVE_SIGCONTEXT),
3044 AC_MSG_RESULT(no))
3045
3046dnl tricky stuff: try to find out if getcwd() is implemented with
3047dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003048AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3049 [
3050 AC_RUN_IFELSE([[
3051#include "confdefs.h"
3052#ifdef HAVE_UNISTD_H
3053#include <unistd.h>
3054#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003055char *dagger[] = { "IFS=pwd", 0 };
3056main()
3057{
3058 char buffer[500];
3059 extern char **environ;
3060 environ = dagger;
3061 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003062}
3063 ]],[
3064 vim_cv_getcwd_broken=no
3065 ],[
3066 vim_cv_getcwd_broken=yes
3067 ],[
3068 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3069 ])
3070 ])
3071
3072if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3073 AC_DEFINE(BAD_GETCWD)
3074fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003075
Bram Moolenaar25153e12010-02-24 14:47:08 +01003076dnl Check for functions in one big call, to reduce the size of configure.
3077dnl Can only be used for functions that do not require any include.
3078AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003079 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003080 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003081 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003082 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003083 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3084 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003085AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003086
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003087dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3088dnl appropriate, so that off_t is 64 bits when needed.
3089AC_SYS_LARGEFILE
3090
Bram Moolenaar071d4272004-06-13 20:20:40 +00003091dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3092AC_MSG_CHECKING(for st_blksize)
3093AC_TRY_COMPILE(
3094[#include <sys/types.h>
3095#include <sys/stat.h>],
3096[ struct stat st;
3097 int n;
3098
3099 stat("/", &st);
3100 n = (int)st.st_blksize;],
3101 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3102 AC_MSG_RESULT(no))
3103
Bram Moolenaar446cb832008-06-24 21:56:24 +00003104AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3105 [
3106 AC_RUN_IFELSE([[
3107#include "confdefs.h"
3108#if STDC_HEADERS
3109# include <stdlib.h>
3110# include <stddef.h>
3111#endif
3112#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003114main() {struct stat st; exit(stat("configure/", &st) != 0); }
3115 ]],[
3116 vim_cv_stat_ignores_slash=yes
3117 ],[
3118 vim_cv_stat_ignores_slash=no
3119 ],[
3120 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3121 ])
3122 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003123
Bram Moolenaar446cb832008-06-24 21:56:24 +00003124if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3125 AC_DEFINE(STAT_IGNORES_SLASH)
3126fi
3127
Bram Moolenaar071d4272004-06-13 20:20:40 +00003128dnl Link with iconv for charset translation, if not found without library.
3129dnl check for iconv() requires including iconv.h
3130dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3131dnl has been installed.
3132AC_MSG_CHECKING(for iconv_open())
3133save_LIBS="$LIBS"
3134LIBS="$LIBS -liconv"
3135AC_TRY_LINK([
3136#ifdef HAVE_ICONV_H
3137# include <iconv.h>
3138#endif
3139 ], [iconv_open("fr", "to");],
3140 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3141 LIBS="$save_LIBS"
3142 AC_TRY_LINK([
3143#ifdef HAVE_ICONV_H
3144# include <iconv.h>
3145#endif
3146 ], [iconv_open("fr", "to");],
3147 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3148 AC_MSG_RESULT(no)))
3149
3150
3151AC_MSG_CHECKING(for nl_langinfo(CODESET))
3152AC_TRY_LINK([
3153#ifdef HAVE_LANGINFO_H
3154# include <langinfo.h>
3155#endif
3156], [char *cs = nl_langinfo(CODESET);],
3157 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3158 AC_MSG_RESULT(no))
3159
Bram Moolenaar446cb832008-06-24 21:56:24 +00003160dnl Need various functions for floating point support. Only enable
3161dnl floating point when they are all present.
3162AC_CHECK_LIB(m, strtod)
3163AC_MSG_CHECKING([for strtod() and other floating point functions])
3164AC_TRY_LINK([
3165#ifdef HAVE_MATH_H
3166# include <math.h>
3167#endif
3168#if STDC_HEADERS
3169# include <stdlib.h>
3170# include <stddef.h>
3171#endif
3172], [char *s; double d;
3173 d = strtod("1.1", &s);
3174 d = fabs(1.11);
3175 d = ceil(1.11);
3176 d = floor(1.11);
3177 d = log10(1.11);
3178 d = pow(1.11, 2.22);
3179 d = sqrt(1.11);
3180 d = sin(1.11);
3181 d = cos(1.11);
3182 d = atan(1.11);
3183 ],
3184 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3185 AC_MSG_RESULT(no))
3186
Bram Moolenaar071d4272004-06-13 20:20:40 +00003187dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3188dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003189dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003190AC_MSG_CHECKING(--disable-acl argument)
3191AC_ARG_ENABLE(acl,
3192 [ --disable-acl Don't check for ACL support.],
3193 , [enable_acl="yes"])
3194if test "$enable_acl" = "yes"; then
3195AC_MSG_RESULT(no)
3196AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3197 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3198 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3199
3200AC_MSG_CHECKING(for POSIX ACL support)
3201AC_TRY_LINK([
3202#include <sys/types.h>
3203#ifdef HAVE_SYS_ACL_H
3204# include <sys/acl.h>
3205#endif
3206acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3207 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3208 acl_free(acl);],
3209 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3210 AC_MSG_RESULT(no))
3211
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003212AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003213AC_MSG_CHECKING(for Solaris ACL support)
3214AC_TRY_LINK([
3215#ifdef HAVE_SYS_ACL_H
3216# include <sys/acl.h>
3217#endif], [acl("foo", GETACLCNT, 0, NULL);
3218 ],
3219 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003220 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003221
3222AC_MSG_CHECKING(for AIX ACL support)
3223AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003224#if STDC_HEADERS
3225# include <stdlib.h>
3226# include <stddef.h>
3227#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003228#ifdef HAVE_SYS_ACL_H
3229# include <sys/acl.h>
3230#endif
3231#ifdef HAVE_SYS_ACCESS_H
3232# include <sys/access.h>
3233#endif
3234#define _ALL_SOURCE
3235
3236#include <sys/stat.h>
3237
3238int aclsize;
3239struct acl *aclent;], [aclsize = sizeof(struct acl);
3240 aclent = (void *)malloc(aclsize);
3241 statacl("foo", STX_NORMAL, aclent, aclsize);
3242 ],
3243 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3244 AC_MSG_RESULT(no))
3245else
3246 AC_MSG_RESULT(yes)
3247fi
3248
3249AC_MSG_CHECKING(--disable-gpm argument)
3250AC_ARG_ENABLE(gpm,
3251 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3252 [enable_gpm="yes"])
3253
3254if test "$enable_gpm" = "yes"; then
3255 AC_MSG_RESULT(no)
3256 dnl Checking if gpm support can be compiled
3257 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3258 [olibs="$LIBS" ; LIBS="-lgpm"]
3259 AC_TRY_LINK(
3260 [#include <gpm.h>
3261 #include <linux/keyboard.h>],
3262 [Gpm_GetLibVersion(NULL);],
3263 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3264 dnl FEAT_MOUSE_GPM if mouse support is included
3265 [vi_cv_have_gpm=yes],
3266 [vi_cv_have_gpm=no])
3267 [LIBS="$olibs"]
3268 )
3269 if test $vi_cv_have_gpm = yes; then
3270 LIBS="$LIBS -lgpm"
3271 AC_DEFINE(HAVE_GPM)
3272 fi
3273else
3274 AC_MSG_RESULT(yes)
3275fi
3276
Bram Moolenaar446cb832008-06-24 21:56:24 +00003277AC_MSG_CHECKING(--disable-sysmouse argument)
3278AC_ARG_ENABLE(sysmouse,
3279 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3280 [enable_sysmouse="yes"])
3281
3282if test "$enable_sysmouse" = "yes"; then
3283 AC_MSG_RESULT(no)
3284 dnl Checking if sysmouse support can be compiled
3285 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3286 dnl defines FEAT_SYSMOUSE if mouse support is included
3287 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3288 AC_TRY_LINK(
3289 [#include <sys/consio.h>
3290 #include <signal.h>
3291 #include <sys/fbio.h>],
3292 [struct mouse_info mouse;
3293 mouse.operation = MOUSE_MODE;
3294 mouse.operation = MOUSE_SHOW;
3295 mouse.u.mode.mode = 0;
3296 mouse.u.mode.signal = SIGUSR2;],
3297 [vi_cv_have_sysmouse=yes],
3298 [vi_cv_have_sysmouse=no])
3299 )
3300 if test $vi_cv_have_sysmouse = yes; then
3301 AC_DEFINE(HAVE_SYSMOUSE)
3302 fi
3303else
3304 AC_MSG_RESULT(yes)
3305fi
3306
Bram Moolenaarf05da212009-11-17 16:13:15 +00003307dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3308AC_MSG_CHECKING(for FD_CLOEXEC)
3309AC_TRY_COMPILE(
3310[#if HAVE_FCNTL_H
3311# include <fcntl.h>
3312#endif],
3313[ int flag = FD_CLOEXEC;],
3314 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3315 AC_MSG_RESULT(not usable))
3316
Bram Moolenaar071d4272004-06-13 20:20:40 +00003317dnl rename needs to be checked separately to work on Nextstep with cc
3318AC_MSG_CHECKING(for rename)
3319AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3320 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3321 AC_MSG_RESULT(no))
3322
3323dnl sysctl() may exist but not the arguments we use
3324AC_MSG_CHECKING(for sysctl)
3325AC_TRY_COMPILE(
3326[#include <sys/types.h>
3327#include <sys/sysctl.h>],
3328[ int mib[2], r;
3329 size_t len;
3330
3331 mib[0] = CTL_HW;
3332 mib[1] = HW_USERMEM;
3333 len = sizeof(r);
3334 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3335 ],
3336 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3337 AC_MSG_RESULT(not usable))
3338
3339dnl sysinfo() may exist but not be Linux compatible
3340AC_MSG_CHECKING(for sysinfo)
3341AC_TRY_COMPILE(
3342[#include <sys/types.h>
3343#include <sys/sysinfo.h>],
3344[ struct sysinfo sinfo;
3345 int t;
3346
3347 (void)sysinfo(&sinfo);
3348 t = sinfo.totalram;
3349 ],
3350 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3351 AC_MSG_RESULT(not usable))
3352
Bram Moolenaar914572a2007-05-01 11:37:47 +00003353dnl struct sysinfo may have the mem_unit field or not
3354AC_MSG_CHECKING(for sysinfo.mem_unit)
3355AC_TRY_COMPILE(
3356[#include <sys/types.h>
3357#include <sys/sysinfo.h>],
3358[ struct sysinfo sinfo;
3359 sinfo.mem_unit = 1;
3360 ],
3361 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3362 AC_MSG_RESULT(no))
3363
Bram Moolenaar071d4272004-06-13 20:20:40 +00003364dnl sysconf() may exist but not support what we want to use
3365AC_MSG_CHECKING(for sysconf)
3366AC_TRY_COMPILE(
3367[#include <unistd.h>],
3368[ (void)sysconf(_SC_PAGESIZE);
3369 (void)sysconf(_SC_PHYS_PAGES);
3370 ],
3371 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3372 AC_MSG_RESULT(not usable))
3373
Bram Moolenaar914703b2010-05-31 21:59:46 +02003374AC_CHECK_SIZEOF([int])
3375AC_CHECK_SIZEOF([long])
3376AC_CHECK_SIZEOF([time_t])
3377AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003378
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003379dnl Make sure that uint32_t is really 32 bits unsigned.
3380AC_MSG_CHECKING([uint32_t is 32 bits])
3381AC_TRY_RUN([
3382#ifdef HAVE_STDINT_H
3383# include <stdint.h>
3384#endif
3385#ifdef HAVE_INTTYPES_H
3386# include <inttypes.h>
3387#endif
3388main() {
3389 uint32_t nr1 = (uint32_t)-1;
3390 uint32_t nr2 = (uint32_t)0xffffffffUL;
3391 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3392 exit(0);
3393}],
3394AC_MSG_RESULT(ok),
3395AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003396AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003397
Bram Moolenaar446cb832008-06-24 21:56:24 +00003398dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3399dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3400
Bram Moolenaar071d4272004-06-13 20:20:40 +00003401[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003402#include "confdefs.h"
3403#ifdef HAVE_STRING_H
3404# include <string.h>
3405#endif
3406#if STDC_HEADERS
3407# include <stdlib.h>
3408# include <stddef.h>
3409#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003410main() {
3411 char buf[10];
3412 strcpy(buf, "abcdefghi");
3413 mch_memmove(buf, buf + 2, 3);
3414 if (strncmp(buf, "ababcf", 6))
3415 exit(1);
3416 strcpy(buf, "abcdefghi");
3417 mch_memmove(buf + 2, buf, 3);
3418 if (strncmp(buf, "cdedef", 6))
3419 exit(1);
3420 exit(0); /* libc version works properly. */
3421}']
3422
Bram Moolenaar446cb832008-06-24 21:56:24 +00003423AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3424 [
3425 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3426 [
3427 vim_cv_memmove_handles_overlap=yes
3428 ],[
3429 vim_cv_memmove_handles_overlap=no
3430 ],[
3431 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3432 ])
3433 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003434
Bram Moolenaar446cb832008-06-24 21:56:24 +00003435if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3436 AC_DEFINE(USEMEMMOVE)
3437else
3438 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3439 [
3440 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3441 [
3442 vim_cv_bcopy_handles_overlap=yes
3443 ],[
3444 vim_cv_bcopy_handles_overlap=no
3445 ],[
3446 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3447 ])
3448 ])
3449
3450 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3451 AC_DEFINE(USEBCOPY)
3452 else
3453 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3454 [
3455 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3456 [
3457 vim_cv_memcpy_handles_overlap=yes
3458 ],[
3459 vim_cv_memcpy_handles_overlap=no
3460 ],[
3461 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3462 ])
3463 ])
3464
3465 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3466 AC_DEFINE(USEMEMCPY)
3467 fi
3468 fi
3469fi
3470
Bram Moolenaar071d4272004-06-13 20:20:40 +00003471
3472dnl Check for multibyte locale functions
3473dnl Find out if _Xsetlocale() is supported by libX11.
3474dnl Check if X_LOCALE should be defined.
3475
3476if test "$enable_multibyte" = "yes"; then
3477 cflags_save=$CFLAGS
3478 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003479 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003480 CFLAGS="$CFLAGS -I$x_includes"
3481 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3482 AC_MSG_CHECKING(whether X_LOCALE needed)
3483 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3484 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3485 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3486 AC_MSG_RESULT(no))
3487 fi
3488 CFLAGS=$cflags_save
3489 LDFLAGS=$ldflags_save
3490fi
3491
3492dnl Link with xpg4, it is said to make Korean locale working
3493AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3494
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003495dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003496dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003497dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003498dnl -t for typedefs (many ctags have this)
3499dnl -s for static functions (Elvis ctags only?)
3500dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3501dnl -i+m to test for older Exuberant ctags
3502AC_MSG_CHECKING(how to create tags)
3503test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003504if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003505 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003506elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3507 TAGPRG="exctags -I INIT+ --fields=+S"
3508elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3509 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003510else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003511 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003512 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3513 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3514 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3515 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3516 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3517 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3518 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3519fi
3520test -f tags.save && mv tags.save tags
3521AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3522
3523dnl Check how we can run man with a section number
3524AC_MSG_CHECKING(how to run man with a section nr)
3525MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003526(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 +00003527AC_MSG_RESULT($MANDEF)
3528if test "$MANDEF" = "man -s"; then
3529 AC_DEFINE(USEMAN_S)
3530fi
3531
3532dnl Check if gettext() is working and if it needs -lintl
3533AC_MSG_CHECKING(--disable-nls argument)
3534AC_ARG_ENABLE(nls,
3535 [ --disable-nls Don't support NLS (gettext()).], ,
3536 [enable_nls="yes"])
3537
3538if test "$enable_nls" = "yes"; then
3539 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003540
3541 INSTALL_LANGS=install-languages
3542 AC_SUBST(INSTALL_LANGS)
3543 INSTALL_TOOL_LANGS=install-tool-languages
3544 AC_SUBST(INSTALL_TOOL_LANGS)
3545
Bram Moolenaar071d4272004-06-13 20:20:40 +00003546 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3547 AC_MSG_CHECKING([for NLS])
3548 if test -f po/Makefile; then
3549 have_gettext="no"
3550 if test -n "$MSGFMT"; then
3551 AC_TRY_LINK(
3552 [#include <libintl.h>],
3553 [gettext("Test");],
3554 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3555 olibs=$LIBS
3556 LIBS="$LIBS -lintl"
3557 AC_TRY_LINK(
3558 [#include <libintl.h>],
3559 [gettext("Test");],
3560 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3561 AC_MSG_RESULT([gettext() doesn't work]);
3562 LIBS=$olibs))
3563 else
3564 AC_MSG_RESULT([msgfmt not found - disabled]);
3565 fi
3566 if test $have_gettext = "yes"; then
3567 AC_DEFINE(HAVE_GETTEXT)
3568 MAKEMO=yes
3569 AC_SUBST(MAKEMO)
3570 dnl this was added in GNU gettext 0.10.36
3571 AC_CHECK_FUNCS(bind_textdomain_codeset)
3572 dnl _nl_msg_cat_cntr is required for GNU gettext
3573 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3574 AC_TRY_LINK(
3575 [#include <libintl.h>
3576 extern int _nl_msg_cat_cntr;],
3577 [++_nl_msg_cat_cntr;],
3578 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3579 AC_MSG_RESULT([no]))
3580 fi
3581 else
3582 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3583 fi
3584else
3585 AC_MSG_RESULT(yes)
3586fi
3587
3588dnl Check for dynamic linking loader
3589AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3590if test x${DLL} = xdlfcn.h; then
3591 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3592 AC_MSG_CHECKING([for dlopen()])
3593 AC_TRY_LINK(,[
3594 extern void* dlopen();
3595 dlopen();
3596 ],
3597 AC_MSG_RESULT(yes);
3598 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3599 AC_MSG_RESULT(no);
3600 AC_MSG_CHECKING([for dlopen() in -ldl])
3601 olibs=$LIBS
3602 LIBS="$LIBS -ldl"
3603 AC_TRY_LINK(,[
3604 extern void* dlopen();
3605 dlopen();
3606 ],
3607 AC_MSG_RESULT(yes);
3608 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3609 AC_MSG_RESULT(no);
3610 LIBS=$olibs))
3611 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3612 dnl ick :-)
3613 AC_MSG_CHECKING([for dlsym()])
3614 AC_TRY_LINK(,[
3615 extern void* dlsym();
3616 dlsym();
3617 ],
3618 AC_MSG_RESULT(yes);
3619 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3620 AC_MSG_RESULT(no);
3621 AC_MSG_CHECKING([for dlsym() in -ldl])
3622 olibs=$LIBS
3623 LIBS="$LIBS -ldl"
3624 AC_TRY_LINK(,[
3625 extern void* dlsym();
3626 dlsym();
3627 ],
3628 AC_MSG_RESULT(yes);
3629 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3630 AC_MSG_RESULT(no);
3631 LIBS=$olibs))
3632elif test x${DLL} = xdl.h; then
3633 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3634 AC_MSG_CHECKING([for shl_load()])
3635 AC_TRY_LINK(,[
3636 extern void* shl_load();
3637 shl_load();
3638 ],
3639 AC_MSG_RESULT(yes);
3640 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3641 AC_MSG_RESULT(no);
3642 AC_MSG_CHECKING([for shl_load() in -ldld])
3643 olibs=$LIBS
3644 LIBS="$LIBS -ldld"
3645 AC_TRY_LINK(,[
3646 extern void* shl_load();
3647 shl_load();
3648 ],
3649 AC_MSG_RESULT(yes);
3650 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3651 AC_MSG_RESULT(no);
3652 LIBS=$olibs))
3653fi
3654AC_CHECK_HEADERS(setjmp.h)
3655
3656if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3657 dnl -ldl must come after DynaLoader.a
3658 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3659 LIBS=`echo $LIBS | sed s/-ldl//`
3660 PERL_LIBS="$PERL_LIBS -ldl"
3661 fi
3662fi
3663
Bram Moolenaar164fca32010-07-14 13:58:07 +02003664if test "x$MACOSX" = "xyes"; then
3665 AC_MSG_CHECKING(whether we need -framework Cocoa)
3666 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3667 dnl disabled during tiny build)
3668 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3669 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003670 AC_MSG_RESULT(yes)
3671 else
3672 AC_MSG_RESULT(no)
3673 fi
3674fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003675if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003676 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003677fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003678
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003679dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3680dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3681dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003682dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3683dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003684DEPEND_CFLAGS_FILTER=
3685if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003686 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003687 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003688 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003689 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003690 AC_MSG_RESULT(yes)
3691 else
3692 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003693 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003694 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3695 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003696 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003697 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003698 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3699 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003700 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003701 AC_MSG_RESULT(yes)
3702 else
3703 AC_MSG_RESULT(no)
3704 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003705fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003706AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003707
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003708dnl link.sh tries to avoid overlinking in a hackish way.
3709dnl At least GNU ld supports --as-needed which provides the same functionality
3710dnl at linker level. Let's use it.
3711AC_MSG_CHECKING(linker --as-needed support)
3712LINK_AS_NEEDED=
3713# Check if linker supports --as-needed and --no-as-needed options
3714if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3715 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3716 LINK_AS_NEEDED=yes
3717fi
3718if test "$LINK_AS_NEEDED" = yes; then
3719 AC_MSG_RESULT(yes)
3720else
3721 AC_MSG_RESULT(no)
3722fi
3723AC_SUBST(LINK_AS_NEEDED)
3724
Bram Moolenaar77c19352012-06-13 19:19:41 +02003725# IBM z/OS reset CFLAGS for config.mk
3726if test "$zOSUnix" = "yes"; then
3727 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3728fi
3729
Bram Moolenaar071d4272004-06-13 20:20:40 +00003730dnl write output files
3731AC_OUTPUT(auto/config.mk:config.mk.in)
3732
3733dnl vim: set sw=2 tw=78 fo+=l: