blob: d4cd310b67f9c27d91dcfed08ae3a2e721a3b5a3 [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 Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_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
866 dnl -- it must be at least version 1.4
867 AC_MSG_CHECKING(Python is 1.4 or better)
868 if ${vi_cv_path_python} -c \
869 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
870 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=
902 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000903 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000904 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
905 if test -d "$d" && test -f "$d/config.c"; then
906 vi_cv_path_python_conf="$d"
907 fi
908 done
909 done
910 ])
911
912 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
913
914 if test "X$PYTHON_CONFDIR" = "X"; then
915 AC_MSG_RESULT([can't find it!])
916 else
917
918 dnl -- we need to examine Python's config/Makefile too
919 dnl see what the interpreter is built from
920 AC_CACHE_VAL(vi_cv_path_python_plibs,
921 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000922 pwd=`pwd`
923 tmp_mkf="$pwd/config-PyMake$$"
924 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000925__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200926 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000927 @echo "python_LIBS='$(LIBS)'"
928 @echo "python_SYSLIBS='$(SYSLIBS)'"
929 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200930 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200931 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000932eof
933 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000934 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
935 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000936 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
937 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
938 vi_cv_path_python_plibs="-framework Python"
939 else
940 if test "${vi_cv_var_python_version}" = "1.4"; then
941 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
942 else
943 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
944 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200945 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 +0000946 dnl remove -ltermcap, it can conflict with an earlier -lncurses
947 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
948 fi
949 ])
950
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200951 if test "X$python_DLLLIBRARY" != "X"; then
952 python_INSTSONAME="$python_DLLLIBRARY"
953 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000954 PYTHON_LIBS="${vi_cv_path_python_plibs}"
955 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100956 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 +0000957 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100958 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 +0000959 fi
960 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200961 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000962 if test "${vi_cv_var_python_version}" = "1.4"; then
963 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
964 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100965 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 +0000966
967 dnl On FreeBSD linking with "-pthread" is required to use threads.
968 dnl _THREAD_SAFE must be used for compiling then.
969 dnl The "-pthread" is added to $LIBS, so that the following check for
970 dnl sigaltstack() will look in libc_r (it's there in libc!).
971 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
972 dnl will then define target-specific defines, e.g., -D_REENTRANT.
973 dnl Don't do this for Mac OSX, -pthread will generate a warning.
974 AC_MSG_CHECKING([if -pthread should be used])
975 threadsafe_flag=
976 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000977 dnl if test "x$MACOSX" != "xyes"; then
978 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000979 test "$GCC" = yes && threadsafe_flag="-pthread"
980 if test "`(uname) 2>/dev/null`" = FreeBSD; then
981 threadsafe_flag="-D_THREAD_SAFE"
982 thread_lib="-pthread"
983 fi
984 fi
985 libs_save_old=$LIBS
986 if test -n "$threadsafe_flag"; then
987 cflags_save=$CFLAGS
988 CFLAGS="$CFLAGS $threadsafe_flag"
989 LIBS="$LIBS $thread_lib"
990 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200991 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992 AC_MSG_RESULT(no); LIBS=$libs_save_old
993 )
994 CFLAGS=$cflags_save
995 else
996 AC_MSG_RESULT(no)
997 fi
998
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200999 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001000 dnl added for Python.
1001 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1002 cflags_save=$CFLAGS
1003 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001004 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001005 LIBS="$LIBS $PYTHON_LIBS"
1006 AC_TRY_LINK(,[ ],
1007 AC_MSG_RESULT(yes); python_ok=yes,
1008 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1009 CFLAGS=$cflags_save
1010 LIBS=$libs_save
1011 if test $python_ok = yes; then
1012 AC_DEFINE(FEAT_PYTHON)
1013 else
1014 LIBS=$libs_save_old
1015 PYTHON_SRC=
1016 PYTHON_OBJ=
1017 PYTHON_LIBS=
1018 PYTHON_CFLAGS=
1019 fi
1020
1021 fi
1022 else
1023 AC_MSG_RESULT(too old)
1024 fi
1025 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001026
1027 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1028 AC_MSG_ERROR([could not configure python])
1029 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001030fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001031
Bram Moolenaar071d4272004-06-13 20:20:40 +00001032AC_SUBST(PYTHON_CONFDIR)
1033AC_SUBST(PYTHON_LIBS)
1034AC_SUBST(PYTHON_GETPATH_CFLAGS)
1035AC_SUBST(PYTHON_CFLAGS)
1036AC_SUBST(PYTHON_SRC)
1037AC_SUBST(PYTHON_OBJ)
1038
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001039
1040AC_MSG_CHECKING(--enable-python3interp argument)
1041AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001042 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001043 [enable_python3interp="no"])
1044AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001045if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001046 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001047 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001048 if test "X$vi_cv_path_python3" != "X"; then
1049
1050 dnl -- get its version number
1051 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1052 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001053 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001054 ]])
1055
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001056 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1057 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1058 [
1059 vi_cv_var_python3_abiflags=
1060 if ${vi_cv_path_python3} -c \
1061 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1062 then
1063 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1064 "import sys; print(sys.abiflags)"`
1065 fi ])
1066
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001067 dnl -- find where python3 thinks it was installed
1068 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1069 [ vi_cv_path_python3_pfx=`
1070 ${vi_cv_path_python3} -c \
1071 "import sys; print(sys.prefix)"` ])
1072
1073 dnl -- and where it thinks it runs
1074 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1075 [ vi_cv_path_python3_epfx=`
1076 ${vi_cv_path_python3} -c \
1077 "import sys; print(sys.exec_prefix)"` ])
1078
1079 dnl -- python3's internal library path
1080
1081 AC_CACHE_VAL(vi_cv_path_python3path,
1082 [ vi_cv_path_python3path=`
1083 unset PYTHONPATH;
1084 ${vi_cv_path_python3} -c \
1085 "import sys, string; print(':'.join(sys.path))"` ])
1086
1087 dnl -- where the Python implementation library archives are
1088
1089 AC_ARG_WITH(python3-config-dir,
1090 [ --with-python3-config-dir=PATH Python's config directory],
1091 [ vi_cv_path_python3_conf="${withval}" ] )
1092
1093 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1094 [
1095 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001096 config_dir="config"
1097 if test "${vi_cv_var_python3_abiflags}" != ""; then
1098 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1099 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001100 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001101 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001102 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001103 if test -d "$d" && test -f "$d/config.c"; then
1104 vi_cv_path_python3_conf="$d"
1105 fi
1106 done
1107 done
1108 ])
1109
1110 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1111
1112 if test "X$PYTHON3_CONFDIR" = "X"; then
1113 AC_MSG_RESULT([can't find it!])
1114 else
1115
1116 dnl -- we need to examine Python's config/Makefile too
1117 dnl see what the interpreter is built from
1118 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1119 [
1120 pwd=`pwd`
1121 tmp_mkf="$pwd/config-PyMake$$"
1122 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1123__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001124 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001125 @echo "python3_LIBS='$(LIBS)'"
1126 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001127 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001128 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001129eof
1130 dnl -- delete the lines from make about Entering/Leaving directory
1131 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1132 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001133 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 +02001134 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001135 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1136 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1137 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1138 ])
1139
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001140 if test "X$python3_DLLLIBRARY" != "X"; then
1141 python3_INSTSONAME="$python3_DLLLIBRARY"
1142 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001143 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1144 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001145 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 +02001146 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001147 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 +02001148 fi
1149 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001150 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001151
1152 dnl On FreeBSD linking with "-pthread" is required to use threads.
1153 dnl _THREAD_SAFE must be used for compiling then.
1154 dnl The "-pthread" is added to $LIBS, so that the following check for
1155 dnl sigaltstack() will look in libc_r (it's there in libc!).
1156 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1157 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1158 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1159 AC_MSG_CHECKING([if -pthread should be used])
1160 threadsafe_flag=
1161 thread_lib=
1162 dnl if test "x$MACOSX" != "xyes"; then
1163 if test "`(uname) 2>/dev/null`" != Darwin; then
1164 test "$GCC" = yes && threadsafe_flag="-pthread"
1165 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1166 threadsafe_flag="-D_THREAD_SAFE"
1167 thread_lib="-pthread"
1168 fi
1169 fi
1170 libs_save_old=$LIBS
1171 if test -n "$threadsafe_flag"; then
1172 cflags_save=$CFLAGS
1173 CFLAGS="$CFLAGS $threadsafe_flag"
1174 LIBS="$LIBS $thread_lib"
1175 AC_TRY_LINK(,[ ],
1176 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1177 AC_MSG_RESULT(no); LIBS=$libs_save_old
1178 )
1179 CFLAGS=$cflags_save
1180 else
1181 AC_MSG_RESULT(no)
1182 fi
1183
1184 dnl check that compiling a simple program still works with the flags
1185 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001186 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001187 cflags_save=$CFLAGS
1188 libs_save=$LIBS
1189 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1190 LIBS="$LIBS $PYTHON3_LIBS"
1191 AC_TRY_LINK(,[ ],
1192 AC_MSG_RESULT(yes); python3_ok=yes,
1193 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1194 CFLAGS=$cflags_save
1195 LIBS=$libs_save
1196 if test "$python3_ok" = yes; then
1197 AC_DEFINE(FEAT_PYTHON3)
1198 else
1199 LIBS=$libs_save_old
1200 PYTHON3_SRC=
1201 PYTHON3_OBJ=
1202 PYTHON3_LIBS=
1203 PYTHON3_CFLAGS=
1204 fi
1205 fi
1206 fi
1207fi
1208
1209AC_SUBST(PYTHON3_CONFDIR)
1210AC_SUBST(PYTHON3_LIBS)
1211AC_SUBST(PYTHON3_CFLAGS)
1212AC_SUBST(PYTHON3_SRC)
1213AC_SUBST(PYTHON3_OBJ)
1214
1215dnl if python2.x and python3.x are enabled one can only link in code
1216dnl with dlopen(), dlsym(), dlclose()
1217if test "$python_ok" = yes && test "$python3_ok" = yes; then
1218 AC_DEFINE(DYNAMIC_PYTHON)
1219 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001220 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001221 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001222 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001223 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001224 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1225 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001226 AC_RUN_IFELSE([
1227 #include <dlfcn.h>
1228 /* If this program fails, then RTLD_GLOBAL is needed.
1229 * RTLD_GLOBAL will be used and then it is not possible to
1230 * have both python versions enabled in the same vim instance.
1231 * Only the first pyhton version used will be switched on.
1232 */
1233
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001234 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001235 {
1236 int needed = 0;
1237 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1238 if (pylib != 0)
1239 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001240 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001241 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1242 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1243 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001244 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001245 (*init)();
1246 needed = (*simple)("import termios") == -1;
1247 (*final)();
1248 dlclose(pylib);
1249 }
1250 return !needed;
1251 }
1252
1253 int main(int argc, char** argv)
1254 {
1255 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001256 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001257 not_needed = 1;
1258 return !not_needed;
1259 }],
1260 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001261
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001262 CFLAGS=$cflags_save
1263 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001264
1265 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1266 cflags_save=$CFLAGS
1267 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1268 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001269 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1270 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001271 AC_RUN_IFELSE([
1272 #include <dlfcn.h>
1273 #include <wchar.h>
1274 /* If this program fails, then RTLD_GLOBAL is needed.
1275 * RTLD_GLOBAL will be used and then it is not possible to
1276 * have both python versions enabled in the same vim instance.
1277 * Only the first pyhton version used will be switched on.
1278 */
1279
1280 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1281 {
1282 int needed = 0;
1283 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1284 if (pylib != 0)
1285 {
1286 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1287 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1288 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1289 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1290 (*pfx)(prefix);
1291 (*init)();
1292 needed = (*simple)("import termios") == -1;
1293 (*final)();
1294 dlclose(pylib);
1295 }
1296 return !needed;
1297 }
1298
1299 int main(int argc, char** argv)
1300 {
1301 int not_needed = 0;
1302 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1303 not_needed = 1;
1304 return !not_needed;
1305 }],
1306 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1307
1308 CFLAGS=$cflags_save
1309 LDFLAGS=$ldflags_save
1310
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001311 PYTHON_SRC="if_python.c"
1312 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001313 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001314 PYTHON_LIBS=
1315 PYTHON3_SRC="if_python3.c"
1316 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001317 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001318 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001319elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1320 AC_DEFINE(DYNAMIC_PYTHON)
1321 PYTHON_SRC="if_python.c"
1322 PYTHON_OBJ="objects/if_python.o"
1323 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1324 PYTHON_LIBS=
1325elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1326 AC_DEFINE(DYNAMIC_PYTHON3)
1327 PYTHON3_SRC="if_python3.c"
1328 PYTHON3_OBJ="objects/if_python3.o"
1329 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1330 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001331fi
1332
Bram Moolenaar071d4272004-06-13 20:20:40 +00001333AC_MSG_CHECKING(--enable-tclinterp argument)
1334AC_ARG_ENABLE(tclinterp,
1335 [ --enable-tclinterp Include Tcl interpreter.], ,
1336 [enable_tclinterp="no"])
1337AC_MSG_RESULT($enable_tclinterp)
1338
1339if test "$enable_tclinterp" = "yes"; then
1340
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001341 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001342 AC_MSG_CHECKING(--with-tclsh argument)
1343 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1344 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001345 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1347 AC_SUBST(vi_cv_path_tcl)
1348
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001349 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1350 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1351 tclsh_name="tclsh8.4"
1352 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1353 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001354 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001355 tclsh_name="tclsh8.2"
1356 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1357 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001358 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1359 tclsh_name="tclsh8.0"
1360 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1361 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001362 dnl still didn't find it, try without version number
1363 if test "X$vi_cv_path_tcl" = "X"; then
1364 tclsh_name="tclsh"
1365 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1366 fi
1367 if test "X$vi_cv_path_tcl" != "X"; then
1368 AC_MSG_CHECKING(Tcl version)
1369 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1370 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1371 AC_MSG_RESULT($tclver - OK);
1372 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 -`
1373
1374 AC_MSG_CHECKING(for location of Tcl include)
1375 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001376 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 +00001377 else
1378 dnl For Mac OS X 10.3, use the OS-provided framework location
1379 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1380 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001381 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001382 for try in $tclinc; do
1383 if test -f "$try/tcl.h"; then
1384 AC_MSG_RESULT($try/tcl.h)
1385 TCL_INC=$try
1386 break
1387 fi
1388 done
1389 if test -z "$TCL_INC"; then
1390 AC_MSG_RESULT(<not found>)
1391 SKIP_TCL=YES
1392 fi
1393 if test -z "$SKIP_TCL"; then
1394 AC_MSG_CHECKING(for location of tclConfig.sh script)
1395 if test "x$MACOSX" != "xyes"; then
1396 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001397 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001398 else
1399 dnl For Mac OS X 10.3, use the OS-provided framework location
1400 tclcnf="/System/Library/Frameworks/Tcl.framework"
1401 fi
1402 for try in $tclcnf; do
1403 if test -f $try/tclConfig.sh; then
1404 AC_MSG_RESULT($try/tclConfig.sh)
1405 . $try/tclConfig.sh
1406 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1407 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1408 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001409 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001410 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 +00001411 break
1412 fi
1413 done
1414 if test -z "$TCL_LIBS"; then
1415 AC_MSG_RESULT(<not found>)
1416 AC_MSG_CHECKING(for Tcl library by myself)
1417 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001418 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001419 for ext in .so .a ; do
1420 for ver in "" $tclver ; do
1421 for try in $tcllib ; do
1422 trylib=tcl$ver$ext
1423 if test -f $try/lib$trylib ; then
1424 AC_MSG_RESULT($try/lib$trylib)
1425 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1426 if test "`(uname) 2>/dev/null`" = SunOS &&
1427 uname -r | grep '^5' >/dev/null; then
1428 TCL_LIBS="$TCL_LIBS -R $try"
1429 fi
1430 break 3
1431 fi
1432 done
1433 done
1434 done
1435 if test -z "$TCL_LIBS"; then
1436 AC_MSG_RESULT(<not found>)
1437 SKIP_TCL=YES
1438 fi
1439 fi
1440 if test -z "$SKIP_TCL"; then
1441 AC_DEFINE(FEAT_TCL)
1442 TCL_SRC=if_tcl.c
1443 TCL_OBJ=objects/if_tcl.o
1444 TCL_PRO=if_tcl.pro
1445 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1446 fi
1447 fi
1448 else
1449 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1450 fi
1451 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001452 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1453 AC_MSG_ERROR([could not configure Tcl])
1454 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001455fi
1456AC_SUBST(TCL_SRC)
1457AC_SUBST(TCL_OBJ)
1458AC_SUBST(TCL_PRO)
1459AC_SUBST(TCL_CFLAGS)
1460AC_SUBST(TCL_LIBS)
1461
1462AC_MSG_CHECKING(--enable-rubyinterp argument)
1463AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001464 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 [enable_rubyinterp="no"])
1466AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001467if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001468 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001469 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001470 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1471 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1472 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001473 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001474 if test "X$vi_cv_path_ruby" != "X"; then
1475 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001476 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 +00001477 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001478 AC_MSG_CHECKING(Ruby rbconfig)
1479 ruby_rbconfig="RbConfig"
1480 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1481 ruby_rbconfig="Config"
1482 fi
1483 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001484 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001485 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 +00001486 if test "X$rubyhdrdir" != "X"; then
1487 AC_MSG_RESULT($rubyhdrdir)
1488 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001489 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001490 if test -d "$rubyhdrdir/$rubyarch"; then
1491 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1492 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001493 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001494 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001495 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001496 if test "X$rubylibs" != "X"; then
1497 RUBY_LIBS="$rubylibs"
1498 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001499 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1500 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1501 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001502 if test -f "$rubylibdir/$librubya"; then
1503 librubyarg="$librubyarg"
1504 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1505 elif test "$librubyarg" = "libruby.a"; then
1506 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1507 librubyarg="-lruby"
1508 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001509 fi
1510
1511 if test "X$librubyarg" != "X"; then
1512 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1513 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001514 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001515 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001516 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1517 dnl be included if requested by passing --with-mac-arch to
1518 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001519 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001520 if test "X$rubyldflags" != "X"; then
1521 LDFLAGS="$rubyldflags $LDFLAGS"
1522 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001523 fi
1524 RUBY_SRC="if_ruby.c"
1525 RUBY_OBJ="objects/if_ruby.o"
1526 RUBY_PRO="if_ruby.pro"
1527 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001528 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001529 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001530 AC_DEFINE(DYNAMIC_RUBY)
1531 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1532 RUBY_LIBS=
1533 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001534 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001535 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001536 fi
1537 else
1538 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1539 fi
1540 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001541
1542 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1543 AC_MSG_ERROR([could not configure Ruby])
1544 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001545fi
1546AC_SUBST(RUBY_SRC)
1547AC_SUBST(RUBY_OBJ)
1548AC_SUBST(RUBY_PRO)
1549AC_SUBST(RUBY_CFLAGS)
1550AC_SUBST(RUBY_LIBS)
1551
1552AC_MSG_CHECKING(--enable-cscope argument)
1553AC_ARG_ENABLE(cscope,
1554 [ --enable-cscope Include cscope interface.], ,
1555 [enable_cscope="no"])
1556AC_MSG_RESULT($enable_cscope)
1557if test "$enable_cscope" = "yes"; then
1558 AC_DEFINE(FEAT_CSCOPE)
1559fi
1560
1561AC_MSG_CHECKING(--enable-workshop argument)
1562AC_ARG_ENABLE(workshop,
1563 [ --enable-workshop Include Sun Visual Workshop support.], ,
1564 [enable_workshop="no"])
1565AC_MSG_RESULT($enable_workshop)
1566if test "$enable_workshop" = "yes"; then
1567 AC_DEFINE(FEAT_SUN_WORKSHOP)
1568 WORKSHOP_SRC="workshop.c integration.c"
1569 AC_SUBST(WORKSHOP_SRC)
1570 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1571 AC_SUBST(WORKSHOP_OBJ)
1572 if test "${enable_gui-xxx}" = xxx; then
1573 enable_gui=motif
1574 fi
1575fi
1576
1577AC_MSG_CHECKING(--disable-netbeans argument)
1578AC_ARG_ENABLE(netbeans,
1579 [ --disable-netbeans Disable NetBeans integration support.],
1580 , [enable_netbeans="yes"])
1581if test "$enable_netbeans" = "yes"; then
1582 AC_MSG_RESULT(no)
1583 dnl On Solaris we need the socket and nsl library.
1584 AC_CHECK_LIB(socket, socket)
1585 AC_CHECK_LIB(nsl, gethostbyname)
1586 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1587 AC_TRY_LINK([
1588#include <stdio.h>
1589#include <stdlib.h>
1590#include <stdarg.h>
1591#include <fcntl.h>
1592#include <netdb.h>
1593#include <netinet/in.h>
1594#include <errno.h>
1595#include <sys/types.h>
1596#include <sys/socket.h>
1597 /* Check bitfields */
1598 struct nbbuf {
1599 unsigned int initDone:1;
1600 ushort signmaplen;
1601 };
1602 ], [
1603 /* Check creating a socket. */
1604 struct sockaddr_in server;
1605 (void)socket(AF_INET, SOCK_STREAM, 0);
1606 (void)htons(100);
1607 (void)gethostbyname("microsoft.com");
1608 if (errno == ECONNREFUSED)
1609 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1610 ],
1611 AC_MSG_RESULT(yes),
1612 AC_MSG_RESULT(no); enable_netbeans="no")
1613else
1614 AC_MSG_RESULT(yes)
1615fi
1616if test "$enable_netbeans" = "yes"; then
1617 AC_DEFINE(FEAT_NETBEANS_INTG)
1618 NETBEANS_SRC="netbeans.c"
1619 AC_SUBST(NETBEANS_SRC)
1620 NETBEANS_OBJ="objects/netbeans.o"
1621 AC_SUBST(NETBEANS_OBJ)
1622fi
1623
1624AC_MSG_CHECKING(--enable-sniff argument)
1625AC_ARG_ENABLE(sniff,
1626 [ --enable-sniff Include Sniff interface.], ,
1627 [enable_sniff="no"])
1628AC_MSG_RESULT($enable_sniff)
1629if test "$enable_sniff" = "yes"; then
1630 AC_DEFINE(FEAT_SNIFF)
1631 SNIFF_SRC="if_sniff.c"
1632 AC_SUBST(SNIFF_SRC)
1633 SNIFF_OBJ="objects/if_sniff.o"
1634 AC_SUBST(SNIFF_OBJ)
1635fi
1636
1637AC_MSG_CHECKING(--enable-multibyte argument)
1638AC_ARG_ENABLE(multibyte,
1639 [ --enable-multibyte Include multibyte editing support.], ,
1640 [enable_multibyte="no"])
1641AC_MSG_RESULT($enable_multibyte)
1642if test "$enable_multibyte" = "yes"; then
1643 AC_DEFINE(FEAT_MBYTE)
1644fi
1645
1646AC_MSG_CHECKING(--enable-hangulinput argument)
1647AC_ARG_ENABLE(hangulinput,
1648 [ --enable-hangulinput Include Hangul input support.], ,
1649 [enable_hangulinput="no"])
1650AC_MSG_RESULT($enable_hangulinput)
1651
1652AC_MSG_CHECKING(--enable-xim argument)
1653AC_ARG_ENABLE(xim,
1654 [ --enable-xim Include XIM input support.],
1655 AC_MSG_RESULT($enable_xim),
1656 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001657
1658AC_MSG_CHECKING(--enable-fontset argument)
1659AC_ARG_ENABLE(fontset,
1660 [ --enable-fontset Include X fontset output support.], ,
1661 [enable_fontset="no"])
1662AC_MSG_RESULT($enable_fontset)
1663dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1664
1665test -z "$with_x" && with_x=yes
1666test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1667if test "$with_x" = no; then
1668 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1669else
1670 dnl Do this check early, so that its failure can override user requests.
1671
1672 AC_PATH_PROG(xmkmfpath, xmkmf)
1673
1674 AC_PATH_XTRA
1675
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001676 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001677 dnl be compiled with a special option.
1678 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001679 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001680 CFLAGS="$CFLAGS -W c,dll"
1681 LDFLAGS="$LDFLAGS -W l,dll"
1682 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1683 fi
1684
1685 dnl On my HPUX system the X include dir is found, but the lib dir not.
1686 dnl This is a desparate try to fix this.
1687
1688 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1689 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1690 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1691 X_LIBS="$X_LIBS -L$x_libraries"
1692 if test "`(uname) 2>/dev/null`" = SunOS &&
1693 uname -r | grep '^5' >/dev/null; then
1694 X_LIBS="$X_LIBS -R $x_libraries"
1695 fi
1696 fi
1697
1698 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1699 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1700 AC_MSG_RESULT(Corrected X includes to $x_includes)
1701 X_CFLAGS="$X_CFLAGS -I$x_includes"
1702 fi
1703
1704 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1705 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1706 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1707 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1708 dnl Same for "-R/usr/lib ".
1709 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1710
1711
1712 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001713 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1714 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715 AC_MSG_CHECKING(if X11 header files can be found)
1716 cflags_save=$CFLAGS
1717 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001718 AC_TRY_COMPILE([#include <X11/Xlib.h>
1719#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001720 AC_MSG_RESULT(yes),
1721 AC_MSG_RESULT(no); no_x=yes)
1722 CFLAGS=$cflags_save
1723
1724 if test "${no_x-no}" = yes; then
1725 with_x=no
1726 else
1727 AC_DEFINE(HAVE_X11)
1728 X_LIB="-lXt -lX11";
1729 AC_SUBST(X_LIB)
1730
1731 ac_save_LDFLAGS="$LDFLAGS"
1732 LDFLAGS="-L$x_libraries $LDFLAGS"
1733
1734 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1735 dnl For HP-UX 10.20 it must be before -lSM -lICE
1736 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1737 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1738
1739 dnl Some systems need -lnsl -lsocket when testing for ICE.
1740 dnl The check above doesn't do this, try here (again). Also needed to get
1741 dnl them after Xdmcp. link.sh will remove them when not needed.
1742 dnl Check for other function than above to avoid the cached value
1743 AC_CHECK_LIB(ICE, IceOpenConnection,
1744 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1745
1746 dnl Check for -lXpm (needed for some versions of Motif)
1747 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1748 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1749 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1750
1751 dnl Check that the X11 header files don't use implicit declarations
1752 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1753 cflags_save=$CFLAGS
1754 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1755 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1756 AC_MSG_RESULT(no),
1757 CFLAGS="$CFLAGS -Wno-implicit-int"
1758 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1759 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1760 AC_MSG_RESULT(test failed)
1761 )
1762 )
1763 CFLAGS=$cflags_save
1764
1765 LDFLAGS="$ac_save_LDFLAGS"
1766
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001767 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1768 AC_CACHE_VAL(ac_cv_small_wchar_t,
1769 [AC_TRY_RUN([
1770#include <X11/Xlib.h>
1771#if STDC_HEADERS
1772# include <stdlib.h>
1773# include <stddef.h>
1774#endif
1775 main()
1776 {
1777 if (sizeof(wchar_t) <= 2)
1778 exit(1);
1779 exit(0);
1780 }],
1781 ac_cv_small_wchar_t="no",
1782 ac_cv_small_wchar_t="yes",
1783 AC_MSG_ERROR(failed to compile test program))])
1784 AC_MSG_RESULT($ac_cv_small_wchar_t)
1785 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1786 AC_DEFINE(SMALL_WCHAR_T)
1787 fi
1788
Bram Moolenaar071d4272004-06-13 20:20:40 +00001789 fi
1790fi
1791
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001792test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001793
1794AC_MSG_CHECKING(--enable-gui argument)
1795AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001796 [ --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 +00001797
1798dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1799dnl Do not use character classes for portability with old tools.
1800enable_gui_canon=`echo "_$enable_gui" | \
1801 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1802
1803dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804SKIP_GTK2=YES
1805SKIP_GNOME=YES
1806SKIP_MOTIF=YES
1807SKIP_ATHENA=YES
1808SKIP_NEXTAW=YES
1809SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001810SKIP_CARBON=YES
1811GUITYPE=NONE
1812
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001813if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001814 SKIP_PHOTON=
1815 case "$enable_gui_canon" in
1816 no) AC_MSG_RESULT(no GUI support)
1817 SKIP_PHOTON=YES ;;
1818 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1819 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1820 photon) AC_MSG_RESULT(Photon GUI support) ;;
1821 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1822 SKIP_PHOTON=YES ;;
1823 esac
1824
1825elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1826 SKIP_CARBON=
1827 case "$enable_gui_canon" in
1828 no) AC_MSG_RESULT(no GUI support)
1829 SKIP_CARBON=YES ;;
1830 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001831 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1832 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001833 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1834 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1835 SKIP_CARBON=YES ;;
1836 esac
1837
1838else
1839
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 case "$enable_gui_canon" in
1841 no|none) AC_MSG_RESULT(no GUI support) ;;
1842 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001843 SKIP_GTK2=
1844 SKIP_GNOME=
1845 SKIP_MOTIF=
1846 SKIP_ATHENA=
1847 SKIP_NEXTAW=
1848 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001849 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001850 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001851 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1852 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001853 SKIP_GTK2=;;
1854 motif) AC_MSG_RESULT(Motif GUI support)
1855 SKIP_MOTIF=;;
1856 athena) AC_MSG_RESULT(Athena GUI support)
1857 SKIP_ATHENA=;;
1858 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1859 SKIP_NEXTAW=;;
1860 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1861 esac
1862
1863fi
1864
Bram Moolenaar071d4272004-06-13 20:20:40 +00001865if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1866 -a "$enable_gui_canon" != "gnome2"; then
1867 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1868 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001869 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001870 , enable_gtk2_check="yes")
1871 AC_MSG_RESULT($enable_gtk2_check)
1872 if test "x$enable_gtk2_check" = "xno"; then
1873 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001874 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001875 fi
1876fi
1877
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001878if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001879 AC_MSG_CHECKING(whether or not to look for GNOME)
1880 AC_ARG_ENABLE(gnome-check,
1881 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1882 , enable_gnome_check="no")
1883 AC_MSG_RESULT($enable_gnome_check)
1884 if test "x$enable_gnome_check" = "xno"; then
1885 SKIP_GNOME=YES
1886 fi
1887fi
1888
1889if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1890 AC_MSG_CHECKING(whether or not to look for Motif)
1891 AC_ARG_ENABLE(motif-check,
1892 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1893 , enable_motif_check="yes")
1894 AC_MSG_RESULT($enable_motif_check)
1895 if test "x$enable_motif_check" = "xno"; then
1896 SKIP_MOTIF=YES
1897 fi
1898fi
1899
1900if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1901 AC_MSG_CHECKING(whether or not to look for Athena)
1902 AC_ARG_ENABLE(athena-check,
1903 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1904 , enable_athena_check="yes")
1905 AC_MSG_RESULT($enable_athena_check)
1906 if test "x$enable_athena_check" = "xno"; then
1907 SKIP_ATHENA=YES
1908 fi
1909fi
1910
1911if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1912 AC_MSG_CHECKING(whether or not to look for neXtaw)
1913 AC_ARG_ENABLE(nextaw-check,
1914 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1915 , enable_nextaw_check="yes")
1916 AC_MSG_RESULT($enable_nextaw_check);
1917 if test "x$enable_nextaw_check" = "xno"; then
1918 SKIP_NEXTAW=YES
1919 fi
1920fi
1921
1922if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1923 AC_MSG_CHECKING(whether or not to look for Carbon)
1924 AC_ARG_ENABLE(carbon-check,
1925 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1926 , enable_carbon_check="yes")
1927 AC_MSG_RESULT($enable_carbon_check);
1928 if test "x$enable_carbon_check" = "xno"; then
1929 SKIP_CARBON=YES
1930 fi
1931fi
1932
Bram Moolenaar843ee412004-06-30 16:16:41 +00001933
Bram Moolenaar071d4272004-06-13 20:20:40 +00001934if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1935 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001936 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001937 AC_MSG_RESULT(yes);
1938 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001939 if test "$VIMNAME" = "vim"; then
1940 VIMNAME=Vim
1941 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001942
Bram Moolenaar164fca32010-07-14 13:58:07 +02001943 if test "x$MACARCH" = "xboth"; then
1944 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1945 else
1946 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1947 fi
1948
Bram Moolenaar14716812006-05-04 21:54:08 +00001949 dnl Default install directory is not /usr/local
1950 if test x$prefix = xNONE; then
1951 prefix=/Applications
1952 fi
1953
1954 dnl Sorry for the hard coded default
1955 datadir='${prefix}/Vim.app/Contents/Resources'
1956
Bram Moolenaar071d4272004-06-13 20:20:40 +00001957 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001958 SKIP_GTK2=YES;
1959 SKIP_GNOME=YES;
1960 SKIP_MOTIF=YES;
1961 SKIP_ATHENA=YES;
1962 SKIP_NEXTAW=YES;
1963 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001964 SKIP_CARBON=YES
1965fi
1966
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001968dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001969dnl
1970dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001971dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972dnl
1973AC_DEFUN(AM_PATH_GTK,
1974[
1975 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1976 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001977 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001978 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1979 no_gtk=""
1980 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1981 && $PKG_CONFIG --exists gtk+-2.0; then
1982 {
1983 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1984 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1985 dnl something like that.
1986 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001987 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001988 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1989 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1990 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1991 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1992 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1993 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1994 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1995 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001996 else
1997 no_gtk=yes
1998 fi
1999
2000 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2001 {
2002 ac_save_CFLAGS="$CFLAGS"
2003 ac_save_LIBS="$LIBS"
2004 CFLAGS="$CFLAGS $GTK_CFLAGS"
2005 LIBS="$LIBS $GTK_LIBS"
2006
2007 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002008 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002009 dnl
2010 rm -f conf.gtktest
2011 AC_TRY_RUN([
2012#include <gtk/gtk.h>
2013#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002014#if STDC_HEADERS
2015# include <stdlib.h>
2016# include <stddef.h>
2017#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002018
2019int
2020main ()
2021{
2022int major, minor, micro;
2023char *tmp_version;
2024
2025system ("touch conf.gtktest");
2026
2027/* HP/UX 9 (%@#!) writes to sscanf strings */
2028tmp_version = g_strdup("$min_gtk_version");
2029if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2030 printf("%s, bad version string\n", "$min_gtk_version");
2031 exit(1);
2032 }
2033
2034if ((gtk_major_version > major) ||
2035 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2036 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2037 (gtk_micro_version >= micro)))
2038{
2039 return 0;
2040}
2041return 1;
2042}
2043],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2044 CFLAGS="$ac_save_CFLAGS"
2045 LIBS="$ac_save_LIBS"
2046 }
2047 fi
2048 if test "x$no_gtk" = x ; then
2049 if test "x$enable_gtktest" = "xyes"; then
2050 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2051 else
2052 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2053 fi
2054 ifelse([$2], , :, [$2])
2055 else
2056 {
2057 AC_MSG_RESULT(no)
2058 GTK_CFLAGS=""
2059 GTK_LIBS=""
2060 ifelse([$3], , :, [$3])
2061 }
2062 fi
2063 }
2064 else
2065 GTK_CFLAGS=""
2066 GTK_LIBS=""
2067 ifelse([$3], , :, [$3])
2068 fi
2069 AC_SUBST(GTK_CFLAGS)
2070 AC_SUBST(GTK_LIBS)
2071 rm -f conf.gtktest
2072])
2073
2074dnl ---------------------------------------------------------------------------
2075dnl gnome
2076dnl ---------------------------------------------------------------------------
2077AC_DEFUN([GNOME_INIT_HOOK],
2078[
2079 AC_SUBST(GNOME_LIBS)
2080 AC_SUBST(GNOME_LIBDIR)
2081 AC_SUBST(GNOME_INCLUDEDIR)
2082
2083 AC_ARG_WITH(gnome-includes,
2084 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2085 [CFLAGS="$CFLAGS -I$withval"]
2086 )
2087
2088 AC_ARG_WITH(gnome-libs,
2089 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2090 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2091 )
2092
2093 AC_ARG_WITH(gnome,
2094 [ --with-gnome Specify prefix for GNOME files],
2095 if test x$withval = xyes; then
2096 want_gnome=yes
2097 ifelse([$1], [], :, [$1])
2098 else
2099 if test "x$withval" = xno; then
2100 want_gnome=no
2101 else
2102 want_gnome=yes
2103 LDFLAGS="$LDFLAGS -L$withval/lib"
2104 CFLAGS="$CFLAGS -I$withval/include"
2105 gnome_prefix=$withval/lib
2106 fi
2107 fi,
2108 want_gnome=yes)
2109
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002110 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002111 {
2112 AC_MSG_CHECKING(for libgnomeui-2.0)
2113 if $PKG_CONFIG --exists libgnomeui-2.0; then
2114 AC_MSG_RESULT(yes)
2115 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2116 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2117 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002118
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002119 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2120 dnl This might not be the right way but it works for me...
2121 AC_MSG_CHECKING(for FreeBSD)
2122 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2123 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002124 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002125 GNOME_LIBS="$GNOME_LIBS -pthread"
2126 else
2127 AC_MSG_RESULT(no)
2128 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002129 $1
2130 else
2131 AC_MSG_RESULT(not found)
2132 if test "x$2" = xfail; then
2133 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2134 fi
2135 fi
2136 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002137 fi
2138])
2139
2140AC_DEFUN([GNOME_INIT],[
2141 GNOME_INIT_HOOK([],fail)
2142])
2143
2144
2145dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002146dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002147dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002148if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002149
2150 AC_MSG_CHECKING(--disable-gtktest argument)
2151 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2152 , enable_gtktest=yes)
2153 if test "x$enable_gtktest" = "xyes" ; then
2154 AC_MSG_RESULT(gtk test enabled)
2155 else
2156 AC_MSG_RESULT(gtk test disabled)
2157 fi
2158
Bram Moolenaar071d4272004-06-13 20:20:40 +00002159 if test "X$PKG_CONFIG" = "X"; then
2160 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2161 fi
2162
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002163 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002164 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2165 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002166 AM_PATH_GTK(2.2.0,
2167 [GUI_LIB_LOC="$GTK_LIBDIR"
2168 GTK_LIBNAME="$GTK_LIBS"
2169 GUI_INC_LOC="$GTK_CFLAGS"], )
2170 if test "x$GTK_CFLAGS" != "x"; then
2171 SKIP_ATHENA=YES
2172 SKIP_NEXTAW=YES
2173 SKIP_MOTIF=YES
2174 GUITYPE=GTK
2175 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002176 fi
2177 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002178 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002179 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2180 || test "0$gtk_minor_version" -ge 2; then
2181 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2182 fi
2183 dnl
2184 dnl if GTK exists, then check for GNOME.
2185 dnl
2186 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002187 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002188 GNOME_INIT_HOOK([have_gnome=yes])
2189 if test "x$have_gnome" = xyes ; then
2190 AC_DEFINE(FEAT_GUI_GNOME)
2191 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2192 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002193 fi
2194 }
2195 fi
2196 fi
2197fi
2198
2199dnl Check for Motif include files location.
2200dnl The LAST one found is used, this makes the highest version to be used,
2201dnl e.g. when Motif1.2 and Motif2.0 are both present.
2202
2203if test -z "$SKIP_MOTIF"; then
2204 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"
2205 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2206 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2207
2208 AC_MSG_CHECKING(for location of Motif GUI includes)
2209 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2210 GUI_INC_LOC=
2211 for try in $gui_includes; do
2212 if test -f "$try/Xm/Xm.h"; then
2213 GUI_INC_LOC=$try
2214 fi
2215 done
2216 if test -n "$GUI_INC_LOC"; then
2217 if test "$GUI_INC_LOC" = /usr/include; then
2218 GUI_INC_LOC=
2219 AC_MSG_RESULT(in default path)
2220 else
2221 AC_MSG_RESULT($GUI_INC_LOC)
2222 fi
2223 else
2224 AC_MSG_RESULT(<not found>)
2225 SKIP_MOTIF=YES
2226 fi
2227fi
2228
2229dnl Check for Motif library files location. In the same order as the include
2230dnl files, to avoid a mixup if several versions are present
2231
2232if test -z "$SKIP_MOTIF"; then
2233 AC_MSG_CHECKING(--with-motif-lib argument)
2234 AC_ARG_WITH(motif-lib,
2235 [ --with-motif-lib=STRING Library for Motif ],
2236 [ MOTIF_LIBNAME="${withval}" ] )
2237
2238 if test -n "$MOTIF_LIBNAME"; then
2239 AC_MSG_RESULT($MOTIF_LIBNAME)
2240 GUI_LIB_LOC=
2241 else
2242 AC_MSG_RESULT(no)
2243
2244 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2245 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2246
2247 AC_MSG_CHECKING(for location of Motif GUI libs)
2248 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"
2249 GUI_LIB_LOC=
2250 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002251 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002252 if test -f "$libtry"; then
2253 GUI_LIB_LOC=$try
2254 fi
2255 done
2256 done
2257 if test -n "$GUI_LIB_LOC"; then
2258 dnl Remove /usr/lib, it causes trouble on some systems
2259 if test "$GUI_LIB_LOC" = /usr/lib; then
2260 GUI_LIB_LOC=
2261 AC_MSG_RESULT(in default path)
2262 else
2263 if test -n "$GUI_LIB_LOC"; then
2264 AC_MSG_RESULT($GUI_LIB_LOC)
2265 if test "`(uname) 2>/dev/null`" = SunOS &&
2266 uname -r | grep '^5' >/dev/null; then
2267 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2268 fi
2269 fi
2270 fi
2271 MOTIF_LIBNAME=-lXm
2272 else
2273 AC_MSG_RESULT(<not found>)
2274 SKIP_MOTIF=YES
2275 fi
2276 fi
2277fi
2278
2279if test -z "$SKIP_MOTIF"; then
2280 SKIP_ATHENA=YES
2281 SKIP_NEXTAW=YES
2282 GUITYPE=MOTIF
2283 AC_SUBST(MOTIF_LIBNAME)
2284fi
2285
2286dnl Check if the Athena files can be found
2287
2288GUI_X_LIBS=
2289
2290if test -z "$SKIP_ATHENA"; then
2291 AC_MSG_CHECKING(if Athena header files can be found)
2292 cflags_save=$CFLAGS
2293 CFLAGS="$CFLAGS $X_CFLAGS"
2294 AC_TRY_COMPILE([
2295#include <X11/Intrinsic.h>
2296#include <X11/Xaw/Paned.h>], ,
2297 AC_MSG_RESULT(yes),
2298 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2299 CFLAGS=$cflags_save
2300fi
2301
2302if test -z "$SKIP_ATHENA"; then
2303 GUITYPE=ATHENA
2304fi
2305
2306if test -z "$SKIP_NEXTAW"; then
2307 AC_MSG_CHECKING(if neXtaw header files can be found)
2308 cflags_save=$CFLAGS
2309 CFLAGS="$CFLAGS $X_CFLAGS"
2310 AC_TRY_COMPILE([
2311#include <X11/Intrinsic.h>
2312#include <X11/neXtaw/Paned.h>], ,
2313 AC_MSG_RESULT(yes),
2314 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2315 CFLAGS=$cflags_save
2316fi
2317
2318if test -z "$SKIP_NEXTAW"; then
2319 GUITYPE=NEXTAW
2320fi
2321
2322if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2323 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2324 dnl Avoid adding it when it twice
2325 if test -n "$GUI_INC_LOC"; then
2326 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2327 fi
2328 if test -n "$GUI_LIB_LOC"; then
2329 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2330 fi
2331
2332 dnl Check for -lXext and then for -lXmu
2333 ldflags_save=$LDFLAGS
2334 LDFLAGS="$X_LIBS $LDFLAGS"
2335 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2336 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2337 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2338 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2339 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2340 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2341 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2342 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2343 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2344 if test -z "$SKIP_MOTIF"; then
2345 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2346 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2347 fi
2348 LDFLAGS=$ldflags_save
2349
2350 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2351 AC_MSG_CHECKING(for extra X11 defines)
2352 NARROW_PROTO=
2353 rm -fr conftestdir
2354 if mkdir conftestdir; then
2355 cd conftestdir
2356 cat > Imakefile <<'EOF'
2357acfindx:
2358 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2359EOF
2360 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2361 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2362 fi
2363 cd ..
2364 rm -fr conftestdir
2365 fi
2366 if test -z "$NARROW_PROTO"; then
2367 AC_MSG_RESULT(no)
2368 else
2369 AC_MSG_RESULT($NARROW_PROTO)
2370 fi
2371 AC_SUBST(NARROW_PROTO)
2372fi
2373
2374dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2375dnl use the X11 include path
2376if test "$enable_xsmp" = "yes"; then
2377 cppflags_save=$CPPFLAGS
2378 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2379 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2380 CPPFLAGS=$cppflags_save
2381fi
2382
2383
Bram Moolenaare667c952010-07-05 22:57:59 +02002384if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002385 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2386 cppflags_save=$CPPFLAGS
2387 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2388 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2389
2390 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2391 if test ! "$enable_xim" = "no"; then
2392 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2393 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2394 AC_MSG_RESULT(yes),
2395 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2396 fi
2397 CPPFLAGS=$cppflags_save
2398
2399 dnl automatically enable XIM when hangul input isn't enabled
2400 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2401 -a "x$GUITYPE" != "xNONE" ; then
2402 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2403 enable_xim="yes"
2404 fi
2405fi
2406
2407if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2408 cppflags_save=$CPPFLAGS
2409 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002410dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2411 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2412 AC_TRY_COMPILE([
2413#include <X11/Intrinsic.h>
2414#include <X11/Xmu/Editres.h>],
2415 [int i; i = 0;],
2416 AC_MSG_RESULT(yes)
2417 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2418 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002419 CPPFLAGS=$cppflags_save
2420fi
2421
2422dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2423if test -z "$SKIP_MOTIF"; then
2424 cppflags_save=$CPPFLAGS
2425 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002426 if test "$zOSUnix" = "yes"; then
2427 xmheader="Xm/Xm.h"
2428 else
2429 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2430 Xm/UnhighlightT.h Xm/Notebook.h"
2431 fi
2432 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002433
Bram Moolenaar77c19352012-06-13 19:19:41 +02002434 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002435 dnl Solaris uses XpmAttributes_21, very annoying.
2436 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2437 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2438 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2439 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2440 )
2441 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002442 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002443 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444 CPPFLAGS=$cppflags_save
2445fi
2446
2447if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2448 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2449 enable_xim="no"
2450fi
2451if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2452 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2453 enable_fontset="no"
2454fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002455if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002456 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2457 enable_fontset="no"
2458fi
2459
Bram Moolenaar071d4272004-06-13 20:20:40 +00002460if test -z "$SKIP_PHOTON"; then
2461 GUITYPE=PHOTONGUI
2462fi
2463
2464AC_SUBST(GUI_INC_LOC)
2465AC_SUBST(GUI_LIB_LOC)
2466AC_SUBST(GUITYPE)
2467AC_SUBST(GUI_X_LIBS)
2468
2469if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2470 AC_MSG_ERROR([cannot use workshop without Motif])
2471fi
2472
2473dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2474if test "$enable_xim" = "yes"; then
2475 AC_DEFINE(FEAT_XIM)
2476fi
2477if test "$enable_fontset" = "yes"; then
2478 AC_DEFINE(FEAT_XFONTSET)
2479fi
2480
2481
2482dnl ---------------------------------------------------------------------------
2483dnl end of GUI-checking
2484dnl ---------------------------------------------------------------------------
2485
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002486dnl Check for Cygwin, which needs an extra source file if not using X11
2487AC_MSG_CHECKING(for CYGWIN environment)
2488case `uname` in
2489 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2490 AC_MSG_CHECKING(for CYGWIN clipboard support)
2491 if test "x$with_x" = "xno" ; then
2492 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2493 AC_MSG_RESULT(yes)
2494 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2495 else
2496 AC_MSG_RESULT(no - using X11)
2497 fi ;;
2498
2499 *) CYGWIN=no; AC_MSG_RESULT(no);;
2500esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002501
2502dnl Only really enable hangul input when GUI and XFONTSET are available
2503if test "$enable_hangulinput" = "yes"; then
2504 if test "x$GUITYPE" = "xNONE"; then
2505 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2506 enable_hangulinput=no
2507 else
2508 AC_DEFINE(FEAT_HANGULIN)
2509 HANGULIN_SRC=hangulin.c
2510 AC_SUBST(HANGULIN_SRC)
2511 HANGULIN_OBJ=objects/hangulin.o
2512 AC_SUBST(HANGULIN_OBJ)
2513 fi
2514fi
2515
2516dnl Checks for libraries and include files.
2517
Bram Moolenaar446cb832008-06-24 21:56:24 +00002518AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2519 [
2520 AC_RUN_IFELSE([[
2521#include "confdefs.h"
2522#include <ctype.h>
2523#if STDC_HEADERS
2524# include <stdlib.h>
2525# include <stddef.h>
2526#endif
2527main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2528 ]],[
2529 vim_cv_toupper_broken=yes
2530 ],[
2531 vim_cv_toupper_broken=no
2532 ],[
2533 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2534 ])])
2535
2536if test "x$vim_cv_toupper_broken" = "xyes" ; then
2537 AC_DEFINE(BROKEN_TOUPPER)
2538fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002539
2540AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002541AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002542 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2543 AC_MSG_RESULT(no))
2544
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002545AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2546AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2547 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2548 AC_MSG_RESULT(no))
2549
Bram Moolenaar071d4272004-06-13 20:20:40 +00002550dnl Checks for header files.
2551AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2552dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2553if test "$HAS_ELF" = 1; then
2554 AC_CHECK_LIB(elf, main)
2555fi
2556
2557AC_HEADER_DIRENT
2558
Bram Moolenaar071d4272004-06-13 20:20:40 +00002559dnl If sys/wait.h is not found it might still exist but not be POSIX
2560dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2561if test $ac_cv_header_sys_wait_h = no; then
2562 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2563 AC_TRY_COMPILE([#include <sys/wait.h>],
2564 [union wait xx, yy; xx = yy],
2565 AC_MSG_RESULT(yes)
2566 AC_DEFINE(HAVE_SYS_WAIT_H)
2567 AC_DEFINE(HAVE_UNION_WAIT),
2568 AC_MSG_RESULT(no))
2569fi
2570
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002571AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2572 sys/select.h sys/utsname.h termcap.h fcntl.h \
2573 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2574 termio.h iconv.h inttypes.h langinfo.h math.h \
2575 unistd.h stropts.h errno.h sys/resource.h \
2576 sys/systeminfo.h locale.h sys/stream.h termios.h \
2577 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2578 utime.h sys/param.h libintl.h libgen.h \
2579 util/debug.h util/msg18n.h frame.h sys/acl.h \
2580 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002581
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002582dnl sys/ptem.h depends on sys/stream.h on Solaris
2583AC_CHECK_HEADERS(sys/ptem.h, [], [],
2584[#if defined HAVE_SYS_STREAM_H
2585# include <sys/stream.h>
2586#endif])
2587
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002588dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2589AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2590[#if defined HAVE_SYS_PARAM_H
2591# include <sys/param.h>
2592#endif])
2593
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002594
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002595dnl pthread_np.h may exist but can only be used after including pthread.h
2596AC_MSG_CHECKING([for pthread_np.h])
2597AC_TRY_COMPILE([
2598#include <pthread.h>
2599#include <pthread_np.h>],
2600 [int i; i = 0;],
2601 AC_MSG_RESULT(yes)
2602 AC_DEFINE(HAVE_PTHREAD_NP_H),
2603 AC_MSG_RESULT(no))
2604
Bram Moolenaare344bea2005-09-01 20:46:49 +00002605AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002606if test "x$MACOSX" = "xyes"; then
2607 dnl The strings.h file on OS/X contains a warning and nothing useful.
2608 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2609else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610
2611dnl Check if strings.h and string.h can both be included when defined.
2612AC_MSG_CHECKING([if strings.h can be included after string.h])
2613cppflags_save=$CPPFLAGS
2614CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2615AC_TRY_COMPILE([
2616#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2617# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2618 /* but don't do it on AIX 5.1 (Uribarri) */
2619#endif
2620#ifdef HAVE_XM_XM_H
2621# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2622#endif
2623#ifdef HAVE_STRING_H
2624# include <string.h>
2625#endif
2626#if defined(HAVE_STRINGS_H)
2627# include <strings.h>
2628#endif
2629 ], [int i; i = 0;],
2630 AC_MSG_RESULT(yes),
2631 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2632 AC_MSG_RESULT(no))
2633CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002634fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002635
2636dnl Checks for typedefs, structures, and compiler characteristics.
2637AC_PROG_GCC_TRADITIONAL
2638AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002639AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640AC_TYPE_MODE_T
2641AC_TYPE_OFF_T
2642AC_TYPE_PID_T
2643AC_TYPE_SIZE_T
2644AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002645AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002646
Bram Moolenaar071d4272004-06-13 20:20:40 +00002647AC_HEADER_TIME
2648AC_CHECK_TYPE(ino_t, long)
2649AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002650AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002651
2652AC_MSG_CHECKING(for rlim_t)
2653if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2654 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2655else
2656 AC_EGREP_CPP(dnl
2657changequote(<<,>>)dnl
2658<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2659changequote([,]),
2660 [
2661#include <sys/types.h>
2662#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002663# include <stdlib.h>
2664# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002665#endif
2666#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002667# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002668#endif
2669 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2670 AC_MSG_RESULT($ac_cv_type_rlim_t)
2671fi
2672if test $ac_cv_type_rlim_t = no; then
2673 cat >> confdefs.h <<\EOF
2674#define rlim_t unsigned long
2675EOF
2676fi
2677
2678AC_MSG_CHECKING(for stack_t)
2679if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2680 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2681else
2682 AC_EGREP_CPP(stack_t,
2683 [
2684#include <sys/types.h>
2685#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002686# include <stdlib.h>
2687# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002688#endif
2689#include <signal.h>
2690 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2691 AC_MSG_RESULT($ac_cv_type_stack_t)
2692fi
2693if test $ac_cv_type_stack_t = no; then
2694 cat >> confdefs.h <<\EOF
2695#define stack_t struct sigaltstack
2696EOF
2697fi
2698
2699dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2700AC_MSG_CHECKING(whether stack_t has an ss_base field)
2701AC_TRY_COMPILE([
2702#include <sys/types.h>
2703#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002704# include <stdlib.h>
2705# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002706#endif
2707#include <signal.h>
2708#include "confdefs.h"
2709 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2710 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2711 AC_MSG_RESULT(no))
2712
2713olibs="$LIBS"
2714AC_MSG_CHECKING(--with-tlib argument)
2715AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2716if test -n "$with_tlib"; then
2717 AC_MSG_RESULT($with_tlib)
2718 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002719 AC_MSG_CHECKING(for linking with $with_tlib library)
2720 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2721 dnl Need to check for tgetent() below.
2722 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002723else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002724 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2726 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002727 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002728 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002729 dnl Older versions of ncurses have bugs, get a new one!
2730 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002731 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002732 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002733 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2734 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002735 esac
2736 for libname in $tlibs; do
2737 AC_CHECK_LIB(${libname}, tgetent,,)
2738 if test "x$olibs" != "x$LIBS"; then
2739 dnl It's possible that a library is found but it doesn't work
2740 dnl e.g., shared library that cannot be found
2741 dnl compile and run a test program to be sure
2742 AC_TRY_RUN([
2743#ifdef HAVE_TERMCAP_H
2744# include <termcap.h>
2745#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002746#if STDC_HEADERS
2747# include <stdlib.h>
2748# include <stddef.h>
2749#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002750main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2751 res="OK", res="FAIL", res="FAIL")
2752 if test "$res" = "OK"; then
2753 break
2754 fi
2755 AC_MSG_RESULT($libname library is not usable)
2756 LIBS="$olibs"
2757 fi
2758 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002759 if test "x$olibs" = "x$LIBS"; then
2760 AC_MSG_RESULT(no terminal library found)
2761 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002763
2764if test "x$olibs" = "x$LIBS"; then
2765 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002766 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002767 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2768 AC_MSG_RESULT(yes),
2769 AC_MSG_ERROR([NOT FOUND!
2770 You need to install a terminal library; for example ncurses.
2771 Or specify the name of the library with --with-tlib.]))
2772fi
2773
Bram Moolenaar446cb832008-06-24 21:56:24 +00002774AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2775 [
2776 AC_RUN_IFELSE([[
2777#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002778#ifdef HAVE_TERMCAP_H
2779# include <termcap.h>
2780#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002781#ifdef HAVE_STRING_H
2782# include <string.h>
2783#endif
2784#if STDC_HEADERS
2785# include <stdlib.h>
2786# include <stddef.h>
2787#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002788main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002789{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2790 ]],[
2791 vim_cv_terminfo=no
2792 ],[
2793 vim_cv_terminfo=yes
2794 ],[
2795 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2796 ])
2797 ])
2798
2799if test "x$vim_cv_terminfo" = "xyes" ; then
2800 AC_DEFINE(TERMINFO)
2801fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002802
2803if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002804 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2805 [
2806 AC_RUN_IFELSE([[
2807#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002808#ifdef HAVE_TERMCAP_H
2809# include <termcap.h>
2810#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002811#if STDC_HEADERS
2812# include <stdlib.h>
2813# include <stddef.h>
2814#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002815main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002816{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2817 ]],[
2818 vim_cv_tgent=zero
2819 ],[
2820 vim_cv_tgent=non-zero
2821 ],[
2822 AC_MSG_ERROR(failed to compile test program.)
2823 ])
2824 ])
2825
2826 if test "x$vim_cv_tgent" = "xzero" ; then
2827 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2828 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002829fi
2830
2831AC_MSG_CHECKING(whether termcap.h contains ospeed)
2832AC_TRY_LINK([
2833#ifdef HAVE_TERMCAP_H
2834# include <termcap.h>
2835#endif
2836 ], [ospeed = 20000],
2837 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2838 [AC_MSG_RESULT(no)
2839 AC_MSG_CHECKING(whether ospeed can be extern)
2840 AC_TRY_LINK([
2841#ifdef HAVE_TERMCAP_H
2842# include <termcap.h>
2843#endif
2844extern short ospeed;
2845 ], [ospeed = 20000],
2846 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2847 AC_MSG_RESULT(no))]
2848 )
2849
2850AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2851AC_TRY_LINK([
2852#ifdef HAVE_TERMCAP_H
2853# include <termcap.h>
2854#endif
2855 ], [if (UP == 0 && BC == 0) PC = 1],
2856 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2857 [AC_MSG_RESULT(no)
2858 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2859 AC_TRY_LINK([
2860#ifdef HAVE_TERMCAP_H
2861# include <termcap.h>
2862#endif
2863extern char *UP, *BC, PC;
2864 ], [if (UP == 0 && BC == 0) PC = 1],
2865 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2866 AC_MSG_RESULT(no))]
2867 )
2868
2869AC_MSG_CHECKING(whether tputs() uses outfuntype)
2870AC_TRY_COMPILE([
2871#ifdef HAVE_TERMCAP_H
2872# include <termcap.h>
2873#endif
2874 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2875 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2876 AC_MSG_RESULT(no))
2877
2878dnl On some SCO machines sys/select redefines struct timeval
2879AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2880AC_TRY_COMPILE([
2881#include <sys/types.h>
2882#include <sys/time.h>
2883#include <sys/select.h>], ,
2884 AC_MSG_RESULT(yes)
2885 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2886 AC_MSG_RESULT(no))
2887
2888dnl AC_DECL_SYS_SIGLIST
2889
2890dnl Checks for pty.c (copied from screen) ==========================
2891AC_MSG_CHECKING(for /dev/ptc)
2892if test -r /dev/ptc; then
2893 AC_DEFINE(HAVE_DEV_PTC)
2894 AC_MSG_RESULT(yes)
2895else
2896 AC_MSG_RESULT(no)
2897fi
2898
2899AC_MSG_CHECKING(for SVR4 ptys)
2900if test -c /dev/ptmx ; then
2901 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2902 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2903 AC_MSG_RESULT(no))
2904else
2905 AC_MSG_RESULT(no)
2906fi
2907
2908AC_MSG_CHECKING(for ptyranges)
2909if test -d /dev/ptym ; then
2910 pdir='/dev/ptym'
2911else
2912 pdir='/dev'
2913fi
2914dnl SCO uses ptyp%d
2915AC_EGREP_CPP(yes,
2916[#ifdef M_UNIX
2917 yes;
2918#endif
2919 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2920dnl if test -c /dev/ptyp19; then
2921dnl ptys=`echo /dev/ptyp??`
2922dnl else
2923dnl ptys=`echo $pdir/pty??`
2924dnl fi
2925if test "$ptys" != "$pdir/pty??" ; then
2926 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2927 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2928 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2929 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2930 AC_MSG_RESULT([$p0 / $p1])
2931else
2932 AC_MSG_RESULT([don't know])
2933fi
2934
2935dnl **** pty mode/group handling ****
2936dnl
2937dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002938rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002939AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2940 [
2941 AC_RUN_IFELSE([[
2942#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002943#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002944#if STDC_HEADERS
2945# include <stdlib.h>
2946# include <stddef.h>
2947#endif
2948#ifdef HAVE_UNISTD_H
2949#include <unistd.h>
2950#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002951#include <sys/stat.h>
2952#include <stdio.h>
2953main()
2954{
2955 struct stat sb;
2956 char *x,*ttyname();
2957 int om, m;
2958 FILE *fp;
2959
2960 if (!(x = ttyname(0))) exit(1);
2961 if (stat(x, &sb)) exit(1);
2962 om = sb.st_mode;
2963 if (om & 002) exit(0);
2964 m = system("mesg y");
2965 if (m == -1 || m == 127) exit(1);
2966 if (stat(x, &sb)) exit(1);
2967 m = sb.st_mode;
2968 if (chmod(x, om)) exit(1);
2969 if (m & 002) exit(0);
2970 if (sb.st_gid == getgid()) exit(1);
2971 if (!(fp=fopen("conftest_grp", "w")))
2972 exit(1);
2973 fprintf(fp, "%d\n", sb.st_gid);
2974 fclose(fp);
2975 exit(0);
2976}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002977 ]],[
2978 if test -f conftest_grp; then
2979 vim_cv_tty_group=`cat conftest_grp`
2980 if test "x$vim_cv_tty_mode" = "x" ; then
2981 vim_cv_tty_mode=0620
2982 fi
2983 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2984 else
2985 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002986 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002987 fi
2988 ],[
2989 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002990 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002991 ],[
2992 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2993 ])
2994 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002995rm -f conftest_grp
2996
Bram Moolenaar446cb832008-06-24 21:56:24 +00002997if test "x$vim_cv_tty_group" != "xworld" ; then
2998 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2999 if test "x$vim_cv_tty_mode" = "x" ; then
3000 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 (propably 0620)])
3001 else
3002 AC_DEFINE(PTYMODE, 0620)
3003 fi
3004fi
3005
Bram Moolenaar071d4272004-06-13 20:20:40 +00003006dnl Checks for library functions. ===================================
3007
3008AC_TYPE_SIGNAL
3009
3010dnl find out what to use at the end of a signal function
3011if test $ac_cv_type_signal = void; then
3012 AC_DEFINE(SIGRETURN, [return])
3013else
3014 AC_DEFINE(SIGRETURN, [return 0])
3015fi
3016
3017dnl check if struct sigcontext is defined (used for SGI only)
3018AC_MSG_CHECKING(for struct sigcontext)
3019AC_TRY_COMPILE([
3020#include <signal.h>
3021test_sig()
3022{
3023 struct sigcontext *scont;
3024 scont = (struct sigcontext *)0;
3025 return 1;
3026} ], ,
3027 AC_MSG_RESULT(yes)
3028 AC_DEFINE(HAVE_SIGCONTEXT),
3029 AC_MSG_RESULT(no))
3030
3031dnl tricky stuff: try to find out if getcwd() is implemented with
3032dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003033AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3034 [
3035 AC_RUN_IFELSE([[
3036#include "confdefs.h"
3037#ifdef HAVE_UNISTD_H
3038#include <unistd.h>
3039#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003040char *dagger[] = { "IFS=pwd", 0 };
3041main()
3042{
3043 char buffer[500];
3044 extern char **environ;
3045 environ = dagger;
3046 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003047}
3048 ]],[
3049 vim_cv_getcwd_broken=no
3050 ],[
3051 vim_cv_getcwd_broken=yes
3052 ],[
3053 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3054 ])
3055 ])
3056
3057if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3058 AC_DEFINE(BAD_GETCWD)
3059fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003060
Bram Moolenaar25153e12010-02-24 14:47:08 +01003061dnl Check for functions in one big call, to reduce the size of configure.
3062dnl Can only be used for functions that do not require any include.
3063AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003064 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003065 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003066 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003067 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003068 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3069 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003070AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003071
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003072dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3073dnl appropriate, so that off_t is 64 bits when needed.
3074AC_SYS_LARGEFILE
3075
Bram Moolenaar071d4272004-06-13 20:20:40 +00003076dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3077AC_MSG_CHECKING(for st_blksize)
3078AC_TRY_COMPILE(
3079[#include <sys/types.h>
3080#include <sys/stat.h>],
3081[ struct stat st;
3082 int n;
3083
3084 stat("/", &st);
3085 n = (int)st.st_blksize;],
3086 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3087 AC_MSG_RESULT(no))
3088
Bram Moolenaar446cb832008-06-24 21:56:24 +00003089AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3090 [
3091 AC_RUN_IFELSE([[
3092#include "confdefs.h"
3093#if STDC_HEADERS
3094# include <stdlib.h>
3095# include <stddef.h>
3096#endif
3097#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003098#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003099main() {struct stat st; exit(stat("configure/", &st) != 0); }
3100 ]],[
3101 vim_cv_stat_ignores_slash=yes
3102 ],[
3103 vim_cv_stat_ignores_slash=no
3104 ],[
3105 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3106 ])
3107 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003108
Bram Moolenaar446cb832008-06-24 21:56:24 +00003109if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3110 AC_DEFINE(STAT_IGNORES_SLASH)
3111fi
3112
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113dnl Link with iconv for charset translation, if not found without library.
3114dnl check for iconv() requires including iconv.h
3115dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3116dnl has been installed.
3117AC_MSG_CHECKING(for iconv_open())
3118save_LIBS="$LIBS"
3119LIBS="$LIBS -liconv"
3120AC_TRY_LINK([
3121#ifdef HAVE_ICONV_H
3122# include <iconv.h>
3123#endif
3124 ], [iconv_open("fr", "to");],
3125 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3126 LIBS="$save_LIBS"
3127 AC_TRY_LINK([
3128#ifdef HAVE_ICONV_H
3129# include <iconv.h>
3130#endif
3131 ], [iconv_open("fr", "to");],
3132 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3133 AC_MSG_RESULT(no)))
3134
3135
3136AC_MSG_CHECKING(for nl_langinfo(CODESET))
3137AC_TRY_LINK([
3138#ifdef HAVE_LANGINFO_H
3139# include <langinfo.h>
3140#endif
3141], [char *cs = nl_langinfo(CODESET);],
3142 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3143 AC_MSG_RESULT(no))
3144
Bram Moolenaar446cb832008-06-24 21:56:24 +00003145dnl Need various functions for floating point support. Only enable
3146dnl floating point when they are all present.
3147AC_CHECK_LIB(m, strtod)
3148AC_MSG_CHECKING([for strtod() and other floating point functions])
3149AC_TRY_LINK([
3150#ifdef HAVE_MATH_H
3151# include <math.h>
3152#endif
3153#if STDC_HEADERS
3154# include <stdlib.h>
3155# include <stddef.h>
3156#endif
3157], [char *s; double d;
3158 d = strtod("1.1", &s);
3159 d = fabs(1.11);
3160 d = ceil(1.11);
3161 d = floor(1.11);
3162 d = log10(1.11);
3163 d = pow(1.11, 2.22);
3164 d = sqrt(1.11);
3165 d = sin(1.11);
3166 d = cos(1.11);
3167 d = atan(1.11);
3168 ],
3169 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3170 AC_MSG_RESULT(no))
3171
Bram Moolenaar071d4272004-06-13 20:20:40 +00003172dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3173dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003174dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003175AC_MSG_CHECKING(--disable-acl argument)
3176AC_ARG_ENABLE(acl,
3177 [ --disable-acl Don't check for ACL support.],
3178 , [enable_acl="yes"])
3179if test "$enable_acl" = "yes"; then
3180AC_MSG_RESULT(no)
3181AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3182 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3183 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3184
3185AC_MSG_CHECKING(for POSIX ACL support)
3186AC_TRY_LINK([
3187#include <sys/types.h>
3188#ifdef HAVE_SYS_ACL_H
3189# include <sys/acl.h>
3190#endif
3191acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3192 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3193 acl_free(acl);],
3194 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3195 AC_MSG_RESULT(no))
3196
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003197AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003198AC_MSG_CHECKING(for Solaris ACL support)
3199AC_TRY_LINK([
3200#ifdef HAVE_SYS_ACL_H
3201# include <sys/acl.h>
3202#endif], [acl("foo", GETACLCNT, 0, NULL);
3203 ],
3204 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003205 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003206
3207AC_MSG_CHECKING(for AIX ACL support)
3208AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003209#if STDC_HEADERS
3210# include <stdlib.h>
3211# include <stddef.h>
3212#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003213#ifdef HAVE_SYS_ACL_H
3214# include <sys/acl.h>
3215#endif
3216#ifdef HAVE_SYS_ACCESS_H
3217# include <sys/access.h>
3218#endif
3219#define _ALL_SOURCE
3220
3221#include <sys/stat.h>
3222
3223int aclsize;
3224struct acl *aclent;], [aclsize = sizeof(struct acl);
3225 aclent = (void *)malloc(aclsize);
3226 statacl("foo", STX_NORMAL, aclent, aclsize);
3227 ],
3228 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3229 AC_MSG_RESULT(no))
3230else
3231 AC_MSG_RESULT(yes)
3232fi
3233
3234AC_MSG_CHECKING(--disable-gpm argument)
3235AC_ARG_ENABLE(gpm,
3236 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3237 [enable_gpm="yes"])
3238
3239if test "$enable_gpm" = "yes"; then
3240 AC_MSG_RESULT(no)
3241 dnl Checking if gpm support can be compiled
3242 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3243 [olibs="$LIBS" ; LIBS="-lgpm"]
3244 AC_TRY_LINK(
3245 [#include <gpm.h>
3246 #include <linux/keyboard.h>],
3247 [Gpm_GetLibVersion(NULL);],
3248 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3249 dnl FEAT_MOUSE_GPM if mouse support is included
3250 [vi_cv_have_gpm=yes],
3251 [vi_cv_have_gpm=no])
3252 [LIBS="$olibs"]
3253 )
3254 if test $vi_cv_have_gpm = yes; then
3255 LIBS="$LIBS -lgpm"
3256 AC_DEFINE(HAVE_GPM)
3257 fi
3258else
3259 AC_MSG_RESULT(yes)
3260fi
3261
Bram Moolenaar446cb832008-06-24 21:56:24 +00003262AC_MSG_CHECKING(--disable-sysmouse argument)
3263AC_ARG_ENABLE(sysmouse,
3264 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3265 [enable_sysmouse="yes"])
3266
3267if test "$enable_sysmouse" = "yes"; then
3268 AC_MSG_RESULT(no)
3269 dnl Checking if sysmouse support can be compiled
3270 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3271 dnl defines FEAT_SYSMOUSE if mouse support is included
3272 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3273 AC_TRY_LINK(
3274 [#include <sys/consio.h>
3275 #include <signal.h>
3276 #include <sys/fbio.h>],
3277 [struct mouse_info mouse;
3278 mouse.operation = MOUSE_MODE;
3279 mouse.operation = MOUSE_SHOW;
3280 mouse.u.mode.mode = 0;
3281 mouse.u.mode.signal = SIGUSR2;],
3282 [vi_cv_have_sysmouse=yes],
3283 [vi_cv_have_sysmouse=no])
3284 )
3285 if test $vi_cv_have_sysmouse = yes; then
3286 AC_DEFINE(HAVE_SYSMOUSE)
3287 fi
3288else
3289 AC_MSG_RESULT(yes)
3290fi
3291
Bram Moolenaarf05da212009-11-17 16:13:15 +00003292dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3293AC_MSG_CHECKING(for FD_CLOEXEC)
3294AC_TRY_COMPILE(
3295[#if HAVE_FCNTL_H
3296# include <fcntl.h>
3297#endif],
3298[ int flag = FD_CLOEXEC;],
3299 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3300 AC_MSG_RESULT(not usable))
3301
Bram Moolenaar071d4272004-06-13 20:20:40 +00003302dnl rename needs to be checked separately to work on Nextstep with cc
3303AC_MSG_CHECKING(for rename)
3304AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3305 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3306 AC_MSG_RESULT(no))
3307
3308dnl sysctl() may exist but not the arguments we use
3309AC_MSG_CHECKING(for sysctl)
3310AC_TRY_COMPILE(
3311[#include <sys/types.h>
3312#include <sys/sysctl.h>],
3313[ int mib[2], r;
3314 size_t len;
3315
3316 mib[0] = CTL_HW;
3317 mib[1] = HW_USERMEM;
3318 len = sizeof(r);
3319 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3320 ],
3321 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3322 AC_MSG_RESULT(not usable))
3323
3324dnl sysinfo() may exist but not be Linux compatible
3325AC_MSG_CHECKING(for sysinfo)
3326AC_TRY_COMPILE(
3327[#include <sys/types.h>
3328#include <sys/sysinfo.h>],
3329[ struct sysinfo sinfo;
3330 int t;
3331
3332 (void)sysinfo(&sinfo);
3333 t = sinfo.totalram;
3334 ],
3335 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3336 AC_MSG_RESULT(not usable))
3337
Bram Moolenaar914572a2007-05-01 11:37:47 +00003338dnl struct sysinfo may have the mem_unit field or not
3339AC_MSG_CHECKING(for sysinfo.mem_unit)
3340AC_TRY_COMPILE(
3341[#include <sys/types.h>
3342#include <sys/sysinfo.h>],
3343[ struct sysinfo sinfo;
3344 sinfo.mem_unit = 1;
3345 ],
3346 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3347 AC_MSG_RESULT(no))
3348
Bram Moolenaar071d4272004-06-13 20:20:40 +00003349dnl sysconf() may exist but not support what we want to use
3350AC_MSG_CHECKING(for sysconf)
3351AC_TRY_COMPILE(
3352[#include <unistd.h>],
3353[ (void)sysconf(_SC_PAGESIZE);
3354 (void)sysconf(_SC_PHYS_PAGES);
3355 ],
3356 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3357 AC_MSG_RESULT(not usable))
3358
Bram Moolenaar914703b2010-05-31 21:59:46 +02003359AC_CHECK_SIZEOF([int])
3360AC_CHECK_SIZEOF([long])
3361AC_CHECK_SIZEOF([time_t])
3362AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003363
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003364dnl Make sure that uint32_t is really 32 bits unsigned.
3365AC_MSG_CHECKING([uint32_t is 32 bits])
3366AC_TRY_RUN([
3367#ifdef HAVE_STDINT_H
3368# include <stdint.h>
3369#endif
3370#ifdef HAVE_INTTYPES_H
3371# include <inttypes.h>
3372#endif
3373main() {
3374 uint32_t nr1 = (uint32_t)-1;
3375 uint32_t nr2 = (uint32_t)0xffffffffUL;
3376 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3377 exit(0);
3378}],
3379AC_MSG_RESULT(ok),
3380AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003381AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003382
Bram Moolenaar446cb832008-06-24 21:56:24 +00003383dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3384dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3385
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003387#include "confdefs.h"
3388#ifdef HAVE_STRING_H
3389# include <string.h>
3390#endif
3391#if STDC_HEADERS
3392# include <stdlib.h>
3393# include <stddef.h>
3394#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003395main() {
3396 char buf[10];
3397 strcpy(buf, "abcdefghi");
3398 mch_memmove(buf, buf + 2, 3);
3399 if (strncmp(buf, "ababcf", 6))
3400 exit(1);
3401 strcpy(buf, "abcdefghi");
3402 mch_memmove(buf + 2, buf, 3);
3403 if (strncmp(buf, "cdedef", 6))
3404 exit(1);
3405 exit(0); /* libc version works properly. */
3406}']
3407
Bram Moolenaar446cb832008-06-24 21:56:24 +00003408AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3409 [
3410 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3411 [
3412 vim_cv_memmove_handles_overlap=yes
3413 ],[
3414 vim_cv_memmove_handles_overlap=no
3415 ],[
3416 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3417 ])
3418 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003419
Bram Moolenaar446cb832008-06-24 21:56:24 +00003420if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3421 AC_DEFINE(USEMEMMOVE)
3422else
3423 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3424 [
3425 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3426 [
3427 vim_cv_bcopy_handles_overlap=yes
3428 ],[
3429 vim_cv_bcopy_handles_overlap=no
3430 ],[
3431 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3432 ])
3433 ])
3434
3435 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3436 AC_DEFINE(USEBCOPY)
3437 else
3438 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3439 [
3440 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3441 [
3442 vim_cv_memcpy_handles_overlap=yes
3443 ],[
3444 vim_cv_memcpy_handles_overlap=no
3445 ],[
3446 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3447 ])
3448 ])
3449
3450 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3451 AC_DEFINE(USEMEMCPY)
3452 fi
3453 fi
3454fi
3455
Bram Moolenaar071d4272004-06-13 20:20:40 +00003456
3457dnl Check for multibyte locale functions
3458dnl Find out if _Xsetlocale() is supported by libX11.
3459dnl Check if X_LOCALE should be defined.
3460
3461if test "$enable_multibyte" = "yes"; then
3462 cflags_save=$CFLAGS
3463 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003464 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003465 CFLAGS="$CFLAGS -I$x_includes"
3466 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3467 AC_MSG_CHECKING(whether X_LOCALE needed)
3468 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3469 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3470 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3471 AC_MSG_RESULT(no))
3472 fi
3473 CFLAGS=$cflags_save
3474 LDFLAGS=$ldflags_save
3475fi
3476
3477dnl Link with xpg4, it is said to make Korean locale working
3478AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3479
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003480dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003481dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003482dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003483dnl -t for typedefs (many ctags have this)
3484dnl -s for static functions (Elvis ctags only?)
3485dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3486dnl -i+m to test for older Exuberant ctags
3487AC_MSG_CHECKING(how to create tags)
3488test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003489if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003490 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003491elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3492 TAGPRG="exctags -I INIT+ --fields=+S"
3493elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3494 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003495else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003496 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003497 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3498 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3499 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3500 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3501 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3502 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3503 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3504fi
3505test -f tags.save && mv tags.save tags
3506AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3507
3508dnl Check how we can run man with a section number
3509AC_MSG_CHECKING(how to run man with a section nr)
3510MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003511(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 +00003512AC_MSG_RESULT($MANDEF)
3513if test "$MANDEF" = "man -s"; then
3514 AC_DEFINE(USEMAN_S)
3515fi
3516
3517dnl Check if gettext() is working and if it needs -lintl
3518AC_MSG_CHECKING(--disable-nls argument)
3519AC_ARG_ENABLE(nls,
3520 [ --disable-nls Don't support NLS (gettext()).], ,
3521 [enable_nls="yes"])
3522
3523if test "$enable_nls" = "yes"; then
3524 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003525
3526 INSTALL_LANGS=install-languages
3527 AC_SUBST(INSTALL_LANGS)
3528 INSTALL_TOOL_LANGS=install-tool-languages
3529 AC_SUBST(INSTALL_TOOL_LANGS)
3530
Bram Moolenaar071d4272004-06-13 20:20:40 +00003531 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3532 AC_MSG_CHECKING([for NLS])
3533 if test -f po/Makefile; then
3534 have_gettext="no"
3535 if test -n "$MSGFMT"; then
3536 AC_TRY_LINK(
3537 [#include <libintl.h>],
3538 [gettext("Test");],
3539 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3540 olibs=$LIBS
3541 LIBS="$LIBS -lintl"
3542 AC_TRY_LINK(
3543 [#include <libintl.h>],
3544 [gettext("Test");],
3545 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3546 AC_MSG_RESULT([gettext() doesn't work]);
3547 LIBS=$olibs))
3548 else
3549 AC_MSG_RESULT([msgfmt not found - disabled]);
3550 fi
3551 if test $have_gettext = "yes"; then
3552 AC_DEFINE(HAVE_GETTEXT)
3553 MAKEMO=yes
3554 AC_SUBST(MAKEMO)
3555 dnl this was added in GNU gettext 0.10.36
3556 AC_CHECK_FUNCS(bind_textdomain_codeset)
3557 dnl _nl_msg_cat_cntr is required for GNU gettext
3558 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3559 AC_TRY_LINK(
3560 [#include <libintl.h>
3561 extern int _nl_msg_cat_cntr;],
3562 [++_nl_msg_cat_cntr;],
3563 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3564 AC_MSG_RESULT([no]))
3565 fi
3566 else
3567 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3568 fi
3569else
3570 AC_MSG_RESULT(yes)
3571fi
3572
3573dnl Check for dynamic linking loader
3574AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3575if test x${DLL} = xdlfcn.h; then
3576 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3577 AC_MSG_CHECKING([for dlopen()])
3578 AC_TRY_LINK(,[
3579 extern void* dlopen();
3580 dlopen();
3581 ],
3582 AC_MSG_RESULT(yes);
3583 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3584 AC_MSG_RESULT(no);
3585 AC_MSG_CHECKING([for dlopen() in -ldl])
3586 olibs=$LIBS
3587 LIBS="$LIBS -ldl"
3588 AC_TRY_LINK(,[
3589 extern void* dlopen();
3590 dlopen();
3591 ],
3592 AC_MSG_RESULT(yes);
3593 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3594 AC_MSG_RESULT(no);
3595 LIBS=$olibs))
3596 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3597 dnl ick :-)
3598 AC_MSG_CHECKING([for dlsym()])
3599 AC_TRY_LINK(,[
3600 extern void* dlsym();
3601 dlsym();
3602 ],
3603 AC_MSG_RESULT(yes);
3604 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3605 AC_MSG_RESULT(no);
3606 AC_MSG_CHECKING([for dlsym() in -ldl])
3607 olibs=$LIBS
3608 LIBS="$LIBS -ldl"
3609 AC_TRY_LINK(,[
3610 extern void* dlsym();
3611 dlsym();
3612 ],
3613 AC_MSG_RESULT(yes);
3614 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3615 AC_MSG_RESULT(no);
3616 LIBS=$olibs))
3617elif test x${DLL} = xdl.h; then
3618 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3619 AC_MSG_CHECKING([for shl_load()])
3620 AC_TRY_LINK(,[
3621 extern void* shl_load();
3622 shl_load();
3623 ],
3624 AC_MSG_RESULT(yes);
3625 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3626 AC_MSG_RESULT(no);
3627 AC_MSG_CHECKING([for shl_load() in -ldld])
3628 olibs=$LIBS
3629 LIBS="$LIBS -ldld"
3630 AC_TRY_LINK(,[
3631 extern void* shl_load();
3632 shl_load();
3633 ],
3634 AC_MSG_RESULT(yes);
3635 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3636 AC_MSG_RESULT(no);
3637 LIBS=$olibs))
3638fi
3639AC_CHECK_HEADERS(setjmp.h)
3640
3641if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3642 dnl -ldl must come after DynaLoader.a
3643 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3644 LIBS=`echo $LIBS | sed s/-ldl//`
3645 PERL_LIBS="$PERL_LIBS -ldl"
3646 fi
3647fi
3648
Bram Moolenaar164fca32010-07-14 13:58:07 +02003649if test "x$MACOSX" = "xyes"; then
3650 AC_MSG_CHECKING(whether we need -framework Cocoa)
3651 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3652 dnl disabled during tiny build)
3653 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3654 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003655 AC_MSG_RESULT(yes)
3656 else
3657 AC_MSG_RESULT(no)
3658 fi
3659fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003660if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003661 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003662fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003663
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003664dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3665dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3666dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003667dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3668dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003669DEPEND_CFLAGS_FILTER=
3670if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003671 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003672 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003673 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003674 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003675 AC_MSG_RESULT(yes)
3676 else
3677 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003678 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003679 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3680 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003681 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003682 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003683 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3684 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003685 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 +00003686 AC_MSG_RESULT(yes)
3687 else
3688 AC_MSG_RESULT(no)
3689 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003690fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003691AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003692
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003693dnl link.sh tries to avoid overlinking in a hackish way.
3694dnl At least GNU ld supports --as-needed which provides the same functionality
3695dnl at linker level. Let's use it.
3696AC_MSG_CHECKING(linker --as-needed support)
3697LINK_AS_NEEDED=
3698# Check if linker supports --as-needed and --no-as-needed options
3699if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3700 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3701 LINK_AS_NEEDED=yes
3702fi
3703if test "$LINK_AS_NEEDED" = yes; then
3704 AC_MSG_RESULT(yes)
3705else
3706 AC_MSG_RESULT(no)
3707fi
3708AC_SUBST(LINK_AS_NEEDED)
3709
Bram Moolenaar77c19352012-06-13 19:19:41 +02003710# IBM z/OS reset CFLAGS for config.mk
3711if test "$zOSUnix" = "yes"; then
3712 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3713fi
3714
Bram Moolenaar071d4272004-06-13 20:20:40 +00003715dnl write output files
3716AC_OUTPUT(auto/config.mk:config.mk.in)
3717
3718dnl vim: set sw=2 tw=78 fo+=l: