blob: 886c5f3f48a0451a0f6bac70cc03a2a4fca66a82 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000705 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100706 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 MZSCHEME_SRC="if_mzsch.c"
708 MZSCHEME_OBJ="objects/if_mzsch.o"
709 MZSCHEME_PRO="if_mzsch.pro"
710 AC_DEFINE(FEAT_MZSCHEME)
711 fi
712 AC_SUBST(MZSCHEME_SRC)
713 AC_SUBST(MZSCHEME_OBJ)
714 AC_SUBST(MZSCHEME_PRO)
715 AC_SUBST(MZSCHEME_LIBS)
716 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_SUBST(MZSCHEME_EXTRA)
718 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000719fi
720
721
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722AC_MSG_CHECKING(--enable-perlinterp argument)
723AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200724 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 [enable_perlinterp="no"])
726AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200727if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000728 AC_SUBST(vi_cv_path_perl)
729 AC_PATH_PROG(vi_cv_path_perl, perl)
730 if test "X$vi_cv_path_perl" != "X"; then
731 AC_MSG_CHECKING(Perl version)
732 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
733 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200734 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000735 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
736 badthreads=no
737 else
738 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
739 eval `$vi_cv_path_perl -V:use5005threads`
740 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
741 badthreads=no
742 else
743 badthreads=yes
744 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
745 fi
746 else
747 badthreads=yes
748 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
749 fi
750 fi
751 if test $badthreads = no; then
752 AC_MSG_RESULT(OK)
753 eval `$vi_cv_path_perl -V:shrpenv`
754 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
755 shrpenv=""
756 fi
757 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
758 AC_SUBST(vi_cv_perllib)
759 dnl Remove "-fno-something", it breaks using cproto.
760 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
761 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
762 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
763 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
764 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
765 -e 's/-bE:perl.exp//' -e 's/-lc //'`
766 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
767 dnl a test in configure may fail because of that.
768 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
769 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
770
771 dnl check that compiling a simple program still works with the flags
772 dnl added for Perl.
773 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
774 cflags_save=$CFLAGS
775 libs_save=$LIBS
776 ldflags_save=$LDFLAGS
777 CFLAGS="$CFLAGS $perlcppflags"
778 LIBS="$LIBS $perllibs"
779 LDFLAGS="$perlldflags $LDFLAGS"
780 AC_TRY_LINK(,[ ],
781 AC_MSG_RESULT(yes); perl_ok=yes,
782 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
783 CFLAGS=$cflags_save
784 LIBS=$libs_save
785 LDFLAGS=$ldflags_save
786 if test $perl_ok = yes; then
787 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000788 dnl remove -pipe and -Wxxx, it confuses cproto
789 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000790 fi
791 if test "X$perlldflags" != "X"; then
792 LDFLAGS="$perlldflags $LDFLAGS"
793 fi
794 PERL_LIBS=$perllibs
795 PERL_SRC="auto/if_perl.c if_perlsfio.c"
796 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
797 PERL_PRO="if_perl.pro if_perlsfio.pro"
798 AC_DEFINE(FEAT_PERL)
799 fi
800 fi
801 else
802 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
803 fi
804 fi
805
806 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000807 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000808 dir=/System/Library/Perl
809 darwindir=$dir/darwin
810 if test -d $darwindir; then
811 PERL=/usr/bin/perl
812 else
813 dnl Mac OS X 10.3
814 dir=/System/Library/Perl/5.8.1
815 darwindir=$dir/darwin-thread-multi-2level
816 if test -d $darwindir; then
817 PERL=/usr/bin/perl
818 fi
819 fi
820 if test -n "$PERL"; then
821 PERL_DIR="$dir"
822 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
823 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
824 PERL_LIBS="-L$darwindir/CORE -lperl"
825 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200826 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
827 dnl be included if requested by passing --with-mac-arch to
828 dnl configure, so strip these flags first (if present)
829 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
830 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000831 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200832 if test "$enable_perlinterp" = "dynamic"; then
833 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
834 AC_DEFINE(DYNAMIC_PERL)
835 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
836 fi
837 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100838
839 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
840 AC_MSG_ERROR([could not configure perl])
841 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842fi
843AC_SUBST(shrpenv)
844AC_SUBST(PERL_SRC)
845AC_SUBST(PERL_OBJ)
846AC_SUBST(PERL_PRO)
847AC_SUBST(PERL_CFLAGS)
848AC_SUBST(PERL_LIBS)
849
850AC_MSG_CHECKING(--enable-pythoninterp argument)
851AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200852 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000853 [enable_pythoninterp="no"])
854AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100857 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 if test "X$vi_cv_path_python" != "X"; then
859
860 dnl -- get its version number
861 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
862 [[vi_cv_var_python_version=`
863 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
864 ]])
865
Bram Moolenaar03db85b2013-05-15 14:51:35 +0200866 dnl -- it must be at least version 2.2
867 AC_MSG_CHECKING(Python is 2.2 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868 if ${vi_cv_path_python} -c \
Bram Moolenaar03db85b2013-05-15 14:51:35 +0200869 "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000870 then
871 AC_MSG_RESULT(yep)
872
873 dnl -- find where python thinks it was installed
874 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
875 [ vi_cv_path_python_pfx=`
876 ${vi_cv_path_python} -c \
877 "import sys; print sys.prefix"` ])
878
879 dnl -- and where it thinks it runs
880 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
881 [ vi_cv_path_python_epfx=`
882 ${vi_cv_path_python} -c \
883 "import sys; print sys.exec_prefix"` ])
884
885 dnl -- python's internal library path
886
887 AC_CACHE_VAL(vi_cv_path_pythonpath,
888 [ vi_cv_path_pythonpath=`
889 unset PYTHONPATH;
890 ${vi_cv_path_python} -c \
891 "import sys, string; print string.join(sys.path,':')"` ])
892
893 dnl -- where the Python implementation library archives are
894
895 AC_ARG_WITH(python-config-dir,
896 [ --with-python-config-dir=PATH Python's config directory],
897 [ vi_cv_path_python_conf="${withval}" ] )
898
899 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
900 [
901 vi_cv_path_python_conf=
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.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001231 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001232 */
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.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001277 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001278 */
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
Bram Moolenaard1864592013-05-04 04:40:15 +02001754 dnl -Werror is GCC only, others like Solaris Studio might not like it
1755 if test "$GCC" = yes; then
1756 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1757 else
1758 CFLAGS="$CFLAGS $X_CFLAGS"
1759 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001760 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1761 AC_MSG_RESULT(no),
1762 CFLAGS="$CFLAGS -Wno-implicit-int"
1763 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1764 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1765 AC_MSG_RESULT(test failed)
1766 )
1767 )
1768 CFLAGS=$cflags_save
1769
1770 LDFLAGS="$ac_save_LDFLAGS"
1771
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001772 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1773 AC_CACHE_VAL(ac_cv_small_wchar_t,
1774 [AC_TRY_RUN([
1775#include <X11/Xlib.h>
1776#if STDC_HEADERS
1777# include <stdlib.h>
1778# include <stddef.h>
1779#endif
1780 main()
1781 {
1782 if (sizeof(wchar_t) <= 2)
1783 exit(1);
1784 exit(0);
1785 }],
1786 ac_cv_small_wchar_t="no",
1787 ac_cv_small_wchar_t="yes",
1788 AC_MSG_ERROR(failed to compile test program))])
1789 AC_MSG_RESULT($ac_cv_small_wchar_t)
1790 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1791 AC_DEFINE(SMALL_WCHAR_T)
1792 fi
1793
Bram Moolenaar071d4272004-06-13 20:20:40 +00001794 fi
1795fi
1796
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001797test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798
1799AC_MSG_CHECKING(--enable-gui argument)
1800AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001801 [ --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 +00001802
1803dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1804dnl Do not use character classes for portability with old tools.
1805enable_gui_canon=`echo "_$enable_gui" | \
1806 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1807
1808dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001809SKIP_GTK2=YES
1810SKIP_GNOME=YES
1811SKIP_MOTIF=YES
1812SKIP_ATHENA=YES
1813SKIP_NEXTAW=YES
1814SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001815SKIP_CARBON=YES
1816GUITYPE=NONE
1817
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001818if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001819 SKIP_PHOTON=
1820 case "$enable_gui_canon" in
1821 no) AC_MSG_RESULT(no GUI support)
1822 SKIP_PHOTON=YES ;;
1823 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1824 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1825 photon) AC_MSG_RESULT(Photon GUI support) ;;
1826 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1827 SKIP_PHOTON=YES ;;
1828 esac
1829
1830elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1831 SKIP_CARBON=
1832 case "$enable_gui_canon" in
1833 no) AC_MSG_RESULT(no GUI support)
1834 SKIP_CARBON=YES ;;
1835 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001836 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1837 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001838 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1839 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1840 SKIP_CARBON=YES ;;
1841 esac
1842
1843else
1844
Bram Moolenaar071d4272004-06-13 20:20:40 +00001845 case "$enable_gui_canon" in
1846 no|none) AC_MSG_RESULT(no GUI support) ;;
1847 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001848 SKIP_GTK2=
1849 SKIP_GNOME=
1850 SKIP_MOTIF=
1851 SKIP_ATHENA=
1852 SKIP_NEXTAW=
1853 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001854 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001855 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001856 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1857 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001858 SKIP_GTK2=;;
1859 motif) AC_MSG_RESULT(Motif GUI support)
1860 SKIP_MOTIF=;;
1861 athena) AC_MSG_RESULT(Athena GUI support)
1862 SKIP_ATHENA=;;
1863 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1864 SKIP_NEXTAW=;;
1865 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1866 esac
1867
1868fi
1869
Bram Moolenaar071d4272004-06-13 20:20:40 +00001870if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1871 -a "$enable_gui_canon" != "gnome2"; then
1872 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1873 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001874 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001875 , enable_gtk2_check="yes")
1876 AC_MSG_RESULT($enable_gtk2_check)
1877 if test "x$enable_gtk2_check" = "xno"; then
1878 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001879 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880 fi
1881fi
1882
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001883if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 AC_MSG_CHECKING(whether or not to look for GNOME)
1885 AC_ARG_ENABLE(gnome-check,
1886 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1887 , enable_gnome_check="no")
1888 AC_MSG_RESULT($enable_gnome_check)
1889 if test "x$enable_gnome_check" = "xno"; then
1890 SKIP_GNOME=YES
1891 fi
1892fi
1893
1894if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1895 AC_MSG_CHECKING(whether or not to look for Motif)
1896 AC_ARG_ENABLE(motif-check,
1897 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1898 , enable_motif_check="yes")
1899 AC_MSG_RESULT($enable_motif_check)
1900 if test "x$enable_motif_check" = "xno"; then
1901 SKIP_MOTIF=YES
1902 fi
1903fi
1904
1905if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1906 AC_MSG_CHECKING(whether or not to look for Athena)
1907 AC_ARG_ENABLE(athena-check,
1908 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1909 , enable_athena_check="yes")
1910 AC_MSG_RESULT($enable_athena_check)
1911 if test "x$enable_athena_check" = "xno"; then
1912 SKIP_ATHENA=YES
1913 fi
1914fi
1915
1916if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1917 AC_MSG_CHECKING(whether or not to look for neXtaw)
1918 AC_ARG_ENABLE(nextaw-check,
1919 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1920 , enable_nextaw_check="yes")
1921 AC_MSG_RESULT($enable_nextaw_check);
1922 if test "x$enable_nextaw_check" = "xno"; then
1923 SKIP_NEXTAW=YES
1924 fi
1925fi
1926
1927if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1928 AC_MSG_CHECKING(whether or not to look for Carbon)
1929 AC_ARG_ENABLE(carbon-check,
1930 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1931 , enable_carbon_check="yes")
1932 AC_MSG_RESULT($enable_carbon_check);
1933 if test "x$enable_carbon_check" = "xno"; then
1934 SKIP_CARBON=YES
1935 fi
1936fi
1937
Bram Moolenaar843ee412004-06-30 16:16:41 +00001938
Bram Moolenaar071d4272004-06-13 20:20:40 +00001939if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1940 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001941 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001942 AC_MSG_RESULT(yes);
1943 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001944 if test "$VIMNAME" = "vim"; then
1945 VIMNAME=Vim
1946 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001947
Bram Moolenaar164fca32010-07-14 13:58:07 +02001948 if test "x$MACARCH" = "xboth"; then
1949 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1950 else
1951 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1952 fi
1953
Bram Moolenaar14716812006-05-04 21:54:08 +00001954 dnl Default install directory is not /usr/local
1955 if test x$prefix = xNONE; then
1956 prefix=/Applications
1957 fi
1958
1959 dnl Sorry for the hard coded default
1960 datadir='${prefix}/Vim.app/Contents/Resources'
1961
Bram Moolenaar071d4272004-06-13 20:20:40 +00001962 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001963 SKIP_GTK2=YES;
1964 SKIP_GNOME=YES;
1965 SKIP_MOTIF=YES;
1966 SKIP_ATHENA=YES;
1967 SKIP_NEXTAW=YES;
1968 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001969 SKIP_CARBON=YES
1970fi
1971
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001973dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001974dnl
1975dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001976dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001977dnl
1978AC_DEFUN(AM_PATH_GTK,
1979[
1980 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1981 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001982 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001983 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1984 no_gtk=""
1985 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1986 && $PKG_CONFIG --exists gtk+-2.0; then
1987 {
1988 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1989 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1990 dnl something like that.
1991 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001992 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001993 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1994 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1995 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1996 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1997 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1998 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1999 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2000 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002001 else
2002 no_gtk=yes
2003 fi
2004
2005 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2006 {
2007 ac_save_CFLAGS="$CFLAGS"
2008 ac_save_LIBS="$LIBS"
2009 CFLAGS="$CFLAGS $GTK_CFLAGS"
2010 LIBS="$LIBS $GTK_LIBS"
2011
2012 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002013 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002014 dnl
2015 rm -f conf.gtktest
2016 AC_TRY_RUN([
2017#include <gtk/gtk.h>
2018#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002019#if STDC_HEADERS
2020# include <stdlib.h>
2021# include <stddef.h>
2022#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002023
2024int
2025main ()
2026{
2027int major, minor, micro;
2028char *tmp_version;
2029
2030system ("touch conf.gtktest");
2031
2032/* HP/UX 9 (%@#!) writes to sscanf strings */
2033tmp_version = g_strdup("$min_gtk_version");
2034if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2035 printf("%s, bad version string\n", "$min_gtk_version");
2036 exit(1);
2037 }
2038
2039if ((gtk_major_version > major) ||
2040 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2041 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2042 (gtk_micro_version >= micro)))
2043{
2044 return 0;
2045}
2046return 1;
2047}
2048],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2049 CFLAGS="$ac_save_CFLAGS"
2050 LIBS="$ac_save_LIBS"
2051 }
2052 fi
2053 if test "x$no_gtk" = x ; then
2054 if test "x$enable_gtktest" = "xyes"; then
2055 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2056 else
2057 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2058 fi
2059 ifelse([$2], , :, [$2])
2060 else
2061 {
2062 AC_MSG_RESULT(no)
2063 GTK_CFLAGS=""
2064 GTK_LIBS=""
2065 ifelse([$3], , :, [$3])
2066 }
2067 fi
2068 }
2069 else
2070 GTK_CFLAGS=""
2071 GTK_LIBS=""
2072 ifelse([$3], , :, [$3])
2073 fi
2074 AC_SUBST(GTK_CFLAGS)
2075 AC_SUBST(GTK_LIBS)
2076 rm -f conf.gtktest
2077])
2078
2079dnl ---------------------------------------------------------------------------
2080dnl gnome
2081dnl ---------------------------------------------------------------------------
2082AC_DEFUN([GNOME_INIT_HOOK],
2083[
2084 AC_SUBST(GNOME_LIBS)
2085 AC_SUBST(GNOME_LIBDIR)
2086 AC_SUBST(GNOME_INCLUDEDIR)
2087
2088 AC_ARG_WITH(gnome-includes,
2089 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2090 [CFLAGS="$CFLAGS -I$withval"]
2091 )
2092
2093 AC_ARG_WITH(gnome-libs,
2094 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2095 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2096 )
2097
2098 AC_ARG_WITH(gnome,
2099 [ --with-gnome Specify prefix for GNOME files],
2100 if test x$withval = xyes; then
2101 want_gnome=yes
2102 ifelse([$1], [], :, [$1])
2103 else
2104 if test "x$withval" = xno; then
2105 want_gnome=no
2106 else
2107 want_gnome=yes
2108 LDFLAGS="$LDFLAGS -L$withval/lib"
2109 CFLAGS="$CFLAGS -I$withval/include"
2110 gnome_prefix=$withval/lib
2111 fi
2112 fi,
2113 want_gnome=yes)
2114
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002115 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002116 {
2117 AC_MSG_CHECKING(for libgnomeui-2.0)
2118 if $PKG_CONFIG --exists libgnomeui-2.0; then
2119 AC_MSG_RESULT(yes)
2120 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2121 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2122 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002123
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002124 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2125 dnl This might not be the right way but it works for me...
2126 AC_MSG_CHECKING(for FreeBSD)
2127 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2128 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002129 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002130 GNOME_LIBS="$GNOME_LIBS -pthread"
2131 else
2132 AC_MSG_RESULT(no)
2133 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002134 $1
2135 else
2136 AC_MSG_RESULT(not found)
2137 if test "x$2" = xfail; then
2138 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2139 fi
2140 fi
2141 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142 fi
2143])
2144
2145AC_DEFUN([GNOME_INIT],[
2146 GNOME_INIT_HOOK([],fail)
2147])
2148
2149
2150dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002151dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002152dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002153if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002154
2155 AC_MSG_CHECKING(--disable-gtktest argument)
2156 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2157 , enable_gtktest=yes)
2158 if test "x$enable_gtktest" = "xyes" ; then
2159 AC_MSG_RESULT(gtk test enabled)
2160 else
2161 AC_MSG_RESULT(gtk test disabled)
2162 fi
2163
Bram Moolenaar071d4272004-06-13 20:20:40 +00002164 if test "X$PKG_CONFIG" = "X"; then
2165 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2166 fi
2167
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002168 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002169 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2170 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002171 AM_PATH_GTK(2.2.0,
2172 [GUI_LIB_LOC="$GTK_LIBDIR"
2173 GTK_LIBNAME="$GTK_LIBS"
2174 GUI_INC_LOC="$GTK_CFLAGS"], )
2175 if test "x$GTK_CFLAGS" != "x"; then
2176 SKIP_ATHENA=YES
2177 SKIP_NEXTAW=YES
2178 SKIP_MOTIF=YES
2179 GUITYPE=GTK
2180 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181 fi
2182 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002183 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002184 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2185 || test "0$gtk_minor_version" -ge 2; then
2186 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2187 fi
2188 dnl
2189 dnl if GTK exists, then check for GNOME.
2190 dnl
2191 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002192 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002193 GNOME_INIT_HOOK([have_gnome=yes])
2194 if test "x$have_gnome" = xyes ; then
2195 AC_DEFINE(FEAT_GUI_GNOME)
2196 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2197 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002198 fi
2199 }
2200 fi
2201 fi
2202fi
2203
2204dnl Check for Motif include files location.
2205dnl The LAST one found is used, this makes the highest version to be used,
2206dnl e.g. when Motif1.2 and Motif2.0 are both present.
2207
2208if test -z "$SKIP_MOTIF"; then
2209 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"
2210 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2211 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2212
2213 AC_MSG_CHECKING(for location of Motif GUI includes)
2214 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2215 GUI_INC_LOC=
2216 for try in $gui_includes; do
2217 if test -f "$try/Xm/Xm.h"; then
2218 GUI_INC_LOC=$try
2219 fi
2220 done
2221 if test -n "$GUI_INC_LOC"; then
2222 if test "$GUI_INC_LOC" = /usr/include; then
2223 GUI_INC_LOC=
2224 AC_MSG_RESULT(in default path)
2225 else
2226 AC_MSG_RESULT($GUI_INC_LOC)
2227 fi
2228 else
2229 AC_MSG_RESULT(<not found>)
2230 SKIP_MOTIF=YES
2231 fi
2232fi
2233
2234dnl Check for Motif library files location. In the same order as the include
2235dnl files, to avoid a mixup if several versions are present
2236
2237if test -z "$SKIP_MOTIF"; then
2238 AC_MSG_CHECKING(--with-motif-lib argument)
2239 AC_ARG_WITH(motif-lib,
2240 [ --with-motif-lib=STRING Library for Motif ],
2241 [ MOTIF_LIBNAME="${withval}" ] )
2242
2243 if test -n "$MOTIF_LIBNAME"; then
2244 AC_MSG_RESULT($MOTIF_LIBNAME)
2245 GUI_LIB_LOC=
2246 else
2247 AC_MSG_RESULT(no)
2248
2249 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2250 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2251
2252 AC_MSG_CHECKING(for location of Motif GUI libs)
2253 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"
2254 GUI_LIB_LOC=
2255 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002256 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002257 if test -f "$libtry"; then
2258 GUI_LIB_LOC=$try
2259 fi
2260 done
2261 done
2262 if test -n "$GUI_LIB_LOC"; then
2263 dnl Remove /usr/lib, it causes trouble on some systems
2264 if test "$GUI_LIB_LOC" = /usr/lib; then
2265 GUI_LIB_LOC=
2266 AC_MSG_RESULT(in default path)
2267 else
2268 if test -n "$GUI_LIB_LOC"; then
2269 AC_MSG_RESULT($GUI_LIB_LOC)
2270 if test "`(uname) 2>/dev/null`" = SunOS &&
2271 uname -r | grep '^5' >/dev/null; then
2272 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2273 fi
2274 fi
2275 fi
2276 MOTIF_LIBNAME=-lXm
2277 else
2278 AC_MSG_RESULT(<not found>)
2279 SKIP_MOTIF=YES
2280 fi
2281 fi
2282fi
2283
2284if test -z "$SKIP_MOTIF"; then
2285 SKIP_ATHENA=YES
2286 SKIP_NEXTAW=YES
2287 GUITYPE=MOTIF
2288 AC_SUBST(MOTIF_LIBNAME)
2289fi
2290
2291dnl Check if the Athena files can be found
2292
2293GUI_X_LIBS=
2294
2295if test -z "$SKIP_ATHENA"; then
2296 AC_MSG_CHECKING(if Athena header files can be found)
2297 cflags_save=$CFLAGS
2298 CFLAGS="$CFLAGS $X_CFLAGS"
2299 AC_TRY_COMPILE([
2300#include <X11/Intrinsic.h>
2301#include <X11/Xaw/Paned.h>], ,
2302 AC_MSG_RESULT(yes),
2303 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2304 CFLAGS=$cflags_save
2305fi
2306
2307if test -z "$SKIP_ATHENA"; then
2308 GUITYPE=ATHENA
2309fi
2310
2311if test -z "$SKIP_NEXTAW"; then
2312 AC_MSG_CHECKING(if neXtaw header files can be found)
2313 cflags_save=$CFLAGS
2314 CFLAGS="$CFLAGS $X_CFLAGS"
2315 AC_TRY_COMPILE([
2316#include <X11/Intrinsic.h>
2317#include <X11/neXtaw/Paned.h>], ,
2318 AC_MSG_RESULT(yes),
2319 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2320 CFLAGS=$cflags_save
2321fi
2322
2323if test -z "$SKIP_NEXTAW"; then
2324 GUITYPE=NEXTAW
2325fi
2326
2327if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2328 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2329 dnl Avoid adding it when it twice
2330 if test -n "$GUI_INC_LOC"; then
2331 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2332 fi
2333 if test -n "$GUI_LIB_LOC"; then
2334 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2335 fi
2336
2337 dnl Check for -lXext and then for -lXmu
2338 ldflags_save=$LDFLAGS
2339 LDFLAGS="$X_LIBS $LDFLAGS"
2340 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2341 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2342 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2343 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2344 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2345 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2346 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2347 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2348 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2349 if test -z "$SKIP_MOTIF"; then
2350 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2351 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2352 fi
2353 LDFLAGS=$ldflags_save
2354
2355 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2356 AC_MSG_CHECKING(for extra X11 defines)
2357 NARROW_PROTO=
2358 rm -fr conftestdir
2359 if mkdir conftestdir; then
2360 cd conftestdir
2361 cat > Imakefile <<'EOF'
2362acfindx:
2363 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2364EOF
2365 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2366 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2367 fi
2368 cd ..
2369 rm -fr conftestdir
2370 fi
2371 if test -z "$NARROW_PROTO"; then
2372 AC_MSG_RESULT(no)
2373 else
2374 AC_MSG_RESULT($NARROW_PROTO)
2375 fi
2376 AC_SUBST(NARROW_PROTO)
2377fi
2378
2379dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2380dnl use the X11 include path
2381if test "$enable_xsmp" = "yes"; then
2382 cppflags_save=$CPPFLAGS
2383 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2384 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2385 CPPFLAGS=$cppflags_save
2386fi
2387
2388
Bram Moolenaare667c952010-07-05 22:57:59 +02002389if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002390 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2391 cppflags_save=$CPPFLAGS
2392 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2393 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2394
2395 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2396 if test ! "$enable_xim" = "no"; then
2397 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2398 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2399 AC_MSG_RESULT(yes),
2400 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2401 fi
2402 CPPFLAGS=$cppflags_save
2403
2404 dnl automatically enable XIM when hangul input isn't enabled
2405 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2406 -a "x$GUITYPE" != "xNONE" ; then
2407 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2408 enable_xim="yes"
2409 fi
2410fi
2411
2412if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2413 cppflags_save=$CPPFLAGS
2414 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002415dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2416 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2417 AC_TRY_COMPILE([
2418#include <X11/Intrinsic.h>
2419#include <X11/Xmu/Editres.h>],
2420 [int i; i = 0;],
2421 AC_MSG_RESULT(yes)
2422 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2423 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002424 CPPFLAGS=$cppflags_save
2425fi
2426
2427dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2428if test -z "$SKIP_MOTIF"; then
2429 cppflags_save=$CPPFLAGS
2430 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002431 if test "$zOSUnix" = "yes"; then
2432 xmheader="Xm/Xm.h"
2433 else
2434 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2435 Xm/UnhighlightT.h Xm/Notebook.h"
2436 fi
2437 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002438
Bram Moolenaar77c19352012-06-13 19:19:41 +02002439 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002440 dnl Solaris uses XpmAttributes_21, very annoying.
2441 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2442 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2443 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2444 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2445 )
2446 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002447 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002448 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002449 CPPFLAGS=$cppflags_save
2450fi
2451
2452if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2453 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2454 enable_xim="no"
2455fi
2456if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2457 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2458 enable_fontset="no"
2459fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002460if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002461 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2462 enable_fontset="no"
2463fi
2464
Bram Moolenaar071d4272004-06-13 20:20:40 +00002465if test -z "$SKIP_PHOTON"; then
2466 GUITYPE=PHOTONGUI
2467fi
2468
2469AC_SUBST(GUI_INC_LOC)
2470AC_SUBST(GUI_LIB_LOC)
2471AC_SUBST(GUITYPE)
2472AC_SUBST(GUI_X_LIBS)
2473
2474if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2475 AC_MSG_ERROR([cannot use workshop without Motif])
2476fi
2477
2478dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2479if test "$enable_xim" = "yes"; then
2480 AC_DEFINE(FEAT_XIM)
2481fi
2482if test "$enable_fontset" = "yes"; then
2483 AC_DEFINE(FEAT_XFONTSET)
2484fi
2485
2486
2487dnl ---------------------------------------------------------------------------
2488dnl end of GUI-checking
2489dnl ---------------------------------------------------------------------------
2490
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002491dnl Check for Cygwin, which needs an extra source file if not using X11
2492AC_MSG_CHECKING(for CYGWIN environment)
2493case `uname` in
2494 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2495 AC_MSG_CHECKING(for CYGWIN clipboard support)
2496 if test "x$with_x" = "xno" ; then
2497 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2498 AC_MSG_RESULT(yes)
2499 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2500 else
2501 AC_MSG_RESULT(no - using X11)
2502 fi ;;
2503
2504 *) CYGWIN=no; AC_MSG_RESULT(no);;
2505esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002506
2507dnl Only really enable hangul input when GUI and XFONTSET are available
2508if test "$enable_hangulinput" = "yes"; then
2509 if test "x$GUITYPE" = "xNONE"; then
2510 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2511 enable_hangulinput=no
2512 else
2513 AC_DEFINE(FEAT_HANGULIN)
2514 HANGULIN_SRC=hangulin.c
2515 AC_SUBST(HANGULIN_SRC)
2516 HANGULIN_OBJ=objects/hangulin.o
2517 AC_SUBST(HANGULIN_OBJ)
2518 fi
2519fi
2520
2521dnl Checks for libraries and include files.
2522
Bram Moolenaar446cb832008-06-24 21:56:24 +00002523AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2524 [
2525 AC_RUN_IFELSE([[
2526#include "confdefs.h"
2527#include <ctype.h>
2528#if STDC_HEADERS
2529# include <stdlib.h>
2530# include <stddef.h>
2531#endif
2532main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2533 ]],[
2534 vim_cv_toupper_broken=yes
2535 ],[
2536 vim_cv_toupper_broken=no
2537 ],[
2538 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2539 ])])
2540
2541if test "x$vim_cv_toupper_broken" = "xyes" ; then
2542 AC_DEFINE(BROKEN_TOUPPER)
2543fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002544
2545AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002546AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002547 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2548 AC_MSG_RESULT(no))
2549
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002550AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2551AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2552 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2553 AC_MSG_RESULT(no))
2554
Bram Moolenaar071d4272004-06-13 20:20:40 +00002555dnl Checks for header files.
2556AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2557dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2558if test "$HAS_ELF" = 1; then
2559 AC_CHECK_LIB(elf, main)
2560fi
2561
2562AC_HEADER_DIRENT
2563
Bram Moolenaar071d4272004-06-13 20:20:40 +00002564dnl If sys/wait.h is not found it might still exist but not be POSIX
2565dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2566if test $ac_cv_header_sys_wait_h = no; then
2567 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2568 AC_TRY_COMPILE([#include <sys/wait.h>],
2569 [union wait xx, yy; xx = yy],
2570 AC_MSG_RESULT(yes)
2571 AC_DEFINE(HAVE_SYS_WAIT_H)
2572 AC_DEFINE(HAVE_UNION_WAIT),
2573 AC_MSG_RESULT(no))
2574fi
2575
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002576AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2577 sys/select.h sys/utsname.h termcap.h fcntl.h \
2578 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2579 termio.h iconv.h inttypes.h langinfo.h math.h \
2580 unistd.h stropts.h errno.h sys/resource.h \
2581 sys/systeminfo.h locale.h sys/stream.h termios.h \
2582 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2583 utime.h sys/param.h libintl.h libgen.h \
2584 util/debug.h util/msg18n.h frame.h sys/acl.h \
2585 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002586
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002587dnl sys/ptem.h depends on sys/stream.h on Solaris
2588AC_CHECK_HEADERS(sys/ptem.h, [], [],
2589[#if defined HAVE_SYS_STREAM_H
2590# include <sys/stream.h>
2591#endif])
2592
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002593dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2594AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2595[#if defined HAVE_SYS_PARAM_H
2596# include <sys/param.h>
2597#endif])
2598
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002599
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002600dnl pthread_np.h may exist but can only be used after including pthread.h
2601AC_MSG_CHECKING([for pthread_np.h])
2602AC_TRY_COMPILE([
2603#include <pthread.h>
2604#include <pthread_np.h>],
2605 [int i; i = 0;],
2606 AC_MSG_RESULT(yes)
2607 AC_DEFINE(HAVE_PTHREAD_NP_H),
2608 AC_MSG_RESULT(no))
2609
Bram Moolenaare344bea2005-09-01 20:46:49 +00002610AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002611if test "x$MACOSX" = "xyes"; then
2612 dnl The strings.h file on OS/X contains a warning and nothing useful.
2613 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2614else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002615
2616dnl Check if strings.h and string.h can both be included when defined.
2617AC_MSG_CHECKING([if strings.h can be included after string.h])
2618cppflags_save=$CPPFLAGS
2619CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2620AC_TRY_COMPILE([
2621#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2622# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2623 /* but don't do it on AIX 5.1 (Uribarri) */
2624#endif
2625#ifdef HAVE_XM_XM_H
2626# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2627#endif
2628#ifdef HAVE_STRING_H
2629# include <string.h>
2630#endif
2631#if defined(HAVE_STRINGS_H)
2632# include <strings.h>
2633#endif
2634 ], [int i; i = 0;],
2635 AC_MSG_RESULT(yes),
2636 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2637 AC_MSG_RESULT(no))
2638CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002639fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640
2641dnl Checks for typedefs, structures, and compiler characteristics.
2642AC_PROG_GCC_TRADITIONAL
2643AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002644AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002645AC_TYPE_MODE_T
2646AC_TYPE_OFF_T
2647AC_TYPE_PID_T
2648AC_TYPE_SIZE_T
2649AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002650AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002651
Bram Moolenaar071d4272004-06-13 20:20:40 +00002652AC_HEADER_TIME
2653AC_CHECK_TYPE(ino_t, long)
2654AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002655AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002656
2657AC_MSG_CHECKING(for rlim_t)
2658if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2659 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2660else
2661 AC_EGREP_CPP(dnl
2662changequote(<<,>>)dnl
2663<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2664changequote([,]),
2665 [
2666#include <sys/types.h>
2667#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002668# include <stdlib.h>
2669# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670#endif
2671#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002672# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002673#endif
2674 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2675 AC_MSG_RESULT($ac_cv_type_rlim_t)
2676fi
2677if test $ac_cv_type_rlim_t = no; then
2678 cat >> confdefs.h <<\EOF
2679#define rlim_t unsigned long
2680EOF
2681fi
2682
2683AC_MSG_CHECKING(for stack_t)
2684if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2685 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2686else
2687 AC_EGREP_CPP(stack_t,
2688 [
2689#include <sys/types.h>
2690#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002691# include <stdlib.h>
2692# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693#endif
2694#include <signal.h>
2695 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2696 AC_MSG_RESULT($ac_cv_type_stack_t)
2697fi
2698if test $ac_cv_type_stack_t = no; then
2699 cat >> confdefs.h <<\EOF
2700#define stack_t struct sigaltstack
2701EOF
2702fi
2703
2704dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2705AC_MSG_CHECKING(whether stack_t has an ss_base field)
2706AC_TRY_COMPILE([
2707#include <sys/types.h>
2708#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709# include <stdlib.h>
2710# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002711#endif
2712#include <signal.h>
2713#include "confdefs.h"
2714 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2715 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2716 AC_MSG_RESULT(no))
2717
2718olibs="$LIBS"
2719AC_MSG_CHECKING(--with-tlib argument)
2720AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2721if test -n "$with_tlib"; then
2722 AC_MSG_RESULT($with_tlib)
2723 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002724 AC_MSG_CHECKING(for linking with $with_tlib library)
2725 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2726 dnl Need to check for tgetent() below.
2727 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002728else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002729 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002730 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2731 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002732 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002733 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002734 dnl Older versions of ncurses have bugs, get a new one!
2735 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002736 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002737 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002738 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2739 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002740 esac
2741 for libname in $tlibs; do
2742 AC_CHECK_LIB(${libname}, tgetent,,)
2743 if test "x$olibs" != "x$LIBS"; then
2744 dnl It's possible that a library is found but it doesn't work
2745 dnl e.g., shared library that cannot be found
2746 dnl compile and run a test program to be sure
2747 AC_TRY_RUN([
2748#ifdef HAVE_TERMCAP_H
2749# include <termcap.h>
2750#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002751#if STDC_HEADERS
2752# include <stdlib.h>
2753# include <stddef.h>
2754#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002755main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2756 res="OK", res="FAIL", res="FAIL")
2757 if test "$res" = "OK"; then
2758 break
2759 fi
2760 AC_MSG_RESULT($libname library is not usable)
2761 LIBS="$olibs"
2762 fi
2763 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002764 if test "x$olibs" = "x$LIBS"; then
2765 AC_MSG_RESULT(no terminal library found)
2766 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002767fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002768
2769if test "x$olibs" = "x$LIBS"; then
2770 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002771 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002772 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2773 AC_MSG_RESULT(yes),
2774 AC_MSG_ERROR([NOT FOUND!
2775 You need to install a terminal library; for example ncurses.
2776 Or specify the name of the library with --with-tlib.]))
2777fi
2778
Bram Moolenaar446cb832008-06-24 21:56:24 +00002779AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2780 [
2781 AC_RUN_IFELSE([[
2782#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002783#ifdef HAVE_TERMCAP_H
2784# include <termcap.h>
2785#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002786#ifdef HAVE_STRING_H
2787# include <string.h>
2788#endif
2789#if STDC_HEADERS
2790# include <stdlib.h>
2791# include <stddef.h>
2792#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002794{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2795 ]],[
2796 vim_cv_terminfo=no
2797 ],[
2798 vim_cv_terminfo=yes
2799 ],[
2800 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2801 ])
2802 ])
2803
2804if test "x$vim_cv_terminfo" = "xyes" ; then
2805 AC_DEFINE(TERMINFO)
2806fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002807
2808if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002809 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2810 [
2811 AC_RUN_IFELSE([[
2812#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002813#ifdef HAVE_TERMCAP_H
2814# include <termcap.h>
2815#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002816#if STDC_HEADERS
2817# include <stdlib.h>
2818# include <stddef.h>
2819#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002821{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2822 ]],[
2823 vim_cv_tgent=zero
2824 ],[
2825 vim_cv_tgent=non-zero
2826 ],[
2827 AC_MSG_ERROR(failed to compile test program.)
2828 ])
2829 ])
2830
2831 if test "x$vim_cv_tgent" = "xzero" ; then
2832 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2833 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002834fi
2835
2836AC_MSG_CHECKING(whether termcap.h contains ospeed)
2837AC_TRY_LINK([
2838#ifdef HAVE_TERMCAP_H
2839# include <termcap.h>
2840#endif
2841 ], [ospeed = 20000],
2842 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2843 [AC_MSG_RESULT(no)
2844 AC_MSG_CHECKING(whether ospeed can be extern)
2845 AC_TRY_LINK([
2846#ifdef HAVE_TERMCAP_H
2847# include <termcap.h>
2848#endif
2849extern short ospeed;
2850 ], [ospeed = 20000],
2851 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2852 AC_MSG_RESULT(no))]
2853 )
2854
2855AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2856AC_TRY_LINK([
2857#ifdef HAVE_TERMCAP_H
2858# include <termcap.h>
2859#endif
2860 ], [if (UP == 0 && BC == 0) PC = 1],
2861 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2862 [AC_MSG_RESULT(no)
2863 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2864 AC_TRY_LINK([
2865#ifdef HAVE_TERMCAP_H
2866# include <termcap.h>
2867#endif
2868extern char *UP, *BC, PC;
2869 ], [if (UP == 0 && BC == 0) PC = 1],
2870 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2871 AC_MSG_RESULT(no))]
2872 )
2873
2874AC_MSG_CHECKING(whether tputs() uses outfuntype)
2875AC_TRY_COMPILE([
2876#ifdef HAVE_TERMCAP_H
2877# include <termcap.h>
2878#endif
2879 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2880 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2881 AC_MSG_RESULT(no))
2882
2883dnl On some SCO machines sys/select redefines struct timeval
2884AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2885AC_TRY_COMPILE([
2886#include <sys/types.h>
2887#include <sys/time.h>
2888#include <sys/select.h>], ,
2889 AC_MSG_RESULT(yes)
2890 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2891 AC_MSG_RESULT(no))
2892
2893dnl AC_DECL_SYS_SIGLIST
2894
2895dnl Checks for pty.c (copied from screen) ==========================
2896AC_MSG_CHECKING(for /dev/ptc)
2897if test -r /dev/ptc; then
2898 AC_DEFINE(HAVE_DEV_PTC)
2899 AC_MSG_RESULT(yes)
2900else
2901 AC_MSG_RESULT(no)
2902fi
2903
2904AC_MSG_CHECKING(for SVR4 ptys)
2905if test -c /dev/ptmx ; then
2906 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2907 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2908 AC_MSG_RESULT(no))
2909else
2910 AC_MSG_RESULT(no)
2911fi
2912
2913AC_MSG_CHECKING(for ptyranges)
2914if test -d /dev/ptym ; then
2915 pdir='/dev/ptym'
2916else
2917 pdir='/dev'
2918fi
2919dnl SCO uses ptyp%d
2920AC_EGREP_CPP(yes,
2921[#ifdef M_UNIX
2922 yes;
2923#endif
2924 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2925dnl if test -c /dev/ptyp19; then
2926dnl ptys=`echo /dev/ptyp??`
2927dnl else
2928dnl ptys=`echo $pdir/pty??`
2929dnl fi
2930if test "$ptys" != "$pdir/pty??" ; then
2931 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2932 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2933 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2934 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2935 AC_MSG_RESULT([$p0 / $p1])
2936else
2937 AC_MSG_RESULT([don't know])
2938fi
2939
2940dnl **** pty mode/group handling ****
2941dnl
2942dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002943rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002944AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2945 [
2946 AC_RUN_IFELSE([[
2947#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002948#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002949#if STDC_HEADERS
2950# include <stdlib.h>
2951# include <stddef.h>
2952#endif
2953#ifdef HAVE_UNISTD_H
2954#include <unistd.h>
2955#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002956#include <sys/stat.h>
2957#include <stdio.h>
2958main()
2959{
2960 struct stat sb;
2961 char *x,*ttyname();
2962 int om, m;
2963 FILE *fp;
2964
2965 if (!(x = ttyname(0))) exit(1);
2966 if (stat(x, &sb)) exit(1);
2967 om = sb.st_mode;
2968 if (om & 002) exit(0);
2969 m = system("mesg y");
2970 if (m == -1 || m == 127) exit(1);
2971 if (stat(x, &sb)) exit(1);
2972 m = sb.st_mode;
2973 if (chmod(x, om)) exit(1);
2974 if (m & 002) exit(0);
2975 if (sb.st_gid == getgid()) exit(1);
2976 if (!(fp=fopen("conftest_grp", "w")))
2977 exit(1);
2978 fprintf(fp, "%d\n", sb.st_gid);
2979 fclose(fp);
2980 exit(0);
2981}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002982 ]],[
2983 if test -f conftest_grp; then
2984 vim_cv_tty_group=`cat conftest_grp`
2985 if test "x$vim_cv_tty_mode" = "x" ; then
2986 vim_cv_tty_mode=0620
2987 fi
2988 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2989 else
2990 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002991 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002992 fi
2993 ],[
2994 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002995 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002996 ],[
2997 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2998 ])
2999 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003000rm -f conftest_grp
3001
Bram Moolenaar446cb832008-06-24 21:56:24 +00003002if test "x$vim_cv_tty_group" != "xworld" ; then
3003 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3004 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003005 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003006 else
3007 AC_DEFINE(PTYMODE, 0620)
3008 fi
3009fi
3010
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011dnl Checks for library functions. ===================================
3012
3013AC_TYPE_SIGNAL
3014
3015dnl find out what to use at the end of a signal function
3016if test $ac_cv_type_signal = void; then
3017 AC_DEFINE(SIGRETURN, [return])
3018else
3019 AC_DEFINE(SIGRETURN, [return 0])
3020fi
3021
3022dnl check if struct sigcontext is defined (used for SGI only)
3023AC_MSG_CHECKING(for struct sigcontext)
3024AC_TRY_COMPILE([
3025#include <signal.h>
3026test_sig()
3027{
3028 struct sigcontext *scont;
3029 scont = (struct sigcontext *)0;
3030 return 1;
3031} ], ,
3032 AC_MSG_RESULT(yes)
3033 AC_DEFINE(HAVE_SIGCONTEXT),
3034 AC_MSG_RESULT(no))
3035
3036dnl tricky stuff: try to find out if getcwd() is implemented with
3037dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003038AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3039 [
3040 AC_RUN_IFELSE([[
3041#include "confdefs.h"
3042#ifdef HAVE_UNISTD_H
3043#include <unistd.h>
3044#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003045char *dagger[] = { "IFS=pwd", 0 };
3046main()
3047{
3048 char buffer[500];
3049 extern char **environ;
3050 environ = dagger;
3051 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052}
3053 ]],[
3054 vim_cv_getcwd_broken=no
3055 ],[
3056 vim_cv_getcwd_broken=yes
3057 ],[
3058 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3059 ])
3060 ])
3061
3062if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3063 AC_DEFINE(BAD_GETCWD)
3064fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003065
Bram Moolenaar25153e12010-02-24 14:47:08 +01003066dnl Check for functions in one big call, to reduce the size of configure.
3067dnl Can only be used for functions that do not require any include.
3068AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003069 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003070 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003071 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003072 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003073 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3074 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003075AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003076
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003077dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3078dnl appropriate, so that off_t is 64 bits when needed.
3079AC_SYS_LARGEFILE
3080
Bram Moolenaar071d4272004-06-13 20:20:40 +00003081dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3082AC_MSG_CHECKING(for st_blksize)
3083AC_TRY_COMPILE(
3084[#include <sys/types.h>
3085#include <sys/stat.h>],
3086[ struct stat st;
3087 int n;
3088
3089 stat("/", &st);
3090 n = (int)st.st_blksize;],
3091 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3092 AC_MSG_RESULT(no))
3093
Bram Moolenaar446cb832008-06-24 21:56:24 +00003094AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3095 [
3096 AC_RUN_IFELSE([[
3097#include "confdefs.h"
3098#if STDC_HEADERS
3099# include <stdlib.h>
3100# include <stddef.h>
3101#endif
3102#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003103#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003104main() {struct stat st; exit(stat("configure/", &st) != 0); }
3105 ]],[
3106 vim_cv_stat_ignores_slash=yes
3107 ],[
3108 vim_cv_stat_ignores_slash=no
3109 ],[
3110 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3111 ])
3112 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113
Bram Moolenaar446cb832008-06-24 21:56:24 +00003114if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3115 AC_DEFINE(STAT_IGNORES_SLASH)
3116fi
3117
Bram Moolenaar071d4272004-06-13 20:20:40 +00003118dnl Link with iconv for charset translation, if not found without library.
3119dnl check for iconv() requires including iconv.h
3120dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3121dnl has been installed.
3122AC_MSG_CHECKING(for iconv_open())
3123save_LIBS="$LIBS"
3124LIBS="$LIBS -liconv"
3125AC_TRY_LINK([
3126#ifdef HAVE_ICONV_H
3127# include <iconv.h>
3128#endif
3129 ], [iconv_open("fr", "to");],
3130 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3131 LIBS="$save_LIBS"
3132 AC_TRY_LINK([
3133#ifdef HAVE_ICONV_H
3134# include <iconv.h>
3135#endif
3136 ], [iconv_open("fr", "to");],
3137 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3138 AC_MSG_RESULT(no)))
3139
3140
3141AC_MSG_CHECKING(for nl_langinfo(CODESET))
3142AC_TRY_LINK([
3143#ifdef HAVE_LANGINFO_H
3144# include <langinfo.h>
3145#endif
3146], [char *cs = nl_langinfo(CODESET);],
3147 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3148 AC_MSG_RESULT(no))
3149
Bram Moolenaar446cb832008-06-24 21:56:24 +00003150dnl Need various functions for floating point support. Only enable
3151dnl floating point when they are all present.
3152AC_CHECK_LIB(m, strtod)
3153AC_MSG_CHECKING([for strtod() and other floating point functions])
3154AC_TRY_LINK([
3155#ifdef HAVE_MATH_H
3156# include <math.h>
3157#endif
3158#if STDC_HEADERS
3159# include <stdlib.h>
3160# include <stddef.h>
3161#endif
3162], [char *s; double d;
3163 d = strtod("1.1", &s);
3164 d = fabs(1.11);
3165 d = ceil(1.11);
3166 d = floor(1.11);
3167 d = log10(1.11);
3168 d = pow(1.11, 2.22);
3169 d = sqrt(1.11);
3170 d = sin(1.11);
3171 d = cos(1.11);
3172 d = atan(1.11);
3173 ],
3174 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3175 AC_MSG_RESULT(no))
3176
Bram Moolenaar071d4272004-06-13 20:20:40 +00003177dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3178dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003179dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003180AC_MSG_CHECKING(--disable-acl argument)
3181AC_ARG_ENABLE(acl,
3182 [ --disable-acl Don't check for ACL support.],
3183 , [enable_acl="yes"])
3184if test "$enable_acl" = "yes"; then
3185AC_MSG_RESULT(no)
3186AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3187 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3188 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3189
3190AC_MSG_CHECKING(for POSIX ACL support)
3191AC_TRY_LINK([
3192#include <sys/types.h>
3193#ifdef HAVE_SYS_ACL_H
3194# include <sys/acl.h>
3195#endif
3196acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3197 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3198 acl_free(acl);],
3199 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3200 AC_MSG_RESULT(no))
3201
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003202AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003203AC_MSG_CHECKING(for Solaris ACL support)
3204AC_TRY_LINK([
3205#ifdef HAVE_SYS_ACL_H
3206# include <sys/acl.h>
3207#endif], [acl("foo", GETACLCNT, 0, NULL);
3208 ],
3209 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003210 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003211
3212AC_MSG_CHECKING(for AIX ACL support)
3213AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003214#if STDC_HEADERS
3215# include <stdlib.h>
3216# include <stddef.h>
3217#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003218#ifdef HAVE_SYS_ACL_H
3219# include <sys/acl.h>
3220#endif
3221#ifdef HAVE_SYS_ACCESS_H
3222# include <sys/access.h>
3223#endif
3224#define _ALL_SOURCE
3225
3226#include <sys/stat.h>
3227
3228int aclsize;
3229struct acl *aclent;], [aclsize = sizeof(struct acl);
3230 aclent = (void *)malloc(aclsize);
3231 statacl("foo", STX_NORMAL, aclent, aclsize);
3232 ],
3233 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3234 AC_MSG_RESULT(no))
3235else
3236 AC_MSG_RESULT(yes)
3237fi
3238
3239AC_MSG_CHECKING(--disable-gpm argument)
3240AC_ARG_ENABLE(gpm,
3241 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3242 [enable_gpm="yes"])
3243
3244if test "$enable_gpm" = "yes"; then
3245 AC_MSG_RESULT(no)
3246 dnl Checking if gpm support can be compiled
3247 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3248 [olibs="$LIBS" ; LIBS="-lgpm"]
3249 AC_TRY_LINK(
3250 [#include <gpm.h>
3251 #include <linux/keyboard.h>],
3252 [Gpm_GetLibVersion(NULL);],
3253 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3254 dnl FEAT_MOUSE_GPM if mouse support is included
3255 [vi_cv_have_gpm=yes],
3256 [vi_cv_have_gpm=no])
3257 [LIBS="$olibs"]
3258 )
3259 if test $vi_cv_have_gpm = yes; then
3260 LIBS="$LIBS -lgpm"
3261 AC_DEFINE(HAVE_GPM)
3262 fi
3263else
3264 AC_MSG_RESULT(yes)
3265fi
3266
Bram Moolenaar446cb832008-06-24 21:56:24 +00003267AC_MSG_CHECKING(--disable-sysmouse argument)
3268AC_ARG_ENABLE(sysmouse,
3269 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3270 [enable_sysmouse="yes"])
3271
3272if test "$enable_sysmouse" = "yes"; then
3273 AC_MSG_RESULT(no)
3274 dnl Checking if sysmouse support can be compiled
3275 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3276 dnl defines FEAT_SYSMOUSE if mouse support is included
3277 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3278 AC_TRY_LINK(
3279 [#include <sys/consio.h>
3280 #include <signal.h>
3281 #include <sys/fbio.h>],
3282 [struct mouse_info mouse;
3283 mouse.operation = MOUSE_MODE;
3284 mouse.operation = MOUSE_SHOW;
3285 mouse.u.mode.mode = 0;
3286 mouse.u.mode.signal = SIGUSR2;],
3287 [vi_cv_have_sysmouse=yes],
3288 [vi_cv_have_sysmouse=no])
3289 )
3290 if test $vi_cv_have_sysmouse = yes; then
3291 AC_DEFINE(HAVE_SYSMOUSE)
3292 fi
3293else
3294 AC_MSG_RESULT(yes)
3295fi
3296
Bram Moolenaarf05da212009-11-17 16:13:15 +00003297dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3298AC_MSG_CHECKING(for FD_CLOEXEC)
3299AC_TRY_COMPILE(
3300[#if HAVE_FCNTL_H
3301# include <fcntl.h>
3302#endif],
3303[ int flag = FD_CLOEXEC;],
3304 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3305 AC_MSG_RESULT(not usable))
3306
Bram Moolenaar071d4272004-06-13 20:20:40 +00003307dnl rename needs to be checked separately to work on Nextstep with cc
3308AC_MSG_CHECKING(for rename)
3309AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3310 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3311 AC_MSG_RESULT(no))
3312
3313dnl sysctl() may exist but not the arguments we use
3314AC_MSG_CHECKING(for sysctl)
3315AC_TRY_COMPILE(
3316[#include <sys/types.h>
3317#include <sys/sysctl.h>],
3318[ int mib[2], r;
3319 size_t len;
3320
3321 mib[0] = CTL_HW;
3322 mib[1] = HW_USERMEM;
3323 len = sizeof(r);
3324 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3325 ],
3326 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3327 AC_MSG_RESULT(not usable))
3328
3329dnl sysinfo() may exist but not be Linux compatible
3330AC_MSG_CHECKING(for sysinfo)
3331AC_TRY_COMPILE(
3332[#include <sys/types.h>
3333#include <sys/sysinfo.h>],
3334[ struct sysinfo sinfo;
3335 int t;
3336
3337 (void)sysinfo(&sinfo);
3338 t = sinfo.totalram;
3339 ],
3340 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3341 AC_MSG_RESULT(not usable))
3342
Bram Moolenaar914572a2007-05-01 11:37:47 +00003343dnl struct sysinfo may have the mem_unit field or not
3344AC_MSG_CHECKING(for sysinfo.mem_unit)
3345AC_TRY_COMPILE(
3346[#include <sys/types.h>
3347#include <sys/sysinfo.h>],
3348[ struct sysinfo sinfo;
3349 sinfo.mem_unit = 1;
3350 ],
3351 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3352 AC_MSG_RESULT(no))
3353
Bram Moolenaar071d4272004-06-13 20:20:40 +00003354dnl sysconf() may exist but not support what we want to use
3355AC_MSG_CHECKING(for sysconf)
3356AC_TRY_COMPILE(
3357[#include <unistd.h>],
3358[ (void)sysconf(_SC_PAGESIZE);
3359 (void)sysconf(_SC_PHYS_PAGES);
3360 ],
3361 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3362 AC_MSG_RESULT(not usable))
3363
Bram Moolenaar914703b2010-05-31 21:59:46 +02003364AC_CHECK_SIZEOF([int])
3365AC_CHECK_SIZEOF([long])
3366AC_CHECK_SIZEOF([time_t])
3367AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003368
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003369dnl Make sure that uint32_t is really 32 bits unsigned.
3370AC_MSG_CHECKING([uint32_t is 32 bits])
3371AC_TRY_RUN([
3372#ifdef HAVE_STDINT_H
3373# include <stdint.h>
3374#endif
3375#ifdef HAVE_INTTYPES_H
3376# include <inttypes.h>
3377#endif
3378main() {
3379 uint32_t nr1 = (uint32_t)-1;
3380 uint32_t nr2 = (uint32_t)0xffffffffUL;
3381 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3382 exit(0);
3383}],
3384AC_MSG_RESULT(ok),
3385AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003386AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003387
Bram Moolenaar446cb832008-06-24 21:56:24 +00003388dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3389dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3390
Bram Moolenaar071d4272004-06-13 20:20:40 +00003391[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003392#include "confdefs.h"
3393#ifdef HAVE_STRING_H
3394# include <string.h>
3395#endif
3396#if STDC_HEADERS
3397# include <stdlib.h>
3398# include <stddef.h>
3399#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003400main() {
3401 char buf[10];
3402 strcpy(buf, "abcdefghi");
3403 mch_memmove(buf, buf + 2, 3);
3404 if (strncmp(buf, "ababcf", 6))
3405 exit(1);
3406 strcpy(buf, "abcdefghi");
3407 mch_memmove(buf + 2, buf, 3);
3408 if (strncmp(buf, "cdedef", 6))
3409 exit(1);
3410 exit(0); /* libc version works properly. */
3411}']
3412
Bram Moolenaar446cb832008-06-24 21:56:24 +00003413AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3414 [
3415 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3416 [
3417 vim_cv_memmove_handles_overlap=yes
3418 ],[
3419 vim_cv_memmove_handles_overlap=no
3420 ],[
3421 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3422 ])
3423 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003424
Bram Moolenaar446cb832008-06-24 21:56:24 +00003425if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3426 AC_DEFINE(USEMEMMOVE)
3427else
3428 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3429 [
3430 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3431 [
3432 vim_cv_bcopy_handles_overlap=yes
3433 ],[
3434 vim_cv_bcopy_handles_overlap=no
3435 ],[
3436 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3437 ])
3438 ])
3439
3440 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3441 AC_DEFINE(USEBCOPY)
3442 else
3443 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3444 [
3445 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3446 [
3447 vim_cv_memcpy_handles_overlap=yes
3448 ],[
3449 vim_cv_memcpy_handles_overlap=no
3450 ],[
3451 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3452 ])
3453 ])
3454
3455 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3456 AC_DEFINE(USEMEMCPY)
3457 fi
3458 fi
3459fi
3460
Bram Moolenaar071d4272004-06-13 20:20:40 +00003461
3462dnl Check for multibyte locale functions
3463dnl Find out if _Xsetlocale() is supported by libX11.
3464dnl Check if X_LOCALE should be defined.
3465
3466if test "$enable_multibyte" = "yes"; then
3467 cflags_save=$CFLAGS
3468 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003469 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003470 CFLAGS="$CFLAGS -I$x_includes"
3471 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3472 AC_MSG_CHECKING(whether X_LOCALE needed)
3473 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3474 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3475 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3476 AC_MSG_RESULT(no))
3477 fi
3478 CFLAGS=$cflags_save
3479 LDFLAGS=$ldflags_save
3480fi
3481
3482dnl Link with xpg4, it is said to make Korean locale working
3483AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3484
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003485dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003486dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003487dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003488dnl -t for typedefs (many ctags have this)
3489dnl -s for static functions (Elvis ctags only?)
3490dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3491dnl -i+m to test for older Exuberant ctags
3492AC_MSG_CHECKING(how to create tags)
3493test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003494if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003495 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003496elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3497 TAGPRG="exctags -I INIT+ --fields=+S"
3498elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3499 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003500else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003501 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003502 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3503 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3504 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3505 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3506 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3507 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3508 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3509fi
3510test -f tags.save && mv tags.save tags
3511AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3512
3513dnl Check how we can run man with a section number
3514AC_MSG_CHECKING(how to run man with a section nr)
3515MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003516(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 +00003517AC_MSG_RESULT($MANDEF)
3518if test "$MANDEF" = "man -s"; then
3519 AC_DEFINE(USEMAN_S)
3520fi
3521
3522dnl Check if gettext() is working and if it needs -lintl
3523AC_MSG_CHECKING(--disable-nls argument)
3524AC_ARG_ENABLE(nls,
3525 [ --disable-nls Don't support NLS (gettext()).], ,
3526 [enable_nls="yes"])
3527
3528if test "$enable_nls" = "yes"; then
3529 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003530
3531 INSTALL_LANGS=install-languages
3532 AC_SUBST(INSTALL_LANGS)
3533 INSTALL_TOOL_LANGS=install-tool-languages
3534 AC_SUBST(INSTALL_TOOL_LANGS)
3535
Bram Moolenaar071d4272004-06-13 20:20:40 +00003536 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3537 AC_MSG_CHECKING([for NLS])
3538 if test -f po/Makefile; then
3539 have_gettext="no"
3540 if test -n "$MSGFMT"; then
3541 AC_TRY_LINK(
3542 [#include <libintl.h>],
3543 [gettext("Test");],
3544 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3545 olibs=$LIBS
3546 LIBS="$LIBS -lintl"
3547 AC_TRY_LINK(
3548 [#include <libintl.h>],
3549 [gettext("Test");],
3550 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3551 AC_MSG_RESULT([gettext() doesn't work]);
3552 LIBS=$olibs))
3553 else
3554 AC_MSG_RESULT([msgfmt not found - disabled]);
3555 fi
3556 if test $have_gettext = "yes"; then
3557 AC_DEFINE(HAVE_GETTEXT)
3558 MAKEMO=yes
3559 AC_SUBST(MAKEMO)
3560 dnl this was added in GNU gettext 0.10.36
3561 AC_CHECK_FUNCS(bind_textdomain_codeset)
3562 dnl _nl_msg_cat_cntr is required for GNU gettext
3563 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3564 AC_TRY_LINK(
3565 [#include <libintl.h>
3566 extern int _nl_msg_cat_cntr;],
3567 [++_nl_msg_cat_cntr;],
3568 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3569 AC_MSG_RESULT([no]))
3570 fi
3571 else
3572 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3573 fi
3574else
3575 AC_MSG_RESULT(yes)
3576fi
3577
3578dnl Check for dynamic linking loader
3579AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3580if test x${DLL} = xdlfcn.h; then
3581 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3582 AC_MSG_CHECKING([for dlopen()])
3583 AC_TRY_LINK(,[
3584 extern void* dlopen();
3585 dlopen();
3586 ],
3587 AC_MSG_RESULT(yes);
3588 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3589 AC_MSG_RESULT(no);
3590 AC_MSG_CHECKING([for dlopen() in -ldl])
3591 olibs=$LIBS
3592 LIBS="$LIBS -ldl"
3593 AC_TRY_LINK(,[
3594 extern void* dlopen();
3595 dlopen();
3596 ],
3597 AC_MSG_RESULT(yes);
3598 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3599 AC_MSG_RESULT(no);
3600 LIBS=$olibs))
3601 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3602 dnl ick :-)
3603 AC_MSG_CHECKING([for dlsym()])
3604 AC_TRY_LINK(,[
3605 extern void* dlsym();
3606 dlsym();
3607 ],
3608 AC_MSG_RESULT(yes);
3609 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3610 AC_MSG_RESULT(no);
3611 AC_MSG_CHECKING([for dlsym() in -ldl])
3612 olibs=$LIBS
3613 LIBS="$LIBS -ldl"
3614 AC_TRY_LINK(,[
3615 extern void* dlsym();
3616 dlsym();
3617 ],
3618 AC_MSG_RESULT(yes);
3619 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3620 AC_MSG_RESULT(no);
3621 LIBS=$olibs))
3622elif test x${DLL} = xdl.h; then
3623 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3624 AC_MSG_CHECKING([for shl_load()])
3625 AC_TRY_LINK(,[
3626 extern void* shl_load();
3627 shl_load();
3628 ],
3629 AC_MSG_RESULT(yes);
3630 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3631 AC_MSG_RESULT(no);
3632 AC_MSG_CHECKING([for shl_load() in -ldld])
3633 olibs=$LIBS
3634 LIBS="$LIBS -ldld"
3635 AC_TRY_LINK(,[
3636 extern void* shl_load();
3637 shl_load();
3638 ],
3639 AC_MSG_RESULT(yes);
3640 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3641 AC_MSG_RESULT(no);
3642 LIBS=$olibs))
3643fi
3644AC_CHECK_HEADERS(setjmp.h)
3645
3646if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3647 dnl -ldl must come after DynaLoader.a
3648 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3649 LIBS=`echo $LIBS | sed s/-ldl//`
3650 PERL_LIBS="$PERL_LIBS -ldl"
3651 fi
3652fi
3653
Bram Moolenaar164fca32010-07-14 13:58:07 +02003654if test "x$MACOSX" = "xyes"; then
3655 AC_MSG_CHECKING(whether we need -framework Cocoa)
3656 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3657 dnl disabled during tiny build)
3658 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3659 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003660 AC_MSG_RESULT(yes)
3661 else
3662 AC_MSG_RESULT(no)
3663 fi
3664fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003665if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003666 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003667fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003668
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003669dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3670dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3671dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003672dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3673dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003674DEPEND_CFLAGS_FILTER=
3675if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003676 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003677 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003678 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003679 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003680 AC_MSG_RESULT(yes)
3681 else
3682 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003683 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003684 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3685 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003686 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003687 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003688 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3689 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003690 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 +00003691 AC_MSG_RESULT(yes)
3692 else
3693 AC_MSG_RESULT(no)
3694 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003695fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003696AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003697
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003698dnl link.sh tries to avoid overlinking in a hackish way.
3699dnl At least GNU ld supports --as-needed which provides the same functionality
3700dnl at linker level. Let's use it.
3701AC_MSG_CHECKING(linker --as-needed support)
3702LINK_AS_NEEDED=
3703# Check if linker supports --as-needed and --no-as-needed options
3704if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3705 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3706 LINK_AS_NEEDED=yes
3707fi
3708if test "$LINK_AS_NEEDED" = yes; then
3709 AC_MSG_RESULT(yes)
3710else
3711 AC_MSG_RESULT(no)
3712fi
3713AC_SUBST(LINK_AS_NEEDED)
3714
Bram Moolenaar77c19352012-06-13 19:19:41 +02003715# IBM z/OS reset CFLAGS for config.mk
3716if test "$zOSUnix" = "yes"; then
3717 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3718fi
3719
Bram Moolenaar071d4272004-06-13 20:20:40 +00003720dnl write output files
3721AC_OUTPUT(auto/config.mk:config.mk.in)
3722
3723dnl vim: set sw=2 tw=78 fo+=l: