blob: 2ff0f90a1a0512f3f9280875a57fdbbea724661a [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
458 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
459 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200460 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200461 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200462 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200463 dnl -- try to find Lua executable
464 AC_PATH_PROG(vi_cv_path_lua, lua)
465 if test "X$vi_cv_path_lua" != "X"; then
466 dnl -- find Lua version
467 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200468 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200469 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
470 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200471 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200472 LUA_INC=/lua$vi_cv_version_lua
473 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200474 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200475 vi_cv_path_lua_pfx=
476 fi
477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
482 if test "X$vi_cv_version_lua" != "X"; then
483 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 Moolenaar8220a682010-07-25 13:12:49 +0200494 dnl Determine the SONAME for the current version, but fallback to
495 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
496 for i in 0 1 2 3 4 5 6 7 8 9; do
497 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
498 LUA_SONAME=".$i"
499 break
500 fi
501 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200502 AC_DEFINE(DYNAMIC_LUA)
503 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200504 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200505 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200506 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100507 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
508 AC_MSG_ERROR([could not configure lua])
509 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200510 AC_SUBST(LUA_SRC)
511 AC_SUBST(LUA_OBJ)
512 AC_SUBST(LUA_PRO)
513 AC_SUBST(LUA_LIBS)
514 AC_SUBST(LUA_CFLAGS)
515fi
516
517
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000518dnl Check for MzScheme feature.
519AC_MSG_CHECKING(--enable-mzschemeinterp argument)
520AC_ARG_ENABLE(mzschemeinterp,
521 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
522 [enable_mzschemeinterp="no"])
523AC_MSG_RESULT($enable_mzschemeinterp)
524
525if test "$enable_mzschemeinterp" = "yes"; then
526 dnl -- find the mzscheme executable
527 AC_SUBST(vi_cv_path_mzscheme)
528
529 AC_MSG_CHECKING(--with-plthome argument)
530 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000531 [ --with-plthome=PLTHOME Use PLTHOME.],
532 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000533 with_plthome="";AC_MSG_RESULT("no"))
534
535 if test "X$with_plthome" != "X"; then
536 vi_cv_path_mzscheme_pfx="$with_plthome"
537 else
538 AC_MSG_CHECKING(PLTHOME environment var)
539 if test "X$PLTHOME" != "X"; then
540 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000541 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000542 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000544 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000545 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000546
547 dnl resolve symbolic link, the executable is often elsewhere and there
548 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000549 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000550 lsout=`ls -l $vi_cv_path_mzscheme`
551 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
552 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
553 fi
554 fi
555
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000556 if test "X$vi_cv_path_mzscheme" != "X"; then
557 dnl -- find where MzScheme thinks it was installed
558 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 dnl different versions of MzScheme differ in command line processing
560 dnl use universal approach
561 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000562 (build-path (call-with-values \
563 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
565 dnl Remove a trailing slash
566 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
567 sed -e 's+/$++'` ])
568 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000569 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000570 fi
571 fi
572
Bram Moolenaard7afed32007-05-06 13:26:41 +0000573 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000574 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
575 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
576 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000577 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
578 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000579 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 AC_MSG_RESULT(no)
581 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000582 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000583 AC_MSG_RESULT(yes)
584 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000585 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000586 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100587 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
588 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000589 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100590 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000591 else
592 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100593 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
594 if test -f /usr/include/plt/scheme.h; then
595 AC_MSG_RESULT(yes)
596 SCHEME_INC=/usr/include/plt
597 else
598 AC_MSG_RESULT(no)
599 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
600 if test -f /usr/include/racket/scheme.h; then
601 AC_MSG_RESULT(yes)
602 SCHEME_INC=/usr/include/racket
603 else
604 AC_MSG_RESULT(no)
605 vi_cv_path_mzscheme_pfx=
606 fi
607 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000608 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000609 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000610 fi
611 fi
612
613 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000614 if test "x$MACOSX" = "xyes"; then
615 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000616 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
617 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
618 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100619 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
620 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
621 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
622 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
623 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000625 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 +0000626 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000627 dnl Using shared objects
628 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
629 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
630 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100631 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
632 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
633 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
634 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
635 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000636 else
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
638 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000639 if test "$GCC" = yes; then
640 dnl Make Vim remember the path to the library. For when it's not in
641 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000642 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000643 elif test "`(uname) 2>/dev/null`" = SunOS &&
644 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000645 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000646 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000647 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000648 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
649 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100650 else
651 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
652 SCHEME_COLLECTS=lib/racket/
653 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000654 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000655 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000656 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100657 else
658 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
659 MZSCHEME_EXTRA="mzscheme_base.c"
660 fi
661 fi
662 if test "X$MZSCHEME_EXTRA" != "X" ; then
663 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000664 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
665 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
666 fi
667 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000668 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000669 MZSCHEME_SRC="if_mzsch.c"
670 MZSCHEME_OBJ="objects/if_mzsch.o"
671 MZSCHEME_PRO="if_mzsch.pro"
672 AC_DEFINE(FEAT_MZSCHEME)
673 fi
674 AC_SUBST(MZSCHEME_SRC)
675 AC_SUBST(MZSCHEME_OBJ)
676 AC_SUBST(MZSCHEME_PRO)
677 AC_SUBST(MZSCHEME_LIBS)
678 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000679 AC_SUBST(MZSCHEME_EXTRA)
680 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000681fi
682
683
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684AC_MSG_CHECKING(--enable-perlinterp argument)
685AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200686 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000687 [enable_perlinterp="no"])
688AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200689if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000690 AC_SUBST(vi_cv_path_perl)
691 AC_PATH_PROG(vi_cv_path_perl, perl)
692 if test "X$vi_cv_path_perl" != "X"; then
693 AC_MSG_CHECKING(Perl version)
694 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
695 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200696 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000697 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
698 badthreads=no
699 else
700 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
701 eval `$vi_cv_path_perl -V:use5005threads`
702 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
703 badthreads=no
704 else
705 badthreads=yes
706 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
707 fi
708 else
709 badthreads=yes
710 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
711 fi
712 fi
713 if test $badthreads = no; then
714 AC_MSG_RESULT(OK)
715 eval `$vi_cv_path_perl -V:shrpenv`
716 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
717 shrpenv=""
718 fi
719 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
720 AC_SUBST(vi_cv_perllib)
721 dnl Remove "-fno-something", it breaks using cproto.
722 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
723 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
724 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
725 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
726 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
727 -e 's/-bE:perl.exp//' -e 's/-lc //'`
728 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
729 dnl a test in configure may fail because of that.
730 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
731 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
732
733 dnl check that compiling a simple program still works with the flags
734 dnl added for Perl.
735 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
736 cflags_save=$CFLAGS
737 libs_save=$LIBS
738 ldflags_save=$LDFLAGS
739 CFLAGS="$CFLAGS $perlcppflags"
740 LIBS="$LIBS $perllibs"
741 LDFLAGS="$perlldflags $LDFLAGS"
742 AC_TRY_LINK(,[ ],
743 AC_MSG_RESULT(yes); perl_ok=yes,
744 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
745 CFLAGS=$cflags_save
746 LIBS=$libs_save
747 LDFLAGS=$ldflags_save
748 if test $perl_ok = yes; then
749 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000750 dnl remove -pipe and -Wxxx, it confuses cproto
751 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000752 fi
753 if test "X$perlldflags" != "X"; then
754 LDFLAGS="$perlldflags $LDFLAGS"
755 fi
756 PERL_LIBS=$perllibs
757 PERL_SRC="auto/if_perl.c if_perlsfio.c"
758 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
759 PERL_PRO="if_perl.pro if_perlsfio.pro"
760 AC_DEFINE(FEAT_PERL)
761 fi
762 fi
763 else
764 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
765 fi
766 fi
767
768 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000769 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000770 dir=/System/Library/Perl
771 darwindir=$dir/darwin
772 if test -d $darwindir; then
773 PERL=/usr/bin/perl
774 else
775 dnl Mac OS X 10.3
776 dir=/System/Library/Perl/5.8.1
777 darwindir=$dir/darwin-thread-multi-2level
778 if test -d $darwindir; then
779 PERL=/usr/bin/perl
780 fi
781 fi
782 if test -n "$PERL"; then
783 PERL_DIR="$dir"
784 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
785 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
786 PERL_LIBS="-L$darwindir/CORE -lperl"
787 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200788 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
789 dnl be included if requested by passing --with-mac-arch to
790 dnl configure, so strip these flags first (if present)
791 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
792 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 +0000793 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200794 if test "$enable_perlinterp" = "dynamic"; then
795 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
796 AC_DEFINE(DYNAMIC_PERL)
797 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
798 fi
799 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100800
801 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
802 AC_MSG_ERROR([could not configure perl])
803 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000804fi
805AC_SUBST(shrpenv)
806AC_SUBST(PERL_SRC)
807AC_SUBST(PERL_OBJ)
808AC_SUBST(PERL_PRO)
809AC_SUBST(PERL_CFLAGS)
810AC_SUBST(PERL_LIBS)
811
812AC_MSG_CHECKING(--enable-pythoninterp argument)
813AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200814 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 [enable_pythoninterp="no"])
816AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200817if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000818 dnl -- find the python executable
819 AC_PATH_PROG(vi_cv_path_python, python)
820 if test "X$vi_cv_path_python" != "X"; then
821
822 dnl -- get its version number
823 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
824 [[vi_cv_var_python_version=`
825 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
826 ]])
827
828 dnl -- it must be at least version 1.4
829 AC_MSG_CHECKING(Python is 1.4 or better)
830 if ${vi_cv_path_python} -c \
831 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
832 then
833 AC_MSG_RESULT(yep)
834
835 dnl -- find where python thinks it was installed
836 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
837 [ vi_cv_path_python_pfx=`
838 ${vi_cv_path_python} -c \
839 "import sys; print sys.prefix"` ])
840
841 dnl -- and where it thinks it runs
842 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
843 [ vi_cv_path_python_epfx=`
844 ${vi_cv_path_python} -c \
845 "import sys; print sys.exec_prefix"` ])
846
847 dnl -- python's internal library path
848
849 AC_CACHE_VAL(vi_cv_path_pythonpath,
850 [ vi_cv_path_pythonpath=`
851 unset PYTHONPATH;
852 ${vi_cv_path_python} -c \
853 "import sys, string; print string.join(sys.path,':')"` ])
854
855 dnl -- where the Python implementation library archives are
856
857 AC_ARG_WITH(python-config-dir,
858 [ --with-python-config-dir=PATH Python's config directory],
859 [ vi_cv_path_python_conf="${withval}" ] )
860
861 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
862 [
863 vi_cv_path_python_conf=
864 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000865 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000866 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
867 if test -d "$d" && test -f "$d/config.c"; then
868 vi_cv_path_python_conf="$d"
869 fi
870 done
871 done
872 ])
873
874 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
875
876 if test "X$PYTHON_CONFDIR" = "X"; then
877 AC_MSG_RESULT([can't find it!])
878 else
879
880 dnl -- we need to examine Python's config/Makefile too
881 dnl see what the interpreter is built from
882 AC_CACHE_VAL(vi_cv_path_python_plibs,
883 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000884 pwd=`pwd`
885 tmp_mkf="$pwd/config-PyMake$$"
886 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000887__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200888 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000889 @echo "python_LIBS='$(LIBS)'"
890 @echo "python_SYSLIBS='$(SYSLIBS)'"
891 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200892 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000893eof
894 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000895 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
896 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000897 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
898 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
899 vi_cv_path_python_plibs="-framework Python"
900 else
901 if test "${vi_cv_var_python_version}" = "1.4"; then
902 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
903 else
904 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
905 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200906 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 +0000907 dnl remove -ltermcap, it can conflict with an earlier -lncurses
908 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
909 fi
910 ])
911
912 PYTHON_LIBS="${vi_cv_path_python_plibs}"
913 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100914 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 +0000915 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100916 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 +0000917 fi
918 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200919 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000920 if test "${vi_cv_var_python_version}" = "1.4"; then
921 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
922 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100923 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 +0000924
925 dnl On FreeBSD linking with "-pthread" is required to use threads.
926 dnl _THREAD_SAFE must be used for compiling then.
927 dnl The "-pthread" is added to $LIBS, so that the following check for
928 dnl sigaltstack() will look in libc_r (it's there in libc!).
929 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
930 dnl will then define target-specific defines, e.g., -D_REENTRANT.
931 dnl Don't do this for Mac OSX, -pthread will generate a warning.
932 AC_MSG_CHECKING([if -pthread should be used])
933 threadsafe_flag=
934 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000935 dnl if test "x$MACOSX" != "xyes"; then
936 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937 test "$GCC" = yes && threadsafe_flag="-pthread"
938 if test "`(uname) 2>/dev/null`" = FreeBSD; then
939 threadsafe_flag="-D_THREAD_SAFE"
940 thread_lib="-pthread"
941 fi
942 fi
943 libs_save_old=$LIBS
944 if test -n "$threadsafe_flag"; then
945 cflags_save=$CFLAGS
946 CFLAGS="$CFLAGS $threadsafe_flag"
947 LIBS="$LIBS $thread_lib"
948 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200949 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000950 AC_MSG_RESULT(no); LIBS=$libs_save_old
951 )
952 CFLAGS=$cflags_save
953 else
954 AC_MSG_RESULT(no)
955 fi
956
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200957 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000958 dnl added for Python.
959 AC_MSG_CHECKING([if compile and link flags for Python are sane])
960 cflags_save=$CFLAGS
961 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200962 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963 LIBS="$LIBS $PYTHON_LIBS"
964 AC_TRY_LINK(,[ ],
965 AC_MSG_RESULT(yes); python_ok=yes,
966 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
967 CFLAGS=$cflags_save
968 LIBS=$libs_save
969 if test $python_ok = yes; then
970 AC_DEFINE(FEAT_PYTHON)
971 else
972 LIBS=$libs_save_old
973 PYTHON_SRC=
974 PYTHON_OBJ=
975 PYTHON_LIBS=
976 PYTHON_CFLAGS=
977 fi
978
979 fi
980 else
981 AC_MSG_RESULT(too old)
982 fi
983 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100984
985 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
986 AC_MSG_ERROR([could not configure python])
987 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000988fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200989
Bram Moolenaar071d4272004-06-13 20:20:40 +0000990AC_SUBST(PYTHON_CONFDIR)
991AC_SUBST(PYTHON_LIBS)
992AC_SUBST(PYTHON_GETPATH_CFLAGS)
993AC_SUBST(PYTHON_CFLAGS)
994AC_SUBST(PYTHON_SRC)
995AC_SUBST(PYTHON_OBJ)
996
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200997
998AC_MSG_CHECKING(--enable-python3interp argument)
999AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001000 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001001 [enable_python3interp="no"])
1002AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001003if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001004 dnl -- find the python3 executable
1005 AC_PATH_PROG(vi_cv_path_python3, python3)
1006 if test "X$vi_cv_path_python3" != "X"; then
1007
1008 dnl -- get its version number
1009 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1010 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001011 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001012 ]])
1013
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001014 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1015 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1016 [
1017 vi_cv_var_python3_abiflags=
1018 if ${vi_cv_path_python3} -c \
1019 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1020 then
1021 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1022 "import sys; print(sys.abiflags)"`
1023 fi ])
1024
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001025 dnl -- find where python3 thinks it was installed
1026 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1027 [ vi_cv_path_python3_pfx=`
1028 ${vi_cv_path_python3} -c \
1029 "import sys; print(sys.prefix)"` ])
1030
1031 dnl -- and where it thinks it runs
1032 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1033 [ vi_cv_path_python3_epfx=`
1034 ${vi_cv_path_python3} -c \
1035 "import sys; print(sys.exec_prefix)"` ])
1036
1037 dnl -- python3's internal library path
1038
1039 AC_CACHE_VAL(vi_cv_path_python3path,
1040 [ vi_cv_path_python3path=`
1041 unset PYTHONPATH;
1042 ${vi_cv_path_python3} -c \
1043 "import sys, string; print(':'.join(sys.path))"` ])
1044
1045 dnl -- where the Python implementation library archives are
1046
1047 AC_ARG_WITH(python3-config-dir,
1048 [ --with-python3-config-dir=PATH Python's config directory],
1049 [ vi_cv_path_python3_conf="${withval}" ] )
1050
1051 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1052 [
1053 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001054 config_dir="config"
1055 if test "${vi_cv_var_python3_abiflags}" != ""; then
1056 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1057 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001058 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001059 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001060 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001061 if test -d "$d" && test -f "$d/config.c"; then
1062 vi_cv_path_python3_conf="$d"
1063 fi
1064 done
1065 done
1066 ])
1067
1068 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1069
1070 if test "X$PYTHON3_CONFDIR" = "X"; then
1071 AC_MSG_RESULT([can't find it!])
1072 else
1073
1074 dnl -- we need to examine Python's config/Makefile too
1075 dnl see what the interpreter is built from
1076 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1077 [
1078 pwd=`pwd`
1079 tmp_mkf="$pwd/config-PyMake$$"
1080 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1081__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001082 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001083 @echo "python3_LIBS='$(LIBS)'"
1084 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001085 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001086eof
1087 dnl -- delete the lines from make about Entering/Leaving directory
1088 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1089 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001090 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 +02001091 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001092 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1093 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1094 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1095 ])
1096
1097 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1098 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001099 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 +02001100 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001101 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 +02001102 fi
1103 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001104 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001105
1106 dnl On FreeBSD linking with "-pthread" is required to use threads.
1107 dnl _THREAD_SAFE must be used for compiling then.
1108 dnl The "-pthread" is added to $LIBS, so that the following check for
1109 dnl sigaltstack() will look in libc_r (it's there in libc!).
1110 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1111 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1112 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1113 AC_MSG_CHECKING([if -pthread should be used])
1114 threadsafe_flag=
1115 thread_lib=
1116 dnl if test "x$MACOSX" != "xyes"; then
1117 if test "`(uname) 2>/dev/null`" != Darwin; then
1118 test "$GCC" = yes && threadsafe_flag="-pthread"
1119 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1120 threadsafe_flag="-D_THREAD_SAFE"
1121 thread_lib="-pthread"
1122 fi
1123 fi
1124 libs_save_old=$LIBS
1125 if test -n "$threadsafe_flag"; then
1126 cflags_save=$CFLAGS
1127 CFLAGS="$CFLAGS $threadsafe_flag"
1128 LIBS="$LIBS $thread_lib"
1129 AC_TRY_LINK(,[ ],
1130 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1131 AC_MSG_RESULT(no); LIBS=$libs_save_old
1132 )
1133 CFLAGS=$cflags_save
1134 else
1135 AC_MSG_RESULT(no)
1136 fi
1137
1138 dnl check that compiling a simple program still works with the flags
1139 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001140 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001141 cflags_save=$CFLAGS
1142 libs_save=$LIBS
1143 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1144 LIBS="$LIBS $PYTHON3_LIBS"
1145 AC_TRY_LINK(,[ ],
1146 AC_MSG_RESULT(yes); python3_ok=yes,
1147 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1148 CFLAGS=$cflags_save
1149 LIBS=$libs_save
1150 if test "$python3_ok" = yes; then
1151 AC_DEFINE(FEAT_PYTHON3)
1152 else
1153 LIBS=$libs_save_old
1154 PYTHON3_SRC=
1155 PYTHON3_OBJ=
1156 PYTHON3_LIBS=
1157 PYTHON3_CFLAGS=
1158 fi
1159 fi
1160 fi
1161fi
1162
1163AC_SUBST(PYTHON3_CONFDIR)
1164AC_SUBST(PYTHON3_LIBS)
1165AC_SUBST(PYTHON3_CFLAGS)
1166AC_SUBST(PYTHON3_SRC)
1167AC_SUBST(PYTHON3_OBJ)
1168
1169dnl if python2.x and python3.x are enabled one can only link in code
1170dnl with dlopen(), dlsym(), dlclose()
1171if test "$python_ok" = yes && test "$python3_ok" = yes; then
1172 AC_DEFINE(DYNAMIC_PYTHON)
1173 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001174 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001175 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001176 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001177 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001178 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1179 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001180 AC_RUN_IFELSE([
1181 #include <dlfcn.h>
1182 /* If this program fails, then RTLD_GLOBAL is needed.
1183 * RTLD_GLOBAL will be used and then it is not possible to
1184 * have both python versions enabled in the same vim instance.
1185 * Only the first pyhton version used will be switched on.
1186 */
1187
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001188 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001189 {
1190 int needed = 0;
1191 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1192 if (pylib != 0)
1193 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001194 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001195 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1196 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1197 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001198 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001199 (*init)();
1200 needed = (*simple)("import termios") == -1;
1201 (*final)();
1202 dlclose(pylib);
1203 }
1204 return !needed;
1205 }
1206
1207 int main(int argc, char** argv)
1208 {
1209 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001210 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001211 not_needed = 1;
1212 return !not_needed;
1213 }],
1214 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001215
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001216 CFLAGS=$cflags_save
1217 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001218
1219 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1220 cflags_save=$CFLAGS
1221 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1222 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001223 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1224 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001225 AC_RUN_IFELSE([
1226 #include <dlfcn.h>
1227 #include <wchar.h>
1228 /* If this program fails, then RTLD_GLOBAL is needed.
1229 * RTLD_GLOBAL will be used and then it is not possible to
1230 * have both python versions enabled in the same vim instance.
1231 * Only the first pyhton version used will be switched on.
1232 */
1233
1234 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1235 {
1236 int needed = 0;
1237 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1238 if (pylib != 0)
1239 {
1240 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1241 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1242 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1243 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1244 (*pfx)(prefix);
1245 (*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;
1256 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1257 not_needed = 1;
1258 return !not_needed;
1259 }],
1260 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1261
1262 CFLAGS=$cflags_save
1263 LDFLAGS=$ldflags_save
1264
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001265 PYTHON_SRC="if_python.c"
1266 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001267 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001268 PYTHON_LIBS=
1269 PYTHON3_SRC="if_python3.c"
1270 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001271 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001272 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001273elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1274 AC_DEFINE(DYNAMIC_PYTHON)
1275 PYTHON_SRC="if_python.c"
1276 PYTHON_OBJ="objects/if_python.o"
1277 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1278 PYTHON_LIBS=
1279elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1280 AC_DEFINE(DYNAMIC_PYTHON3)
1281 PYTHON3_SRC="if_python3.c"
1282 PYTHON3_OBJ="objects/if_python3.o"
1283 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1284 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001285fi
1286
Bram Moolenaar071d4272004-06-13 20:20:40 +00001287AC_MSG_CHECKING(--enable-tclinterp argument)
1288AC_ARG_ENABLE(tclinterp,
1289 [ --enable-tclinterp Include Tcl interpreter.], ,
1290 [enable_tclinterp="no"])
1291AC_MSG_RESULT($enable_tclinterp)
1292
1293if test "$enable_tclinterp" = "yes"; then
1294
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001295 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001296 AC_MSG_CHECKING(--with-tclsh argument)
1297 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1298 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001299 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001300 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1301 AC_SUBST(vi_cv_path_tcl)
1302
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001303 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1304 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1305 tclsh_name="tclsh8.4"
1306 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1307 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001308 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001309 tclsh_name="tclsh8.2"
1310 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1311 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001312 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1313 tclsh_name="tclsh8.0"
1314 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1315 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001316 dnl still didn't find it, try without version number
1317 if test "X$vi_cv_path_tcl" = "X"; then
1318 tclsh_name="tclsh"
1319 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1320 fi
1321 if test "X$vi_cv_path_tcl" != "X"; then
1322 AC_MSG_CHECKING(Tcl version)
1323 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1324 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1325 AC_MSG_RESULT($tclver - OK);
1326 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 -`
1327
1328 AC_MSG_CHECKING(for location of Tcl include)
1329 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001330 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 +00001331 else
1332 dnl For Mac OS X 10.3, use the OS-provided framework location
1333 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1334 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001335 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001336 for try in $tclinc; do
1337 if test -f "$try/tcl.h"; then
1338 AC_MSG_RESULT($try/tcl.h)
1339 TCL_INC=$try
1340 break
1341 fi
1342 done
1343 if test -z "$TCL_INC"; then
1344 AC_MSG_RESULT(<not found>)
1345 SKIP_TCL=YES
1346 fi
1347 if test -z "$SKIP_TCL"; then
1348 AC_MSG_CHECKING(for location of tclConfig.sh script)
1349 if test "x$MACOSX" != "xyes"; then
1350 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001351 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001352 else
1353 dnl For Mac OS X 10.3, use the OS-provided framework location
1354 tclcnf="/System/Library/Frameworks/Tcl.framework"
1355 fi
1356 for try in $tclcnf; do
1357 if test -f $try/tclConfig.sh; then
1358 AC_MSG_RESULT($try/tclConfig.sh)
1359 . $try/tclConfig.sh
1360 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1361 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1362 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001363 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001364 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 +00001365 break
1366 fi
1367 done
1368 if test -z "$TCL_LIBS"; then
1369 AC_MSG_RESULT(<not found>)
1370 AC_MSG_CHECKING(for Tcl library by myself)
1371 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001372 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001373 for ext in .so .a ; do
1374 for ver in "" $tclver ; do
1375 for try in $tcllib ; do
1376 trylib=tcl$ver$ext
1377 if test -f $try/lib$trylib ; then
1378 AC_MSG_RESULT($try/lib$trylib)
1379 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1380 if test "`(uname) 2>/dev/null`" = SunOS &&
1381 uname -r | grep '^5' >/dev/null; then
1382 TCL_LIBS="$TCL_LIBS -R $try"
1383 fi
1384 break 3
1385 fi
1386 done
1387 done
1388 done
1389 if test -z "$TCL_LIBS"; then
1390 AC_MSG_RESULT(<not found>)
1391 SKIP_TCL=YES
1392 fi
1393 fi
1394 if test -z "$SKIP_TCL"; then
1395 AC_DEFINE(FEAT_TCL)
1396 TCL_SRC=if_tcl.c
1397 TCL_OBJ=objects/if_tcl.o
1398 TCL_PRO=if_tcl.pro
1399 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1400 fi
1401 fi
1402 else
1403 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1404 fi
1405 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001406 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1407 AC_MSG_ERROR([could not configure Tcl])
1408 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001409fi
1410AC_SUBST(TCL_SRC)
1411AC_SUBST(TCL_OBJ)
1412AC_SUBST(TCL_PRO)
1413AC_SUBST(TCL_CFLAGS)
1414AC_SUBST(TCL_LIBS)
1415
1416AC_MSG_CHECKING(--enable-rubyinterp argument)
1417AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001418 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001419 [enable_rubyinterp="no"])
1420AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001421if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001422 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001423 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001424 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1425 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1426 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001427 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001428 if test "X$vi_cv_path_ruby" != "X"; then
1429 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001430 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 +00001431 AC_MSG_RESULT(OK)
1432 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001433 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001434 if test "X$rubyhdrdir" != "X"; then
1435 AC_MSG_RESULT($rubyhdrdir)
1436 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001437 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1438 if test -d "$rubyhdrdir/$rubyarch"; then
1439 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1440 fi
1441 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1442 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001443 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1444 if test "X$rubylibs" != "X"; then
1445 RUBY_LIBS="$rubylibs"
1446 fi
1447 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001448 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1449 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1450 if test -f "$rubylibdir/$librubya"; then
1451 librubyarg="$librubyarg"
1452 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1453 elif test "$librubyarg" = "libruby.a"; then
1454 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1455 librubyarg="-lruby"
1456 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001457 fi
1458
1459 if test "X$librubyarg" != "X"; then
1460 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1461 fi
1462 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1463 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001464 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1465 dnl be included if requested by passing --with-mac-arch to
1466 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001467 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001468 if test "X$rubyldflags" != "X"; then
1469 LDFLAGS="$rubyldflags $LDFLAGS"
1470 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001471 fi
1472 RUBY_SRC="if_ruby.c"
1473 RUBY_OBJ="objects/if_ruby.o"
1474 RUBY_PRO="if_ruby.pro"
1475 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001476 if test "$enable_rubyinterp" = "dynamic"; then
1477 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1478 AC_DEFINE(DYNAMIC_RUBY)
1479 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1480 RUBY_LIBS=
1481 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001482 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001483 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001484 fi
1485 else
1486 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1487 fi
1488 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001489
1490 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1491 AC_MSG_ERROR([could not configure Ruby])
1492 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001493fi
1494AC_SUBST(RUBY_SRC)
1495AC_SUBST(RUBY_OBJ)
1496AC_SUBST(RUBY_PRO)
1497AC_SUBST(RUBY_CFLAGS)
1498AC_SUBST(RUBY_LIBS)
1499
1500AC_MSG_CHECKING(--enable-cscope argument)
1501AC_ARG_ENABLE(cscope,
1502 [ --enable-cscope Include cscope interface.], ,
1503 [enable_cscope="no"])
1504AC_MSG_RESULT($enable_cscope)
1505if test "$enable_cscope" = "yes"; then
1506 AC_DEFINE(FEAT_CSCOPE)
1507fi
1508
1509AC_MSG_CHECKING(--enable-workshop argument)
1510AC_ARG_ENABLE(workshop,
1511 [ --enable-workshop Include Sun Visual Workshop support.], ,
1512 [enable_workshop="no"])
1513AC_MSG_RESULT($enable_workshop)
1514if test "$enable_workshop" = "yes"; then
1515 AC_DEFINE(FEAT_SUN_WORKSHOP)
1516 WORKSHOP_SRC="workshop.c integration.c"
1517 AC_SUBST(WORKSHOP_SRC)
1518 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1519 AC_SUBST(WORKSHOP_OBJ)
1520 if test "${enable_gui-xxx}" = xxx; then
1521 enable_gui=motif
1522 fi
1523fi
1524
1525AC_MSG_CHECKING(--disable-netbeans argument)
1526AC_ARG_ENABLE(netbeans,
1527 [ --disable-netbeans Disable NetBeans integration support.],
1528 , [enable_netbeans="yes"])
1529if test "$enable_netbeans" = "yes"; then
1530 AC_MSG_RESULT(no)
1531 dnl On Solaris we need the socket and nsl library.
1532 AC_CHECK_LIB(socket, socket)
1533 AC_CHECK_LIB(nsl, gethostbyname)
1534 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1535 AC_TRY_LINK([
1536#include <stdio.h>
1537#include <stdlib.h>
1538#include <stdarg.h>
1539#include <fcntl.h>
1540#include <netdb.h>
1541#include <netinet/in.h>
1542#include <errno.h>
1543#include <sys/types.h>
1544#include <sys/socket.h>
1545 /* Check bitfields */
1546 struct nbbuf {
1547 unsigned int initDone:1;
1548 ushort signmaplen;
1549 };
1550 ], [
1551 /* Check creating a socket. */
1552 struct sockaddr_in server;
1553 (void)socket(AF_INET, SOCK_STREAM, 0);
1554 (void)htons(100);
1555 (void)gethostbyname("microsoft.com");
1556 if (errno == ECONNREFUSED)
1557 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1558 ],
1559 AC_MSG_RESULT(yes),
1560 AC_MSG_RESULT(no); enable_netbeans="no")
1561else
1562 AC_MSG_RESULT(yes)
1563fi
1564if test "$enable_netbeans" = "yes"; then
1565 AC_DEFINE(FEAT_NETBEANS_INTG)
1566 NETBEANS_SRC="netbeans.c"
1567 AC_SUBST(NETBEANS_SRC)
1568 NETBEANS_OBJ="objects/netbeans.o"
1569 AC_SUBST(NETBEANS_OBJ)
1570fi
1571
1572AC_MSG_CHECKING(--enable-sniff argument)
1573AC_ARG_ENABLE(sniff,
1574 [ --enable-sniff Include Sniff interface.], ,
1575 [enable_sniff="no"])
1576AC_MSG_RESULT($enable_sniff)
1577if test "$enable_sniff" = "yes"; then
1578 AC_DEFINE(FEAT_SNIFF)
1579 SNIFF_SRC="if_sniff.c"
1580 AC_SUBST(SNIFF_SRC)
1581 SNIFF_OBJ="objects/if_sniff.o"
1582 AC_SUBST(SNIFF_OBJ)
1583fi
1584
1585AC_MSG_CHECKING(--enable-multibyte argument)
1586AC_ARG_ENABLE(multibyte,
1587 [ --enable-multibyte Include multibyte editing support.], ,
1588 [enable_multibyte="no"])
1589AC_MSG_RESULT($enable_multibyte)
1590if test "$enable_multibyte" = "yes"; then
1591 AC_DEFINE(FEAT_MBYTE)
1592fi
1593
1594AC_MSG_CHECKING(--enable-hangulinput argument)
1595AC_ARG_ENABLE(hangulinput,
1596 [ --enable-hangulinput Include Hangul input support.], ,
1597 [enable_hangulinput="no"])
1598AC_MSG_RESULT($enable_hangulinput)
1599
1600AC_MSG_CHECKING(--enable-xim argument)
1601AC_ARG_ENABLE(xim,
1602 [ --enable-xim Include XIM input support.],
1603 AC_MSG_RESULT($enable_xim),
1604 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001605
1606AC_MSG_CHECKING(--enable-fontset argument)
1607AC_ARG_ENABLE(fontset,
1608 [ --enable-fontset Include X fontset output support.], ,
1609 [enable_fontset="no"])
1610AC_MSG_RESULT($enable_fontset)
1611dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1612
1613test -z "$with_x" && with_x=yes
1614test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1615if test "$with_x" = no; then
1616 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1617else
1618 dnl Do this check early, so that its failure can override user requests.
1619
1620 AC_PATH_PROG(xmkmfpath, xmkmf)
1621
1622 AC_PATH_XTRA
1623
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001624 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001625 dnl be compiled with a special option.
1626 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001627 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001628 CFLAGS="$CFLAGS -W c,dll"
1629 LDFLAGS="$LDFLAGS -W l,dll"
1630 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1631 fi
1632
1633 dnl On my HPUX system the X include dir is found, but the lib dir not.
1634 dnl This is a desparate try to fix this.
1635
1636 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1637 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1638 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1639 X_LIBS="$X_LIBS -L$x_libraries"
1640 if test "`(uname) 2>/dev/null`" = SunOS &&
1641 uname -r | grep '^5' >/dev/null; then
1642 X_LIBS="$X_LIBS -R $x_libraries"
1643 fi
1644 fi
1645
1646 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1647 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1648 AC_MSG_RESULT(Corrected X includes to $x_includes)
1649 X_CFLAGS="$X_CFLAGS -I$x_includes"
1650 fi
1651
1652 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1653 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1654 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1655 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1656 dnl Same for "-R/usr/lib ".
1657 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1658
1659
1660 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001661 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1662 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001663 AC_MSG_CHECKING(if X11 header files can be found)
1664 cflags_save=$CFLAGS
1665 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001666 AC_TRY_COMPILE([#include <X11/Xlib.h>
1667#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001668 AC_MSG_RESULT(yes),
1669 AC_MSG_RESULT(no); no_x=yes)
1670 CFLAGS=$cflags_save
1671
1672 if test "${no_x-no}" = yes; then
1673 with_x=no
1674 else
1675 AC_DEFINE(HAVE_X11)
1676 X_LIB="-lXt -lX11";
1677 AC_SUBST(X_LIB)
1678
1679 ac_save_LDFLAGS="$LDFLAGS"
1680 LDFLAGS="-L$x_libraries $LDFLAGS"
1681
1682 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1683 dnl For HP-UX 10.20 it must be before -lSM -lICE
1684 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1685 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1686
1687 dnl Some systems need -lnsl -lsocket when testing for ICE.
1688 dnl The check above doesn't do this, try here (again). Also needed to get
1689 dnl them after Xdmcp. link.sh will remove them when not needed.
1690 dnl Check for other function than above to avoid the cached value
1691 AC_CHECK_LIB(ICE, IceOpenConnection,
1692 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1693
1694 dnl Check for -lXpm (needed for some versions of Motif)
1695 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1696 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1697 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1698
1699 dnl Check that the X11 header files don't use implicit declarations
1700 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1701 cflags_save=$CFLAGS
1702 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1703 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1704 AC_MSG_RESULT(no),
1705 CFLAGS="$CFLAGS -Wno-implicit-int"
1706 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1707 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1708 AC_MSG_RESULT(test failed)
1709 )
1710 )
1711 CFLAGS=$cflags_save
1712
1713 LDFLAGS="$ac_save_LDFLAGS"
1714
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001715 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1716 AC_CACHE_VAL(ac_cv_small_wchar_t,
1717 [AC_TRY_RUN([
1718#include <X11/Xlib.h>
1719#if STDC_HEADERS
1720# include <stdlib.h>
1721# include <stddef.h>
1722#endif
1723 main()
1724 {
1725 if (sizeof(wchar_t) <= 2)
1726 exit(1);
1727 exit(0);
1728 }],
1729 ac_cv_small_wchar_t="no",
1730 ac_cv_small_wchar_t="yes",
1731 AC_MSG_ERROR(failed to compile test program))])
1732 AC_MSG_RESULT($ac_cv_small_wchar_t)
1733 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1734 AC_DEFINE(SMALL_WCHAR_T)
1735 fi
1736
Bram Moolenaar071d4272004-06-13 20:20:40 +00001737 fi
1738fi
1739
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001740test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001741
1742AC_MSG_CHECKING(--enable-gui argument)
1743AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001744 [ --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 +00001745
1746dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1747dnl Do not use character classes for portability with old tools.
1748enable_gui_canon=`echo "_$enable_gui" | \
1749 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1750
1751dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001752SKIP_GTK2=YES
1753SKIP_GNOME=YES
1754SKIP_MOTIF=YES
1755SKIP_ATHENA=YES
1756SKIP_NEXTAW=YES
1757SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001758SKIP_CARBON=YES
1759GUITYPE=NONE
1760
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001761if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001762 SKIP_PHOTON=
1763 case "$enable_gui_canon" in
1764 no) AC_MSG_RESULT(no GUI support)
1765 SKIP_PHOTON=YES ;;
1766 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1767 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1768 photon) AC_MSG_RESULT(Photon GUI support) ;;
1769 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1770 SKIP_PHOTON=YES ;;
1771 esac
1772
1773elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1774 SKIP_CARBON=
1775 case "$enable_gui_canon" in
1776 no) AC_MSG_RESULT(no GUI support)
1777 SKIP_CARBON=YES ;;
1778 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001779 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1780 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001781 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1782 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1783 SKIP_CARBON=YES ;;
1784 esac
1785
1786else
1787
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788 case "$enable_gui_canon" in
1789 no|none) AC_MSG_RESULT(no GUI support) ;;
1790 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001791 SKIP_GTK2=
1792 SKIP_GNOME=
1793 SKIP_MOTIF=
1794 SKIP_ATHENA=
1795 SKIP_NEXTAW=
1796 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001797 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001799 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1800 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001801 SKIP_GTK2=;;
1802 motif) AC_MSG_RESULT(Motif GUI support)
1803 SKIP_MOTIF=;;
1804 athena) AC_MSG_RESULT(Athena GUI support)
1805 SKIP_ATHENA=;;
1806 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1807 SKIP_NEXTAW=;;
1808 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1809 esac
1810
1811fi
1812
Bram Moolenaar071d4272004-06-13 20:20:40 +00001813if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1814 -a "$enable_gui_canon" != "gnome2"; then
1815 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1816 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001817 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001818 , enable_gtk2_check="yes")
1819 AC_MSG_RESULT($enable_gtk2_check)
1820 if test "x$enable_gtk2_check" = "xno"; then
1821 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001822 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001823 fi
1824fi
1825
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001826if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827 AC_MSG_CHECKING(whether or not to look for GNOME)
1828 AC_ARG_ENABLE(gnome-check,
1829 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1830 , enable_gnome_check="no")
1831 AC_MSG_RESULT($enable_gnome_check)
1832 if test "x$enable_gnome_check" = "xno"; then
1833 SKIP_GNOME=YES
1834 fi
1835fi
1836
1837if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1838 AC_MSG_CHECKING(whether or not to look for Motif)
1839 AC_ARG_ENABLE(motif-check,
1840 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1841 , enable_motif_check="yes")
1842 AC_MSG_RESULT($enable_motif_check)
1843 if test "x$enable_motif_check" = "xno"; then
1844 SKIP_MOTIF=YES
1845 fi
1846fi
1847
1848if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1849 AC_MSG_CHECKING(whether or not to look for Athena)
1850 AC_ARG_ENABLE(athena-check,
1851 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1852 , enable_athena_check="yes")
1853 AC_MSG_RESULT($enable_athena_check)
1854 if test "x$enable_athena_check" = "xno"; then
1855 SKIP_ATHENA=YES
1856 fi
1857fi
1858
1859if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1860 AC_MSG_CHECKING(whether or not to look for neXtaw)
1861 AC_ARG_ENABLE(nextaw-check,
1862 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1863 , enable_nextaw_check="yes")
1864 AC_MSG_RESULT($enable_nextaw_check);
1865 if test "x$enable_nextaw_check" = "xno"; then
1866 SKIP_NEXTAW=YES
1867 fi
1868fi
1869
1870if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1871 AC_MSG_CHECKING(whether or not to look for Carbon)
1872 AC_ARG_ENABLE(carbon-check,
1873 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1874 , enable_carbon_check="yes")
1875 AC_MSG_RESULT($enable_carbon_check);
1876 if test "x$enable_carbon_check" = "xno"; then
1877 SKIP_CARBON=YES
1878 fi
1879fi
1880
Bram Moolenaar843ee412004-06-30 16:16:41 +00001881
Bram Moolenaar071d4272004-06-13 20:20:40 +00001882if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1883 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001884 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001885 AC_MSG_RESULT(yes);
1886 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001887 if test "$VIMNAME" = "vim"; then
1888 VIMNAME=Vim
1889 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001890
Bram Moolenaar164fca32010-07-14 13:58:07 +02001891 if test "x$MACARCH" = "xboth"; then
1892 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1893 else
1894 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1895 fi
1896
Bram Moolenaar14716812006-05-04 21:54:08 +00001897 dnl Default install directory is not /usr/local
1898 if test x$prefix = xNONE; then
1899 prefix=/Applications
1900 fi
1901
1902 dnl Sorry for the hard coded default
1903 datadir='${prefix}/Vim.app/Contents/Resources'
1904
Bram Moolenaar071d4272004-06-13 20:20:40 +00001905 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001906 SKIP_GTK2=YES;
1907 SKIP_GNOME=YES;
1908 SKIP_MOTIF=YES;
1909 SKIP_ATHENA=YES;
1910 SKIP_NEXTAW=YES;
1911 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001912 SKIP_CARBON=YES
1913fi
1914
Bram Moolenaar071d4272004-06-13 20:20:40 +00001915dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001916dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001917dnl
1918dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001919dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001920dnl
1921AC_DEFUN(AM_PATH_GTK,
1922[
1923 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1924 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001925 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001926 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1927 no_gtk=""
1928 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1929 && $PKG_CONFIG --exists gtk+-2.0; then
1930 {
1931 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1932 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1933 dnl something like that.
1934 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001935 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001936 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1937 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1938 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1939 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1940 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1941 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1942 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1943 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001944 else
1945 no_gtk=yes
1946 fi
1947
1948 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1949 {
1950 ac_save_CFLAGS="$CFLAGS"
1951 ac_save_LIBS="$LIBS"
1952 CFLAGS="$CFLAGS $GTK_CFLAGS"
1953 LIBS="$LIBS $GTK_LIBS"
1954
1955 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001956 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001957 dnl
1958 rm -f conf.gtktest
1959 AC_TRY_RUN([
1960#include <gtk/gtk.h>
1961#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001962#if STDC_HEADERS
1963# include <stdlib.h>
1964# include <stddef.h>
1965#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001966
1967int
1968main ()
1969{
1970int major, minor, micro;
1971char *tmp_version;
1972
1973system ("touch conf.gtktest");
1974
1975/* HP/UX 9 (%@#!) writes to sscanf strings */
1976tmp_version = g_strdup("$min_gtk_version");
1977if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1978 printf("%s, bad version string\n", "$min_gtk_version");
1979 exit(1);
1980 }
1981
1982if ((gtk_major_version > major) ||
1983 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1984 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1985 (gtk_micro_version >= micro)))
1986{
1987 return 0;
1988}
1989return 1;
1990}
1991],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1992 CFLAGS="$ac_save_CFLAGS"
1993 LIBS="$ac_save_LIBS"
1994 }
1995 fi
1996 if test "x$no_gtk" = x ; then
1997 if test "x$enable_gtktest" = "xyes"; then
1998 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1999 else
2000 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2001 fi
2002 ifelse([$2], , :, [$2])
2003 else
2004 {
2005 AC_MSG_RESULT(no)
2006 GTK_CFLAGS=""
2007 GTK_LIBS=""
2008 ifelse([$3], , :, [$3])
2009 }
2010 fi
2011 }
2012 else
2013 GTK_CFLAGS=""
2014 GTK_LIBS=""
2015 ifelse([$3], , :, [$3])
2016 fi
2017 AC_SUBST(GTK_CFLAGS)
2018 AC_SUBST(GTK_LIBS)
2019 rm -f conf.gtktest
2020])
2021
2022dnl ---------------------------------------------------------------------------
2023dnl gnome
2024dnl ---------------------------------------------------------------------------
2025AC_DEFUN([GNOME_INIT_HOOK],
2026[
2027 AC_SUBST(GNOME_LIBS)
2028 AC_SUBST(GNOME_LIBDIR)
2029 AC_SUBST(GNOME_INCLUDEDIR)
2030
2031 AC_ARG_WITH(gnome-includes,
2032 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2033 [CFLAGS="$CFLAGS -I$withval"]
2034 )
2035
2036 AC_ARG_WITH(gnome-libs,
2037 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2038 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2039 )
2040
2041 AC_ARG_WITH(gnome,
2042 [ --with-gnome Specify prefix for GNOME files],
2043 if test x$withval = xyes; then
2044 want_gnome=yes
2045 ifelse([$1], [], :, [$1])
2046 else
2047 if test "x$withval" = xno; then
2048 want_gnome=no
2049 else
2050 want_gnome=yes
2051 LDFLAGS="$LDFLAGS -L$withval/lib"
2052 CFLAGS="$CFLAGS -I$withval/include"
2053 gnome_prefix=$withval/lib
2054 fi
2055 fi,
2056 want_gnome=yes)
2057
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002058 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002059 {
2060 AC_MSG_CHECKING(for libgnomeui-2.0)
2061 if $PKG_CONFIG --exists libgnomeui-2.0; then
2062 AC_MSG_RESULT(yes)
2063 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2064 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2065 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002066
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002067 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2068 dnl This might not be the right way but it works for me...
2069 AC_MSG_CHECKING(for FreeBSD)
2070 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2071 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002072 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002073 GNOME_LIBS="$GNOME_LIBS -pthread"
2074 else
2075 AC_MSG_RESULT(no)
2076 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002077 $1
2078 else
2079 AC_MSG_RESULT(not found)
2080 if test "x$2" = xfail; then
2081 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2082 fi
2083 fi
2084 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085 fi
2086])
2087
2088AC_DEFUN([GNOME_INIT],[
2089 GNOME_INIT_HOOK([],fail)
2090])
2091
2092
2093dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002094dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002095dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002096if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097
2098 AC_MSG_CHECKING(--disable-gtktest argument)
2099 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2100 , enable_gtktest=yes)
2101 if test "x$enable_gtktest" = "xyes" ; then
2102 AC_MSG_RESULT(gtk test enabled)
2103 else
2104 AC_MSG_RESULT(gtk test disabled)
2105 fi
2106
Bram Moolenaar071d4272004-06-13 20:20:40 +00002107 if test "X$PKG_CONFIG" = "X"; then
2108 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2109 fi
2110
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002111 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2113 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002114 AM_PATH_GTK(2.2.0,
2115 [GUI_LIB_LOC="$GTK_LIBDIR"
2116 GTK_LIBNAME="$GTK_LIBS"
2117 GUI_INC_LOC="$GTK_CFLAGS"], )
2118 if test "x$GTK_CFLAGS" != "x"; then
2119 SKIP_ATHENA=YES
2120 SKIP_NEXTAW=YES
2121 SKIP_MOTIF=YES
2122 GUITYPE=GTK
2123 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002124 fi
2125 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002127 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2128 || test "0$gtk_minor_version" -ge 2; then
2129 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2130 fi
2131 dnl
2132 dnl if GTK exists, then check for GNOME.
2133 dnl
2134 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002135 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002136 GNOME_INIT_HOOK([have_gnome=yes])
2137 if test "x$have_gnome" = xyes ; then
2138 AC_DEFINE(FEAT_GUI_GNOME)
2139 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2140 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002141 fi
2142 }
2143 fi
2144 fi
2145fi
2146
2147dnl Check for Motif include files location.
2148dnl The LAST one found is used, this makes the highest version to be used,
2149dnl e.g. when Motif1.2 and Motif2.0 are both present.
2150
2151if test -z "$SKIP_MOTIF"; then
2152 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"
2153 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2154 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2155
2156 AC_MSG_CHECKING(for location of Motif GUI includes)
2157 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2158 GUI_INC_LOC=
2159 for try in $gui_includes; do
2160 if test -f "$try/Xm/Xm.h"; then
2161 GUI_INC_LOC=$try
2162 fi
2163 done
2164 if test -n "$GUI_INC_LOC"; then
2165 if test "$GUI_INC_LOC" = /usr/include; then
2166 GUI_INC_LOC=
2167 AC_MSG_RESULT(in default path)
2168 else
2169 AC_MSG_RESULT($GUI_INC_LOC)
2170 fi
2171 else
2172 AC_MSG_RESULT(<not found>)
2173 SKIP_MOTIF=YES
2174 fi
2175fi
2176
2177dnl Check for Motif library files location. In the same order as the include
2178dnl files, to avoid a mixup if several versions are present
2179
2180if test -z "$SKIP_MOTIF"; then
2181 AC_MSG_CHECKING(--with-motif-lib argument)
2182 AC_ARG_WITH(motif-lib,
2183 [ --with-motif-lib=STRING Library for Motif ],
2184 [ MOTIF_LIBNAME="${withval}" ] )
2185
2186 if test -n "$MOTIF_LIBNAME"; then
2187 AC_MSG_RESULT($MOTIF_LIBNAME)
2188 GUI_LIB_LOC=
2189 else
2190 AC_MSG_RESULT(no)
2191
2192 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2193 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2194
2195 AC_MSG_CHECKING(for location of Motif GUI libs)
2196 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"
2197 GUI_LIB_LOC=
2198 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002199 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002200 if test -f "$libtry"; then
2201 GUI_LIB_LOC=$try
2202 fi
2203 done
2204 done
2205 if test -n "$GUI_LIB_LOC"; then
2206 dnl Remove /usr/lib, it causes trouble on some systems
2207 if test "$GUI_LIB_LOC" = /usr/lib; then
2208 GUI_LIB_LOC=
2209 AC_MSG_RESULT(in default path)
2210 else
2211 if test -n "$GUI_LIB_LOC"; then
2212 AC_MSG_RESULT($GUI_LIB_LOC)
2213 if test "`(uname) 2>/dev/null`" = SunOS &&
2214 uname -r | grep '^5' >/dev/null; then
2215 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2216 fi
2217 fi
2218 fi
2219 MOTIF_LIBNAME=-lXm
2220 else
2221 AC_MSG_RESULT(<not found>)
2222 SKIP_MOTIF=YES
2223 fi
2224 fi
2225fi
2226
2227if test -z "$SKIP_MOTIF"; then
2228 SKIP_ATHENA=YES
2229 SKIP_NEXTAW=YES
2230 GUITYPE=MOTIF
2231 AC_SUBST(MOTIF_LIBNAME)
2232fi
2233
2234dnl Check if the Athena files can be found
2235
2236GUI_X_LIBS=
2237
2238if test -z "$SKIP_ATHENA"; then
2239 AC_MSG_CHECKING(if Athena header files can be found)
2240 cflags_save=$CFLAGS
2241 CFLAGS="$CFLAGS $X_CFLAGS"
2242 AC_TRY_COMPILE([
2243#include <X11/Intrinsic.h>
2244#include <X11/Xaw/Paned.h>], ,
2245 AC_MSG_RESULT(yes),
2246 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2247 CFLAGS=$cflags_save
2248fi
2249
2250if test -z "$SKIP_ATHENA"; then
2251 GUITYPE=ATHENA
2252fi
2253
2254if test -z "$SKIP_NEXTAW"; then
2255 AC_MSG_CHECKING(if neXtaw header files can be found)
2256 cflags_save=$CFLAGS
2257 CFLAGS="$CFLAGS $X_CFLAGS"
2258 AC_TRY_COMPILE([
2259#include <X11/Intrinsic.h>
2260#include <X11/neXtaw/Paned.h>], ,
2261 AC_MSG_RESULT(yes),
2262 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2263 CFLAGS=$cflags_save
2264fi
2265
2266if test -z "$SKIP_NEXTAW"; then
2267 GUITYPE=NEXTAW
2268fi
2269
2270if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2271 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2272 dnl Avoid adding it when it twice
2273 if test -n "$GUI_INC_LOC"; then
2274 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2275 fi
2276 if test -n "$GUI_LIB_LOC"; then
2277 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2278 fi
2279
2280 dnl Check for -lXext and then for -lXmu
2281 ldflags_save=$LDFLAGS
2282 LDFLAGS="$X_LIBS $LDFLAGS"
2283 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2284 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2285 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2286 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2287 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2288 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2289 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2290 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2291 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2292 if test -z "$SKIP_MOTIF"; then
2293 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2294 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2295 fi
2296 LDFLAGS=$ldflags_save
2297
2298 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2299 AC_MSG_CHECKING(for extra X11 defines)
2300 NARROW_PROTO=
2301 rm -fr conftestdir
2302 if mkdir conftestdir; then
2303 cd conftestdir
2304 cat > Imakefile <<'EOF'
2305acfindx:
2306 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2307EOF
2308 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2309 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2310 fi
2311 cd ..
2312 rm -fr conftestdir
2313 fi
2314 if test -z "$NARROW_PROTO"; then
2315 AC_MSG_RESULT(no)
2316 else
2317 AC_MSG_RESULT($NARROW_PROTO)
2318 fi
2319 AC_SUBST(NARROW_PROTO)
2320fi
2321
2322dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2323dnl use the X11 include path
2324if test "$enable_xsmp" = "yes"; then
2325 cppflags_save=$CPPFLAGS
2326 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2327 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2328 CPPFLAGS=$cppflags_save
2329fi
2330
2331
Bram Moolenaare667c952010-07-05 22:57:59 +02002332if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002333 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2334 cppflags_save=$CPPFLAGS
2335 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2336 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2337
2338 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2339 if test ! "$enable_xim" = "no"; then
2340 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2341 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2342 AC_MSG_RESULT(yes),
2343 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2344 fi
2345 CPPFLAGS=$cppflags_save
2346
2347 dnl automatically enable XIM when hangul input isn't enabled
2348 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2349 -a "x$GUITYPE" != "xNONE" ; then
2350 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2351 enable_xim="yes"
2352 fi
2353fi
2354
2355if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2356 cppflags_save=$CPPFLAGS
2357 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002358dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2359 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2360 AC_TRY_COMPILE([
2361#include <X11/Intrinsic.h>
2362#include <X11/Xmu/Editres.h>],
2363 [int i; i = 0;],
2364 AC_MSG_RESULT(yes)
2365 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2366 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002367 CPPFLAGS=$cppflags_save
2368fi
2369
2370dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2371if test -z "$SKIP_MOTIF"; then
2372 cppflags_save=$CPPFLAGS
2373 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002374 if test "$zOSUnix" = "yes"; then
2375 xmheader="Xm/Xm.h"
2376 else
2377 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2378 Xm/UnhighlightT.h Xm/Notebook.h"
2379 fi
2380 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002381
Bram Moolenaar77c19352012-06-13 19:19:41 +02002382 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002383 dnl Solaris uses XpmAttributes_21, very annoying.
2384 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2385 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2386 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2387 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2388 )
2389 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002390 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002391 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002392 CPPFLAGS=$cppflags_save
2393fi
2394
2395if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2396 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2397 enable_xim="no"
2398fi
2399if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2400 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2401 enable_fontset="no"
2402fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002403if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002404 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2405 enable_fontset="no"
2406fi
2407
Bram Moolenaar071d4272004-06-13 20:20:40 +00002408if test -z "$SKIP_PHOTON"; then
2409 GUITYPE=PHOTONGUI
2410fi
2411
2412AC_SUBST(GUI_INC_LOC)
2413AC_SUBST(GUI_LIB_LOC)
2414AC_SUBST(GUITYPE)
2415AC_SUBST(GUI_X_LIBS)
2416
2417if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2418 AC_MSG_ERROR([cannot use workshop without Motif])
2419fi
2420
2421dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2422if test "$enable_xim" = "yes"; then
2423 AC_DEFINE(FEAT_XIM)
2424fi
2425if test "$enable_fontset" = "yes"; then
2426 AC_DEFINE(FEAT_XFONTSET)
2427fi
2428
2429
2430dnl ---------------------------------------------------------------------------
2431dnl end of GUI-checking
2432dnl ---------------------------------------------------------------------------
2433
2434
2435dnl Only really enable hangul input when GUI and XFONTSET are available
2436if test "$enable_hangulinput" = "yes"; then
2437 if test "x$GUITYPE" = "xNONE"; then
2438 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2439 enable_hangulinput=no
2440 else
2441 AC_DEFINE(FEAT_HANGULIN)
2442 HANGULIN_SRC=hangulin.c
2443 AC_SUBST(HANGULIN_SRC)
2444 HANGULIN_OBJ=objects/hangulin.o
2445 AC_SUBST(HANGULIN_OBJ)
2446 fi
2447fi
2448
2449dnl Checks for libraries and include files.
2450
Bram Moolenaar446cb832008-06-24 21:56:24 +00002451AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2452 [
2453 AC_RUN_IFELSE([[
2454#include "confdefs.h"
2455#include <ctype.h>
2456#if STDC_HEADERS
2457# include <stdlib.h>
2458# include <stddef.h>
2459#endif
2460main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2461 ]],[
2462 vim_cv_toupper_broken=yes
2463 ],[
2464 vim_cv_toupper_broken=no
2465 ],[
2466 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2467 ])])
2468
2469if test "x$vim_cv_toupper_broken" = "xyes" ; then
2470 AC_DEFINE(BROKEN_TOUPPER)
2471fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002472
2473AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002474AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002475 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2476 AC_MSG_RESULT(no))
2477
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002478AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2479AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2480 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2481 AC_MSG_RESULT(no))
2482
Bram Moolenaar071d4272004-06-13 20:20:40 +00002483dnl Checks for header files.
2484AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2485dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2486if test "$HAS_ELF" = 1; then
2487 AC_CHECK_LIB(elf, main)
2488fi
2489
2490AC_HEADER_DIRENT
2491
Bram Moolenaar071d4272004-06-13 20:20:40 +00002492dnl If sys/wait.h is not found it might still exist but not be POSIX
2493dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2494if test $ac_cv_header_sys_wait_h = no; then
2495 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2496 AC_TRY_COMPILE([#include <sys/wait.h>],
2497 [union wait xx, yy; xx = yy],
2498 AC_MSG_RESULT(yes)
2499 AC_DEFINE(HAVE_SYS_WAIT_H)
2500 AC_DEFINE(HAVE_UNION_WAIT),
2501 AC_MSG_RESULT(no))
2502fi
2503
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002504AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2505 sys/select.h sys/utsname.h termcap.h fcntl.h \
2506 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2507 termio.h iconv.h inttypes.h langinfo.h math.h \
2508 unistd.h stropts.h errno.h sys/resource.h \
2509 sys/systeminfo.h locale.h sys/stream.h termios.h \
2510 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2511 utime.h sys/param.h libintl.h libgen.h \
2512 util/debug.h util/msg18n.h frame.h sys/acl.h \
2513 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002514
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002515dnl sys/ptem.h depends on sys/stream.h on Solaris
2516AC_CHECK_HEADERS(sys/ptem.h, [], [],
2517[#if defined HAVE_SYS_STREAM_H
2518# include <sys/stream.h>
2519#endif])
2520
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002521dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2522AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2523[#if defined HAVE_SYS_PARAM_H
2524# include <sys/param.h>
2525#endif])
2526
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002527
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002528dnl pthread_np.h may exist but can only be used after including pthread.h
2529AC_MSG_CHECKING([for pthread_np.h])
2530AC_TRY_COMPILE([
2531#include <pthread.h>
2532#include <pthread_np.h>],
2533 [int i; i = 0;],
2534 AC_MSG_RESULT(yes)
2535 AC_DEFINE(HAVE_PTHREAD_NP_H),
2536 AC_MSG_RESULT(no))
2537
Bram Moolenaare344bea2005-09-01 20:46:49 +00002538AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002539if test "x$MACOSX" = "xyes"; then
2540 dnl The strings.h file on OS/X contains a warning and nothing useful.
2541 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2542else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002543
2544dnl Check if strings.h and string.h can both be included when defined.
2545AC_MSG_CHECKING([if strings.h can be included after string.h])
2546cppflags_save=$CPPFLAGS
2547CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2548AC_TRY_COMPILE([
2549#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2550# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2551 /* but don't do it on AIX 5.1 (Uribarri) */
2552#endif
2553#ifdef HAVE_XM_XM_H
2554# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2555#endif
2556#ifdef HAVE_STRING_H
2557# include <string.h>
2558#endif
2559#if defined(HAVE_STRINGS_H)
2560# include <strings.h>
2561#endif
2562 ], [int i; i = 0;],
2563 AC_MSG_RESULT(yes),
2564 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2565 AC_MSG_RESULT(no))
2566CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002567fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002568
2569dnl Checks for typedefs, structures, and compiler characteristics.
2570AC_PROG_GCC_TRADITIONAL
2571AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002572AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002573AC_TYPE_MODE_T
2574AC_TYPE_OFF_T
2575AC_TYPE_PID_T
2576AC_TYPE_SIZE_T
2577AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002578AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002579
Bram Moolenaar071d4272004-06-13 20:20:40 +00002580AC_HEADER_TIME
2581AC_CHECK_TYPE(ino_t, long)
2582AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002583AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002584
2585AC_MSG_CHECKING(for rlim_t)
2586if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2587 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2588else
2589 AC_EGREP_CPP(dnl
2590changequote(<<,>>)dnl
2591<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2592changequote([,]),
2593 [
2594#include <sys/types.h>
2595#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002596# include <stdlib.h>
2597# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002598#endif
2599#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002600# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002601#endif
2602 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2603 AC_MSG_RESULT($ac_cv_type_rlim_t)
2604fi
2605if test $ac_cv_type_rlim_t = no; then
2606 cat >> confdefs.h <<\EOF
2607#define rlim_t unsigned long
2608EOF
2609fi
2610
2611AC_MSG_CHECKING(for stack_t)
2612if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2613 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2614else
2615 AC_EGREP_CPP(stack_t,
2616 [
2617#include <sys/types.h>
2618#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002619# include <stdlib.h>
2620# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002621#endif
2622#include <signal.h>
2623 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2624 AC_MSG_RESULT($ac_cv_type_stack_t)
2625fi
2626if test $ac_cv_type_stack_t = no; then
2627 cat >> confdefs.h <<\EOF
2628#define stack_t struct sigaltstack
2629EOF
2630fi
2631
2632dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2633AC_MSG_CHECKING(whether stack_t has an ss_base field)
2634AC_TRY_COMPILE([
2635#include <sys/types.h>
2636#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002637# include <stdlib.h>
2638# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639#endif
2640#include <signal.h>
2641#include "confdefs.h"
2642 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2643 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2644 AC_MSG_RESULT(no))
2645
2646olibs="$LIBS"
2647AC_MSG_CHECKING(--with-tlib argument)
2648AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2649if test -n "$with_tlib"; then
2650 AC_MSG_RESULT($with_tlib)
2651 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002652 AC_MSG_CHECKING(for linking with $with_tlib library)
2653 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2654 dnl Need to check for tgetent() below.
2655 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002656else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002657 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002658 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2659 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002660 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002661 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002662 dnl Older versions of ncurses have bugs, get a new one!
2663 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002664 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002665 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002666 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2667 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002668 esac
2669 for libname in $tlibs; do
2670 AC_CHECK_LIB(${libname}, tgetent,,)
2671 if test "x$olibs" != "x$LIBS"; then
2672 dnl It's possible that a library is found but it doesn't work
2673 dnl e.g., shared library that cannot be found
2674 dnl compile and run a test program to be sure
2675 AC_TRY_RUN([
2676#ifdef HAVE_TERMCAP_H
2677# include <termcap.h>
2678#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002679#if STDC_HEADERS
2680# include <stdlib.h>
2681# include <stddef.h>
2682#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002683main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2684 res="OK", res="FAIL", res="FAIL")
2685 if test "$res" = "OK"; then
2686 break
2687 fi
2688 AC_MSG_RESULT($libname library is not usable)
2689 LIBS="$olibs"
2690 fi
2691 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002692 if test "x$olibs" = "x$LIBS"; then
2693 AC_MSG_RESULT(no terminal library found)
2694 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002695fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002696
2697if test "x$olibs" = "x$LIBS"; then
2698 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002699 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002700 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2701 AC_MSG_RESULT(yes),
2702 AC_MSG_ERROR([NOT FOUND!
2703 You need to install a terminal library; for example ncurses.
2704 Or specify the name of the library with --with-tlib.]))
2705fi
2706
Bram Moolenaar446cb832008-06-24 21:56:24 +00002707AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2708 [
2709 AC_RUN_IFELSE([[
2710#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002711#ifdef HAVE_TERMCAP_H
2712# include <termcap.h>
2713#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002714#ifdef HAVE_STRING_H
2715# include <string.h>
2716#endif
2717#if STDC_HEADERS
2718# include <stdlib.h>
2719# include <stddef.h>
2720#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002722{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2723 ]],[
2724 vim_cv_terminfo=no
2725 ],[
2726 vim_cv_terminfo=yes
2727 ],[
2728 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2729 ])
2730 ])
2731
2732if test "x$vim_cv_terminfo" = "xyes" ; then
2733 AC_DEFINE(TERMINFO)
2734fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002735
2736if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002737 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2738 [
2739 AC_RUN_IFELSE([[
2740#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002741#ifdef HAVE_TERMCAP_H
2742# include <termcap.h>
2743#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002744#if STDC_HEADERS
2745# include <stdlib.h>
2746# include <stddef.h>
2747#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002748main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002749{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2750 ]],[
2751 vim_cv_tgent=zero
2752 ],[
2753 vim_cv_tgent=non-zero
2754 ],[
2755 AC_MSG_ERROR(failed to compile test program.)
2756 ])
2757 ])
2758
2759 if test "x$vim_cv_tgent" = "xzero" ; then
2760 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2761 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762fi
2763
2764AC_MSG_CHECKING(whether termcap.h contains ospeed)
2765AC_TRY_LINK([
2766#ifdef HAVE_TERMCAP_H
2767# include <termcap.h>
2768#endif
2769 ], [ospeed = 20000],
2770 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2771 [AC_MSG_RESULT(no)
2772 AC_MSG_CHECKING(whether ospeed can be extern)
2773 AC_TRY_LINK([
2774#ifdef HAVE_TERMCAP_H
2775# include <termcap.h>
2776#endif
2777extern short ospeed;
2778 ], [ospeed = 20000],
2779 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2780 AC_MSG_RESULT(no))]
2781 )
2782
2783AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2784AC_TRY_LINK([
2785#ifdef HAVE_TERMCAP_H
2786# include <termcap.h>
2787#endif
2788 ], [if (UP == 0 && BC == 0) PC = 1],
2789 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2790 [AC_MSG_RESULT(no)
2791 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2792 AC_TRY_LINK([
2793#ifdef HAVE_TERMCAP_H
2794# include <termcap.h>
2795#endif
2796extern char *UP, *BC, PC;
2797 ], [if (UP == 0 && BC == 0) PC = 1],
2798 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2799 AC_MSG_RESULT(no))]
2800 )
2801
2802AC_MSG_CHECKING(whether tputs() uses outfuntype)
2803AC_TRY_COMPILE([
2804#ifdef HAVE_TERMCAP_H
2805# include <termcap.h>
2806#endif
2807 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2808 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2809 AC_MSG_RESULT(no))
2810
2811dnl On some SCO machines sys/select redefines struct timeval
2812AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2813AC_TRY_COMPILE([
2814#include <sys/types.h>
2815#include <sys/time.h>
2816#include <sys/select.h>], ,
2817 AC_MSG_RESULT(yes)
2818 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2819 AC_MSG_RESULT(no))
2820
2821dnl AC_DECL_SYS_SIGLIST
2822
2823dnl Checks for pty.c (copied from screen) ==========================
2824AC_MSG_CHECKING(for /dev/ptc)
2825if test -r /dev/ptc; then
2826 AC_DEFINE(HAVE_DEV_PTC)
2827 AC_MSG_RESULT(yes)
2828else
2829 AC_MSG_RESULT(no)
2830fi
2831
2832AC_MSG_CHECKING(for SVR4 ptys)
2833if test -c /dev/ptmx ; then
2834 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2835 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2836 AC_MSG_RESULT(no))
2837else
2838 AC_MSG_RESULT(no)
2839fi
2840
2841AC_MSG_CHECKING(for ptyranges)
2842if test -d /dev/ptym ; then
2843 pdir='/dev/ptym'
2844else
2845 pdir='/dev'
2846fi
2847dnl SCO uses ptyp%d
2848AC_EGREP_CPP(yes,
2849[#ifdef M_UNIX
2850 yes;
2851#endif
2852 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2853dnl if test -c /dev/ptyp19; then
2854dnl ptys=`echo /dev/ptyp??`
2855dnl else
2856dnl ptys=`echo $pdir/pty??`
2857dnl fi
2858if test "$ptys" != "$pdir/pty??" ; then
2859 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2860 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2861 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2862 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2863 AC_MSG_RESULT([$p0 / $p1])
2864else
2865 AC_MSG_RESULT([don't know])
2866fi
2867
2868dnl **** pty mode/group handling ****
2869dnl
2870dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002871rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002872AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2873 [
2874 AC_RUN_IFELSE([[
2875#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002876#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002877#if STDC_HEADERS
2878# include <stdlib.h>
2879# include <stddef.h>
2880#endif
2881#ifdef HAVE_UNISTD_H
2882#include <unistd.h>
2883#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002884#include <sys/stat.h>
2885#include <stdio.h>
2886main()
2887{
2888 struct stat sb;
2889 char *x,*ttyname();
2890 int om, m;
2891 FILE *fp;
2892
2893 if (!(x = ttyname(0))) exit(1);
2894 if (stat(x, &sb)) exit(1);
2895 om = sb.st_mode;
2896 if (om & 002) exit(0);
2897 m = system("mesg y");
2898 if (m == -1 || m == 127) exit(1);
2899 if (stat(x, &sb)) exit(1);
2900 m = sb.st_mode;
2901 if (chmod(x, om)) exit(1);
2902 if (m & 002) exit(0);
2903 if (sb.st_gid == getgid()) exit(1);
2904 if (!(fp=fopen("conftest_grp", "w")))
2905 exit(1);
2906 fprintf(fp, "%d\n", sb.st_gid);
2907 fclose(fp);
2908 exit(0);
2909}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002910 ]],[
2911 if test -f conftest_grp; then
2912 vim_cv_tty_group=`cat conftest_grp`
2913 if test "x$vim_cv_tty_mode" = "x" ; then
2914 vim_cv_tty_mode=0620
2915 fi
2916 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2917 else
2918 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002919 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002920 fi
2921 ],[
2922 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002923 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002924 ],[
2925 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2926 ])
2927 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002928rm -f conftest_grp
2929
Bram Moolenaar446cb832008-06-24 21:56:24 +00002930if test "x$vim_cv_tty_group" != "xworld" ; then
2931 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2932 if test "x$vim_cv_tty_mode" = "x" ; then
2933 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2934 else
2935 AC_DEFINE(PTYMODE, 0620)
2936 fi
2937fi
2938
Bram Moolenaar071d4272004-06-13 20:20:40 +00002939dnl Checks for library functions. ===================================
2940
2941AC_TYPE_SIGNAL
2942
2943dnl find out what to use at the end of a signal function
2944if test $ac_cv_type_signal = void; then
2945 AC_DEFINE(SIGRETURN, [return])
2946else
2947 AC_DEFINE(SIGRETURN, [return 0])
2948fi
2949
2950dnl check if struct sigcontext is defined (used for SGI only)
2951AC_MSG_CHECKING(for struct sigcontext)
2952AC_TRY_COMPILE([
2953#include <signal.h>
2954test_sig()
2955{
2956 struct sigcontext *scont;
2957 scont = (struct sigcontext *)0;
2958 return 1;
2959} ], ,
2960 AC_MSG_RESULT(yes)
2961 AC_DEFINE(HAVE_SIGCONTEXT),
2962 AC_MSG_RESULT(no))
2963
2964dnl tricky stuff: try to find out if getcwd() is implemented with
2965dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002966AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2967 [
2968 AC_RUN_IFELSE([[
2969#include "confdefs.h"
2970#ifdef HAVE_UNISTD_H
2971#include <unistd.h>
2972#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002973char *dagger[] = { "IFS=pwd", 0 };
2974main()
2975{
2976 char buffer[500];
2977 extern char **environ;
2978 environ = dagger;
2979 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002980}
2981 ]],[
2982 vim_cv_getcwd_broken=no
2983 ],[
2984 vim_cv_getcwd_broken=yes
2985 ],[
2986 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2987 ])
2988 ])
2989
2990if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2991 AC_DEFINE(BAD_GETCWD)
2992fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002993
Bram Moolenaar25153e12010-02-24 14:47:08 +01002994dnl Check for functions in one big call, to reduce the size of configure.
2995dnl Can only be used for functions that do not require any include.
2996AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02002997 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002998 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002999 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003000 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003001 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3002 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003003AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003005dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3006dnl appropriate, so that off_t is 64 bits when needed.
3007AC_SYS_LARGEFILE
3008
Bram Moolenaar071d4272004-06-13 20:20:40 +00003009dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3010AC_MSG_CHECKING(for st_blksize)
3011AC_TRY_COMPILE(
3012[#include <sys/types.h>
3013#include <sys/stat.h>],
3014[ struct stat st;
3015 int n;
3016
3017 stat("/", &st);
3018 n = (int)st.st_blksize;],
3019 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3020 AC_MSG_RESULT(no))
3021
Bram Moolenaar446cb832008-06-24 21:56:24 +00003022AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3023 [
3024 AC_RUN_IFELSE([[
3025#include "confdefs.h"
3026#if STDC_HEADERS
3027# include <stdlib.h>
3028# include <stddef.h>
3029#endif
3030#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003032main() {struct stat st; exit(stat("configure/", &st) != 0); }
3033 ]],[
3034 vim_cv_stat_ignores_slash=yes
3035 ],[
3036 vim_cv_stat_ignores_slash=no
3037 ],[
3038 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3039 ])
3040 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003041
Bram Moolenaar446cb832008-06-24 21:56:24 +00003042if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3043 AC_DEFINE(STAT_IGNORES_SLASH)
3044fi
3045
Bram Moolenaar071d4272004-06-13 20:20:40 +00003046dnl Link with iconv for charset translation, if not found without library.
3047dnl check for iconv() requires including iconv.h
3048dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3049dnl has been installed.
3050AC_MSG_CHECKING(for iconv_open())
3051save_LIBS="$LIBS"
3052LIBS="$LIBS -liconv"
3053AC_TRY_LINK([
3054#ifdef HAVE_ICONV_H
3055# include <iconv.h>
3056#endif
3057 ], [iconv_open("fr", "to");],
3058 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3059 LIBS="$save_LIBS"
3060 AC_TRY_LINK([
3061#ifdef HAVE_ICONV_H
3062# include <iconv.h>
3063#endif
3064 ], [iconv_open("fr", "to");],
3065 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3066 AC_MSG_RESULT(no)))
3067
3068
3069AC_MSG_CHECKING(for nl_langinfo(CODESET))
3070AC_TRY_LINK([
3071#ifdef HAVE_LANGINFO_H
3072# include <langinfo.h>
3073#endif
3074], [char *cs = nl_langinfo(CODESET);],
3075 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3076 AC_MSG_RESULT(no))
3077
Bram Moolenaar446cb832008-06-24 21:56:24 +00003078dnl Need various functions for floating point support. Only enable
3079dnl floating point when they are all present.
3080AC_CHECK_LIB(m, strtod)
3081AC_MSG_CHECKING([for strtod() and other floating point functions])
3082AC_TRY_LINK([
3083#ifdef HAVE_MATH_H
3084# include <math.h>
3085#endif
3086#if STDC_HEADERS
3087# include <stdlib.h>
3088# include <stddef.h>
3089#endif
3090], [char *s; double d;
3091 d = strtod("1.1", &s);
3092 d = fabs(1.11);
3093 d = ceil(1.11);
3094 d = floor(1.11);
3095 d = log10(1.11);
3096 d = pow(1.11, 2.22);
3097 d = sqrt(1.11);
3098 d = sin(1.11);
3099 d = cos(1.11);
3100 d = atan(1.11);
3101 ],
3102 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3103 AC_MSG_RESULT(no))
3104
Bram Moolenaar071d4272004-06-13 20:20:40 +00003105dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3106dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003107dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003108AC_MSG_CHECKING(--disable-acl argument)
3109AC_ARG_ENABLE(acl,
3110 [ --disable-acl Don't check for ACL support.],
3111 , [enable_acl="yes"])
3112if test "$enable_acl" = "yes"; then
3113AC_MSG_RESULT(no)
3114AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3115 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3116 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3117
3118AC_MSG_CHECKING(for POSIX ACL support)
3119AC_TRY_LINK([
3120#include <sys/types.h>
3121#ifdef HAVE_SYS_ACL_H
3122# include <sys/acl.h>
3123#endif
3124acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3125 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3126 acl_free(acl);],
3127 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3128 AC_MSG_RESULT(no))
3129
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003130AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131AC_MSG_CHECKING(for Solaris ACL support)
3132AC_TRY_LINK([
3133#ifdef HAVE_SYS_ACL_H
3134# include <sys/acl.h>
3135#endif], [acl("foo", GETACLCNT, 0, NULL);
3136 ],
3137 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003138 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003139
3140AC_MSG_CHECKING(for AIX ACL support)
3141AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003142#if STDC_HEADERS
3143# include <stdlib.h>
3144# include <stddef.h>
3145#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003146#ifdef HAVE_SYS_ACL_H
3147# include <sys/acl.h>
3148#endif
3149#ifdef HAVE_SYS_ACCESS_H
3150# include <sys/access.h>
3151#endif
3152#define _ALL_SOURCE
3153
3154#include <sys/stat.h>
3155
3156int aclsize;
3157struct acl *aclent;], [aclsize = sizeof(struct acl);
3158 aclent = (void *)malloc(aclsize);
3159 statacl("foo", STX_NORMAL, aclent, aclsize);
3160 ],
3161 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3162 AC_MSG_RESULT(no))
3163else
3164 AC_MSG_RESULT(yes)
3165fi
3166
3167AC_MSG_CHECKING(--disable-gpm argument)
3168AC_ARG_ENABLE(gpm,
3169 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3170 [enable_gpm="yes"])
3171
3172if test "$enable_gpm" = "yes"; then
3173 AC_MSG_RESULT(no)
3174 dnl Checking if gpm support can be compiled
3175 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3176 [olibs="$LIBS" ; LIBS="-lgpm"]
3177 AC_TRY_LINK(
3178 [#include <gpm.h>
3179 #include <linux/keyboard.h>],
3180 [Gpm_GetLibVersion(NULL);],
3181 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3182 dnl FEAT_MOUSE_GPM if mouse support is included
3183 [vi_cv_have_gpm=yes],
3184 [vi_cv_have_gpm=no])
3185 [LIBS="$olibs"]
3186 )
3187 if test $vi_cv_have_gpm = yes; then
3188 LIBS="$LIBS -lgpm"
3189 AC_DEFINE(HAVE_GPM)
3190 fi
3191else
3192 AC_MSG_RESULT(yes)
3193fi
3194
Bram Moolenaar446cb832008-06-24 21:56:24 +00003195AC_MSG_CHECKING(--disable-sysmouse argument)
3196AC_ARG_ENABLE(sysmouse,
3197 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3198 [enable_sysmouse="yes"])
3199
3200if test "$enable_sysmouse" = "yes"; then
3201 AC_MSG_RESULT(no)
3202 dnl Checking if sysmouse support can be compiled
3203 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3204 dnl defines FEAT_SYSMOUSE if mouse support is included
3205 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3206 AC_TRY_LINK(
3207 [#include <sys/consio.h>
3208 #include <signal.h>
3209 #include <sys/fbio.h>],
3210 [struct mouse_info mouse;
3211 mouse.operation = MOUSE_MODE;
3212 mouse.operation = MOUSE_SHOW;
3213 mouse.u.mode.mode = 0;
3214 mouse.u.mode.signal = SIGUSR2;],
3215 [vi_cv_have_sysmouse=yes],
3216 [vi_cv_have_sysmouse=no])
3217 )
3218 if test $vi_cv_have_sysmouse = yes; then
3219 AC_DEFINE(HAVE_SYSMOUSE)
3220 fi
3221else
3222 AC_MSG_RESULT(yes)
3223fi
3224
Bram Moolenaarf05da212009-11-17 16:13:15 +00003225dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3226AC_MSG_CHECKING(for FD_CLOEXEC)
3227AC_TRY_COMPILE(
3228[#if HAVE_FCNTL_H
3229# include <fcntl.h>
3230#endif],
3231[ int flag = FD_CLOEXEC;],
3232 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3233 AC_MSG_RESULT(not usable))
3234
Bram Moolenaar071d4272004-06-13 20:20:40 +00003235dnl rename needs to be checked separately to work on Nextstep with cc
3236AC_MSG_CHECKING(for rename)
3237AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3238 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3239 AC_MSG_RESULT(no))
3240
3241dnl sysctl() may exist but not the arguments we use
3242AC_MSG_CHECKING(for sysctl)
3243AC_TRY_COMPILE(
3244[#include <sys/types.h>
3245#include <sys/sysctl.h>],
3246[ int mib[2], r;
3247 size_t len;
3248
3249 mib[0] = CTL_HW;
3250 mib[1] = HW_USERMEM;
3251 len = sizeof(r);
3252 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3253 ],
3254 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3255 AC_MSG_RESULT(not usable))
3256
3257dnl sysinfo() may exist but not be Linux compatible
3258AC_MSG_CHECKING(for sysinfo)
3259AC_TRY_COMPILE(
3260[#include <sys/types.h>
3261#include <sys/sysinfo.h>],
3262[ struct sysinfo sinfo;
3263 int t;
3264
3265 (void)sysinfo(&sinfo);
3266 t = sinfo.totalram;
3267 ],
3268 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3269 AC_MSG_RESULT(not usable))
3270
Bram Moolenaar914572a2007-05-01 11:37:47 +00003271dnl struct sysinfo may have the mem_unit field or not
3272AC_MSG_CHECKING(for sysinfo.mem_unit)
3273AC_TRY_COMPILE(
3274[#include <sys/types.h>
3275#include <sys/sysinfo.h>],
3276[ struct sysinfo sinfo;
3277 sinfo.mem_unit = 1;
3278 ],
3279 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3280 AC_MSG_RESULT(no))
3281
Bram Moolenaar071d4272004-06-13 20:20:40 +00003282dnl sysconf() may exist but not support what we want to use
3283AC_MSG_CHECKING(for sysconf)
3284AC_TRY_COMPILE(
3285[#include <unistd.h>],
3286[ (void)sysconf(_SC_PAGESIZE);
3287 (void)sysconf(_SC_PHYS_PAGES);
3288 ],
3289 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3290 AC_MSG_RESULT(not usable))
3291
Bram Moolenaar914703b2010-05-31 21:59:46 +02003292AC_CHECK_SIZEOF([int])
3293AC_CHECK_SIZEOF([long])
3294AC_CHECK_SIZEOF([time_t])
3295AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003296
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003297dnl Make sure that uint32_t is really 32 bits unsigned.
3298AC_MSG_CHECKING([uint32_t is 32 bits])
3299AC_TRY_RUN([
3300#ifdef HAVE_STDINT_H
3301# include <stdint.h>
3302#endif
3303#ifdef HAVE_INTTYPES_H
3304# include <inttypes.h>
3305#endif
3306main() {
3307 uint32_t nr1 = (uint32_t)-1;
3308 uint32_t nr2 = (uint32_t)0xffffffffUL;
3309 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3310 exit(0);
3311}],
3312AC_MSG_RESULT(ok),
3313AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003314AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003315
Bram Moolenaar446cb832008-06-24 21:56:24 +00003316dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3317dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3318
Bram Moolenaar071d4272004-06-13 20:20:40 +00003319[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003320#include "confdefs.h"
3321#ifdef HAVE_STRING_H
3322# include <string.h>
3323#endif
3324#if STDC_HEADERS
3325# include <stdlib.h>
3326# include <stddef.h>
3327#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003328main() {
3329 char buf[10];
3330 strcpy(buf, "abcdefghi");
3331 mch_memmove(buf, buf + 2, 3);
3332 if (strncmp(buf, "ababcf", 6))
3333 exit(1);
3334 strcpy(buf, "abcdefghi");
3335 mch_memmove(buf + 2, buf, 3);
3336 if (strncmp(buf, "cdedef", 6))
3337 exit(1);
3338 exit(0); /* libc version works properly. */
3339}']
3340
Bram Moolenaar446cb832008-06-24 21:56:24 +00003341AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3342 [
3343 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3344 [
3345 vim_cv_memmove_handles_overlap=yes
3346 ],[
3347 vim_cv_memmove_handles_overlap=no
3348 ],[
3349 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3350 ])
3351 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003352
Bram Moolenaar446cb832008-06-24 21:56:24 +00003353if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3354 AC_DEFINE(USEMEMMOVE)
3355else
3356 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3357 [
3358 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3359 [
3360 vim_cv_bcopy_handles_overlap=yes
3361 ],[
3362 vim_cv_bcopy_handles_overlap=no
3363 ],[
3364 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3365 ])
3366 ])
3367
3368 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3369 AC_DEFINE(USEBCOPY)
3370 else
3371 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3372 [
3373 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3374 [
3375 vim_cv_memcpy_handles_overlap=yes
3376 ],[
3377 vim_cv_memcpy_handles_overlap=no
3378 ],[
3379 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3380 ])
3381 ])
3382
3383 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3384 AC_DEFINE(USEMEMCPY)
3385 fi
3386 fi
3387fi
3388
Bram Moolenaar071d4272004-06-13 20:20:40 +00003389
3390dnl Check for multibyte locale functions
3391dnl Find out if _Xsetlocale() is supported by libX11.
3392dnl Check if X_LOCALE should be defined.
3393
3394if test "$enable_multibyte" = "yes"; then
3395 cflags_save=$CFLAGS
3396 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003397 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003398 CFLAGS="$CFLAGS -I$x_includes"
3399 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3400 AC_MSG_CHECKING(whether X_LOCALE needed)
3401 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3402 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3403 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3404 AC_MSG_RESULT(no))
3405 fi
3406 CFLAGS=$cflags_save
3407 LDFLAGS=$ldflags_save
3408fi
3409
3410dnl Link with xpg4, it is said to make Korean locale working
3411AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3412
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003413dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003414dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003415dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003416dnl -t for typedefs (many ctags have this)
3417dnl -s for static functions (Elvis ctags only?)
3418dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3419dnl -i+m to test for older Exuberant ctags
3420AC_MSG_CHECKING(how to create tags)
3421test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003422if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003423 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003424elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3425 TAGPRG="exctags -I INIT+ --fields=+S"
3426elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3427 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003428else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003429 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003430 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3431 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3432 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3433 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3434 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3435 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3436 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3437fi
3438test -f tags.save && mv tags.save tags
3439AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3440
3441dnl Check how we can run man with a section number
3442AC_MSG_CHECKING(how to run man with a section nr)
3443MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003444(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 +00003445AC_MSG_RESULT($MANDEF)
3446if test "$MANDEF" = "man -s"; then
3447 AC_DEFINE(USEMAN_S)
3448fi
3449
3450dnl Check if gettext() is working and if it needs -lintl
3451AC_MSG_CHECKING(--disable-nls argument)
3452AC_ARG_ENABLE(nls,
3453 [ --disable-nls Don't support NLS (gettext()).], ,
3454 [enable_nls="yes"])
3455
3456if test "$enable_nls" = "yes"; then
3457 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003458
3459 INSTALL_LANGS=install-languages
3460 AC_SUBST(INSTALL_LANGS)
3461 INSTALL_TOOL_LANGS=install-tool-languages
3462 AC_SUBST(INSTALL_TOOL_LANGS)
3463
Bram Moolenaar071d4272004-06-13 20:20:40 +00003464 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3465 AC_MSG_CHECKING([for NLS])
3466 if test -f po/Makefile; then
3467 have_gettext="no"
3468 if test -n "$MSGFMT"; then
3469 AC_TRY_LINK(
3470 [#include <libintl.h>],
3471 [gettext("Test");],
3472 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3473 olibs=$LIBS
3474 LIBS="$LIBS -lintl"
3475 AC_TRY_LINK(
3476 [#include <libintl.h>],
3477 [gettext("Test");],
3478 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3479 AC_MSG_RESULT([gettext() doesn't work]);
3480 LIBS=$olibs))
3481 else
3482 AC_MSG_RESULT([msgfmt not found - disabled]);
3483 fi
3484 if test $have_gettext = "yes"; then
3485 AC_DEFINE(HAVE_GETTEXT)
3486 MAKEMO=yes
3487 AC_SUBST(MAKEMO)
3488 dnl this was added in GNU gettext 0.10.36
3489 AC_CHECK_FUNCS(bind_textdomain_codeset)
3490 dnl _nl_msg_cat_cntr is required for GNU gettext
3491 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3492 AC_TRY_LINK(
3493 [#include <libintl.h>
3494 extern int _nl_msg_cat_cntr;],
3495 [++_nl_msg_cat_cntr;],
3496 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3497 AC_MSG_RESULT([no]))
3498 fi
3499 else
3500 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3501 fi
3502else
3503 AC_MSG_RESULT(yes)
3504fi
3505
3506dnl Check for dynamic linking loader
3507AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3508if test x${DLL} = xdlfcn.h; then
3509 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3510 AC_MSG_CHECKING([for dlopen()])
3511 AC_TRY_LINK(,[
3512 extern void* dlopen();
3513 dlopen();
3514 ],
3515 AC_MSG_RESULT(yes);
3516 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3517 AC_MSG_RESULT(no);
3518 AC_MSG_CHECKING([for dlopen() in -ldl])
3519 olibs=$LIBS
3520 LIBS="$LIBS -ldl"
3521 AC_TRY_LINK(,[
3522 extern void* dlopen();
3523 dlopen();
3524 ],
3525 AC_MSG_RESULT(yes);
3526 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3527 AC_MSG_RESULT(no);
3528 LIBS=$olibs))
3529 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3530 dnl ick :-)
3531 AC_MSG_CHECKING([for dlsym()])
3532 AC_TRY_LINK(,[
3533 extern void* dlsym();
3534 dlsym();
3535 ],
3536 AC_MSG_RESULT(yes);
3537 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3538 AC_MSG_RESULT(no);
3539 AC_MSG_CHECKING([for dlsym() in -ldl])
3540 olibs=$LIBS
3541 LIBS="$LIBS -ldl"
3542 AC_TRY_LINK(,[
3543 extern void* dlsym();
3544 dlsym();
3545 ],
3546 AC_MSG_RESULT(yes);
3547 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3548 AC_MSG_RESULT(no);
3549 LIBS=$olibs))
3550elif test x${DLL} = xdl.h; then
3551 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3552 AC_MSG_CHECKING([for shl_load()])
3553 AC_TRY_LINK(,[
3554 extern void* shl_load();
3555 shl_load();
3556 ],
3557 AC_MSG_RESULT(yes);
3558 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3559 AC_MSG_RESULT(no);
3560 AC_MSG_CHECKING([for shl_load() in -ldld])
3561 olibs=$LIBS
3562 LIBS="$LIBS -ldld"
3563 AC_TRY_LINK(,[
3564 extern void* shl_load();
3565 shl_load();
3566 ],
3567 AC_MSG_RESULT(yes);
3568 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3569 AC_MSG_RESULT(no);
3570 LIBS=$olibs))
3571fi
3572AC_CHECK_HEADERS(setjmp.h)
3573
3574if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3575 dnl -ldl must come after DynaLoader.a
3576 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3577 LIBS=`echo $LIBS | sed s/-ldl//`
3578 PERL_LIBS="$PERL_LIBS -ldl"
3579 fi
3580fi
3581
Bram Moolenaar164fca32010-07-14 13:58:07 +02003582if test "x$MACOSX" = "xyes"; then
3583 AC_MSG_CHECKING(whether we need -framework Cocoa)
3584 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3585 dnl disabled during tiny build)
3586 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3587 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003588 AC_MSG_RESULT(yes)
3589 else
3590 AC_MSG_RESULT(no)
3591 fi
3592fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003593if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003594 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003595fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003596
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003597dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3598dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3599dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003600dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3601dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003602DEPEND_CFLAGS_FILTER=
3603if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003604 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003605 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003606 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003607 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003608 AC_MSG_RESULT(yes)
3609 else
3610 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003611 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003612 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3613 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003614 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003615 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003616 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3617 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003618 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 +00003619 AC_MSG_RESULT(yes)
3620 else
3621 AC_MSG_RESULT(no)
3622 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003623fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003624AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003625
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003626dnl link.sh tries to avoid overlinking in a hackish way.
3627dnl At least GNU ld supports --as-needed which provides the same functionality
3628dnl at linker level. Let's use it.
3629AC_MSG_CHECKING(linker --as-needed support)
3630LINK_AS_NEEDED=
3631# Check if linker supports --as-needed and --no-as-needed options
3632if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3633 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3634 LINK_AS_NEEDED=yes
3635fi
3636if test "$LINK_AS_NEEDED" = yes; then
3637 AC_MSG_RESULT(yes)
3638else
3639 AC_MSG_RESULT(no)
3640fi
3641AC_SUBST(LINK_AS_NEEDED)
3642
Bram Moolenaar77c19352012-06-13 19:19:41 +02003643# IBM z/OS reset CFLAGS for config.mk
3644if test "$zOSUnix" = "yes"; then
3645 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3646fi
3647
Bram Moolenaar071d4272004-06-13 20:20:40 +00003648dnl write output files
3649AC_OUTPUT(auto/config.mk:config.mk.in)
3650
3651dnl vim: set sw=2 tw=78 fo+=l: