blob: 89d8895adc2d0d6beee4b0f1b912cc2a61e88c3c [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e902192013-07-17 18:58:11 +0200705 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
706 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
707
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000708 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100709 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200710
711 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
712 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
713 cflags_save=$CFLAGS
714 libs_save=$LIBS
715 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
716 LIBS="$LIBS $MZSCHEME_LIBS"
717 AC_TRY_LINK(,[ ],
718 AC_MSG_RESULT(yes); mzs_ok=yes,
719 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
720 CFLAGS=$cflags_save
721 LIBS=$libs_save
722 if test $mzs_ok = yes; then
723 MZSCHEME_SRC="if_mzsch.c"
724 MZSCHEME_OBJ="objects/if_mzsch.o"
725 MZSCHEME_PRO="if_mzsch.pro"
726 AC_DEFINE(FEAT_MZSCHEME)
727 else
728 MZSCHEME_CFLAGS=
729 MZSCHEME_LIBS=
730 MZSCHEME_EXTRA=
731 MZSCHEME_MZC=
732 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000733 fi
734 AC_SUBST(MZSCHEME_SRC)
735 AC_SUBST(MZSCHEME_OBJ)
736 AC_SUBST(MZSCHEME_PRO)
737 AC_SUBST(MZSCHEME_LIBS)
738 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000739 AC_SUBST(MZSCHEME_EXTRA)
740 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000741fi
742
743
Bram Moolenaar071d4272004-06-13 20:20:40 +0000744AC_MSG_CHECKING(--enable-perlinterp argument)
745AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200746 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000747 [enable_perlinterp="no"])
748AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200749if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000750 AC_SUBST(vi_cv_path_perl)
751 AC_PATH_PROG(vi_cv_path_perl, perl)
752 if test "X$vi_cv_path_perl" != "X"; then
753 AC_MSG_CHECKING(Perl version)
754 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
755 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200756 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000757 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
758 badthreads=no
759 else
760 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
761 eval `$vi_cv_path_perl -V:use5005threads`
762 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
763 badthreads=no
764 else
765 badthreads=yes
766 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
767 fi
768 else
769 badthreads=yes
770 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
771 fi
772 fi
773 if test $badthreads = no; then
774 AC_MSG_RESULT(OK)
775 eval `$vi_cv_path_perl -V:shrpenv`
776 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
777 shrpenv=""
778 fi
779 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
780 AC_SUBST(vi_cv_perllib)
781 dnl Remove "-fno-something", it breaks using cproto.
782 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
783 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
784 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
785 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
786 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
787 -e 's/-bE:perl.exp//' -e 's/-lc //'`
788 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
789 dnl a test in configure may fail because of that.
790 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
791 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
792
793 dnl check that compiling a simple program still works with the flags
794 dnl added for Perl.
795 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
796 cflags_save=$CFLAGS
797 libs_save=$LIBS
798 ldflags_save=$LDFLAGS
799 CFLAGS="$CFLAGS $perlcppflags"
800 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200801 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000802 LDFLAGS="$perlldflags $LDFLAGS"
803 AC_TRY_LINK(,[ ],
804 AC_MSG_RESULT(yes); perl_ok=yes,
805 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
806 CFLAGS=$cflags_save
807 LIBS=$libs_save
808 LDFLAGS=$ldflags_save
809 if test $perl_ok = yes; then
810 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000811 dnl remove -pipe and -Wxxx, it confuses cproto
812 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000813 fi
814 if test "X$perlldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200815 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then
816 LDFLAGS="$perlldflags $LDFLAGS"
817 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000818 fi
819 PERL_LIBS=$perllibs
820 PERL_SRC="auto/if_perl.c if_perlsfio.c"
821 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
822 PERL_PRO="if_perl.pro if_perlsfio.pro"
823 AC_DEFINE(FEAT_PERL)
824 fi
825 fi
826 else
827 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
828 fi
829 fi
830
831 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000832 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833 dir=/System/Library/Perl
834 darwindir=$dir/darwin
835 if test -d $darwindir; then
836 PERL=/usr/bin/perl
837 else
838 dnl Mac OS X 10.3
839 dir=/System/Library/Perl/5.8.1
840 darwindir=$dir/darwin-thread-multi-2level
841 if test -d $darwindir; then
842 PERL=/usr/bin/perl
843 fi
844 fi
845 if test -n "$PERL"; then
846 PERL_DIR="$dir"
847 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
848 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
849 PERL_LIBS="-L$darwindir/CORE -lperl"
850 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200851 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
852 dnl be included if requested by passing --with-mac-arch to
853 dnl configure, so strip these flags first (if present)
854 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
855 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 +0000856 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200857 if test "$enable_perlinterp" = "dynamic"; then
858 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
859 AC_DEFINE(DYNAMIC_PERL)
860 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
861 fi
862 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100863
864 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
865 AC_MSG_ERROR([could not configure perl])
866 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000867fi
868AC_SUBST(shrpenv)
869AC_SUBST(PERL_SRC)
870AC_SUBST(PERL_OBJ)
871AC_SUBST(PERL_PRO)
872AC_SUBST(PERL_CFLAGS)
873AC_SUBST(PERL_LIBS)
874
875AC_MSG_CHECKING(--enable-pythoninterp argument)
876AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200877 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000878 [enable_pythoninterp="no"])
879AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200880if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000881 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100882 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000883 if test "X$vi_cv_path_python" != "X"; then
884
885 dnl -- get its version number
886 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
887 [[vi_cv_var_python_version=`
888 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
889 ]])
890
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200891 dnl -- it must be at least version 2.3
892 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000893 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200894 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000895 then
896 AC_MSG_RESULT(yep)
897
898 dnl -- find where python thinks it was installed
899 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
900 [ vi_cv_path_python_pfx=`
901 ${vi_cv_path_python} -c \
902 "import sys; print sys.prefix"` ])
903
904 dnl -- and where it thinks it runs
905 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
906 [ vi_cv_path_python_epfx=`
907 ${vi_cv_path_python} -c \
908 "import sys; print sys.exec_prefix"` ])
909
910 dnl -- python's internal library path
911
912 AC_CACHE_VAL(vi_cv_path_pythonpath,
913 [ vi_cv_path_pythonpath=`
914 unset PYTHONPATH;
915 ${vi_cv_path_python} -c \
916 "import sys, string; print string.join(sys.path,':')"` ])
917
918 dnl -- where the Python implementation library archives are
919
920 AC_ARG_WITH(python-config-dir,
921 [ --with-python-config-dir=PATH Python's config directory],
922 [ vi_cv_path_python_conf="${withval}" ] )
923
924 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
925 [
926 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200927 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
928 if test -d "$d" && test -f "$d/config.c"; then
929 vi_cv_path_python_conf="$d"
930 else
931 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
932 for subdir in lib64 lib share; do
933 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
934 if test -d "$d" && test -f "$d/config.c"; then
935 vi_cv_path_python_conf="$d"
936 fi
937 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000938 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200939 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000940 ])
941
942 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
943
944 if test "X$PYTHON_CONFDIR" = "X"; then
945 AC_MSG_RESULT([can't find it!])
946 else
947
948 dnl -- we need to examine Python's config/Makefile too
949 dnl see what the interpreter is built from
950 AC_CACHE_VAL(vi_cv_path_python_plibs,
951 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000952 pwd=`pwd`
953 tmp_mkf="$pwd/config-PyMake$$"
954 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000955__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200956 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000957 @echo "python_LIBS='$(LIBS)'"
958 @echo "python_SYSLIBS='$(SYSLIBS)'"
959 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200960 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200961 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000962eof
963 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000964 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
965 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000966 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
967 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
968 vi_cv_path_python_plibs="-framework Python"
969 else
970 if test "${vi_cv_var_python_version}" = "1.4"; then
971 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
972 else
973 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
974 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200975 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 +0000976 dnl remove -ltermcap, it can conflict with an earlier -lncurses
977 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
978 fi
979 ])
980
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200981 if test "X$python_DLLLIBRARY" != "X"; then
982 python_INSTSONAME="$python_DLLLIBRARY"
983 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000984 PYTHON_LIBS="${vi_cv_path_python_plibs}"
985 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200986 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 +0000987 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200988 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 +0000989 fi
990 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200991 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992 if test "${vi_cv_var_python_version}" = "1.4"; then
993 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
994 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100995 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 +0000996
997 dnl On FreeBSD linking with "-pthread" is required to use threads.
998 dnl _THREAD_SAFE must be used for compiling then.
999 dnl The "-pthread" is added to $LIBS, so that the following check for
1000 dnl sigaltstack() will look in libc_r (it's there in libc!).
1001 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1002 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1003 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1004 AC_MSG_CHECKING([if -pthread should be used])
1005 threadsafe_flag=
1006 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001007 dnl if test "x$MACOSX" != "xyes"; then
1008 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001009 test "$GCC" = yes && threadsafe_flag="-pthread"
1010 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1011 threadsafe_flag="-D_THREAD_SAFE"
1012 thread_lib="-pthread"
1013 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001014 if test "`(uname) 2>/dev/null`" = SunOS; then
1015 threadsafe_flag="-pthreads"
1016 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001017 fi
1018 libs_save_old=$LIBS
1019 if test -n "$threadsafe_flag"; then
1020 cflags_save=$CFLAGS
1021 CFLAGS="$CFLAGS $threadsafe_flag"
1022 LIBS="$LIBS $thread_lib"
1023 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001024 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001025 AC_MSG_RESULT(no); LIBS=$libs_save_old
1026 )
1027 CFLAGS=$cflags_save
1028 else
1029 AC_MSG_RESULT(no)
1030 fi
1031
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001032 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001033 dnl added for Python.
1034 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1035 cflags_save=$CFLAGS
1036 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001037 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001038 LIBS="$LIBS $PYTHON_LIBS"
1039 AC_TRY_LINK(,[ ],
1040 AC_MSG_RESULT(yes); python_ok=yes,
1041 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1042 CFLAGS=$cflags_save
1043 LIBS=$libs_save
1044 if test $python_ok = yes; then
1045 AC_DEFINE(FEAT_PYTHON)
1046 else
1047 LIBS=$libs_save_old
1048 PYTHON_SRC=
1049 PYTHON_OBJ=
1050 PYTHON_LIBS=
1051 PYTHON_CFLAGS=
1052 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001053 fi
1054 else
1055 AC_MSG_RESULT(too old)
1056 fi
1057 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001058
1059 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1060 AC_MSG_ERROR([could not configure python])
1061 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001062fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001063
Bram Moolenaar071d4272004-06-13 20:20:40 +00001064AC_SUBST(PYTHON_CONFDIR)
1065AC_SUBST(PYTHON_LIBS)
1066AC_SUBST(PYTHON_GETPATH_CFLAGS)
1067AC_SUBST(PYTHON_CFLAGS)
1068AC_SUBST(PYTHON_SRC)
1069AC_SUBST(PYTHON_OBJ)
1070
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001071
1072AC_MSG_CHECKING(--enable-python3interp argument)
1073AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001074 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001075 [enable_python3interp="no"])
1076AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001077if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001078 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001079 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001080 if test "X$vi_cv_path_python3" != "X"; then
1081
1082 dnl -- get its version number
1083 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1084 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001085 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001086 ]])
1087
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001088 dnl -- it must be at least version 3
1089 AC_MSG_CHECKING(Python is 3.0 or better)
1090 if ${vi_cv_path_python3} -c \
1091 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1092 then
1093 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001094
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001095 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1096 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001097 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001098 vi_cv_var_python3_abiflags=
1099 if ${vi_cv_path_python3} -c \
1100 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1101 then
1102 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1103 "import sys; print(sys.abiflags)"`
1104 fi ])
1105
1106 dnl -- find where python3 thinks it was installed
1107 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1108 [ vi_cv_path_python3_pfx=`
1109 ${vi_cv_path_python3} -c \
1110 "import sys; print(sys.prefix)"` ])
1111
1112 dnl -- and where it thinks it runs
1113 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1114 [ vi_cv_path_python3_epfx=`
1115 ${vi_cv_path_python3} -c \
1116 "import sys; print(sys.exec_prefix)"` ])
1117
1118 dnl -- python3's internal library path
1119
1120 AC_CACHE_VAL(vi_cv_path_python3path,
1121 [ vi_cv_path_python3path=`
1122 unset PYTHONPATH;
1123 ${vi_cv_path_python3} -c \
1124 "import sys, string; print(':'.join(sys.path))"` ])
1125
1126 dnl -- where the Python implementation library archives are
1127
1128 AC_ARG_WITH(python3-config-dir,
1129 [ --with-python3-config-dir=PATH Python's config directory],
1130 [ vi_cv_path_python3_conf="${withval}" ] )
1131
1132 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1133 [
1134 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001135 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001136 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1137 if test -d "$d" && test -f "$d/config.c"; then
1138 vi_cv_path_python3_conf="$d"
1139 else
1140 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1141 for subdir in lib64 lib share; do
1142 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1143 if test -d "$d" && test -f "$d/config.c"; then
1144 vi_cv_path_python3_conf="$d"
1145 fi
1146 done
1147 done
1148 fi
1149 ])
1150
1151 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1152
1153 if test "X$PYTHON3_CONFDIR" = "X"; then
1154 AC_MSG_RESULT([can't find it!])
1155 else
1156
1157 dnl -- we need to examine Python's config/Makefile too
1158 dnl see what the interpreter is built from
1159 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1160 [
1161 pwd=`pwd`
1162 tmp_mkf="$pwd/config-PyMake$$"
1163 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001164__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001165 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001166 @echo "python3_LIBS='$(LIBS)'"
1167 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001168 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001169 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001170eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001171 dnl -- delete the lines from make about Entering/Leaving directory
1172 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1173 rm -f -- "${tmp_mkf}"
1174 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1175 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1176 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1177 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1178 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1179 ])
1180
1181 if test "X$python3_DLLLIBRARY" != "X"; then
1182 python3_INSTSONAME="$python3_DLLLIBRARY"
1183 fi
1184 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1185 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001186 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001187 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001188 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001189 fi
1190 PYTHON3_SRC="if_python3.c"
1191 PYTHON3_OBJ="objects/if_python3.o"
1192
1193 dnl On FreeBSD linking with "-pthread" is required to use threads.
1194 dnl _THREAD_SAFE must be used for compiling then.
1195 dnl The "-pthread" is added to $LIBS, so that the following check for
1196 dnl sigaltstack() will look in libc_r (it's there in libc!).
1197 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1198 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1199 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1200 AC_MSG_CHECKING([if -pthread should be used])
1201 threadsafe_flag=
1202 thread_lib=
1203 dnl if test "x$MACOSX" != "xyes"; then
1204 if test "`(uname) 2>/dev/null`" != Darwin; then
1205 test "$GCC" = yes && threadsafe_flag="-pthread"
1206 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1207 threadsafe_flag="-D_THREAD_SAFE"
1208 thread_lib="-pthread"
1209 fi
1210 if test "`(uname) 2>/dev/null`" = SunOS; then
1211 threadsafe_flag="-pthreads"
1212 fi
1213 fi
1214 libs_save_old=$LIBS
1215 if test -n "$threadsafe_flag"; then
1216 cflags_save=$CFLAGS
1217 CFLAGS="$CFLAGS $threadsafe_flag"
1218 LIBS="$LIBS $thread_lib"
1219 AC_TRY_LINK(,[ ],
1220 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1221 AC_MSG_RESULT(no); LIBS=$libs_save_old
1222 )
1223 CFLAGS=$cflags_save
1224 else
1225 AC_MSG_RESULT(no)
1226 fi
1227
1228 dnl check that compiling a simple program still works with the flags
1229 dnl added for Python.
1230 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1231 cflags_save=$CFLAGS
1232 libs_save=$LIBS
1233 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1234 LIBS="$LIBS $PYTHON3_LIBS"
1235 AC_TRY_LINK(,[ ],
1236 AC_MSG_RESULT(yes); python3_ok=yes,
1237 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1238 CFLAGS=$cflags_save
1239 LIBS=$libs_save
1240 if test "$python3_ok" = yes; then
1241 AC_DEFINE(FEAT_PYTHON3)
1242 else
1243 LIBS=$libs_save_old
1244 PYTHON3_SRC=
1245 PYTHON3_OBJ=
1246 PYTHON3_LIBS=
1247 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001248 fi
1249 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001250 else
1251 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001252 fi
1253 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001254 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1255 AC_MSG_ERROR([could not configure python3])
1256 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001257fi
1258
1259AC_SUBST(PYTHON3_CONFDIR)
1260AC_SUBST(PYTHON3_LIBS)
1261AC_SUBST(PYTHON3_CFLAGS)
1262AC_SUBST(PYTHON3_SRC)
1263AC_SUBST(PYTHON3_OBJ)
1264
1265dnl if python2.x and python3.x are enabled one can only link in code
1266dnl with dlopen(), dlsym(), dlclose()
1267if test "$python_ok" = yes && test "$python3_ok" = yes; then
1268 AC_DEFINE(DYNAMIC_PYTHON)
1269 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001270 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001271 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001272 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001273 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001274 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1275 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001276 AC_RUN_IFELSE([
1277 #include <dlfcn.h>
1278 /* If this program fails, then RTLD_GLOBAL is needed.
1279 * RTLD_GLOBAL will be used and then it is not possible to
1280 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001281 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001282 */
1283
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001284 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001285 {
1286 int needed = 0;
1287 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1288 if (pylib != 0)
1289 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001290 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001291 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1292 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1293 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001294 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001295 (*init)();
1296 needed = (*simple)("import termios") == -1;
1297 (*final)();
1298 dlclose(pylib);
1299 }
1300 return !needed;
1301 }
1302
1303 int main(int argc, char** argv)
1304 {
1305 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001306 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001307 not_needed = 1;
1308 return !not_needed;
1309 }],
1310 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001311
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001312 CFLAGS=$cflags_save
1313 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001314
1315 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1316 cflags_save=$CFLAGS
1317 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1318 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001319 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1320 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001321 AC_RUN_IFELSE([
1322 #include <dlfcn.h>
1323 #include <wchar.h>
1324 /* If this program fails, then RTLD_GLOBAL is needed.
1325 * RTLD_GLOBAL will be used and then it is not possible to
1326 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001327 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001328 */
1329
1330 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1331 {
1332 int needed = 0;
1333 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1334 if (pylib != 0)
1335 {
1336 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1337 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1338 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1339 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1340 (*pfx)(prefix);
1341 (*init)();
1342 needed = (*simple)("import termios") == -1;
1343 (*final)();
1344 dlclose(pylib);
1345 }
1346 return !needed;
1347 }
1348
1349 int main(int argc, char** argv)
1350 {
1351 int not_needed = 0;
1352 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1353 not_needed = 1;
1354 return !not_needed;
1355 }],
1356 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1357
1358 CFLAGS=$cflags_save
1359 LDFLAGS=$ldflags_save
1360
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001361 PYTHON_SRC="if_python.c"
1362 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001363 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001364 PYTHON_LIBS=
1365 PYTHON3_SRC="if_python3.c"
1366 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001367 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001368 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001369elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1370 AC_DEFINE(DYNAMIC_PYTHON)
1371 PYTHON_SRC="if_python.c"
1372 PYTHON_OBJ="objects/if_python.o"
1373 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1374 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001375elif test "$python_ok" = yes; then
1376 dnl Check that adding -fPIE works. It may be needed when using a static
1377 dnl Python library.
1378 AC_MSG_CHECKING([if -fPIE can be added for Python])
1379 cflags_save=$CFLAGS
1380 libs_save=$LIBS
1381 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1382 LIBS="$LIBS $PYTHON_LIBS"
1383 AC_TRY_LINK(,[ ],
1384 AC_MSG_RESULT(yes); fpie_ok=yes,
1385 AC_MSG_RESULT(no); fpie_ok=no)
1386 CFLAGS=$cflags_save
1387 LIBS=$libs_save
1388 if test $fpie_ok = yes; then
1389 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1390 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001391elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1392 AC_DEFINE(DYNAMIC_PYTHON3)
1393 PYTHON3_SRC="if_python3.c"
1394 PYTHON3_OBJ="objects/if_python3.o"
1395 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1396 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001397elif test "$python3_ok" = yes; then
1398 dnl Check that adding -fPIE works. It may be needed when using a static
1399 dnl Python library.
1400 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1401 cflags_save=$CFLAGS
1402 libs_save=$LIBS
1403 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1404 LIBS="$LIBS $PYTHON3_LIBS"
1405 AC_TRY_LINK(,[ ],
1406 AC_MSG_RESULT(yes); fpie_ok=yes,
1407 AC_MSG_RESULT(no); fpie_ok=no)
1408 CFLAGS=$cflags_save
1409 LIBS=$libs_save
1410 if test $fpie_ok = yes; then
1411 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1412 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001413fi
1414
Bram Moolenaar071d4272004-06-13 20:20:40 +00001415AC_MSG_CHECKING(--enable-tclinterp argument)
1416AC_ARG_ENABLE(tclinterp,
1417 [ --enable-tclinterp Include Tcl interpreter.], ,
1418 [enable_tclinterp="no"])
1419AC_MSG_RESULT($enable_tclinterp)
1420
1421if test "$enable_tclinterp" = "yes"; then
1422
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001423 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001424 AC_MSG_CHECKING(--with-tclsh argument)
1425 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1426 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001427 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001428 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1429 AC_SUBST(vi_cv_path_tcl)
1430
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001431 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1432 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1433 tclsh_name="tclsh8.4"
1434 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1435 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001436 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001437 tclsh_name="tclsh8.2"
1438 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1439 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001440 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1441 tclsh_name="tclsh8.0"
1442 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1443 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001444 dnl still didn't find it, try without version number
1445 if test "X$vi_cv_path_tcl" = "X"; then
1446 tclsh_name="tclsh"
1447 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1448 fi
1449 if test "X$vi_cv_path_tcl" != "X"; then
1450 AC_MSG_CHECKING(Tcl version)
1451 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1452 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1453 AC_MSG_RESULT($tclver - OK);
1454 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 -`
1455
1456 AC_MSG_CHECKING(for location of Tcl include)
1457 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001458 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 +00001459 else
1460 dnl For Mac OS X 10.3, use the OS-provided framework location
1461 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1462 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001463 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001464 for try in $tclinc; do
1465 if test -f "$try/tcl.h"; then
1466 AC_MSG_RESULT($try/tcl.h)
1467 TCL_INC=$try
1468 break
1469 fi
1470 done
1471 if test -z "$TCL_INC"; then
1472 AC_MSG_RESULT(<not found>)
1473 SKIP_TCL=YES
1474 fi
1475 if test -z "$SKIP_TCL"; then
1476 AC_MSG_CHECKING(for location of tclConfig.sh script)
1477 if test "x$MACOSX" != "xyes"; then
1478 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001479 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001480 else
1481 dnl For Mac OS X 10.3, use the OS-provided framework location
1482 tclcnf="/System/Library/Frameworks/Tcl.framework"
1483 fi
1484 for try in $tclcnf; do
1485 if test -f $try/tclConfig.sh; then
1486 AC_MSG_RESULT($try/tclConfig.sh)
1487 . $try/tclConfig.sh
1488 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1489 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1490 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001491 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001492 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 +00001493 break
1494 fi
1495 done
1496 if test -z "$TCL_LIBS"; then
1497 AC_MSG_RESULT(<not found>)
1498 AC_MSG_CHECKING(for Tcl library by myself)
1499 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001500 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001501 for ext in .so .a ; do
1502 for ver in "" $tclver ; do
1503 for try in $tcllib ; do
1504 trylib=tcl$ver$ext
1505 if test -f $try/lib$trylib ; then
1506 AC_MSG_RESULT($try/lib$trylib)
1507 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1508 if test "`(uname) 2>/dev/null`" = SunOS &&
1509 uname -r | grep '^5' >/dev/null; then
1510 TCL_LIBS="$TCL_LIBS -R $try"
1511 fi
1512 break 3
1513 fi
1514 done
1515 done
1516 done
1517 if test -z "$TCL_LIBS"; then
1518 AC_MSG_RESULT(<not found>)
1519 SKIP_TCL=YES
1520 fi
1521 fi
1522 if test -z "$SKIP_TCL"; then
1523 AC_DEFINE(FEAT_TCL)
1524 TCL_SRC=if_tcl.c
1525 TCL_OBJ=objects/if_tcl.o
1526 TCL_PRO=if_tcl.pro
1527 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1528 fi
1529 fi
1530 else
1531 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1532 fi
1533 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001534 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1535 AC_MSG_ERROR([could not configure Tcl])
1536 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001537fi
1538AC_SUBST(TCL_SRC)
1539AC_SUBST(TCL_OBJ)
1540AC_SUBST(TCL_PRO)
1541AC_SUBST(TCL_CFLAGS)
1542AC_SUBST(TCL_LIBS)
1543
1544AC_MSG_CHECKING(--enable-rubyinterp argument)
1545AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001546 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001547 [enable_rubyinterp="no"])
1548AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001549if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001550 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001551 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001552 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1553 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1554 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001555 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001556 if test "X$vi_cv_path_ruby" != "X"; then
1557 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001558 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 +00001559 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001560 AC_MSG_CHECKING(Ruby rbconfig)
1561 ruby_rbconfig="RbConfig"
1562 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1563 ruby_rbconfig="Config"
1564 fi
1565 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001566 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001567 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001568 if test "X$rubyhdrdir" != "X"; then
1569 AC_MSG_RESULT($rubyhdrdir)
1570 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001571 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001572 if test -d "$rubyhdrdir/$rubyarch"; then
1573 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1574 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001575 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001576 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001577 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001578 if test "X$rubylibs" != "X"; then
1579 RUBY_LIBS="$rubylibs"
1580 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001581 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1582 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001583 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001584 if test -f "$rubylibdir/$librubya"; then
1585 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001586 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1587 elif test "$librubyarg" = "libruby.a"; then
1588 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1589 librubyarg="-lruby"
1590 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001591 fi
1592
1593 if test "X$librubyarg" != "X"; then
1594 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1595 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001596 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001597 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001598 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1599 dnl be included if requested by passing --with-mac-arch to
1600 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001601 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001602 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001603 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1604 LDFLAGS="$rubyldflags $LDFLAGS"
1605 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001606 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001607 fi
1608 RUBY_SRC="if_ruby.c"
1609 RUBY_OBJ="objects/if_ruby.o"
1610 RUBY_PRO="if_ruby.pro"
1611 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001612 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001613 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001614 AC_DEFINE(DYNAMIC_RUBY)
1615 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1616 RUBY_LIBS=
1617 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001618 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001619 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001620 fi
1621 else
1622 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1623 fi
1624 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001625
1626 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1627 AC_MSG_ERROR([could not configure Ruby])
1628 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001629fi
1630AC_SUBST(RUBY_SRC)
1631AC_SUBST(RUBY_OBJ)
1632AC_SUBST(RUBY_PRO)
1633AC_SUBST(RUBY_CFLAGS)
1634AC_SUBST(RUBY_LIBS)
1635
1636AC_MSG_CHECKING(--enable-cscope argument)
1637AC_ARG_ENABLE(cscope,
1638 [ --enable-cscope Include cscope interface.], ,
1639 [enable_cscope="no"])
1640AC_MSG_RESULT($enable_cscope)
1641if test "$enable_cscope" = "yes"; then
1642 AC_DEFINE(FEAT_CSCOPE)
1643fi
1644
1645AC_MSG_CHECKING(--enable-workshop argument)
1646AC_ARG_ENABLE(workshop,
1647 [ --enable-workshop Include Sun Visual Workshop support.], ,
1648 [enable_workshop="no"])
1649AC_MSG_RESULT($enable_workshop)
1650if test "$enable_workshop" = "yes"; then
1651 AC_DEFINE(FEAT_SUN_WORKSHOP)
1652 WORKSHOP_SRC="workshop.c integration.c"
1653 AC_SUBST(WORKSHOP_SRC)
1654 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1655 AC_SUBST(WORKSHOP_OBJ)
1656 if test "${enable_gui-xxx}" = xxx; then
1657 enable_gui=motif
1658 fi
1659fi
1660
1661AC_MSG_CHECKING(--disable-netbeans argument)
1662AC_ARG_ENABLE(netbeans,
1663 [ --disable-netbeans Disable NetBeans integration support.],
1664 , [enable_netbeans="yes"])
1665if test "$enable_netbeans" = "yes"; then
1666 AC_MSG_RESULT(no)
1667 dnl On Solaris we need the socket and nsl library.
1668 AC_CHECK_LIB(socket, socket)
1669 AC_CHECK_LIB(nsl, gethostbyname)
1670 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1671 AC_TRY_LINK([
1672#include <stdio.h>
1673#include <stdlib.h>
1674#include <stdarg.h>
1675#include <fcntl.h>
1676#include <netdb.h>
1677#include <netinet/in.h>
1678#include <errno.h>
1679#include <sys/types.h>
1680#include <sys/socket.h>
1681 /* Check bitfields */
1682 struct nbbuf {
1683 unsigned int initDone:1;
1684 ushort signmaplen;
1685 };
1686 ], [
1687 /* Check creating a socket. */
1688 struct sockaddr_in server;
1689 (void)socket(AF_INET, SOCK_STREAM, 0);
1690 (void)htons(100);
1691 (void)gethostbyname("microsoft.com");
1692 if (errno == ECONNREFUSED)
1693 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1694 ],
1695 AC_MSG_RESULT(yes),
1696 AC_MSG_RESULT(no); enable_netbeans="no")
1697else
1698 AC_MSG_RESULT(yes)
1699fi
1700if test "$enable_netbeans" = "yes"; then
1701 AC_DEFINE(FEAT_NETBEANS_INTG)
1702 NETBEANS_SRC="netbeans.c"
1703 AC_SUBST(NETBEANS_SRC)
1704 NETBEANS_OBJ="objects/netbeans.o"
1705 AC_SUBST(NETBEANS_OBJ)
1706fi
1707
1708AC_MSG_CHECKING(--enable-sniff argument)
1709AC_ARG_ENABLE(sniff,
1710 [ --enable-sniff Include Sniff interface.], ,
1711 [enable_sniff="no"])
1712AC_MSG_RESULT($enable_sniff)
1713if test "$enable_sniff" = "yes"; then
1714 AC_DEFINE(FEAT_SNIFF)
1715 SNIFF_SRC="if_sniff.c"
1716 AC_SUBST(SNIFF_SRC)
1717 SNIFF_OBJ="objects/if_sniff.o"
1718 AC_SUBST(SNIFF_OBJ)
1719fi
1720
1721AC_MSG_CHECKING(--enable-multibyte argument)
1722AC_ARG_ENABLE(multibyte,
1723 [ --enable-multibyte Include multibyte editing support.], ,
1724 [enable_multibyte="no"])
1725AC_MSG_RESULT($enable_multibyte)
1726if test "$enable_multibyte" = "yes"; then
1727 AC_DEFINE(FEAT_MBYTE)
1728fi
1729
1730AC_MSG_CHECKING(--enable-hangulinput argument)
1731AC_ARG_ENABLE(hangulinput,
1732 [ --enable-hangulinput Include Hangul input support.], ,
1733 [enable_hangulinput="no"])
1734AC_MSG_RESULT($enable_hangulinput)
1735
1736AC_MSG_CHECKING(--enable-xim argument)
1737AC_ARG_ENABLE(xim,
1738 [ --enable-xim Include XIM input support.],
1739 AC_MSG_RESULT($enable_xim),
1740 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001741
1742AC_MSG_CHECKING(--enable-fontset argument)
1743AC_ARG_ENABLE(fontset,
1744 [ --enable-fontset Include X fontset output support.], ,
1745 [enable_fontset="no"])
1746AC_MSG_RESULT($enable_fontset)
1747dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1748
1749test -z "$with_x" && with_x=yes
1750test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1751if test "$with_x" = no; then
1752 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1753else
1754 dnl Do this check early, so that its failure can override user requests.
1755
1756 AC_PATH_PROG(xmkmfpath, xmkmf)
1757
1758 AC_PATH_XTRA
1759
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001760 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001761 dnl be compiled with a special option.
1762 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001763 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001764 CFLAGS="$CFLAGS -W c,dll"
1765 LDFLAGS="$LDFLAGS -W l,dll"
1766 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1767 fi
1768
1769 dnl On my HPUX system the X include dir is found, but the lib dir not.
1770 dnl This is a desparate try to fix this.
1771
1772 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1773 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1774 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1775 X_LIBS="$X_LIBS -L$x_libraries"
1776 if test "`(uname) 2>/dev/null`" = SunOS &&
1777 uname -r | grep '^5' >/dev/null; then
1778 X_LIBS="$X_LIBS -R $x_libraries"
1779 fi
1780 fi
1781
1782 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1783 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1784 AC_MSG_RESULT(Corrected X includes to $x_includes)
1785 X_CFLAGS="$X_CFLAGS -I$x_includes"
1786 fi
1787
1788 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1789 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1790 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1791 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1792 dnl Same for "-R/usr/lib ".
1793 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1794
1795
1796 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001797 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1798 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001799 AC_MSG_CHECKING(if X11 header files can be found)
1800 cflags_save=$CFLAGS
1801 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001802 AC_TRY_COMPILE([#include <X11/Xlib.h>
1803#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804 AC_MSG_RESULT(yes),
1805 AC_MSG_RESULT(no); no_x=yes)
1806 CFLAGS=$cflags_save
1807
1808 if test "${no_x-no}" = yes; then
1809 with_x=no
1810 else
1811 AC_DEFINE(HAVE_X11)
1812 X_LIB="-lXt -lX11";
1813 AC_SUBST(X_LIB)
1814
1815 ac_save_LDFLAGS="$LDFLAGS"
1816 LDFLAGS="-L$x_libraries $LDFLAGS"
1817
1818 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1819 dnl For HP-UX 10.20 it must be before -lSM -lICE
1820 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1821 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1822
1823 dnl Some systems need -lnsl -lsocket when testing for ICE.
1824 dnl The check above doesn't do this, try here (again). Also needed to get
1825 dnl them after Xdmcp. link.sh will remove them when not needed.
1826 dnl Check for other function than above to avoid the cached value
1827 AC_CHECK_LIB(ICE, IceOpenConnection,
1828 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1829
1830 dnl Check for -lXpm (needed for some versions of Motif)
1831 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1832 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1833 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1834
1835 dnl Check that the X11 header files don't use implicit declarations
1836 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1837 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001838 dnl -Werror is GCC only, others like Solaris Studio might not like it
1839 if test "$GCC" = yes; then
1840 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1841 else
1842 CFLAGS="$CFLAGS $X_CFLAGS"
1843 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1845 AC_MSG_RESULT(no),
1846 CFLAGS="$CFLAGS -Wno-implicit-int"
1847 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1848 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1849 AC_MSG_RESULT(test failed)
1850 )
1851 )
1852 CFLAGS=$cflags_save
1853
1854 LDFLAGS="$ac_save_LDFLAGS"
1855
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001856 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1857 AC_CACHE_VAL(ac_cv_small_wchar_t,
1858 [AC_TRY_RUN([
1859#include <X11/Xlib.h>
1860#if STDC_HEADERS
1861# include <stdlib.h>
1862# include <stddef.h>
1863#endif
1864 main()
1865 {
1866 if (sizeof(wchar_t) <= 2)
1867 exit(1);
1868 exit(0);
1869 }],
1870 ac_cv_small_wchar_t="no",
1871 ac_cv_small_wchar_t="yes",
1872 AC_MSG_ERROR(failed to compile test program))])
1873 AC_MSG_RESULT($ac_cv_small_wchar_t)
1874 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1875 AC_DEFINE(SMALL_WCHAR_T)
1876 fi
1877
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878 fi
1879fi
1880
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001881test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001882
1883AC_MSG_CHECKING(--enable-gui argument)
1884AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001885 [ --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 +00001886
1887dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1888dnl Do not use character classes for portability with old tools.
1889enable_gui_canon=`echo "_$enable_gui" | \
1890 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1891
1892dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001893SKIP_GTK2=YES
1894SKIP_GNOME=YES
1895SKIP_MOTIF=YES
1896SKIP_ATHENA=YES
1897SKIP_NEXTAW=YES
1898SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899SKIP_CARBON=YES
1900GUITYPE=NONE
1901
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001902if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903 SKIP_PHOTON=
1904 case "$enable_gui_canon" in
1905 no) AC_MSG_RESULT(no GUI support)
1906 SKIP_PHOTON=YES ;;
1907 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1908 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1909 photon) AC_MSG_RESULT(Photon GUI support) ;;
1910 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1911 SKIP_PHOTON=YES ;;
1912 esac
1913
1914elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1915 SKIP_CARBON=
1916 case "$enable_gui_canon" in
1917 no) AC_MSG_RESULT(no GUI support)
1918 SKIP_CARBON=YES ;;
1919 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001920 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1921 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1923 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1924 SKIP_CARBON=YES ;;
1925 esac
1926
1927else
1928
Bram Moolenaar071d4272004-06-13 20:20:40 +00001929 case "$enable_gui_canon" in
1930 no|none) AC_MSG_RESULT(no GUI support) ;;
1931 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001932 SKIP_GTK2=
1933 SKIP_GNOME=
1934 SKIP_MOTIF=
1935 SKIP_ATHENA=
1936 SKIP_NEXTAW=
1937 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001938 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001939 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001940 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1941 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001942 SKIP_GTK2=;;
1943 motif) AC_MSG_RESULT(Motif GUI support)
1944 SKIP_MOTIF=;;
1945 athena) AC_MSG_RESULT(Athena GUI support)
1946 SKIP_ATHENA=;;
1947 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1948 SKIP_NEXTAW=;;
1949 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1950 esac
1951
1952fi
1953
Bram Moolenaar071d4272004-06-13 20:20:40 +00001954if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1955 -a "$enable_gui_canon" != "gnome2"; then
1956 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1957 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001958 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001959 , enable_gtk2_check="yes")
1960 AC_MSG_RESULT($enable_gtk2_check)
1961 if test "x$enable_gtk2_check" = "xno"; then
1962 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001963 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001964 fi
1965fi
1966
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001967if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001968 AC_MSG_CHECKING(whether or not to look for GNOME)
1969 AC_ARG_ENABLE(gnome-check,
1970 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1971 , enable_gnome_check="no")
1972 AC_MSG_RESULT($enable_gnome_check)
1973 if test "x$enable_gnome_check" = "xno"; then
1974 SKIP_GNOME=YES
1975 fi
1976fi
1977
1978if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1979 AC_MSG_CHECKING(whether or not to look for Motif)
1980 AC_ARG_ENABLE(motif-check,
1981 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1982 , enable_motif_check="yes")
1983 AC_MSG_RESULT($enable_motif_check)
1984 if test "x$enable_motif_check" = "xno"; then
1985 SKIP_MOTIF=YES
1986 fi
1987fi
1988
1989if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1990 AC_MSG_CHECKING(whether or not to look for Athena)
1991 AC_ARG_ENABLE(athena-check,
1992 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1993 , enable_athena_check="yes")
1994 AC_MSG_RESULT($enable_athena_check)
1995 if test "x$enable_athena_check" = "xno"; then
1996 SKIP_ATHENA=YES
1997 fi
1998fi
1999
2000if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2001 AC_MSG_CHECKING(whether or not to look for neXtaw)
2002 AC_ARG_ENABLE(nextaw-check,
2003 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2004 , enable_nextaw_check="yes")
2005 AC_MSG_RESULT($enable_nextaw_check);
2006 if test "x$enable_nextaw_check" = "xno"; then
2007 SKIP_NEXTAW=YES
2008 fi
2009fi
2010
2011if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2012 AC_MSG_CHECKING(whether or not to look for Carbon)
2013 AC_ARG_ENABLE(carbon-check,
2014 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2015 , enable_carbon_check="yes")
2016 AC_MSG_RESULT($enable_carbon_check);
2017 if test "x$enable_carbon_check" = "xno"; then
2018 SKIP_CARBON=YES
2019 fi
2020fi
2021
Bram Moolenaar843ee412004-06-30 16:16:41 +00002022
Bram Moolenaar071d4272004-06-13 20:20:40 +00002023if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2024 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002025 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026 AC_MSG_RESULT(yes);
2027 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002028 if test "$VIMNAME" = "vim"; then
2029 VIMNAME=Vim
2030 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002031
Bram Moolenaar164fca32010-07-14 13:58:07 +02002032 if test "x$MACARCH" = "xboth"; then
2033 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2034 else
2035 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2036 fi
2037
Bram Moolenaar14716812006-05-04 21:54:08 +00002038 dnl Default install directory is not /usr/local
2039 if test x$prefix = xNONE; then
2040 prefix=/Applications
2041 fi
2042
2043 dnl Sorry for the hard coded default
2044 datadir='${prefix}/Vim.app/Contents/Resources'
2045
Bram Moolenaar071d4272004-06-13 20:20:40 +00002046 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002047 SKIP_GTK2=YES;
2048 SKIP_GNOME=YES;
2049 SKIP_MOTIF=YES;
2050 SKIP_ATHENA=YES;
2051 SKIP_NEXTAW=YES;
2052 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002053 SKIP_CARBON=YES
2054fi
2055
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002057dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002058dnl
2059dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002060dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002061dnl
2062AC_DEFUN(AM_PATH_GTK,
2063[
2064 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2065 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002066 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2068 no_gtk=""
2069 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2070 && $PKG_CONFIG --exists gtk+-2.0; then
2071 {
2072 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2073 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2074 dnl something like that.
2075 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002076 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002077 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2078 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2079 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2080 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2081 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2082 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2083 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2084 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085 else
2086 no_gtk=yes
2087 fi
2088
2089 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2090 {
2091 ac_save_CFLAGS="$CFLAGS"
2092 ac_save_LIBS="$LIBS"
2093 CFLAGS="$CFLAGS $GTK_CFLAGS"
2094 LIBS="$LIBS $GTK_LIBS"
2095
2096 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002097 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002098 dnl
2099 rm -f conf.gtktest
2100 AC_TRY_RUN([
2101#include <gtk/gtk.h>
2102#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002103#if STDC_HEADERS
2104# include <stdlib.h>
2105# include <stddef.h>
2106#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002107
2108int
2109main ()
2110{
2111int major, minor, micro;
2112char *tmp_version;
2113
2114system ("touch conf.gtktest");
2115
2116/* HP/UX 9 (%@#!) writes to sscanf strings */
2117tmp_version = g_strdup("$min_gtk_version");
2118if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2119 printf("%s, bad version string\n", "$min_gtk_version");
2120 exit(1);
2121 }
2122
2123if ((gtk_major_version > major) ||
2124 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2125 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2126 (gtk_micro_version >= micro)))
2127{
2128 return 0;
2129}
2130return 1;
2131}
2132],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2133 CFLAGS="$ac_save_CFLAGS"
2134 LIBS="$ac_save_LIBS"
2135 }
2136 fi
2137 if test "x$no_gtk" = x ; then
2138 if test "x$enable_gtktest" = "xyes"; then
2139 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2140 else
2141 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2142 fi
2143 ifelse([$2], , :, [$2])
2144 else
2145 {
2146 AC_MSG_RESULT(no)
2147 GTK_CFLAGS=""
2148 GTK_LIBS=""
2149 ifelse([$3], , :, [$3])
2150 }
2151 fi
2152 }
2153 else
2154 GTK_CFLAGS=""
2155 GTK_LIBS=""
2156 ifelse([$3], , :, [$3])
2157 fi
2158 AC_SUBST(GTK_CFLAGS)
2159 AC_SUBST(GTK_LIBS)
2160 rm -f conf.gtktest
2161])
2162
2163dnl ---------------------------------------------------------------------------
2164dnl gnome
2165dnl ---------------------------------------------------------------------------
2166AC_DEFUN([GNOME_INIT_HOOK],
2167[
2168 AC_SUBST(GNOME_LIBS)
2169 AC_SUBST(GNOME_LIBDIR)
2170 AC_SUBST(GNOME_INCLUDEDIR)
2171
2172 AC_ARG_WITH(gnome-includes,
2173 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2174 [CFLAGS="$CFLAGS -I$withval"]
2175 )
2176
2177 AC_ARG_WITH(gnome-libs,
2178 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2179 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2180 )
2181
2182 AC_ARG_WITH(gnome,
2183 [ --with-gnome Specify prefix for GNOME files],
2184 if test x$withval = xyes; then
2185 want_gnome=yes
2186 ifelse([$1], [], :, [$1])
2187 else
2188 if test "x$withval" = xno; then
2189 want_gnome=no
2190 else
2191 want_gnome=yes
2192 LDFLAGS="$LDFLAGS -L$withval/lib"
2193 CFLAGS="$CFLAGS -I$withval/include"
2194 gnome_prefix=$withval/lib
2195 fi
2196 fi,
2197 want_gnome=yes)
2198
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002199 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002200 {
2201 AC_MSG_CHECKING(for libgnomeui-2.0)
2202 if $PKG_CONFIG --exists libgnomeui-2.0; then
2203 AC_MSG_RESULT(yes)
2204 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2205 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2206 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002207
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002208 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2209 dnl This might not be the right way but it works for me...
2210 AC_MSG_CHECKING(for FreeBSD)
2211 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2212 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002213 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002214 GNOME_LIBS="$GNOME_LIBS -pthread"
2215 else
2216 AC_MSG_RESULT(no)
2217 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002218 $1
2219 else
2220 AC_MSG_RESULT(not found)
2221 if test "x$2" = xfail; then
2222 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2223 fi
2224 fi
2225 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226 fi
2227])
2228
2229AC_DEFUN([GNOME_INIT],[
2230 GNOME_INIT_HOOK([],fail)
2231])
2232
2233
2234dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002235dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002236dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002237if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002238
2239 AC_MSG_CHECKING(--disable-gtktest argument)
2240 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2241 , enable_gtktest=yes)
2242 if test "x$enable_gtktest" = "xyes" ; then
2243 AC_MSG_RESULT(gtk test enabled)
2244 else
2245 AC_MSG_RESULT(gtk test disabled)
2246 fi
2247
Bram Moolenaar071d4272004-06-13 20:20:40 +00002248 if test "X$PKG_CONFIG" = "X"; then
2249 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2250 fi
2251
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002252 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002253 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2254 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002255 AM_PATH_GTK(2.2.0,
2256 [GUI_LIB_LOC="$GTK_LIBDIR"
2257 GTK_LIBNAME="$GTK_LIBS"
2258 GUI_INC_LOC="$GTK_CFLAGS"], )
2259 if test "x$GTK_CFLAGS" != "x"; then
2260 SKIP_ATHENA=YES
2261 SKIP_NEXTAW=YES
2262 SKIP_MOTIF=YES
2263 GUITYPE=GTK
2264 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002265 fi
2266 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002267 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002268 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2269 || test "0$gtk_minor_version" -ge 2; then
2270 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2271 fi
2272 dnl
2273 dnl if GTK exists, then check for GNOME.
2274 dnl
2275 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002276 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002277 GNOME_INIT_HOOK([have_gnome=yes])
2278 if test "x$have_gnome" = xyes ; then
2279 AC_DEFINE(FEAT_GUI_GNOME)
2280 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2281 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 fi
2283 }
2284 fi
2285 fi
2286fi
2287
2288dnl Check for Motif include files location.
2289dnl The LAST one found is used, this makes the highest version to be used,
2290dnl e.g. when Motif1.2 and Motif2.0 are both present.
2291
2292if test -z "$SKIP_MOTIF"; then
2293 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"
2294 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2295 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2296
2297 AC_MSG_CHECKING(for location of Motif GUI includes)
2298 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2299 GUI_INC_LOC=
2300 for try in $gui_includes; do
2301 if test -f "$try/Xm/Xm.h"; then
2302 GUI_INC_LOC=$try
2303 fi
2304 done
2305 if test -n "$GUI_INC_LOC"; then
2306 if test "$GUI_INC_LOC" = /usr/include; then
2307 GUI_INC_LOC=
2308 AC_MSG_RESULT(in default path)
2309 else
2310 AC_MSG_RESULT($GUI_INC_LOC)
2311 fi
2312 else
2313 AC_MSG_RESULT(<not found>)
2314 SKIP_MOTIF=YES
2315 fi
2316fi
2317
2318dnl Check for Motif library files location. In the same order as the include
2319dnl files, to avoid a mixup if several versions are present
2320
2321if test -z "$SKIP_MOTIF"; then
2322 AC_MSG_CHECKING(--with-motif-lib argument)
2323 AC_ARG_WITH(motif-lib,
2324 [ --with-motif-lib=STRING Library for Motif ],
2325 [ MOTIF_LIBNAME="${withval}" ] )
2326
2327 if test -n "$MOTIF_LIBNAME"; then
2328 AC_MSG_RESULT($MOTIF_LIBNAME)
2329 GUI_LIB_LOC=
2330 else
2331 AC_MSG_RESULT(no)
2332
2333 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2334 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2335
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002336 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2337 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002338 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002339 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002340 GUI_LIB_LOC=
2341 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002342 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002343 if test -f "$libtry"; then
2344 GUI_LIB_LOC=$try
2345 fi
2346 done
2347 done
2348 if test -n "$GUI_LIB_LOC"; then
2349 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002350 if test "$GUI_LIB_LOC" = /usr/lib \
2351 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2352 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002353 GUI_LIB_LOC=
2354 AC_MSG_RESULT(in default path)
2355 else
2356 if test -n "$GUI_LIB_LOC"; then
2357 AC_MSG_RESULT($GUI_LIB_LOC)
2358 if test "`(uname) 2>/dev/null`" = SunOS &&
2359 uname -r | grep '^5' >/dev/null; then
2360 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2361 fi
2362 fi
2363 fi
2364 MOTIF_LIBNAME=-lXm
2365 else
2366 AC_MSG_RESULT(<not found>)
2367 SKIP_MOTIF=YES
2368 fi
2369 fi
2370fi
2371
2372if test -z "$SKIP_MOTIF"; then
2373 SKIP_ATHENA=YES
2374 SKIP_NEXTAW=YES
2375 GUITYPE=MOTIF
2376 AC_SUBST(MOTIF_LIBNAME)
2377fi
2378
2379dnl Check if the Athena files can be found
2380
2381GUI_X_LIBS=
2382
2383if test -z "$SKIP_ATHENA"; then
2384 AC_MSG_CHECKING(if Athena header files can be found)
2385 cflags_save=$CFLAGS
2386 CFLAGS="$CFLAGS $X_CFLAGS"
2387 AC_TRY_COMPILE([
2388#include <X11/Intrinsic.h>
2389#include <X11/Xaw/Paned.h>], ,
2390 AC_MSG_RESULT(yes),
2391 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2392 CFLAGS=$cflags_save
2393fi
2394
2395if test -z "$SKIP_ATHENA"; then
2396 GUITYPE=ATHENA
2397fi
2398
2399if test -z "$SKIP_NEXTAW"; then
2400 AC_MSG_CHECKING(if neXtaw header files can be found)
2401 cflags_save=$CFLAGS
2402 CFLAGS="$CFLAGS $X_CFLAGS"
2403 AC_TRY_COMPILE([
2404#include <X11/Intrinsic.h>
2405#include <X11/neXtaw/Paned.h>], ,
2406 AC_MSG_RESULT(yes),
2407 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2408 CFLAGS=$cflags_save
2409fi
2410
2411if test -z "$SKIP_NEXTAW"; then
2412 GUITYPE=NEXTAW
2413fi
2414
2415if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2416 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2417 dnl Avoid adding it when it twice
2418 if test -n "$GUI_INC_LOC"; then
2419 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2420 fi
2421 if test -n "$GUI_LIB_LOC"; then
2422 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2423 fi
2424
2425 dnl Check for -lXext and then for -lXmu
2426 ldflags_save=$LDFLAGS
2427 LDFLAGS="$X_LIBS $LDFLAGS"
2428 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2429 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2430 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2431 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2432 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2433 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2434 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2435 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2436 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2437 if test -z "$SKIP_MOTIF"; then
2438 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2439 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2440 fi
2441 LDFLAGS=$ldflags_save
2442
2443 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2444 AC_MSG_CHECKING(for extra X11 defines)
2445 NARROW_PROTO=
2446 rm -fr conftestdir
2447 if mkdir conftestdir; then
2448 cd conftestdir
2449 cat > Imakefile <<'EOF'
2450acfindx:
2451 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2452EOF
2453 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2454 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2455 fi
2456 cd ..
2457 rm -fr conftestdir
2458 fi
2459 if test -z "$NARROW_PROTO"; then
2460 AC_MSG_RESULT(no)
2461 else
2462 AC_MSG_RESULT($NARROW_PROTO)
2463 fi
2464 AC_SUBST(NARROW_PROTO)
2465fi
2466
2467dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2468dnl use the X11 include path
2469if test "$enable_xsmp" = "yes"; then
2470 cppflags_save=$CPPFLAGS
2471 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2472 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2473 CPPFLAGS=$cppflags_save
2474fi
2475
2476
Bram Moolenaare667c952010-07-05 22:57:59 +02002477if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002478 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2479 cppflags_save=$CPPFLAGS
2480 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2481 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2482
2483 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2484 if test ! "$enable_xim" = "no"; then
2485 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2486 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2487 AC_MSG_RESULT(yes),
2488 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2489 fi
2490 CPPFLAGS=$cppflags_save
2491
2492 dnl automatically enable XIM when hangul input isn't enabled
2493 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2494 -a "x$GUITYPE" != "xNONE" ; then
2495 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2496 enable_xim="yes"
2497 fi
2498fi
2499
2500if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2501 cppflags_save=$CPPFLAGS
2502 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002503dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2504 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2505 AC_TRY_COMPILE([
2506#include <X11/Intrinsic.h>
2507#include <X11/Xmu/Editres.h>],
2508 [int i; i = 0;],
2509 AC_MSG_RESULT(yes)
2510 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2511 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002512 CPPFLAGS=$cppflags_save
2513fi
2514
2515dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2516if test -z "$SKIP_MOTIF"; then
2517 cppflags_save=$CPPFLAGS
2518 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002519 if test "$zOSUnix" = "yes"; then
2520 xmheader="Xm/Xm.h"
2521 else
2522 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002523 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002524 fi
2525 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002526
Bram Moolenaar77c19352012-06-13 19:19:41 +02002527 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002528 dnl Solaris uses XpmAttributes_21, very annoying.
2529 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2530 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2531 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2532 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2533 )
2534 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002535 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002536 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002537 CPPFLAGS=$cppflags_save
2538fi
2539
2540if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2541 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2542 enable_xim="no"
2543fi
2544if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2545 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2546 enable_fontset="no"
2547fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002548if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002549 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2550 enable_fontset="no"
2551fi
2552
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553if test -z "$SKIP_PHOTON"; then
2554 GUITYPE=PHOTONGUI
2555fi
2556
2557AC_SUBST(GUI_INC_LOC)
2558AC_SUBST(GUI_LIB_LOC)
2559AC_SUBST(GUITYPE)
2560AC_SUBST(GUI_X_LIBS)
2561
2562if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2563 AC_MSG_ERROR([cannot use workshop without Motif])
2564fi
2565
2566dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2567if test "$enable_xim" = "yes"; then
2568 AC_DEFINE(FEAT_XIM)
2569fi
2570if test "$enable_fontset" = "yes"; then
2571 AC_DEFINE(FEAT_XFONTSET)
2572fi
2573
2574
2575dnl ---------------------------------------------------------------------------
2576dnl end of GUI-checking
2577dnl ---------------------------------------------------------------------------
2578
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002579dnl Check for Cygwin, which needs an extra source file if not using X11
2580AC_MSG_CHECKING(for CYGWIN environment)
2581case `uname` in
2582 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2583 AC_MSG_CHECKING(for CYGWIN clipboard support)
2584 if test "x$with_x" = "xno" ; then
2585 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2586 AC_MSG_RESULT(yes)
2587 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2588 else
2589 AC_MSG_RESULT(no - using X11)
2590 fi ;;
2591
2592 *) CYGWIN=no; AC_MSG_RESULT(no);;
2593esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594
2595dnl Only really enable hangul input when GUI and XFONTSET are available
2596if test "$enable_hangulinput" = "yes"; then
2597 if test "x$GUITYPE" = "xNONE"; then
2598 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2599 enable_hangulinput=no
2600 else
2601 AC_DEFINE(FEAT_HANGULIN)
2602 HANGULIN_SRC=hangulin.c
2603 AC_SUBST(HANGULIN_SRC)
2604 HANGULIN_OBJ=objects/hangulin.o
2605 AC_SUBST(HANGULIN_OBJ)
2606 fi
2607fi
2608
2609dnl Checks for libraries and include files.
2610
Bram Moolenaar446cb832008-06-24 21:56:24 +00002611AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2612 [
2613 AC_RUN_IFELSE([[
2614#include "confdefs.h"
2615#include <ctype.h>
2616#if STDC_HEADERS
2617# include <stdlib.h>
2618# include <stddef.h>
2619#endif
2620main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2621 ]],[
2622 vim_cv_toupper_broken=yes
2623 ],[
2624 vim_cv_toupper_broken=no
2625 ],[
2626 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2627 ])])
2628
2629if test "x$vim_cv_toupper_broken" = "xyes" ; then
2630 AC_DEFINE(BROKEN_TOUPPER)
2631fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002632
2633AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002634AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002635 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2636 AC_MSG_RESULT(no))
2637
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002638AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2639AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2640 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2641 AC_MSG_RESULT(no))
2642
Bram Moolenaar071d4272004-06-13 20:20:40 +00002643dnl Checks for header files.
2644AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2645dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2646if test "$HAS_ELF" = 1; then
2647 AC_CHECK_LIB(elf, main)
2648fi
2649
2650AC_HEADER_DIRENT
2651
Bram Moolenaar071d4272004-06-13 20:20:40 +00002652dnl If sys/wait.h is not found it might still exist but not be POSIX
2653dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2654if test $ac_cv_header_sys_wait_h = no; then
2655 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2656 AC_TRY_COMPILE([#include <sys/wait.h>],
2657 [union wait xx, yy; xx = yy],
2658 AC_MSG_RESULT(yes)
2659 AC_DEFINE(HAVE_SYS_WAIT_H)
2660 AC_DEFINE(HAVE_UNION_WAIT),
2661 AC_MSG_RESULT(no))
2662fi
2663
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002664AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2665 sys/select.h sys/utsname.h termcap.h fcntl.h \
2666 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2667 termio.h iconv.h inttypes.h langinfo.h math.h \
2668 unistd.h stropts.h errno.h sys/resource.h \
2669 sys/systeminfo.h locale.h sys/stream.h termios.h \
2670 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2671 utime.h sys/param.h libintl.h libgen.h \
2672 util/debug.h util/msg18n.h frame.h sys/acl.h \
2673 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002674
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002675dnl sys/ptem.h depends on sys/stream.h on Solaris
2676AC_CHECK_HEADERS(sys/ptem.h, [], [],
2677[#if defined HAVE_SYS_STREAM_H
2678# include <sys/stream.h>
2679#endif])
2680
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002681dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2682AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2683[#if defined HAVE_SYS_PARAM_H
2684# include <sys/param.h>
2685#endif])
2686
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002687
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002688dnl pthread_np.h may exist but can only be used after including pthread.h
2689AC_MSG_CHECKING([for pthread_np.h])
2690AC_TRY_COMPILE([
2691#include <pthread.h>
2692#include <pthread_np.h>],
2693 [int i; i = 0;],
2694 AC_MSG_RESULT(yes)
2695 AC_DEFINE(HAVE_PTHREAD_NP_H),
2696 AC_MSG_RESULT(no))
2697
Bram Moolenaare344bea2005-09-01 20:46:49 +00002698AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002699if test "x$MACOSX" = "xyes"; then
2700 dnl The strings.h file on OS/X contains a warning and nothing useful.
2701 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2702else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002703
2704dnl Check if strings.h and string.h can both be included when defined.
2705AC_MSG_CHECKING([if strings.h can be included after string.h])
2706cppflags_save=$CPPFLAGS
2707CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2708AC_TRY_COMPILE([
2709#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2710# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2711 /* but don't do it on AIX 5.1 (Uribarri) */
2712#endif
2713#ifdef HAVE_XM_XM_H
2714# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2715#endif
2716#ifdef HAVE_STRING_H
2717# include <string.h>
2718#endif
2719#if defined(HAVE_STRINGS_H)
2720# include <strings.h>
2721#endif
2722 ], [int i; i = 0;],
2723 AC_MSG_RESULT(yes),
2724 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2725 AC_MSG_RESULT(no))
2726CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002727fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002728
2729dnl Checks for typedefs, structures, and compiler characteristics.
2730AC_PROG_GCC_TRADITIONAL
2731AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002732AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002733AC_TYPE_MODE_T
2734AC_TYPE_OFF_T
2735AC_TYPE_PID_T
2736AC_TYPE_SIZE_T
2737AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002738AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002739
Bram Moolenaar071d4272004-06-13 20:20:40 +00002740AC_HEADER_TIME
2741AC_CHECK_TYPE(ino_t, long)
2742AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002743AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002744
2745AC_MSG_CHECKING(for rlim_t)
2746if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2747 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2748else
2749 AC_EGREP_CPP(dnl
2750changequote(<<,>>)dnl
2751<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2752changequote([,]),
2753 [
2754#include <sys/types.h>
2755#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002756# include <stdlib.h>
2757# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002758#endif
2759#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002760# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002761#endif
2762 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2763 AC_MSG_RESULT($ac_cv_type_rlim_t)
2764fi
2765if test $ac_cv_type_rlim_t = no; then
2766 cat >> confdefs.h <<\EOF
2767#define rlim_t unsigned long
2768EOF
2769fi
2770
2771AC_MSG_CHECKING(for stack_t)
2772if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2773 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2774else
2775 AC_EGREP_CPP(stack_t,
2776 [
2777#include <sys/types.h>
2778#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002779# include <stdlib.h>
2780# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002781#endif
2782#include <signal.h>
2783 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2784 AC_MSG_RESULT($ac_cv_type_stack_t)
2785fi
2786if test $ac_cv_type_stack_t = no; then
2787 cat >> confdefs.h <<\EOF
2788#define stack_t struct sigaltstack
2789EOF
2790fi
2791
2792dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2793AC_MSG_CHECKING(whether stack_t has an ss_base field)
2794AC_TRY_COMPILE([
2795#include <sys/types.h>
2796#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002797# include <stdlib.h>
2798# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002799#endif
2800#include <signal.h>
2801#include "confdefs.h"
2802 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2803 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2804 AC_MSG_RESULT(no))
2805
2806olibs="$LIBS"
2807AC_MSG_CHECKING(--with-tlib argument)
2808AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2809if test -n "$with_tlib"; then
2810 AC_MSG_RESULT($with_tlib)
2811 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002812 AC_MSG_CHECKING(for linking with $with_tlib library)
2813 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2814 dnl Need to check for tgetent() below.
2815 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002816else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002817 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002818 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2819 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002820 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002821 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002822 dnl Older versions of ncurses have bugs, get a new one!
2823 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002824 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002825 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002826 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2827 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002828 esac
2829 for libname in $tlibs; do
2830 AC_CHECK_LIB(${libname}, tgetent,,)
2831 if test "x$olibs" != "x$LIBS"; then
2832 dnl It's possible that a library is found but it doesn't work
2833 dnl e.g., shared library that cannot be found
2834 dnl compile and run a test program to be sure
2835 AC_TRY_RUN([
2836#ifdef HAVE_TERMCAP_H
2837# include <termcap.h>
2838#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002839#if STDC_HEADERS
2840# include <stdlib.h>
2841# include <stddef.h>
2842#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002843main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2844 res="OK", res="FAIL", res="FAIL")
2845 if test "$res" = "OK"; then
2846 break
2847 fi
2848 AC_MSG_RESULT($libname library is not usable)
2849 LIBS="$olibs"
2850 fi
2851 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002852 if test "x$olibs" = "x$LIBS"; then
2853 AC_MSG_RESULT(no terminal library found)
2854 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002855fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002856
2857if test "x$olibs" = "x$LIBS"; then
2858 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002859 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002860 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2861 AC_MSG_RESULT(yes),
2862 AC_MSG_ERROR([NOT FOUND!
2863 You need to install a terminal library; for example ncurses.
2864 Or specify the name of the library with --with-tlib.]))
2865fi
2866
Bram Moolenaar446cb832008-06-24 21:56:24 +00002867AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2868 [
2869 AC_RUN_IFELSE([[
2870#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002871#ifdef HAVE_TERMCAP_H
2872# include <termcap.h>
2873#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002874#ifdef HAVE_STRING_H
2875# include <string.h>
2876#endif
2877#if STDC_HEADERS
2878# include <stdlib.h>
2879# include <stddef.h>
2880#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002881main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002882{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2883 ]],[
2884 vim_cv_terminfo=no
2885 ],[
2886 vim_cv_terminfo=yes
2887 ],[
2888 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2889 ])
2890 ])
2891
2892if test "x$vim_cv_terminfo" = "xyes" ; then
2893 AC_DEFINE(TERMINFO)
2894fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002895
2896if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002897 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2898 [
2899 AC_RUN_IFELSE([[
2900#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002901#ifdef HAVE_TERMCAP_H
2902# include <termcap.h>
2903#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002904#if STDC_HEADERS
2905# include <stdlib.h>
2906# include <stddef.h>
2907#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002909{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2910 ]],[
2911 vim_cv_tgent=zero
2912 ],[
2913 vim_cv_tgent=non-zero
2914 ],[
2915 AC_MSG_ERROR(failed to compile test program.)
2916 ])
2917 ])
2918
2919 if test "x$vim_cv_tgent" = "xzero" ; then
2920 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2921 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002922fi
2923
2924AC_MSG_CHECKING(whether termcap.h contains ospeed)
2925AC_TRY_LINK([
2926#ifdef HAVE_TERMCAP_H
2927# include <termcap.h>
2928#endif
2929 ], [ospeed = 20000],
2930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2931 [AC_MSG_RESULT(no)
2932 AC_MSG_CHECKING(whether ospeed can be extern)
2933 AC_TRY_LINK([
2934#ifdef HAVE_TERMCAP_H
2935# include <termcap.h>
2936#endif
2937extern short ospeed;
2938 ], [ospeed = 20000],
2939 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2940 AC_MSG_RESULT(no))]
2941 )
2942
2943AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2944AC_TRY_LINK([
2945#ifdef HAVE_TERMCAP_H
2946# include <termcap.h>
2947#endif
2948 ], [if (UP == 0 && BC == 0) PC = 1],
2949 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2950 [AC_MSG_RESULT(no)
2951 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2952 AC_TRY_LINK([
2953#ifdef HAVE_TERMCAP_H
2954# include <termcap.h>
2955#endif
2956extern char *UP, *BC, PC;
2957 ], [if (UP == 0 && BC == 0) PC = 1],
2958 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2959 AC_MSG_RESULT(no))]
2960 )
2961
2962AC_MSG_CHECKING(whether tputs() uses outfuntype)
2963AC_TRY_COMPILE([
2964#ifdef HAVE_TERMCAP_H
2965# include <termcap.h>
2966#endif
2967 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2968 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2969 AC_MSG_RESULT(no))
2970
2971dnl On some SCO machines sys/select redefines struct timeval
2972AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2973AC_TRY_COMPILE([
2974#include <sys/types.h>
2975#include <sys/time.h>
2976#include <sys/select.h>], ,
2977 AC_MSG_RESULT(yes)
2978 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2979 AC_MSG_RESULT(no))
2980
2981dnl AC_DECL_SYS_SIGLIST
2982
2983dnl Checks for pty.c (copied from screen) ==========================
2984AC_MSG_CHECKING(for /dev/ptc)
2985if test -r /dev/ptc; then
2986 AC_DEFINE(HAVE_DEV_PTC)
2987 AC_MSG_RESULT(yes)
2988else
2989 AC_MSG_RESULT(no)
2990fi
2991
2992AC_MSG_CHECKING(for SVR4 ptys)
2993if test -c /dev/ptmx ; then
2994 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2995 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2996 AC_MSG_RESULT(no))
2997else
2998 AC_MSG_RESULT(no)
2999fi
3000
3001AC_MSG_CHECKING(for ptyranges)
3002if test -d /dev/ptym ; then
3003 pdir='/dev/ptym'
3004else
3005 pdir='/dev'
3006fi
3007dnl SCO uses ptyp%d
3008AC_EGREP_CPP(yes,
3009[#ifdef M_UNIX
3010 yes;
3011#endif
3012 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3013dnl if test -c /dev/ptyp19; then
3014dnl ptys=`echo /dev/ptyp??`
3015dnl else
3016dnl ptys=`echo $pdir/pty??`
3017dnl fi
3018if test "$ptys" != "$pdir/pty??" ; then
3019 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3020 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3021 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3022 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3023 AC_MSG_RESULT([$p0 / $p1])
3024else
3025 AC_MSG_RESULT([don't know])
3026fi
3027
3028dnl **** pty mode/group handling ****
3029dnl
3030dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003032AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3033 [
3034 AC_RUN_IFELSE([[
3035#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003037#if STDC_HEADERS
3038# include <stdlib.h>
3039# include <stddef.h>
3040#endif
3041#ifdef HAVE_UNISTD_H
3042#include <unistd.h>
3043#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003044#include <sys/stat.h>
3045#include <stdio.h>
3046main()
3047{
3048 struct stat sb;
3049 char *x,*ttyname();
3050 int om, m;
3051 FILE *fp;
3052
3053 if (!(x = ttyname(0))) exit(1);
3054 if (stat(x, &sb)) exit(1);
3055 om = sb.st_mode;
3056 if (om & 002) exit(0);
3057 m = system("mesg y");
3058 if (m == -1 || m == 127) exit(1);
3059 if (stat(x, &sb)) exit(1);
3060 m = sb.st_mode;
3061 if (chmod(x, om)) exit(1);
3062 if (m & 002) exit(0);
3063 if (sb.st_gid == getgid()) exit(1);
3064 if (!(fp=fopen("conftest_grp", "w")))
3065 exit(1);
3066 fprintf(fp, "%d\n", sb.st_gid);
3067 fclose(fp);
3068 exit(0);
3069}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003070 ]],[
3071 if test -f conftest_grp; then
3072 vim_cv_tty_group=`cat conftest_grp`
3073 if test "x$vim_cv_tty_mode" = "x" ; then
3074 vim_cv_tty_mode=0620
3075 fi
3076 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3077 else
3078 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003079 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080 fi
3081 ],[
3082 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003083 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003084 ],[
3085 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3086 ])
3087 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003088rm -f conftest_grp
3089
Bram Moolenaar446cb832008-06-24 21:56:24 +00003090if test "x$vim_cv_tty_group" != "xworld" ; then
3091 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3092 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003093 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003094 else
3095 AC_DEFINE(PTYMODE, 0620)
3096 fi
3097fi
3098
Bram Moolenaar071d4272004-06-13 20:20:40 +00003099dnl Checks for library functions. ===================================
3100
3101AC_TYPE_SIGNAL
3102
3103dnl find out what to use at the end of a signal function
3104if test $ac_cv_type_signal = void; then
3105 AC_DEFINE(SIGRETURN, [return])
3106else
3107 AC_DEFINE(SIGRETURN, [return 0])
3108fi
3109
3110dnl check if struct sigcontext is defined (used for SGI only)
3111AC_MSG_CHECKING(for struct sigcontext)
3112AC_TRY_COMPILE([
3113#include <signal.h>
3114test_sig()
3115{
3116 struct sigcontext *scont;
3117 scont = (struct sigcontext *)0;
3118 return 1;
3119} ], ,
3120 AC_MSG_RESULT(yes)
3121 AC_DEFINE(HAVE_SIGCONTEXT),
3122 AC_MSG_RESULT(no))
3123
3124dnl tricky stuff: try to find out if getcwd() is implemented with
3125dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003126AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3127 [
3128 AC_RUN_IFELSE([[
3129#include "confdefs.h"
3130#ifdef HAVE_UNISTD_H
3131#include <unistd.h>
3132#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133char *dagger[] = { "IFS=pwd", 0 };
3134main()
3135{
3136 char buffer[500];
3137 extern char **environ;
3138 environ = dagger;
3139 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003140}
3141 ]],[
3142 vim_cv_getcwd_broken=no
3143 ],[
3144 vim_cv_getcwd_broken=yes
3145 ],[
3146 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3147 ])
3148 ])
3149
3150if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3151 AC_DEFINE(BAD_GETCWD)
3152fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003153
Bram Moolenaar25153e12010-02-24 14:47:08 +01003154dnl Check for functions in one big call, to reduce the size of configure.
3155dnl Can only be used for functions that do not require any include.
3156AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003157 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003158 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003159 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003160 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003161 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3162 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003163AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003164
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003165dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3166dnl appropriate, so that off_t is 64 bits when needed.
3167AC_SYS_LARGEFILE
3168
Bram Moolenaar071d4272004-06-13 20:20:40 +00003169dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3170AC_MSG_CHECKING(for st_blksize)
3171AC_TRY_COMPILE(
3172[#include <sys/types.h>
3173#include <sys/stat.h>],
3174[ struct stat st;
3175 int n;
3176
3177 stat("/", &st);
3178 n = (int)st.st_blksize;],
3179 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3180 AC_MSG_RESULT(no))
3181
Bram Moolenaar446cb832008-06-24 21:56:24 +00003182AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3183 [
3184 AC_RUN_IFELSE([[
3185#include "confdefs.h"
3186#if STDC_HEADERS
3187# include <stdlib.h>
3188# include <stddef.h>
3189#endif
3190#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003191#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003192main() {struct stat st; exit(stat("configure/", &st) != 0); }
3193 ]],[
3194 vim_cv_stat_ignores_slash=yes
3195 ],[
3196 vim_cv_stat_ignores_slash=no
3197 ],[
3198 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3199 ])
3200 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003201
Bram Moolenaar446cb832008-06-24 21:56:24 +00003202if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3203 AC_DEFINE(STAT_IGNORES_SLASH)
3204fi
3205
Bram Moolenaar071d4272004-06-13 20:20:40 +00003206dnl Link with iconv for charset translation, if not found without library.
3207dnl check for iconv() requires including iconv.h
3208dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3209dnl has been installed.
3210AC_MSG_CHECKING(for iconv_open())
3211save_LIBS="$LIBS"
3212LIBS="$LIBS -liconv"
3213AC_TRY_LINK([
3214#ifdef HAVE_ICONV_H
3215# include <iconv.h>
3216#endif
3217 ], [iconv_open("fr", "to");],
3218 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3219 LIBS="$save_LIBS"
3220 AC_TRY_LINK([
3221#ifdef HAVE_ICONV_H
3222# include <iconv.h>
3223#endif
3224 ], [iconv_open("fr", "to");],
3225 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3226 AC_MSG_RESULT(no)))
3227
3228
3229AC_MSG_CHECKING(for nl_langinfo(CODESET))
3230AC_TRY_LINK([
3231#ifdef HAVE_LANGINFO_H
3232# include <langinfo.h>
3233#endif
3234], [char *cs = nl_langinfo(CODESET);],
3235 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3236 AC_MSG_RESULT(no))
3237
Bram Moolenaar446cb832008-06-24 21:56:24 +00003238dnl Need various functions for floating point support. Only enable
3239dnl floating point when they are all present.
3240AC_CHECK_LIB(m, strtod)
3241AC_MSG_CHECKING([for strtod() and other floating point functions])
3242AC_TRY_LINK([
3243#ifdef HAVE_MATH_H
3244# include <math.h>
3245#endif
3246#if STDC_HEADERS
3247# include <stdlib.h>
3248# include <stddef.h>
3249#endif
3250], [char *s; double d;
3251 d = strtod("1.1", &s);
3252 d = fabs(1.11);
3253 d = ceil(1.11);
3254 d = floor(1.11);
3255 d = log10(1.11);
3256 d = pow(1.11, 2.22);
3257 d = sqrt(1.11);
3258 d = sin(1.11);
3259 d = cos(1.11);
3260 d = atan(1.11);
3261 ],
3262 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3263 AC_MSG_RESULT(no))
3264
Bram Moolenaar071d4272004-06-13 20:20:40 +00003265dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3266dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003267dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003268AC_MSG_CHECKING(--disable-acl argument)
3269AC_ARG_ENABLE(acl,
3270 [ --disable-acl Don't check for ACL support.],
3271 , [enable_acl="yes"])
3272if test "$enable_acl" = "yes"; then
3273AC_MSG_RESULT(no)
3274AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3275 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3276 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3277
3278AC_MSG_CHECKING(for POSIX ACL support)
3279AC_TRY_LINK([
3280#include <sys/types.h>
3281#ifdef HAVE_SYS_ACL_H
3282# include <sys/acl.h>
3283#endif
3284acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3285 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3286 acl_free(acl);],
3287 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3288 AC_MSG_RESULT(no))
3289
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003290AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003291AC_MSG_CHECKING(for Solaris ACL support)
3292AC_TRY_LINK([
3293#ifdef HAVE_SYS_ACL_H
3294# include <sys/acl.h>
3295#endif], [acl("foo", GETACLCNT, 0, NULL);
3296 ],
3297 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003298 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003299
3300AC_MSG_CHECKING(for AIX ACL support)
3301AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003302#if STDC_HEADERS
3303# include <stdlib.h>
3304# include <stddef.h>
3305#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003306#ifdef HAVE_SYS_ACL_H
3307# include <sys/acl.h>
3308#endif
3309#ifdef HAVE_SYS_ACCESS_H
3310# include <sys/access.h>
3311#endif
3312#define _ALL_SOURCE
3313
3314#include <sys/stat.h>
3315
3316int aclsize;
3317struct acl *aclent;], [aclsize = sizeof(struct acl);
3318 aclent = (void *)malloc(aclsize);
3319 statacl("foo", STX_NORMAL, aclent, aclsize);
3320 ],
3321 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3322 AC_MSG_RESULT(no))
3323else
3324 AC_MSG_RESULT(yes)
3325fi
3326
3327AC_MSG_CHECKING(--disable-gpm argument)
3328AC_ARG_ENABLE(gpm,
3329 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3330 [enable_gpm="yes"])
3331
3332if test "$enable_gpm" = "yes"; then
3333 AC_MSG_RESULT(no)
3334 dnl Checking if gpm support can be compiled
3335 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3336 [olibs="$LIBS" ; LIBS="-lgpm"]
3337 AC_TRY_LINK(
3338 [#include <gpm.h>
3339 #include <linux/keyboard.h>],
3340 [Gpm_GetLibVersion(NULL);],
3341 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3342 dnl FEAT_MOUSE_GPM if mouse support is included
3343 [vi_cv_have_gpm=yes],
3344 [vi_cv_have_gpm=no])
3345 [LIBS="$olibs"]
3346 )
3347 if test $vi_cv_have_gpm = yes; then
3348 LIBS="$LIBS -lgpm"
3349 AC_DEFINE(HAVE_GPM)
3350 fi
3351else
3352 AC_MSG_RESULT(yes)
3353fi
3354
Bram Moolenaar446cb832008-06-24 21:56:24 +00003355AC_MSG_CHECKING(--disable-sysmouse argument)
3356AC_ARG_ENABLE(sysmouse,
3357 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3358 [enable_sysmouse="yes"])
3359
3360if test "$enable_sysmouse" = "yes"; then
3361 AC_MSG_RESULT(no)
3362 dnl Checking if sysmouse support can be compiled
3363 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3364 dnl defines FEAT_SYSMOUSE if mouse support is included
3365 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3366 AC_TRY_LINK(
3367 [#include <sys/consio.h>
3368 #include <signal.h>
3369 #include <sys/fbio.h>],
3370 [struct mouse_info mouse;
3371 mouse.operation = MOUSE_MODE;
3372 mouse.operation = MOUSE_SHOW;
3373 mouse.u.mode.mode = 0;
3374 mouse.u.mode.signal = SIGUSR2;],
3375 [vi_cv_have_sysmouse=yes],
3376 [vi_cv_have_sysmouse=no])
3377 )
3378 if test $vi_cv_have_sysmouse = yes; then
3379 AC_DEFINE(HAVE_SYSMOUSE)
3380 fi
3381else
3382 AC_MSG_RESULT(yes)
3383fi
3384
Bram Moolenaarf05da212009-11-17 16:13:15 +00003385dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3386AC_MSG_CHECKING(for FD_CLOEXEC)
3387AC_TRY_COMPILE(
3388[#if HAVE_FCNTL_H
3389# include <fcntl.h>
3390#endif],
3391[ int flag = FD_CLOEXEC;],
3392 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3393 AC_MSG_RESULT(not usable))
3394
Bram Moolenaar071d4272004-06-13 20:20:40 +00003395dnl rename needs to be checked separately to work on Nextstep with cc
3396AC_MSG_CHECKING(for rename)
3397AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3398 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3399 AC_MSG_RESULT(no))
3400
3401dnl sysctl() may exist but not the arguments we use
3402AC_MSG_CHECKING(for sysctl)
3403AC_TRY_COMPILE(
3404[#include <sys/types.h>
3405#include <sys/sysctl.h>],
3406[ int mib[2], r;
3407 size_t len;
3408
3409 mib[0] = CTL_HW;
3410 mib[1] = HW_USERMEM;
3411 len = sizeof(r);
3412 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3413 ],
3414 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3415 AC_MSG_RESULT(not usable))
3416
3417dnl sysinfo() may exist but not be Linux compatible
3418AC_MSG_CHECKING(for sysinfo)
3419AC_TRY_COMPILE(
3420[#include <sys/types.h>
3421#include <sys/sysinfo.h>],
3422[ struct sysinfo sinfo;
3423 int t;
3424
3425 (void)sysinfo(&sinfo);
3426 t = sinfo.totalram;
3427 ],
3428 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3429 AC_MSG_RESULT(not usable))
3430
Bram Moolenaar914572a2007-05-01 11:37:47 +00003431dnl struct sysinfo may have the mem_unit field or not
3432AC_MSG_CHECKING(for sysinfo.mem_unit)
3433AC_TRY_COMPILE(
3434[#include <sys/types.h>
3435#include <sys/sysinfo.h>],
3436[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003437 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003438 ],
3439 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3440 AC_MSG_RESULT(no))
3441
Bram Moolenaar071d4272004-06-13 20:20:40 +00003442dnl sysconf() may exist but not support what we want to use
3443AC_MSG_CHECKING(for sysconf)
3444AC_TRY_COMPILE(
3445[#include <unistd.h>],
3446[ (void)sysconf(_SC_PAGESIZE);
3447 (void)sysconf(_SC_PHYS_PAGES);
3448 ],
3449 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3450 AC_MSG_RESULT(not usable))
3451
Bram Moolenaar914703b2010-05-31 21:59:46 +02003452AC_CHECK_SIZEOF([int])
3453AC_CHECK_SIZEOF([long])
3454AC_CHECK_SIZEOF([time_t])
3455AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003456
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003457dnl Make sure that uint32_t is really 32 bits unsigned.
3458AC_MSG_CHECKING([uint32_t is 32 bits])
3459AC_TRY_RUN([
3460#ifdef HAVE_STDINT_H
3461# include <stdint.h>
3462#endif
3463#ifdef HAVE_INTTYPES_H
3464# include <inttypes.h>
3465#endif
3466main() {
3467 uint32_t nr1 = (uint32_t)-1;
3468 uint32_t nr2 = (uint32_t)0xffffffffUL;
3469 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3470 exit(0);
3471}],
3472AC_MSG_RESULT(ok),
3473AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003474AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003475
Bram Moolenaar446cb832008-06-24 21:56:24 +00003476dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3477dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3478
Bram Moolenaar071d4272004-06-13 20:20:40 +00003479[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003480#include "confdefs.h"
3481#ifdef HAVE_STRING_H
3482# include <string.h>
3483#endif
3484#if STDC_HEADERS
3485# include <stdlib.h>
3486# include <stddef.h>
3487#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003488main() {
3489 char buf[10];
3490 strcpy(buf, "abcdefghi");
3491 mch_memmove(buf, buf + 2, 3);
3492 if (strncmp(buf, "ababcf", 6))
3493 exit(1);
3494 strcpy(buf, "abcdefghi");
3495 mch_memmove(buf + 2, buf, 3);
3496 if (strncmp(buf, "cdedef", 6))
3497 exit(1);
3498 exit(0); /* libc version works properly. */
3499}']
3500
Bram Moolenaar446cb832008-06-24 21:56:24 +00003501AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3502 [
3503 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3504 [
3505 vim_cv_memmove_handles_overlap=yes
3506 ],[
3507 vim_cv_memmove_handles_overlap=no
3508 ],[
3509 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3510 ])
3511 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003512
Bram Moolenaar446cb832008-06-24 21:56:24 +00003513if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3514 AC_DEFINE(USEMEMMOVE)
3515else
3516 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3517 [
3518 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3519 [
3520 vim_cv_bcopy_handles_overlap=yes
3521 ],[
3522 vim_cv_bcopy_handles_overlap=no
3523 ],[
3524 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3525 ])
3526 ])
3527
3528 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3529 AC_DEFINE(USEBCOPY)
3530 else
3531 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3532 [
3533 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3534 [
3535 vim_cv_memcpy_handles_overlap=yes
3536 ],[
3537 vim_cv_memcpy_handles_overlap=no
3538 ],[
3539 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3540 ])
3541 ])
3542
3543 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3544 AC_DEFINE(USEMEMCPY)
3545 fi
3546 fi
3547fi
3548
Bram Moolenaar071d4272004-06-13 20:20:40 +00003549
3550dnl Check for multibyte locale functions
3551dnl Find out if _Xsetlocale() is supported by libX11.
3552dnl Check if X_LOCALE should be defined.
3553
3554if test "$enable_multibyte" = "yes"; then
3555 cflags_save=$CFLAGS
3556 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003557 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003558 CFLAGS="$CFLAGS -I$x_includes"
3559 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3560 AC_MSG_CHECKING(whether X_LOCALE needed)
3561 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3562 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3563 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3564 AC_MSG_RESULT(no))
3565 fi
3566 CFLAGS=$cflags_save
3567 LDFLAGS=$ldflags_save
3568fi
3569
3570dnl Link with xpg4, it is said to make Korean locale working
3571AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3572
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003573dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003574dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003575dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003576dnl -t for typedefs (many ctags have this)
3577dnl -s for static functions (Elvis ctags only?)
3578dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3579dnl -i+m to test for older Exuberant ctags
3580AC_MSG_CHECKING(how to create tags)
3581test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003582if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003583 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003584elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3585 TAGPRG="exctags -I INIT+ --fields=+S"
3586elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3587 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003588else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003589 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003590 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3591 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3592 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3593 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3594 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3595 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3596 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3597fi
3598test -f tags.save && mv tags.save tags
3599AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3600
3601dnl Check how we can run man with a section number
3602AC_MSG_CHECKING(how to run man with a section nr)
3603MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003604(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 +00003605AC_MSG_RESULT($MANDEF)
3606if test "$MANDEF" = "man -s"; then
3607 AC_DEFINE(USEMAN_S)
3608fi
3609
3610dnl Check if gettext() is working and if it needs -lintl
3611AC_MSG_CHECKING(--disable-nls argument)
3612AC_ARG_ENABLE(nls,
3613 [ --disable-nls Don't support NLS (gettext()).], ,
3614 [enable_nls="yes"])
3615
3616if test "$enable_nls" = "yes"; then
3617 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003618
3619 INSTALL_LANGS=install-languages
3620 AC_SUBST(INSTALL_LANGS)
3621 INSTALL_TOOL_LANGS=install-tool-languages
3622 AC_SUBST(INSTALL_TOOL_LANGS)
3623
Bram Moolenaar071d4272004-06-13 20:20:40 +00003624 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3625 AC_MSG_CHECKING([for NLS])
3626 if test -f po/Makefile; then
3627 have_gettext="no"
3628 if test -n "$MSGFMT"; then
3629 AC_TRY_LINK(
3630 [#include <libintl.h>],
3631 [gettext("Test");],
3632 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3633 olibs=$LIBS
3634 LIBS="$LIBS -lintl"
3635 AC_TRY_LINK(
3636 [#include <libintl.h>],
3637 [gettext("Test");],
3638 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3639 AC_MSG_RESULT([gettext() doesn't work]);
3640 LIBS=$olibs))
3641 else
3642 AC_MSG_RESULT([msgfmt not found - disabled]);
3643 fi
3644 if test $have_gettext = "yes"; then
3645 AC_DEFINE(HAVE_GETTEXT)
3646 MAKEMO=yes
3647 AC_SUBST(MAKEMO)
3648 dnl this was added in GNU gettext 0.10.36
3649 AC_CHECK_FUNCS(bind_textdomain_codeset)
3650 dnl _nl_msg_cat_cntr is required for GNU gettext
3651 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3652 AC_TRY_LINK(
3653 [#include <libintl.h>
3654 extern int _nl_msg_cat_cntr;],
3655 [++_nl_msg_cat_cntr;],
3656 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3657 AC_MSG_RESULT([no]))
3658 fi
3659 else
3660 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3661 fi
3662else
3663 AC_MSG_RESULT(yes)
3664fi
3665
3666dnl Check for dynamic linking loader
3667AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3668if test x${DLL} = xdlfcn.h; then
3669 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3670 AC_MSG_CHECKING([for dlopen()])
3671 AC_TRY_LINK(,[
3672 extern void* dlopen();
3673 dlopen();
3674 ],
3675 AC_MSG_RESULT(yes);
3676 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3677 AC_MSG_RESULT(no);
3678 AC_MSG_CHECKING([for dlopen() in -ldl])
3679 olibs=$LIBS
3680 LIBS="$LIBS -ldl"
3681 AC_TRY_LINK(,[
3682 extern void* dlopen();
3683 dlopen();
3684 ],
3685 AC_MSG_RESULT(yes);
3686 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3687 AC_MSG_RESULT(no);
3688 LIBS=$olibs))
3689 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3690 dnl ick :-)
3691 AC_MSG_CHECKING([for dlsym()])
3692 AC_TRY_LINK(,[
3693 extern void* dlsym();
3694 dlsym();
3695 ],
3696 AC_MSG_RESULT(yes);
3697 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3698 AC_MSG_RESULT(no);
3699 AC_MSG_CHECKING([for dlsym() in -ldl])
3700 olibs=$LIBS
3701 LIBS="$LIBS -ldl"
3702 AC_TRY_LINK(,[
3703 extern void* dlsym();
3704 dlsym();
3705 ],
3706 AC_MSG_RESULT(yes);
3707 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3708 AC_MSG_RESULT(no);
3709 LIBS=$olibs))
3710elif test x${DLL} = xdl.h; then
3711 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3712 AC_MSG_CHECKING([for shl_load()])
3713 AC_TRY_LINK(,[
3714 extern void* shl_load();
3715 shl_load();
3716 ],
3717 AC_MSG_RESULT(yes);
3718 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3719 AC_MSG_RESULT(no);
3720 AC_MSG_CHECKING([for shl_load() in -ldld])
3721 olibs=$LIBS
3722 LIBS="$LIBS -ldld"
3723 AC_TRY_LINK(,[
3724 extern void* shl_load();
3725 shl_load();
3726 ],
3727 AC_MSG_RESULT(yes);
3728 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3729 AC_MSG_RESULT(no);
3730 LIBS=$olibs))
3731fi
3732AC_CHECK_HEADERS(setjmp.h)
3733
3734if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3735 dnl -ldl must come after DynaLoader.a
3736 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3737 LIBS=`echo $LIBS | sed s/-ldl//`
3738 PERL_LIBS="$PERL_LIBS -ldl"
3739 fi
3740fi
3741
Bram Moolenaar164fca32010-07-14 13:58:07 +02003742if test "x$MACOSX" = "xyes"; then
3743 AC_MSG_CHECKING(whether we need -framework Cocoa)
3744 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3745 dnl disabled during tiny build)
3746 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3747 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003748 AC_MSG_RESULT(yes)
3749 else
3750 AC_MSG_RESULT(no)
3751 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003752 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3753 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3754 dnl missing Objective-C symbols.
3755 if test "x$features" = "xtiny"; then
3756 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3757 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3758 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003759fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003760if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003761 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003762fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003763
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003764dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3765dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3766dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003767dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3768dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003769DEPEND_CFLAGS_FILTER=
3770if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003771 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003772 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003773 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003774 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003775 AC_MSG_RESULT(yes)
3776 else
3777 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003778 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003779 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3780 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003781 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003782 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003783 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3784 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003785 CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003786 AC_MSG_RESULT(yes)
3787 else
3788 AC_MSG_RESULT(no)
3789 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003790fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003791AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003792
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003793dnl link.sh tries to avoid overlinking in a hackish way.
3794dnl At least GNU ld supports --as-needed which provides the same functionality
3795dnl at linker level. Let's use it.
3796AC_MSG_CHECKING(linker --as-needed support)
3797LINK_AS_NEEDED=
3798# Check if linker supports --as-needed and --no-as-needed options
3799if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003800 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003801 LINK_AS_NEEDED=yes
3802fi
3803if test "$LINK_AS_NEEDED" = yes; then
3804 AC_MSG_RESULT(yes)
3805else
3806 AC_MSG_RESULT(no)
3807fi
3808AC_SUBST(LINK_AS_NEEDED)
3809
Bram Moolenaar77c19352012-06-13 19:19:41 +02003810# IBM z/OS reset CFLAGS for config.mk
3811if test "$zOSUnix" = "yes"; then
3812 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3813fi
3814
Bram Moolenaar071d4272004-06-13 20:20:40 +00003815dnl write output files
3816AC_OUTPUT(auto/config.mk:config.mk.in)
3817
3818dnl vim: set sw=2 tw=78 fo+=l: