blob: 2fe5a9d8e20942c74c96cb50c26915cb4441f85b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000705 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100706 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 MZSCHEME_SRC="if_mzsch.c"
708 MZSCHEME_OBJ="objects/if_mzsch.o"
709 MZSCHEME_PRO="if_mzsch.pro"
710 AC_DEFINE(FEAT_MZSCHEME)
711 fi
712 AC_SUBST(MZSCHEME_SRC)
713 AC_SUBST(MZSCHEME_OBJ)
714 AC_SUBST(MZSCHEME_PRO)
715 AC_SUBST(MZSCHEME_LIBS)
716 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_SUBST(MZSCHEME_EXTRA)
718 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000719fi
720
721
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722AC_MSG_CHECKING(--enable-perlinterp argument)
723AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200724 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 [enable_perlinterp="no"])
726AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200727if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000728 AC_SUBST(vi_cv_path_perl)
729 AC_PATH_PROG(vi_cv_path_perl, perl)
730 if test "X$vi_cv_path_perl" != "X"; then
731 AC_MSG_CHECKING(Perl version)
732 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
733 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200734 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000735 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
736 badthreads=no
737 else
738 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
739 eval `$vi_cv_path_perl -V:use5005threads`
740 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
741 badthreads=no
742 else
743 badthreads=yes
744 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
745 fi
746 else
747 badthreads=yes
748 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
749 fi
750 fi
751 if test $badthreads = no; then
752 AC_MSG_RESULT(OK)
753 eval `$vi_cv_path_perl -V:shrpenv`
754 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
755 shrpenv=""
756 fi
757 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
758 AC_SUBST(vi_cv_perllib)
759 dnl Remove "-fno-something", it breaks using cproto.
760 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
761 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
762 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
763 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
764 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
765 -e 's/-bE:perl.exp//' -e 's/-lc //'`
766 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
767 dnl a test in configure may fail because of that.
768 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
769 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
770
771 dnl check that compiling a simple program still works with the flags
772 dnl added for Perl.
773 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
774 cflags_save=$CFLAGS
775 libs_save=$LIBS
776 ldflags_save=$LDFLAGS
777 CFLAGS="$CFLAGS $perlcppflags"
778 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200779 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000780 LDFLAGS="$perlldflags $LDFLAGS"
781 AC_TRY_LINK(,[ ],
782 AC_MSG_RESULT(yes); perl_ok=yes,
783 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
784 CFLAGS=$cflags_save
785 LIBS=$libs_save
786 LDFLAGS=$ldflags_save
787 if test $perl_ok = yes; then
788 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000789 dnl remove -pipe and -Wxxx, it confuses cproto
790 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000791 fi
792 if test "X$perlldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200793 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then
794 LDFLAGS="$perlldflags $LDFLAGS"
795 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000796 fi
797 PERL_LIBS=$perllibs
798 PERL_SRC="auto/if_perl.c if_perlsfio.c"
799 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
800 PERL_PRO="if_perl.pro if_perlsfio.pro"
801 AC_DEFINE(FEAT_PERL)
802 fi
803 fi
804 else
805 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
806 fi
807 fi
808
809 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000810 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000811 dir=/System/Library/Perl
812 darwindir=$dir/darwin
813 if test -d $darwindir; then
814 PERL=/usr/bin/perl
815 else
816 dnl Mac OS X 10.3
817 dir=/System/Library/Perl/5.8.1
818 darwindir=$dir/darwin-thread-multi-2level
819 if test -d $darwindir; then
820 PERL=/usr/bin/perl
821 fi
822 fi
823 if test -n "$PERL"; then
824 PERL_DIR="$dir"
825 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
826 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
827 PERL_LIBS="-L$darwindir/CORE -lperl"
828 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200829 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
830 dnl be included if requested by passing --with-mac-arch to
831 dnl configure, so strip these flags first (if present)
832 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
833 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 +0000834 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200835 if test "$enable_perlinterp" = "dynamic"; then
836 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
837 AC_DEFINE(DYNAMIC_PERL)
838 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
839 fi
840 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100841
842 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
843 AC_MSG_ERROR([could not configure perl])
844 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000845fi
846AC_SUBST(shrpenv)
847AC_SUBST(PERL_SRC)
848AC_SUBST(PERL_OBJ)
849AC_SUBST(PERL_PRO)
850AC_SUBST(PERL_CFLAGS)
851AC_SUBST(PERL_LIBS)
852
853AC_MSG_CHECKING(--enable-pythoninterp argument)
854AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 [enable_pythoninterp="no"])
857AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200858if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000859 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100860 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000861 if test "X$vi_cv_path_python" != "X"; then
862
863 dnl -- get its version number
864 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
865 [[vi_cv_var_python_version=`
866 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
867 ]])
868
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200869 dnl -- it must be at least version 2.3
870 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000871 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200872 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000873 then
874 AC_MSG_RESULT(yep)
875
876 dnl -- find where python thinks it was installed
877 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
878 [ vi_cv_path_python_pfx=`
879 ${vi_cv_path_python} -c \
880 "import sys; print sys.prefix"` ])
881
882 dnl -- and where it thinks it runs
883 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
884 [ vi_cv_path_python_epfx=`
885 ${vi_cv_path_python} -c \
886 "import sys; print sys.exec_prefix"` ])
887
888 dnl -- python's internal library path
889
890 AC_CACHE_VAL(vi_cv_path_pythonpath,
891 [ vi_cv_path_pythonpath=`
892 unset PYTHONPATH;
893 ${vi_cv_path_python} -c \
894 "import sys, string; print string.join(sys.path,':')"` ])
895
896 dnl -- where the Python implementation library archives are
897
898 AC_ARG_WITH(python-config-dir,
899 [ --with-python-config-dir=PATH Python's config directory],
900 [ vi_cv_path_python_conf="${withval}" ] )
901
902 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
903 [
904 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200905 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
906 if test -d "$d" && test -f "$d/config.c"; then
907 vi_cv_path_python_conf="$d"
908 else
909 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
910 for subdir in lib64 lib share; do
911 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
912 if test -d "$d" && test -f "$d/config.c"; then
913 vi_cv_path_python_conf="$d"
914 fi
915 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200917 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000918 ])
919
920 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
921
922 if test "X$PYTHON_CONFDIR" = "X"; then
923 AC_MSG_RESULT([can't find it!])
924 else
925
926 dnl -- we need to examine Python's config/Makefile too
927 dnl see what the interpreter is built from
928 AC_CACHE_VAL(vi_cv_path_python_plibs,
929 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000930 pwd=`pwd`
931 tmp_mkf="$pwd/config-PyMake$$"
932 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000933__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200934 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000935 @echo "python_LIBS='$(LIBS)'"
936 @echo "python_SYSLIBS='$(SYSLIBS)'"
937 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200938 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200939 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000940eof
941 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000942 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
943 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000944 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
945 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
946 vi_cv_path_python_plibs="-framework Python"
947 else
948 if test "${vi_cv_var_python_version}" = "1.4"; then
949 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
950 else
951 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
952 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200953 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 +0000954 dnl remove -ltermcap, it can conflict with an earlier -lncurses
955 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
956 fi
957 ])
958
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200959 if test "X$python_DLLLIBRARY" != "X"; then
960 python_INSTSONAME="$python_DLLLIBRARY"
961 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000962 PYTHON_LIBS="${vi_cv_path_python_plibs}"
963 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200964 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 +0000965 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200966 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 +0000967 fi
968 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200969 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000970 if test "${vi_cv_var_python_version}" = "1.4"; then
971 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
972 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100973 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 +0000974
975 dnl On FreeBSD linking with "-pthread" is required to use threads.
976 dnl _THREAD_SAFE must be used for compiling then.
977 dnl The "-pthread" is added to $LIBS, so that the following check for
978 dnl sigaltstack() will look in libc_r (it's there in libc!).
979 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
980 dnl will then define target-specific defines, e.g., -D_REENTRANT.
981 dnl Don't do this for Mac OSX, -pthread will generate a warning.
982 AC_MSG_CHECKING([if -pthread should be used])
983 threadsafe_flag=
984 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000985 dnl if test "x$MACOSX" != "xyes"; then
986 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000987 test "$GCC" = yes && threadsafe_flag="-pthread"
988 if test "`(uname) 2>/dev/null`" = FreeBSD; then
989 threadsafe_flag="-D_THREAD_SAFE"
990 thread_lib="-pthread"
991 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +0200992 if test "`(uname) 2>/dev/null`" = SunOS; then
993 threadsafe_flag="-pthreads"
994 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000995 fi
996 libs_save_old=$LIBS
997 if test -n "$threadsafe_flag"; then
998 cflags_save=$CFLAGS
999 CFLAGS="$CFLAGS $threadsafe_flag"
1000 LIBS="$LIBS $thread_lib"
1001 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001002 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001003 AC_MSG_RESULT(no); LIBS=$libs_save_old
1004 )
1005 CFLAGS=$cflags_save
1006 else
1007 AC_MSG_RESULT(no)
1008 fi
1009
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001010 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001011 dnl added for Python.
1012 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1013 cflags_save=$CFLAGS
1014 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001015 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001016 LIBS="$LIBS $PYTHON_LIBS"
1017 AC_TRY_LINK(,[ ],
1018 AC_MSG_RESULT(yes); python_ok=yes,
1019 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1020 CFLAGS=$cflags_save
1021 LIBS=$libs_save
1022 if test $python_ok = yes; then
1023 AC_DEFINE(FEAT_PYTHON)
1024 else
1025 LIBS=$libs_save_old
1026 PYTHON_SRC=
1027 PYTHON_OBJ=
1028 PYTHON_LIBS=
1029 PYTHON_CFLAGS=
1030 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001031 fi
1032 else
1033 AC_MSG_RESULT(too old)
1034 fi
1035 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001036
1037 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1038 AC_MSG_ERROR([could not configure python])
1039 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001040fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001041
Bram Moolenaar071d4272004-06-13 20:20:40 +00001042AC_SUBST(PYTHON_CONFDIR)
1043AC_SUBST(PYTHON_LIBS)
1044AC_SUBST(PYTHON_GETPATH_CFLAGS)
1045AC_SUBST(PYTHON_CFLAGS)
1046AC_SUBST(PYTHON_SRC)
1047AC_SUBST(PYTHON_OBJ)
1048
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001049
1050AC_MSG_CHECKING(--enable-python3interp argument)
1051AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001052 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053 [enable_python3interp="no"])
1054AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001055if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001056 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001057 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001058 if test "X$vi_cv_path_python3" != "X"; then
1059
1060 dnl -- get its version number
1061 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1062 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001063 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001064 ]])
1065
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001066 dnl -- it must be at least version 3
1067 AC_MSG_CHECKING(Python is 3.0 or better)
1068 if ${vi_cv_path_python3} -c \
1069 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1070 then
1071 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001072
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001073 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1074 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001075 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001076 vi_cv_var_python3_abiflags=
1077 if ${vi_cv_path_python3} -c \
1078 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1079 then
1080 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1081 "import sys; print(sys.abiflags)"`
1082 fi ])
1083
1084 dnl -- find where python3 thinks it was installed
1085 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1086 [ vi_cv_path_python3_pfx=`
1087 ${vi_cv_path_python3} -c \
1088 "import sys; print(sys.prefix)"` ])
1089
1090 dnl -- and where it thinks it runs
1091 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1092 [ vi_cv_path_python3_epfx=`
1093 ${vi_cv_path_python3} -c \
1094 "import sys; print(sys.exec_prefix)"` ])
1095
1096 dnl -- python3's internal library path
1097
1098 AC_CACHE_VAL(vi_cv_path_python3path,
1099 [ vi_cv_path_python3path=`
1100 unset PYTHONPATH;
1101 ${vi_cv_path_python3} -c \
1102 "import sys, string; print(':'.join(sys.path))"` ])
1103
1104 dnl -- where the Python implementation library archives are
1105
1106 AC_ARG_WITH(python3-config-dir,
1107 [ --with-python3-config-dir=PATH Python's config directory],
1108 [ vi_cv_path_python3_conf="${withval}" ] )
1109
1110 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1111 [
1112 vi_cv_path_python3_conf=
1113 config_dir="config"
1114 if test "${vi_cv_var_python3_abiflags}" != ""; then
1115 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1116 fi
1117 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1118 if test -d "$d" && test -f "$d/config.c"; then
1119 vi_cv_path_python3_conf="$d"
1120 else
1121 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1122 for subdir in lib64 lib share; do
1123 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1124 if test -d "$d" && test -f "$d/config.c"; then
1125 vi_cv_path_python3_conf="$d"
1126 fi
1127 done
1128 done
1129 fi
1130 ])
1131
1132 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1133
1134 if test "X$PYTHON3_CONFDIR" = "X"; then
1135 AC_MSG_RESULT([can't find it!])
1136 else
1137
1138 dnl -- we need to examine Python's config/Makefile too
1139 dnl see what the interpreter is built from
1140 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1141 [
1142 pwd=`pwd`
1143 tmp_mkf="$pwd/config-PyMake$$"
1144 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001145__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001146 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001147 @echo "python3_LIBS='$(LIBS)'"
1148 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001149 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001150 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001151eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001152 dnl -- delete the lines from make about Entering/Leaving directory
1153 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1154 rm -f -- "${tmp_mkf}"
1155 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1156 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1157 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1158 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1159 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1160 ])
1161
1162 if test "X$python3_DLLLIBRARY" != "X"; then
1163 python3_INSTSONAME="$python3_DLLLIBRARY"
1164 fi
1165 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1166 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001167 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 +02001168 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001169 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 +02001170 fi
1171 PYTHON3_SRC="if_python3.c"
1172 PYTHON3_OBJ="objects/if_python3.o"
1173
1174 dnl On FreeBSD linking with "-pthread" is required to use threads.
1175 dnl _THREAD_SAFE must be used for compiling then.
1176 dnl The "-pthread" is added to $LIBS, so that the following check for
1177 dnl sigaltstack() will look in libc_r (it's there in libc!).
1178 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1179 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1180 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1181 AC_MSG_CHECKING([if -pthread should be used])
1182 threadsafe_flag=
1183 thread_lib=
1184 dnl if test "x$MACOSX" != "xyes"; then
1185 if test "`(uname) 2>/dev/null`" != Darwin; then
1186 test "$GCC" = yes && threadsafe_flag="-pthread"
1187 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1188 threadsafe_flag="-D_THREAD_SAFE"
1189 thread_lib="-pthread"
1190 fi
1191 if test "`(uname) 2>/dev/null`" = SunOS; then
1192 threadsafe_flag="-pthreads"
1193 fi
1194 fi
1195 libs_save_old=$LIBS
1196 if test -n "$threadsafe_flag"; then
1197 cflags_save=$CFLAGS
1198 CFLAGS="$CFLAGS $threadsafe_flag"
1199 LIBS="$LIBS $thread_lib"
1200 AC_TRY_LINK(,[ ],
1201 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1202 AC_MSG_RESULT(no); LIBS=$libs_save_old
1203 )
1204 CFLAGS=$cflags_save
1205 else
1206 AC_MSG_RESULT(no)
1207 fi
1208
1209 dnl check that compiling a simple program still works with the flags
1210 dnl added for Python.
1211 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1212 cflags_save=$CFLAGS
1213 libs_save=$LIBS
1214 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1215 LIBS="$LIBS $PYTHON3_LIBS"
1216 AC_TRY_LINK(,[ ],
1217 AC_MSG_RESULT(yes); python3_ok=yes,
1218 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1219 CFLAGS=$cflags_save
1220 LIBS=$libs_save
1221 if test "$python3_ok" = yes; then
1222 AC_DEFINE(FEAT_PYTHON3)
1223 else
1224 LIBS=$libs_save_old
1225 PYTHON3_SRC=
1226 PYTHON3_OBJ=
1227 PYTHON3_LIBS=
1228 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001229 fi
1230 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001231 else
1232 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001233 fi
1234 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001235 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1236 AC_MSG_ERROR([could not configure python3])
1237 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001238fi
1239
1240AC_SUBST(PYTHON3_CONFDIR)
1241AC_SUBST(PYTHON3_LIBS)
1242AC_SUBST(PYTHON3_CFLAGS)
1243AC_SUBST(PYTHON3_SRC)
1244AC_SUBST(PYTHON3_OBJ)
1245
1246dnl if python2.x and python3.x are enabled one can only link in code
1247dnl with dlopen(), dlsym(), dlclose()
1248if test "$python_ok" = yes && test "$python3_ok" = yes; then
1249 AC_DEFINE(DYNAMIC_PYTHON)
1250 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001251 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001252 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001253 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001254 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001255 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1256 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001257 AC_RUN_IFELSE([
1258 #include <dlfcn.h>
1259 /* If this program fails, then RTLD_GLOBAL is needed.
1260 * RTLD_GLOBAL will be used and then it is not possible to
1261 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001262 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001263 */
1264
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001265 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001266 {
1267 int needed = 0;
1268 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1269 if (pylib != 0)
1270 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001271 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001272 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1273 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1274 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001275 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001276 (*init)();
1277 needed = (*simple)("import termios") == -1;
1278 (*final)();
1279 dlclose(pylib);
1280 }
1281 return !needed;
1282 }
1283
1284 int main(int argc, char** argv)
1285 {
1286 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001287 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001288 not_needed = 1;
1289 return !not_needed;
1290 }],
1291 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001292
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001293 CFLAGS=$cflags_save
1294 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001295
1296 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1297 cflags_save=$CFLAGS
1298 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1299 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001300 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1301 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001302 AC_RUN_IFELSE([
1303 #include <dlfcn.h>
1304 #include <wchar.h>
1305 /* If this program fails, then RTLD_GLOBAL is needed.
1306 * RTLD_GLOBAL will be used and then it is not possible to
1307 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001308 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001309 */
1310
1311 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1312 {
1313 int needed = 0;
1314 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1315 if (pylib != 0)
1316 {
1317 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1318 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1319 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1320 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1321 (*pfx)(prefix);
1322 (*init)();
1323 needed = (*simple)("import termios") == -1;
1324 (*final)();
1325 dlclose(pylib);
1326 }
1327 return !needed;
1328 }
1329
1330 int main(int argc, char** argv)
1331 {
1332 int not_needed = 0;
1333 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1334 not_needed = 1;
1335 return !not_needed;
1336 }],
1337 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1338
1339 CFLAGS=$cflags_save
1340 LDFLAGS=$ldflags_save
1341
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001342 PYTHON_SRC="if_python.c"
1343 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001344 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001345 PYTHON_LIBS=
1346 PYTHON3_SRC="if_python3.c"
1347 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001348 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001349 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001350elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1351 AC_DEFINE(DYNAMIC_PYTHON)
1352 PYTHON_SRC="if_python.c"
1353 PYTHON_OBJ="objects/if_python.o"
1354 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1355 PYTHON_LIBS=
1356elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1357 AC_DEFINE(DYNAMIC_PYTHON3)
1358 PYTHON3_SRC="if_python3.c"
1359 PYTHON3_OBJ="objects/if_python3.o"
1360 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1361 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001362fi
1363
Bram Moolenaar071d4272004-06-13 20:20:40 +00001364AC_MSG_CHECKING(--enable-tclinterp argument)
1365AC_ARG_ENABLE(tclinterp,
1366 [ --enable-tclinterp Include Tcl interpreter.], ,
1367 [enable_tclinterp="no"])
1368AC_MSG_RESULT($enable_tclinterp)
1369
1370if test "$enable_tclinterp" = "yes"; then
1371
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001372 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001373 AC_MSG_CHECKING(--with-tclsh argument)
1374 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1375 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001376 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001377 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1378 AC_SUBST(vi_cv_path_tcl)
1379
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001380 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1381 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1382 tclsh_name="tclsh8.4"
1383 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1384 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001385 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 tclsh_name="tclsh8.2"
1387 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1388 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001389 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1390 tclsh_name="tclsh8.0"
1391 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1392 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001393 dnl still didn't find it, try without version number
1394 if test "X$vi_cv_path_tcl" = "X"; then
1395 tclsh_name="tclsh"
1396 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1397 fi
1398 if test "X$vi_cv_path_tcl" != "X"; then
1399 AC_MSG_CHECKING(Tcl version)
1400 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1401 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1402 AC_MSG_RESULT($tclver - OK);
1403 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 -`
1404
1405 AC_MSG_CHECKING(for location of Tcl include)
1406 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001407 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 +00001408 else
1409 dnl For Mac OS X 10.3, use the OS-provided framework location
1410 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1411 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001412 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001413 for try in $tclinc; do
1414 if test -f "$try/tcl.h"; then
1415 AC_MSG_RESULT($try/tcl.h)
1416 TCL_INC=$try
1417 break
1418 fi
1419 done
1420 if test -z "$TCL_INC"; then
1421 AC_MSG_RESULT(<not found>)
1422 SKIP_TCL=YES
1423 fi
1424 if test -z "$SKIP_TCL"; then
1425 AC_MSG_CHECKING(for location of tclConfig.sh script)
1426 if test "x$MACOSX" != "xyes"; then
1427 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001428 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001429 else
1430 dnl For Mac OS X 10.3, use the OS-provided framework location
1431 tclcnf="/System/Library/Frameworks/Tcl.framework"
1432 fi
1433 for try in $tclcnf; do
1434 if test -f $try/tclConfig.sh; then
1435 AC_MSG_RESULT($try/tclConfig.sh)
1436 . $try/tclConfig.sh
1437 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1438 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1439 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001440 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001441 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 +00001442 break
1443 fi
1444 done
1445 if test -z "$TCL_LIBS"; then
1446 AC_MSG_RESULT(<not found>)
1447 AC_MSG_CHECKING(for Tcl library by myself)
1448 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001449 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001450 for ext in .so .a ; do
1451 for ver in "" $tclver ; do
1452 for try in $tcllib ; do
1453 trylib=tcl$ver$ext
1454 if test -f $try/lib$trylib ; then
1455 AC_MSG_RESULT($try/lib$trylib)
1456 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1457 if test "`(uname) 2>/dev/null`" = SunOS &&
1458 uname -r | grep '^5' >/dev/null; then
1459 TCL_LIBS="$TCL_LIBS -R $try"
1460 fi
1461 break 3
1462 fi
1463 done
1464 done
1465 done
1466 if test -z "$TCL_LIBS"; then
1467 AC_MSG_RESULT(<not found>)
1468 SKIP_TCL=YES
1469 fi
1470 fi
1471 if test -z "$SKIP_TCL"; then
1472 AC_DEFINE(FEAT_TCL)
1473 TCL_SRC=if_tcl.c
1474 TCL_OBJ=objects/if_tcl.o
1475 TCL_PRO=if_tcl.pro
1476 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1477 fi
1478 fi
1479 else
1480 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1481 fi
1482 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001483 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1484 AC_MSG_ERROR([could not configure Tcl])
1485 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001486fi
1487AC_SUBST(TCL_SRC)
1488AC_SUBST(TCL_OBJ)
1489AC_SUBST(TCL_PRO)
1490AC_SUBST(TCL_CFLAGS)
1491AC_SUBST(TCL_LIBS)
1492
1493AC_MSG_CHECKING(--enable-rubyinterp argument)
1494AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001495 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001496 [enable_rubyinterp="no"])
1497AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001498if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001499 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001500 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001501 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1502 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1503 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001504 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001505 if test "X$vi_cv_path_ruby" != "X"; then
1506 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001507 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 +00001508 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001509 AC_MSG_CHECKING(Ruby rbconfig)
1510 ruby_rbconfig="RbConfig"
1511 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1512 ruby_rbconfig="Config"
1513 fi
1514 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001515 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001516 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 +00001517 if test "X$rubyhdrdir" != "X"; then
1518 AC_MSG_RESULT($rubyhdrdir)
1519 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001520 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001521 if test -d "$rubyhdrdir/$rubyarch"; then
1522 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1523 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001524 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001525 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001526 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001527 if test "X$rubylibs" != "X"; then
1528 RUBY_LIBS="$rubylibs"
1529 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001530 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1531 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001532 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001533 if test -f "$rubylibdir/$librubya"; then
1534 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001535 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1536 elif test "$librubyarg" = "libruby.a"; then
1537 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1538 librubyarg="-lruby"
1539 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001540 fi
1541
1542 if test "X$librubyarg" != "X"; then
1543 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1544 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001545 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001546 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001547 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1548 dnl be included if requested by passing --with-mac-arch to
1549 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001550 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001551 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001552 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1553 LDFLAGS="$rubyldflags $LDFLAGS"
1554 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001555 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001556 fi
1557 RUBY_SRC="if_ruby.c"
1558 RUBY_OBJ="objects/if_ruby.o"
1559 RUBY_PRO="if_ruby.pro"
1560 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001561 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001562 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001563 AC_DEFINE(DYNAMIC_RUBY)
1564 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1565 RUBY_LIBS=
1566 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001567 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001568 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001569 fi
1570 else
1571 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1572 fi
1573 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001574
1575 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1576 AC_MSG_ERROR([could not configure Ruby])
1577 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001578fi
1579AC_SUBST(RUBY_SRC)
1580AC_SUBST(RUBY_OBJ)
1581AC_SUBST(RUBY_PRO)
1582AC_SUBST(RUBY_CFLAGS)
1583AC_SUBST(RUBY_LIBS)
1584
1585AC_MSG_CHECKING(--enable-cscope argument)
1586AC_ARG_ENABLE(cscope,
1587 [ --enable-cscope Include cscope interface.], ,
1588 [enable_cscope="no"])
1589AC_MSG_RESULT($enable_cscope)
1590if test "$enable_cscope" = "yes"; then
1591 AC_DEFINE(FEAT_CSCOPE)
1592fi
1593
1594AC_MSG_CHECKING(--enable-workshop argument)
1595AC_ARG_ENABLE(workshop,
1596 [ --enable-workshop Include Sun Visual Workshop support.], ,
1597 [enable_workshop="no"])
1598AC_MSG_RESULT($enable_workshop)
1599if test "$enable_workshop" = "yes"; then
1600 AC_DEFINE(FEAT_SUN_WORKSHOP)
1601 WORKSHOP_SRC="workshop.c integration.c"
1602 AC_SUBST(WORKSHOP_SRC)
1603 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1604 AC_SUBST(WORKSHOP_OBJ)
1605 if test "${enable_gui-xxx}" = xxx; then
1606 enable_gui=motif
1607 fi
1608fi
1609
1610AC_MSG_CHECKING(--disable-netbeans argument)
1611AC_ARG_ENABLE(netbeans,
1612 [ --disable-netbeans Disable NetBeans integration support.],
1613 , [enable_netbeans="yes"])
1614if test "$enable_netbeans" = "yes"; then
1615 AC_MSG_RESULT(no)
1616 dnl On Solaris we need the socket and nsl library.
1617 AC_CHECK_LIB(socket, socket)
1618 AC_CHECK_LIB(nsl, gethostbyname)
1619 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1620 AC_TRY_LINK([
1621#include <stdio.h>
1622#include <stdlib.h>
1623#include <stdarg.h>
1624#include <fcntl.h>
1625#include <netdb.h>
1626#include <netinet/in.h>
1627#include <errno.h>
1628#include <sys/types.h>
1629#include <sys/socket.h>
1630 /* Check bitfields */
1631 struct nbbuf {
1632 unsigned int initDone:1;
1633 ushort signmaplen;
1634 };
1635 ], [
1636 /* Check creating a socket. */
1637 struct sockaddr_in server;
1638 (void)socket(AF_INET, SOCK_STREAM, 0);
1639 (void)htons(100);
1640 (void)gethostbyname("microsoft.com");
1641 if (errno == ECONNREFUSED)
1642 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1643 ],
1644 AC_MSG_RESULT(yes),
1645 AC_MSG_RESULT(no); enable_netbeans="no")
1646else
1647 AC_MSG_RESULT(yes)
1648fi
1649if test "$enable_netbeans" = "yes"; then
1650 AC_DEFINE(FEAT_NETBEANS_INTG)
1651 NETBEANS_SRC="netbeans.c"
1652 AC_SUBST(NETBEANS_SRC)
1653 NETBEANS_OBJ="objects/netbeans.o"
1654 AC_SUBST(NETBEANS_OBJ)
1655fi
1656
1657AC_MSG_CHECKING(--enable-sniff argument)
1658AC_ARG_ENABLE(sniff,
1659 [ --enable-sniff Include Sniff interface.], ,
1660 [enable_sniff="no"])
1661AC_MSG_RESULT($enable_sniff)
1662if test "$enable_sniff" = "yes"; then
1663 AC_DEFINE(FEAT_SNIFF)
1664 SNIFF_SRC="if_sniff.c"
1665 AC_SUBST(SNIFF_SRC)
1666 SNIFF_OBJ="objects/if_sniff.o"
1667 AC_SUBST(SNIFF_OBJ)
1668fi
1669
1670AC_MSG_CHECKING(--enable-multibyte argument)
1671AC_ARG_ENABLE(multibyte,
1672 [ --enable-multibyte Include multibyte editing support.], ,
1673 [enable_multibyte="no"])
1674AC_MSG_RESULT($enable_multibyte)
1675if test "$enable_multibyte" = "yes"; then
1676 AC_DEFINE(FEAT_MBYTE)
1677fi
1678
1679AC_MSG_CHECKING(--enable-hangulinput argument)
1680AC_ARG_ENABLE(hangulinput,
1681 [ --enable-hangulinput Include Hangul input support.], ,
1682 [enable_hangulinput="no"])
1683AC_MSG_RESULT($enable_hangulinput)
1684
1685AC_MSG_CHECKING(--enable-xim argument)
1686AC_ARG_ENABLE(xim,
1687 [ --enable-xim Include XIM input support.],
1688 AC_MSG_RESULT($enable_xim),
1689 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001690
1691AC_MSG_CHECKING(--enable-fontset argument)
1692AC_ARG_ENABLE(fontset,
1693 [ --enable-fontset Include X fontset output support.], ,
1694 [enable_fontset="no"])
1695AC_MSG_RESULT($enable_fontset)
1696dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1697
1698test -z "$with_x" && with_x=yes
1699test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1700if test "$with_x" = no; then
1701 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1702else
1703 dnl Do this check early, so that its failure can override user requests.
1704
1705 AC_PATH_PROG(xmkmfpath, xmkmf)
1706
1707 AC_PATH_XTRA
1708
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001709 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001710 dnl be compiled with a special option.
1711 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001712 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001713 CFLAGS="$CFLAGS -W c,dll"
1714 LDFLAGS="$LDFLAGS -W l,dll"
1715 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1716 fi
1717
1718 dnl On my HPUX system the X include dir is found, but the lib dir not.
1719 dnl This is a desparate try to fix this.
1720
1721 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1722 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1723 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1724 X_LIBS="$X_LIBS -L$x_libraries"
1725 if test "`(uname) 2>/dev/null`" = SunOS &&
1726 uname -r | grep '^5' >/dev/null; then
1727 X_LIBS="$X_LIBS -R $x_libraries"
1728 fi
1729 fi
1730
1731 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1732 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1733 AC_MSG_RESULT(Corrected X includes to $x_includes)
1734 X_CFLAGS="$X_CFLAGS -I$x_includes"
1735 fi
1736
1737 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1738 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1739 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1740 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1741 dnl Same for "-R/usr/lib ".
1742 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1743
1744
1745 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001746 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1747 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001748 AC_MSG_CHECKING(if X11 header files can be found)
1749 cflags_save=$CFLAGS
1750 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001751 AC_TRY_COMPILE([#include <X11/Xlib.h>
1752#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001753 AC_MSG_RESULT(yes),
1754 AC_MSG_RESULT(no); no_x=yes)
1755 CFLAGS=$cflags_save
1756
1757 if test "${no_x-no}" = yes; then
1758 with_x=no
1759 else
1760 AC_DEFINE(HAVE_X11)
1761 X_LIB="-lXt -lX11";
1762 AC_SUBST(X_LIB)
1763
1764 ac_save_LDFLAGS="$LDFLAGS"
1765 LDFLAGS="-L$x_libraries $LDFLAGS"
1766
1767 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1768 dnl For HP-UX 10.20 it must be before -lSM -lICE
1769 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1770 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1771
1772 dnl Some systems need -lnsl -lsocket when testing for ICE.
1773 dnl The check above doesn't do this, try here (again). Also needed to get
1774 dnl them after Xdmcp. link.sh will remove them when not needed.
1775 dnl Check for other function than above to avoid the cached value
1776 AC_CHECK_LIB(ICE, IceOpenConnection,
1777 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1778
1779 dnl Check for -lXpm (needed for some versions of Motif)
1780 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1781 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1782 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1783
1784 dnl Check that the X11 header files don't use implicit declarations
1785 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1786 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001787 dnl -Werror is GCC only, others like Solaris Studio might not like it
1788 if test "$GCC" = yes; then
1789 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1790 else
1791 CFLAGS="$CFLAGS $X_CFLAGS"
1792 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001793 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1794 AC_MSG_RESULT(no),
1795 CFLAGS="$CFLAGS -Wno-implicit-int"
1796 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1797 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1798 AC_MSG_RESULT(test failed)
1799 )
1800 )
1801 CFLAGS=$cflags_save
1802
1803 LDFLAGS="$ac_save_LDFLAGS"
1804
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001805 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1806 AC_CACHE_VAL(ac_cv_small_wchar_t,
1807 [AC_TRY_RUN([
1808#include <X11/Xlib.h>
1809#if STDC_HEADERS
1810# include <stdlib.h>
1811# include <stddef.h>
1812#endif
1813 main()
1814 {
1815 if (sizeof(wchar_t) <= 2)
1816 exit(1);
1817 exit(0);
1818 }],
1819 ac_cv_small_wchar_t="no",
1820 ac_cv_small_wchar_t="yes",
1821 AC_MSG_ERROR(failed to compile test program))])
1822 AC_MSG_RESULT($ac_cv_small_wchar_t)
1823 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1824 AC_DEFINE(SMALL_WCHAR_T)
1825 fi
1826
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827 fi
1828fi
1829
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001830test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001831
1832AC_MSG_CHECKING(--enable-gui argument)
1833AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001834 [ --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 +00001835
1836dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1837dnl Do not use character classes for portability with old tools.
1838enable_gui_canon=`echo "_$enable_gui" | \
1839 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1840
1841dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842SKIP_GTK2=YES
1843SKIP_GNOME=YES
1844SKIP_MOTIF=YES
1845SKIP_ATHENA=YES
1846SKIP_NEXTAW=YES
1847SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001848SKIP_CARBON=YES
1849GUITYPE=NONE
1850
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001851if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001852 SKIP_PHOTON=
1853 case "$enable_gui_canon" in
1854 no) AC_MSG_RESULT(no GUI support)
1855 SKIP_PHOTON=YES ;;
1856 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1857 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1858 photon) AC_MSG_RESULT(Photon GUI support) ;;
1859 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1860 SKIP_PHOTON=YES ;;
1861 esac
1862
1863elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1864 SKIP_CARBON=
1865 case "$enable_gui_canon" in
1866 no) AC_MSG_RESULT(no GUI support)
1867 SKIP_CARBON=YES ;;
1868 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001869 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1870 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001871 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1872 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1873 SKIP_CARBON=YES ;;
1874 esac
1875
1876else
1877
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878 case "$enable_gui_canon" in
1879 no|none) AC_MSG_RESULT(no GUI support) ;;
1880 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 SKIP_GTK2=
1882 SKIP_GNOME=
1883 SKIP_MOTIF=
1884 SKIP_ATHENA=
1885 SKIP_NEXTAW=
1886 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001887 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001888 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001889 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1890 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001891 SKIP_GTK2=;;
1892 motif) AC_MSG_RESULT(Motif GUI support)
1893 SKIP_MOTIF=;;
1894 athena) AC_MSG_RESULT(Athena GUI support)
1895 SKIP_ATHENA=;;
1896 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1897 SKIP_NEXTAW=;;
1898 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1899 esac
1900
1901fi
1902
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1904 -a "$enable_gui_canon" != "gnome2"; then
1905 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1906 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001907 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001908 , enable_gtk2_check="yes")
1909 AC_MSG_RESULT($enable_gtk2_check)
1910 if test "x$enable_gtk2_check" = "xno"; then
1911 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001912 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913 fi
1914fi
1915
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001916if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001917 AC_MSG_CHECKING(whether or not to look for GNOME)
1918 AC_ARG_ENABLE(gnome-check,
1919 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1920 , enable_gnome_check="no")
1921 AC_MSG_RESULT($enable_gnome_check)
1922 if test "x$enable_gnome_check" = "xno"; then
1923 SKIP_GNOME=YES
1924 fi
1925fi
1926
1927if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1928 AC_MSG_CHECKING(whether or not to look for Motif)
1929 AC_ARG_ENABLE(motif-check,
1930 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1931 , enable_motif_check="yes")
1932 AC_MSG_RESULT($enable_motif_check)
1933 if test "x$enable_motif_check" = "xno"; then
1934 SKIP_MOTIF=YES
1935 fi
1936fi
1937
1938if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1939 AC_MSG_CHECKING(whether or not to look for Athena)
1940 AC_ARG_ENABLE(athena-check,
1941 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1942 , enable_athena_check="yes")
1943 AC_MSG_RESULT($enable_athena_check)
1944 if test "x$enable_athena_check" = "xno"; then
1945 SKIP_ATHENA=YES
1946 fi
1947fi
1948
1949if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1950 AC_MSG_CHECKING(whether or not to look for neXtaw)
1951 AC_ARG_ENABLE(nextaw-check,
1952 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1953 , enable_nextaw_check="yes")
1954 AC_MSG_RESULT($enable_nextaw_check);
1955 if test "x$enable_nextaw_check" = "xno"; then
1956 SKIP_NEXTAW=YES
1957 fi
1958fi
1959
1960if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1961 AC_MSG_CHECKING(whether or not to look for Carbon)
1962 AC_ARG_ENABLE(carbon-check,
1963 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1964 , enable_carbon_check="yes")
1965 AC_MSG_RESULT($enable_carbon_check);
1966 if test "x$enable_carbon_check" = "xno"; then
1967 SKIP_CARBON=YES
1968 fi
1969fi
1970
Bram Moolenaar843ee412004-06-30 16:16:41 +00001971
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1973 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001974 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001975 AC_MSG_RESULT(yes);
1976 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001977 if test "$VIMNAME" = "vim"; then
1978 VIMNAME=Vim
1979 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001980
Bram Moolenaar164fca32010-07-14 13:58:07 +02001981 if test "x$MACARCH" = "xboth"; then
1982 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1983 else
1984 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1985 fi
1986
Bram Moolenaar14716812006-05-04 21:54:08 +00001987 dnl Default install directory is not /usr/local
1988 if test x$prefix = xNONE; then
1989 prefix=/Applications
1990 fi
1991
1992 dnl Sorry for the hard coded default
1993 datadir='${prefix}/Vim.app/Contents/Resources'
1994
Bram Moolenaar071d4272004-06-13 20:20:40 +00001995 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001996 SKIP_GTK2=YES;
1997 SKIP_GNOME=YES;
1998 SKIP_MOTIF=YES;
1999 SKIP_ATHENA=YES;
2000 SKIP_NEXTAW=YES;
2001 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002 SKIP_CARBON=YES
2003fi
2004
Bram Moolenaar071d4272004-06-13 20:20:40 +00002005dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002006dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002007dnl
2008dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002009dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002010dnl
2011AC_DEFUN(AM_PATH_GTK,
2012[
2013 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2014 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002015 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002016 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2017 no_gtk=""
2018 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2019 && $PKG_CONFIG --exists gtk+-2.0; then
2020 {
2021 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2022 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2023 dnl something like that.
2024 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002025 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2027 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2028 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2029 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2030 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2031 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2032 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2033 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002034 else
2035 no_gtk=yes
2036 fi
2037
2038 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2039 {
2040 ac_save_CFLAGS="$CFLAGS"
2041 ac_save_LIBS="$LIBS"
2042 CFLAGS="$CFLAGS $GTK_CFLAGS"
2043 LIBS="$LIBS $GTK_LIBS"
2044
2045 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002046 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002047 dnl
2048 rm -f conf.gtktest
2049 AC_TRY_RUN([
2050#include <gtk/gtk.h>
2051#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002052#if STDC_HEADERS
2053# include <stdlib.h>
2054# include <stddef.h>
2055#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056
2057int
2058main ()
2059{
2060int major, minor, micro;
2061char *tmp_version;
2062
2063system ("touch conf.gtktest");
2064
2065/* HP/UX 9 (%@#!) writes to sscanf strings */
2066tmp_version = g_strdup("$min_gtk_version");
2067if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2068 printf("%s, bad version string\n", "$min_gtk_version");
2069 exit(1);
2070 }
2071
2072if ((gtk_major_version > major) ||
2073 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2074 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2075 (gtk_micro_version >= micro)))
2076{
2077 return 0;
2078}
2079return 1;
2080}
2081],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2082 CFLAGS="$ac_save_CFLAGS"
2083 LIBS="$ac_save_LIBS"
2084 }
2085 fi
2086 if test "x$no_gtk" = x ; then
2087 if test "x$enable_gtktest" = "xyes"; then
2088 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2089 else
2090 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2091 fi
2092 ifelse([$2], , :, [$2])
2093 else
2094 {
2095 AC_MSG_RESULT(no)
2096 GTK_CFLAGS=""
2097 GTK_LIBS=""
2098 ifelse([$3], , :, [$3])
2099 }
2100 fi
2101 }
2102 else
2103 GTK_CFLAGS=""
2104 GTK_LIBS=""
2105 ifelse([$3], , :, [$3])
2106 fi
2107 AC_SUBST(GTK_CFLAGS)
2108 AC_SUBST(GTK_LIBS)
2109 rm -f conf.gtktest
2110])
2111
2112dnl ---------------------------------------------------------------------------
2113dnl gnome
2114dnl ---------------------------------------------------------------------------
2115AC_DEFUN([GNOME_INIT_HOOK],
2116[
2117 AC_SUBST(GNOME_LIBS)
2118 AC_SUBST(GNOME_LIBDIR)
2119 AC_SUBST(GNOME_INCLUDEDIR)
2120
2121 AC_ARG_WITH(gnome-includes,
2122 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2123 [CFLAGS="$CFLAGS -I$withval"]
2124 )
2125
2126 AC_ARG_WITH(gnome-libs,
2127 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2128 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2129 )
2130
2131 AC_ARG_WITH(gnome,
2132 [ --with-gnome Specify prefix for GNOME files],
2133 if test x$withval = xyes; then
2134 want_gnome=yes
2135 ifelse([$1], [], :, [$1])
2136 else
2137 if test "x$withval" = xno; then
2138 want_gnome=no
2139 else
2140 want_gnome=yes
2141 LDFLAGS="$LDFLAGS -L$withval/lib"
2142 CFLAGS="$CFLAGS -I$withval/include"
2143 gnome_prefix=$withval/lib
2144 fi
2145 fi,
2146 want_gnome=yes)
2147
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002148 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002149 {
2150 AC_MSG_CHECKING(for libgnomeui-2.0)
2151 if $PKG_CONFIG --exists libgnomeui-2.0; then
2152 AC_MSG_RESULT(yes)
2153 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2154 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2155 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002156
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002157 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2158 dnl This might not be the right way but it works for me...
2159 AC_MSG_CHECKING(for FreeBSD)
2160 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2161 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002162 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002163 GNOME_LIBS="$GNOME_LIBS -pthread"
2164 else
2165 AC_MSG_RESULT(no)
2166 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167 $1
2168 else
2169 AC_MSG_RESULT(not found)
2170 if test "x$2" = xfail; then
2171 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2172 fi
2173 fi
2174 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002175 fi
2176])
2177
2178AC_DEFUN([GNOME_INIT],[
2179 GNOME_INIT_HOOK([],fail)
2180])
2181
2182
2183dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002184dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002185dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002186if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002187
2188 AC_MSG_CHECKING(--disable-gtktest argument)
2189 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2190 , enable_gtktest=yes)
2191 if test "x$enable_gtktest" = "xyes" ; then
2192 AC_MSG_RESULT(gtk test enabled)
2193 else
2194 AC_MSG_RESULT(gtk test disabled)
2195 fi
2196
Bram Moolenaar071d4272004-06-13 20:20:40 +00002197 if test "X$PKG_CONFIG" = "X"; then
2198 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2199 fi
2200
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002201 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002202 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2203 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002204 AM_PATH_GTK(2.2.0,
2205 [GUI_LIB_LOC="$GTK_LIBDIR"
2206 GTK_LIBNAME="$GTK_LIBS"
2207 GUI_INC_LOC="$GTK_CFLAGS"], )
2208 if test "x$GTK_CFLAGS" != "x"; then
2209 SKIP_ATHENA=YES
2210 SKIP_NEXTAW=YES
2211 SKIP_MOTIF=YES
2212 GUITYPE=GTK
2213 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214 fi
2215 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002217 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2218 || test "0$gtk_minor_version" -ge 2; then
2219 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2220 fi
2221 dnl
2222 dnl if GTK exists, then check for GNOME.
2223 dnl
2224 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002225 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002226 GNOME_INIT_HOOK([have_gnome=yes])
2227 if test "x$have_gnome" = xyes ; then
2228 AC_DEFINE(FEAT_GUI_GNOME)
2229 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2230 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002231 fi
2232 }
2233 fi
2234 fi
2235fi
2236
2237dnl Check for Motif include files location.
2238dnl The LAST one found is used, this makes the highest version to be used,
2239dnl e.g. when Motif1.2 and Motif2.0 are both present.
2240
2241if test -z "$SKIP_MOTIF"; then
2242 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"
2243 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2244 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2245
2246 AC_MSG_CHECKING(for location of Motif GUI includes)
2247 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2248 GUI_INC_LOC=
2249 for try in $gui_includes; do
2250 if test -f "$try/Xm/Xm.h"; then
2251 GUI_INC_LOC=$try
2252 fi
2253 done
2254 if test -n "$GUI_INC_LOC"; then
2255 if test "$GUI_INC_LOC" = /usr/include; then
2256 GUI_INC_LOC=
2257 AC_MSG_RESULT(in default path)
2258 else
2259 AC_MSG_RESULT($GUI_INC_LOC)
2260 fi
2261 else
2262 AC_MSG_RESULT(<not found>)
2263 SKIP_MOTIF=YES
2264 fi
2265fi
2266
2267dnl Check for Motif library files location. In the same order as the include
2268dnl files, to avoid a mixup if several versions are present
2269
2270if test -z "$SKIP_MOTIF"; then
2271 AC_MSG_CHECKING(--with-motif-lib argument)
2272 AC_ARG_WITH(motif-lib,
2273 [ --with-motif-lib=STRING Library for Motif ],
2274 [ MOTIF_LIBNAME="${withval}" ] )
2275
2276 if test -n "$MOTIF_LIBNAME"; then
2277 AC_MSG_RESULT($MOTIF_LIBNAME)
2278 GUI_LIB_LOC=
2279 else
2280 AC_MSG_RESULT(no)
2281
2282 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2283 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2284
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002285 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2286 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002287 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002288 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 +00002289 GUI_LIB_LOC=
2290 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002291 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002292 if test -f "$libtry"; then
2293 GUI_LIB_LOC=$try
2294 fi
2295 done
2296 done
2297 if test -n "$GUI_LIB_LOC"; then
2298 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002299 if test "$GUI_LIB_LOC" = /usr/lib \
2300 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2301 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002302 GUI_LIB_LOC=
2303 AC_MSG_RESULT(in default path)
2304 else
2305 if test -n "$GUI_LIB_LOC"; then
2306 AC_MSG_RESULT($GUI_LIB_LOC)
2307 if test "`(uname) 2>/dev/null`" = SunOS &&
2308 uname -r | grep '^5' >/dev/null; then
2309 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2310 fi
2311 fi
2312 fi
2313 MOTIF_LIBNAME=-lXm
2314 else
2315 AC_MSG_RESULT(<not found>)
2316 SKIP_MOTIF=YES
2317 fi
2318 fi
2319fi
2320
2321if test -z "$SKIP_MOTIF"; then
2322 SKIP_ATHENA=YES
2323 SKIP_NEXTAW=YES
2324 GUITYPE=MOTIF
2325 AC_SUBST(MOTIF_LIBNAME)
2326fi
2327
2328dnl Check if the Athena files can be found
2329
2330GUI_X_LIBS=
2331
2332if test -z "$SKIP_ATHENA"; then
2333 AC_MSG_CHECKING(if Athena header files can be found)
2334 cflags_save=$CFLAGS
2335 CFLAGS="$CFLAGS $X_CFLAGS"
2336 AC_TRY_COMPILE([
2337#include <X11/Intrinsic.h>
2338#include <X11/Xaw/Paned.h>], ,
2339 AC_MSG_RESULT(yes),
2340 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2341 CFLAGS=$cflags_save
2342fi
2343
2344if test -z "$SKIP_ATHENA"; then
2345 GUITYPE=ATHENA
2346fi
2347
2348if test -z "$SKIP_NEXTAW"; then
2349 AC_MSG_CHECKING(if neXtaw header files can be found)
2350 cflags_save=$CFLAGS
2351 CFLAGS="$CFLAGS $X_CFLAGS"
2352 AC_TRY_COMPILE([
2353#include <X11/Intrinsic.h>
2354#include <X11/neXtaw/Paned.h>], ,
2355 AC_MSG_RESULT(yes),
2356 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2357 CFLAGS=$cflags_save
2358fi
2359
2360if test -z "$SKIP_NEXTAW"; then
2361 GUITYPE=NEXTAW
2362fi
2363
2364if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2365 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2366 dnl Avoid adding it when it twice
2367 if test -n "$GUI_INC_LOC"; then
2368 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2369 fi
2370 if test -n "$GUI_LIB_LOC"; then
2371 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2372 fi
2373
2374 dnl Check for -lXext and then for -lXmu
2375 ldflags_save=$LDFLAGS
2376 LDFLAGS="$X_LIBS $LDFLAGS"
2377 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2378 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2379 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2380 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2381 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2382 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2383 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2384 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2385 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2386 if test -z "$SKIP_MOTIF"; then
2387 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2388 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2389 fi
2390 LDFLAGS=$ldflags_save
2391
2392 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2393 AC_MSG_CHECKING(for extra X11 defines)
2394 NARROW_PROTO=
2395 rm -fr conftestdir
2396 if mkdir conftestdir; then
2397 cd conftestdir
2398 cat > Imakefile <<'EOF'
2399acfindx:
2400 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2401EOF
2402 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2403 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2404 fi
2405 cd ..
2406 rm -fr conftestdir
2407 fi
2408 if test -z "$NARROW_PROTO"; then
2409 AC_MSG_RESULT(no)
2410 else
2411 AC_MSG_RESULT($NARROW_PROTO)
2412 fi
2413 AC_SUBST(NARROW_PROTO)
2414fi
2415
2416dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2417dnl use the X11 include path
2418if test "$enable_xsmp" = "yes"; then
2419 cppflags_save=$CPPFLAGS
2420 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2421 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2422 CPPFLAGS=$cppflags_save
2423fi
2424
2425
Bram Moolenaare667c952010-07-05 22:57:59 +02002426if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002427 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2428 cppflags_save=$CPPFLAGS
2429 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2430 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2431
2432 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2433 if test ! "$enable_xim" = "no"; then
2434 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2435 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2436 AC_MSG_RESULT(yes),
2437 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2438 fi
2439 CPPFLAGS=$cppflags_save
2440
2441 dnl automatically enable XIM when hangul input isn't enabled
2442 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2443 -a "x$GUITYPE" != "xNONE" ; then
2444 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2445 enable_xim="yes"
2446 fi
2447fi
2448
2449if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2450 cppflags_save=$CPPFLAGS
2451 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002452dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2453 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2454 AC_TRY_COMPILE([
2455#include <X11/Intrinsic.h>
2456#include <X11/Xmu/Editres.h>],
2457 [int i; i = 0;],
2458 AC_MSG_RESULT(yes)
2459 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2460 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002461 CPPFLAGS=$cppflags_save
2462fi
2463
2464dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2465if test -z "$SKIP_MOTIF"; then
2466 cppflags_save=$CPPFLAGS
2467 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002468 if test "$zOSUnix" = "yes"; then
2469 xmheader="Xm/Xm.h"
2470 else
2471 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002472 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002473 fi
2474 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002475
Bram Moolenaar77c19352012-06-13 19:19:41 +02002476 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002477 dnl Solaris uses XpmAttributes_21, very annoying.
2478 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2479 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2480 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2481 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2482 )
2483 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002484 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002485 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002486 CPPFLAGS=$cppflags_save
2487fi
2488
2489if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2490 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2491 enable_xim="no"
2492fi
2493if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2494 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2495 enable_fontset="no"
2496fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002497if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002498 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2499 enable_fontset="no"
2500fi
2501
Bram Moolenaar071d4272004-06-13 20:20:40 +00002502if test -z "$SKIP_PHOTON"; then
2503 GUITYPE=PHOTONGUI
2504fi
2505
2506AC_SUBST(GUI_INC_LOC)
2507AC_SUBST(GUI_LIB_LOC)
2508AC_SUBST(GUITYPE)
2509AC_SUBST(GUI_X_LIBS)
2510
2511if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2512 AC_MSG_ERROR([cannot use workshop without Motif])
2513fi
2514
2515dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2516if test "$enable_xim" = "yes"; then
2517 AC_DEFINE(FEAT_XIM)
2518fi
2519if test "$enable_fontset" = "yes"; then
2520 AC_DEFINE(FEAT_XFONTSET)
2521fi
2522
2523
2524dnl ---------------------------------------------------------------------------
2525dnl end of GUI-checking
2526dnl ---------------------------------------------------------------------------
2527
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002528dnl Check for Cygwin, which needs an extra source file if not using X11
2529AC_MSG_CHECKING(for CYGWIN environment)
2530case `uname` in
2531 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2532 AC_MSG_CHECKING(for CYGWIN clipboard support)
2533 if test "x$with_x" = "xno" ; then
2534 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2535 AC_MSG_RESULT(yes)
2536 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2537 else
2538 AC_MSG_RESULT(no - using X11)
2539 fi ;;
2540
2541 *) CYGWIN=no; AC_MSG_RESULT(no);;
2542esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002543
2544dnl Only really enable hangul input when GUI and XFONTSET are available
2545if test "$enable_hangulinput" = "yes"; then
2546 if test "x$GUITYPE" = "xNONE"; then
2547 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2548 enable_hangulinput=no
2549 else
2550 AC_DEFINE(FEAT_HANGULIN)
2551 HANGULIN_SRC=hangulin.c
2552 AC_SUBST(HANGULIN_SRC)
2553 HANGULIN_OBJ=objects/hangulin.o
2554 AC_SUBST(HANGULIN_OBJ)
2555 fi
2556fi
2557
2558dnl Checks for libraries and include files.
2559
Bram Moolenaar446cb832008-06-24 21:56:24 +00002560AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2561 [
2562 AC_RUN_IFELSE([[
2563#include "confdefs.h"
2564#include <ctype.h>
2565#if STDC_HEADERS
2566# include <stdlib.h>
2567# include <stddef.h>
2568#endif
2569main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2570 ]],[
2571 vim_cv_toupper_broken=yes
2572 ],[
2573 vim_cv_toupper_broken=no
2574 ],[
2575 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2576 ])])
2577
2578if test "x$vim_cv_toupper_broken" = "xyes" ; then
2579 AC_DEFINE(BROKEN_TOUPPER)
2580fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002581
2582AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002583AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002584 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2585 AC_MSG_RESULT(no))
2586
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002587AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2588AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2589 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2590 AC_MSG_RESULT(no))
2591
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592dnl Checks for header files.
2593AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2594dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2595if test "$HAS_ELF" = 1; then
2596 AC_CHECK_LIB(elf, main)
2597fi
2598
2599AC_HEADER_DIRENT
2600
Bram Moolenaar071d4272004-06-13 20:20:40 +00002601dnl If sys/wait.h is not found it might still exist but not be POSIX
2602dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2603if test $ac_cv_header_sys_wait_h = no; then
2604 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2605 AC_TRY_COMPILE([#include <sys/wait.h>],
2606 [union wait xx, yy; xx = yy],
2607 AC_MSG_RESULT(yes)
2608 AC_DEFINE(HAVE_SYS_WAIT_H)
2609 AC_DEFINE(HAVE_UNION_WAIT),
2610 AC_MSG_RESULT(no))
2611fi
2612
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002613AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2614 sys/select.h sys/utsname.h termcap.h fcntl.h \
2615 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2616 termio.h iconv.h inttypes.h langinfo.h math.h \
2617 unistd.h stropts.h errno.h sys/resource.h \
2618 sys/systeminfo.h locale.h sys/stream.h termios.h \
2619 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2620 utime.h sys/param.h libintl.h libgen.h \
2621 util/debug.h util/msg18n.h frame.h sys/acl.h \
2622 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002624dnl sys/ptem.h depends on sys/stream.h on Solaris
2625AC_CHECK_HEADERS(sys/ptem.h, [], [],
2626[#if defined HAVE_SYS_STREAM_H
2627# include <sys/stream.h>
2628#endif])
2629
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002630dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2631AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2632[#if defined HAVE_SYS_PARAM_H
2633# include <sys/param.h>
2634#endif])
2635
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002636
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002637dnl pthread_np.h may exist but can only be used after including pthread.h
2638AC_MSG_CHECKING([for pthread_np.h])
2639AC_TRY_COMPILE([
2640#include <pthread.h>
2641#include <pthread_np.h>],
2642 [int i; i = 0;],
2643 AC_MSG_RESULT(yes)
2644 AC_DEFINE(HAVE_PTHREAD_NP_H),
2645 AC_MSG_RESULT(no))
2646
Bram Moolenaare344bea2005-09-01 20:46:49 +00002647AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002648if test "x$MACOSX" = "xyes"; then
2649 dnl The strings.h file on OS/X contains a warning and nothing useful.
2650 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2651else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002652
2653dnl Check if strings.h and string.h can both be included when defined.
2654AC_MSG_CHECKING([if strings.h can be included after string.h])
2655cppflags_save=$CPPFLAGS
2656CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2657AC_TRY_COMPILE([
2658#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2659# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2660 /* but don't do it on AIX 5.1 (Uribarri) */
2661#endif
2662#ifdef HAVE_XM_XM_H
2663# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2664#endif
2665#ifdef HAVE_STRING_H
2666# include <string.h>
2667#endif
2668#if defined(HAVE_STRINGS_H)
2669# include <strings.h>
2670#endif
2671 ], [int i; i = 0;],
2672 AC_MSG_RESULT(yes),
2673 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2674 AC_MSG_RESULT(no))
2675CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002676fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677
2678dnl Checks for typedefs, structures, and compiler characteristics.
2679AC_PROG_GCC_TRADITIONAL
2680AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002681AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002682AC_TYPE_MODE_T
2683AC_TYPE_OFF_T
2684AC_TYPE_PID_T
2685AC_TYPE_SIZE_T
2686AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002687AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002688
Bram Moolenaar071d4272004-06-13 20:20:40 +00002689AC_HEADER_TIME
2690AC_CHECK_TYPE(ino_t, long)
2691AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002692AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693
2694AC_MSG_CHECKING(for rlim_t)
2695if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2696 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2697else
2698 AC_EGREP_CPP(dnl
2699changequote(<<,>>)dnl
2700<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2701changequote([,]),
2702 [
2703#include <sys/types.h>
2704#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002705# include <stdlib.h>
2706# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002707#endif
2708#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002710#endif
2711 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2712 AC_MSG_RESULT($ac_cv_type_rlim_t)
2713fi
2714if test $ac_cv_type_rlim_t = no; then
2715 cat >> confdefs.h <<\EOF
2716#define rlim_t unsigned long
2717EOF
2718fi
2719
2720AC_MSG_CHECKING(for stack_t)
2721if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2722 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2723else
2724 AC_EGREP_CPP(stack_t,
2725 [
2726#include <sys/types.h>
2727#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002728# include <stdlib.h>
2729# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002730#endif
2731#include <signal.h>
2732 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2733 AC_MSG_RESULT($ac_cv_type_stack_t)
2734fi
2735if test $ac_cv_type_stack_t = no; then
2736 cat >> confdefs.h <<\EOF
2737#define stack_t struct sigaltstack
2738EOF
2739fi
2740
2741dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2742AC_MSG_CHECKING(whether stack_t has an ss_base field)
2743AC_TRY_COMPILE([
2744#include <sys/types.h>
2745#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002746# include <stdlib.h>
2747# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002748#endif
2749#include <signal.h>
2750#include "confdefs.h"
2751 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2752 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2753 AC_MSG_RESULT(no))
2754
2755olibs="$LIBS"
2756AC_MSG_CHECKING(--with-tlib argument)
2757AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2758if test -n "$with_tlib"; then
2759 AC_MSG_RESULT($with_tlib)
2760 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002761 AC_MSG_CHECKING(for linking with $with_tlib library)
2762 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2763 dnl Need to check for tgetent() below.
2764 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002765else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002766 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002767 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2768 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002769 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002770 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002771 dnl Older versions of ncurses have bugs, get a new one!
2772 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002773 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002774 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002775 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2776 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002777 esac
2778 for libname in $tlibs; do
2779 AC_CHECK_LIB(${libname}, tgetent,,)
2780 if test "x$olibs" != "x$LIBS"; then
2781 dnl It's possible that a library is found but it doesn't work
2782 dnl e.g., shared library that cannot be found
2783 dnl compile and run a test program to be sure
2784 AC_TRY_RUN([
2785#ifdef HAVE_TERMCAP_H
2786# include <termcap.h>
2787#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002788#if STDC_HEADERS
2789# include <stdlib.h>
2790# include <stddef.h>
2791#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002792main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2793 res="OK", res="FAIL", res="FAIL")
2794 if test "$res" = "OK"; then
2795 break
2796 fi
2797 AC_MSG_RESULT($libname library is not usable)
2798 LIBS="$olibs"
2799 fi
2800 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002801 if test "x$olibs" = "x$LIBS"; then
2802 AC_MSG_RESULT(no terminal library found)
2803 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002804fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002805
2806if test "x$olibs" = "x$LIBS"; then
2807 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002808 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002809 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2810 AC_MSG_RESULT(yes),
2811 AC_MSG_ERROR([NOT FOUND!
2812 You need to install a terminal library; for example ncurses.
2813 Or specify the name of the library with --with-tlib.]))
2814fi
2815
Bram Moolenaar446cb832008-06-24 21:56:24 +00002816AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2817 [
2818 AC_RUN_IFELSE([[
2819#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820#ifdef HAVE_TERMCAP_H
2821# include <termcap.h>
2822#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002823#ifdef HAVE_STRING_H
2824# include <string.h>
2825#endif
2826#if STDC_HEADERS
2827# include <stdlib.h>
2828# include <stddef.h>
2829#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002830main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002831{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2832 ]],[
2833 vim_cv_terminfo=no
2834 ],[
2835 vim_cv_terminfo=yes
2836 ],[
2837 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2838 ])
2839 ])
2840
2841if test "x$vim_cv_terminfo" = "xyes" ; then
2842 AC_DEFINE(TERMINFO)
2843fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002844
2845if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002846 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2847 [
2848 AC_RUN_IFELSE([[
2849#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850#ifdef HAVE_TERMCAP_H
2851# include <termcap.h>
2852#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002853#if STDC_HEADERS
2854# include <stdlib.h>
2855# include <stddef.h>
2856#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002857main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002858{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2859 ]],[
2860 vim_cv_tgent=zero
2861 ],[
2862 vim_cv_tgent=non-zero
2863 ],[
2864 AC_MSG_ERROR(failed to compile test program.)
2865 ])
2866 ])
2867
2868 if test "x$vim_cv_tgent" = "xzero" ; then
2869 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2870 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002871fi
2872
2873AC_MSG_CHECKING(whether termcap.h contains ospeed)
2874AC_TRY_LINK([
2875#ifdef HAVE_TERMCAP_H
2876# include <termcap.h>
2877#endif
2878 ], [ospeed = 20000],
2879 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2880 [AC_MSG_RESULT(no)
2881 AC_MSG_CHECKING(whether ospeed can be extern)
2882 AC_TRY_LINK([
2883#ifdef HAVE_TERMCAP_H
2884# include <termcap.h>
2885#endif
2886extern short ospeed;
2887 ], [ospeed = 20000],
2888 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2889 AC_MSG_RESULT(no))]
2890 )
2891
2892AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2893AC_TRY_LINK([
2894#ifdef HAVE_TERMCAP_H
2895# include <termcap.h>
2896#endif
2897 ], [if (UP == 0 && BC == 0) PC = 1],
2898 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2899 [AC_MSG_RESULT(no)
2900 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2901 AC_TRY_LINK([
2902#ifdef HAVE_TERMCAP_H
2903# include <termcap.h>
2904#endif
2905extern char *UP, *BC, PC;
2906 ], [if (UP == 0 && BC == 0) PC = 1],
2907 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2908 AC_MSG_RESULT(no))]
2909 )
2910
2911AC_MSG_CHECKING(whether tputs() uses outfuntype)
2912AC_TRY_COMPILE([
2913#ifdef HAVE_TERMCAP_H
2914# include <termcap.h>
2915#endif
2916 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2917 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2918 AC_MSG_RESULT(no))
2919
2920dnl On some SCO machines sys/select redefines struct timeval
2921AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2922AC_TRY_COMPILE([
2923#include <sys/types.h>
2924#include <sys/time.h>
2925#include <sys/select.h>], ,
2926 AC_MSG_RESULT(yes)
2927 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2928 AC_MSG_RESULT(no))
2929
2930dnl AC_DECL_SYS_SIGLIST
2931
2932dnl Checks for pty.c (copied from screen) ==========================
2933AC_MSG_CHECKING(for /dev/ptc)
2934if test -r /dev/ptc; then
2935 AC_DEFINE(HAVE_DEV_PTC)
2936 AC_MSG_RESULT(yes)
2937else
2938 AC_MSG_RESULT(no)
2939fi
2940
2941AC_MSG_CHECKING(for SVR4 ptys)
2942if test -c /dev/ptmx ; then
2943 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2944 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2945 AC_MSG_RESULT(no))
2946else
2947 AC_MSG_RESULT(no)
2948fi
2949
2950AC_MSG_CHECKING(for ptyranges)
2951if test -d /dev/ptym ; then
2952 pdir='/dev/ptym'
2953else
2954 pdir='/dev'
2955fi
2956dnl SCO uses ptyp%d
2957AC_EGREP_CPP(yes,
2958[#ifdef M_UNIX
2959 yes;
2960#endif
2961 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2962dnl if test -c /dev/ptyp19; then
2963dnl ptys=`echo /dev/ptyp??`
2964dnl else
2965dnl ptys=`echo $pdir/pty??`
2966dnl fi
2967if test "$ptys" != "$pdir/pty??" ; then
2968 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2969 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2970 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2971 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2972 AC_MSG_RESULT([$p0 / $p1])
2973else
2974 AC_MSG_RESULT([don't know])
2975fi
2976
2977dnl **** pty mode/group handling ****
2978dnl
2979dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002980rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002981AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2982 [
2983 AC_RUN_IFELSE([[
2984#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002985#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002986#if STDC_HEADERS
2987# include <stdlib.h>
2988# include <stddef.h>
2989#endif
2990#ifdef HAVE_UNISTD_H
2991#include <unistd.h>
2992#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002993#include <sys/stat.h>
2994#include <stdio.h>
2995main()
2996{
2997 struct stat sb;
2998 char *x,*ttyname();
2999 int om, m;
3000 FILE *fp;
3001
3002 if (!(x = ttyname(0))) exit(1);
3003 if (stat(x, &sb)) exit(1);
3004 om = sb.st_mode;
3005 if (om & 002) exit(0);
3006 m = system("mesg y");
3007 if (m == -1 || m == 127) exit(1);
3008 if (stat(x, &sb)) exit(1);
3009 m = sb.st_mode;
3010 if (chmod(x, om)) exit(1);
3011 if (m & 002) exit(0);
3012 if (sb.st_gid == getgid()) exit(1);
3013 if (!(fp=fopen("conftest_grp", "w")))
3014 exit(1);
3015 fprintf(fp, "%d\n", sb.st_gid);
3016 fclose(fp);
3017 exit(0);
3018}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003019 ]],[
3020 if test -f conftest_grp; then
3021 vim_cv_tty_group=`cat conftest_grp`
3022 if test "x$vim_cv_tty_mode" = "x" ; then
3023 vim_cv_tty_mode=0620
3024 fi
3025 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3026 else
3027 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003028 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003029 fi
3030 ],[
3031 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003032 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003033 ],[
3034 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3035 ])
3036 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003037rm -f conftest_grp
3038
Bram Moolenaar446cb832008-06-24 21:56:24 +00003039if test "x$vim_cv_tty_group" != "xworld" ; then
3040 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3041 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003042 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 +00003043 else
3044 AC_DEFINE(PTYMODE, 0620)
3045 fi
3046fi
3047
Bram Moolenaar071d4272004-06-13 20:20:40 +00003048dnl Checks for library functions. ===================================
3049
3050AC_TYPE_SIGNAL
3051
3052dnl find out what to use at the end of a signal function
3053if test $ac_cv_type_signal = void; then
3054 AC_DEFINE(SIGRETURN, [return])
3055else
3056 AC_DEFINE(SIGRETURN, [return 0])
3057fi
3058
3059dnl check if struct sigcontext is defined (used for SGI only)
3060AC_MSG_CHECKING(for struct sigcontext)
3061AC_TRY_COMPILE([
3062#include <signal.h>
3063test_sig()
3064{
3065 struct sigcontext *scont;
3066 scont = (struct sigcontext *)0;
3067 return 1;
3068} ], ,
3069 AC_MSG_RESULT(yes)
3070 AC_DEFINE(HAVE_SIGCONTEXT),
3071 AC_MSG_RESULT(no))
3072
3073dnl tricky stuff: try to find out if getcwd() is implemented with
3074dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003075AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3076 [
3077 AC_RUN_IFELSE([[
3078#include "confdefs.h"
3079#ifdef HAVE_UNISTD_H
3080#include <unistd.h>
3081#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003082char *dagger[] = { "IFS=pwd", 0 };
3083main()
3084{
3085 char buffer[500];
3086 extern char **environ;
3087 environ = dagger;
3088 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003089}
3090 ]],[
3091 vim_cv_getcwd_broken=no
3092 ],[
3093 vim_cv_getcwd_broken=yes
3094 ],[
3095 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3096 ])
3097 ])
3098
3099if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3100 AC_DEFINE(BAD_GETCWD)
3101fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003102
Bram Moolenaar25153e12010-02-24 14:47:08 +01003103dnl Check for functions in one big call, to reduce the size of configure.
3104dnl Can only be used for functions that do not require any include.
3105AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003106 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003107 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003108 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003109 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003110 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3111 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003112AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003114dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3115dnl appropriate, so that off_t is 64 bits when needed.
3116AC_SYS_LARGEFILE
3117
Bram Moolenaar071d4272004-06-13 20:20:40 +00003118dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3119AC_MSG_CHECKING(for st_blksize)
3120AC_TRY_COMPILE(
3121[#include <sys/types.h>
3122#include <sys/stat.h>],
3123[ struct stat st;
3124 int n;
3125
3126 stat("/", &st);
3127 n = (int)st.st_blksize;],
3128 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3129 AC_MSG_RESULT(no))
3130
Bram Moolenaar446cb832008-06-24 21:56:24 +00003131AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3132 [
3133 AC_RUN_IFELSE([[
3134#include "confdefs.h"
3135#if STDC_HEADERS
3136# include <stdlib.h>
3137# include <stddef.h>
3138#endif
3139#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003140#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003141main() {struct stat st; exit(stat("configure/", &st) != 0); }
3142 ]],[
3143 vim_cv_stat_ignores_slash=yes
3144 ],[
3145 vim_cv_stat_ignores_slash=no
3146 ],[
3147 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3148 ])
3149 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003150
Bram Moolenaar446cb832008-06-24 21:56:24 +00003151if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3152 AC_DEFINE(STAT_IGNORES_SLASH)
3153fi
3154
Bram Moolenaar071d4272004-06-13 20:20:40 +00003155dnl Link with iconv for charset translation, if not found without library.
3156dnl check for iconv() requires including iconv.h
3157dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3158dnl has been installed.
3159AC_MSG_CHECKING(for iconv_open())
3160save_LIBS="$LIBS"
3161LIBS="$LIBS -liconv"
3162AC_TRY_LINK([
3163#ifdef HAVE_ICONV_H
3164# include <iconv.h>
3165#endif
3166 ], [iconv_open("fr", "to");],
3167 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3168 LIBS="$save_LIBS"
3169 AC_TRY_LINK([
3170#ifdef HAVE_ICONV_H
3171# include <iconv.h>
3172#endif
3173 ], [iconv_open("fr", "to");],
3174 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3175 AC_MSG_RESULT(no)))
3176
3177
3178AC_MSG_CHECKING(for nl_langinfo(CODESET))
3179AC_TRY_LINK([
3180#ifdef HAVE_LANGINFO_H
3181# include <langinfo.h>
3182#endif
3183], [char *cs = nl_langinfo(CODESET);],
3184 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3185 AC_MSG_RESULT(no))
3186
Bram Moolenaar446cb832008-06-24 21:56:24 +00003187dnl Need various functions for floating point support. Only enable
3188dnl floating point when they are all present.
3189AC_CHECK_LIB(m, strtod)
3190AC_MSG_CHECKING([for strtod() and other floating point functions])
3191AC_TRY_LINK([
3192#ifdef HAVE_MATH_H
3193# include <math.h>
3194#endif
3195#if STDC_HEADERS
3196# include <stdlib.h>
3197# include <stddef.h>
3198#endif
3199], [char *s; double d;
3200 d = strtod("1.1", &s);
3201 d = fabs(1.11);
3202 d = ceil(1.11);
3203 d = floor(1.11);
3204 d = log10(1.11);
3205 d = pow(1.11, 2.22);
3206 d = sqrt(1.11);
3207 d = sin(1.11);
3208 d = cos(1.11);
3209 d = atan(1.11);
3210 ],
3211 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3212 AC_MSG_RESULT(no))
3213
Bram Moolenaar071d4272004-06-13 20:20:40 +00003214dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3215dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003216dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003217AC_MSG_CHECKING(--disable-acl argument)
3218AC_ARG_ENABLE(acl,
3219 [ --disable-acl Don't check for ACL support.],
3220 , [enable_acl="yes"])
3221if test "$enable_acl" = "yes"; then
3222AC_MSG_RESULT(no)
3223AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3224 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3225 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3226
3227AC_MSG_CHECKING(for POSIX ACL support)
3228AC_TRY_LINK([
3229#include <sys/types.h>
3230#ifdef HAVE_SYS_ACL_H
3231# include <sys/acl.h>
3232#endif
3233acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3234 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3235 acl_free(acl);],
3236 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3237 AC_MSG_RESULT(no))
3238
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003239AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003240AC_MSG_CHECKING(for Solaris ACL support)
3241AC_TRY_LINK([
3242#ifdef HAVE_SYS_ACL_H
3243# include <sys/acl.h>
3244#endif], [acl("foo", GETACLCNT, 0, NULL);
3245 ],
3246 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003247 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003248
3249AC_MSG_CHECKING(for AIX ACL support)
3250AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003251#if STDC_HEADERS
3252# include <stdlib.h>
3253# include <stddef.h>
3254#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003255#ifdef HAVE_SYS_ACL_H
3256# include <sys/acl.h>
3257#endif
3258#ifdef HAVE_SYS_ACCESS_H
3259# include <sys/access.h>
3260#endif
3261#define _ALL_SOURCE
3262
3263#include <sys/stat.h>
3264
3265int aclsize;
3266struct acl *aclent;], [aclsize = sizeof(struct acl);
3267 aclent = (void *)malloc(aclsize);
3268 statacl("foo", STX_NORMAL, aclent, aclsize);
3269 ],
3270 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3271 AC_MSG_RESULT(no))
3272else
3273 AC_MSG_RESULT(yes)
3274fi
3275
3276AC_MSG_CHECKING(--disable-gpm argument)
3277AC_ARG_ENABLE(gpm,
3278 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3279 [enable_gpm="yes"])
3280
3281if test "$enable_gpm" = "yes"; then
3282 AC_MSG_RESULT(no)
3283 dnl Checking if gpm support can be compiled
3284 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3285 [olibs="$LIBS" ; LIBS="-lgpm"]
3286 AC_TRY_LINK(
3287 [#include <gpm.h>
3288 #include <linux/keyboard.h>],
3289 [Gpm_GetLibVersion(NULL);],
3290 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3291 dnl FEAT_MOUSE_GPM if mouse support is included
3292 [vi_cv_have_gpm=yes],
3293 [vi_cv_have_gpm=no])
3294 [LIBS="$olibs"]
3295 )
3296 if test $vi_cv_have_gpm = yes; then
3297 LIBS="$LIBS -lgpm"
3298 AC_DEFINE(HAVE_GPM)
3299 fi
3300else
3301 AC_MSG_RESULT(yes)
3302fi
3303
Bram Moolenaar446cb832008-06-24 21:56:24 +00003304AC_MSG_CHECKING(--disable-sysmouse argument)
3305AC_ARG_ENABLE(sysmouse,
3306 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3307 [enable_sysmouse="yes"])
3308
3309if test "$enable_sysmouse" = "yes"; then
3310 AC_MSG_RESULT(no)
3311 dnl Checking if sysmouse support can be compiled
3312 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3313 dnl defines FEAT_SYSMOUSE if mouse support is included
3314 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3315 AC_TRY_LINK(
3316 [#include <sys/consio.h>
3317 #include <signal.h>
3318 #include <sys/fbio.h>],
3319 [struct mouse_info mouse;
3320 mouse.operation = MOUSE_MODE;
3321 mouse.operation = MOUSE_SHOW;
3322 mouse.u.mode.mode = 0;
3323 mouse.u.mode.signal = SIGUSR2;],
3324 [vi_cv_have_sysmouse=yes],
3325 [vi_cv_have_sysmouse=no])
3326 )
3327 if test $vi_cv_have_sysmouse = yes; then
3328 AC_DEFINE(HAVE_SYSMOUSE)
3329 fi
3330else
3331 AC_MSG_RESULT(yes)
3332fi
3333
Bram Moolenaarf05da212009-11-17 16:13:15 +00003334dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3335AC_MSG_CHECKING(for FD_CLOEXEC)
3336AC_TRY_COMPILE(
3337[#if HAVE_FCNTL_H
3338# include <fcntl.h>
3339#endif],
3340[ int flag = FD_CLOEXEC;],
3341 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3342 AC_MSG_RESULT(not usable))
3343
Bram Moolenaar071d4272004-06-13 20:20:40 +00003344dnl rename needs to be checked separately to work on Nextstep with cc
3345AC_MSG_CHECKING(for rename)
3346AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3347 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3348 AC_MSG_RESULT(no))
3349
3350dnl sysctl() may exist but not the arguments we use
3351AC_MSG_CHECKING(for sysctl)
3352AC_TRY_COMPILE(
3353[#include <sys/types.h>
3354#include <sys/sysctl.h>],
3355[ int mib[2], r;
3356 size_t len;
3357
3358 mib[0] = CTL_HW;
3359 mib[1] = HW_USERMEM;
3360 len = sizeof(r);
3361 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3362 ],
3363 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3364 AC_MSG_RESULT(not usable))
3365
3366dnl sysinfo() may exist but not be Linux compatible
3367AC_MSG_CHECKING(for sysinfo)
3368AC_TRY_COMPILE(
3369[#include <sys/types.h>
3370#include <sys/sysinfo.h>],
3371[ struct sysinfo sinfo;
3372 int t;
3373
3374 (void)sysinfo(&sinfo);
3375 t = sinfo.totalram;
3376 ],
3377 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3378 AC_MSG_RESULT(not usable))
3379
Bram Moolenaar914572a2007-05-01 11:37:47 +00003380dnl struct sysinfo may have the mem_unit field or not
3381AC_MSG_CHECKING(for sysinfo.mem_unit)
3382AC_TRY_COMPILE(
3383[#include <sys/types.h>
3384#include <sys/sysinfo.h>],
3385[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003386 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003387 ],
3388 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3389 AC_MSG_RESULT(no))
3390
Bram Moolenaar071d4272004-06-13 20:20:40 +00003391dnl sysconf() may exist but not support what we want to use
3392AC_MSG_CHECKING(for sysconf)
3393AC_TRY_COMPILE(
3394[#include <unistd.h>],
3395[ (void)sysconf(_SC_PAGESIZE);
3396 (void)sysconf(_SC_PHYS_PAGES);
3397 ],
3398 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3399 AC_MSG_RESULT(not usable))
3400
Bram Moolenaar914703b2010-05-31 21:59:46 +02003401AC_CHECK_SIZEOF([int])
3402AC_CHECK_SIZEOF([long])
3403AC_CHECK_SIZEOF([time_t])
3404AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003405
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003406dnl Make sure that uint32_t is really 32 bits unsigned.
3407AC_MSG_CHECKING([uint32_t is 32 bits])
3408AC_TRY_RUN([
3409#ifdef HAVE_STDINT_H
3410# include <stdint.h>
3411#endif
3412#ifdef HAVE_INTTYPES_H
3413# include <inttypes.h>
3414#endif
3415main() {
3416 uint32_t nr1 = (uint32_t)-1;
3417 uint32_t nr2 = (uint32_t)0xffffffffUL;
3418 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3419 exit(0);
3420}],
3421AC_MSG_RESULT(ok),
3422AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003423AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003424
Bram Moolenaar446cb832008-06-24 21:56:24 +00003425dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3426dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3427
Bram Moolenaar071d4272004-06-13 20:20:40 +00003428[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003429#include "confdefs.h"
3430#ifdef HAVE_STRING_H
3431# include <string.h>
3432#endif
3433#if STDC_HEADERS
3434# include <stdlib.h>
3435# include <stddef.h>
3436#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003437main() {
3438 char buf[10];
3439 strcpy(buf, "abcdefghi");
3440 mch_memmove(buf, buf + 2, 3);
3441 if (strncmp(buf, "ababcf", 6))
3442 exit(1);
3443 strcpy(buf, "abcdefghi");
3444 mch_memmove(buf + 2, buf, 3);
3445 if (strncmp(buf, "cdedef", 6))
3446 exit(1);
3447 exit(0); /* libc version works properly. */
3448}']
3449
Bram Moolenaar446cb832008-06-24 21:56:24 +00003450AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3451 [
3452 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3453 [
3454 vim_cv_memmove_handles_overlap=yes
3455 ],[
3456 vim_cv_memmove_handles_overlap=no
3457 ],[
3458 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3459 ])
3460 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003461
Bram Moolenaar446cb832008-06-24 21:56:24 +00003462if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3463 AC_DEFINE(USEMEMMOVE)
3464else
3465 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3466 [
3467 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3468 [
3469 vim_cv_bcopy_handles_overlap=yes
3470 ],[
3471 vim_cv_bcopy_handles_overlap=no
3472 ],[
3473 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3474 ])
3475 ])
3476
3477 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3478 AC_DEFINE(USEBCOPY)
3479 else
3480 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3481 [
3482 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3483 [
3484 vim_cv_memcpy_handles_overlap=yes
3485 ],[
3486 vim_cv_memcpy_handles_overlap=no
3487 ],[
3488 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3489 ])
3490 ])
3491
3492 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3493 AC_DEFINE(USEMEMCPY)
3494 fi
3495 fi
3496fi
3497
Bram Moolenaar071d4272004-06-13 20:20:40 +00003498
3499dnl Check for multibyte locale functions
3500dnl Find out if _Xsetlocale() is supported by libX11.
3501dnl Check if X_LOCALE should be defined.
3502
3503if test "$enable_multibyte" = "yes"; then
3504 cflags_save=$CFLAGS
3505 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003506 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003507 CFLAGS="$CFLAGS -I$x_includes"
3508 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3509 AC_MSG_CHECKING(whether X_LOCALE needed)
3510 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3511 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3512 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3513 AC_MSG_RESULT(no))
3514 fi
3515 CFLAGS=$cflags_save
3516 LDFLAGS=$ldflags_save
3517fi
3518
3519dnl Link with xpg4, it is said to make Korean locale working
3520AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3521
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003522dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003523dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003524dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003525dnl -t for typedefs (many ctags have this)
3526dnl -s for static functions (Elvis ctags only?)
3527dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3528dnl -i+m to test for older Exuberant ctags
3529AC_MSG_CHECKING(how to create tags)
3530test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003531if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003532 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003533elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3534 TAGPRG="exctags -I INIT+ --fields=+S"
3535elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3536 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003537else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003538 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003539 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3540 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3541 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3542 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3543 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3544 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3545 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3546fi
3547test -f tags.save && mv tags.save tags
3548AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3549
3550dnl Check how we can run man with a section number
3551AC_MSG_CHECKING(how to run man with a section nr)
3552MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003553(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 +00003554AC_MSG_RESULT($MANDEF)
3555if test "$MANDEF" = "man -s"; then
3556 AC_DEFINE(USEMAN_S)
3557fi
3558
3559dnl Check if gettext() is working and if it needs -lintl
3560AC_MSG_CHECKING(--disable-nls argument)
3561AC_ARG_ENABLE(nls,
3562 [ --disable-nls Don't support NLS (gettext()).], ,
3563 [enable_nls="yes"])
3564
3565if test "$enable_nls" = "yes"; then
3566 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003567
3568 INSTALL_LANGS=install-languages
3569 AC_SUBST(INSTALL_LANGS)
3570 INSTALL_TOOL_LANGS=install-tool-languages
3571 AC_SUBST(INSTALL_TOOL_LANGS)
3572
Bram Moolenaar071d4272004-06-13 20:20:40 +00003573 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3574 AC_MSG_CHECKING([for NLS])
3575 if test -f po/Makefile; then
3576 have_gettext="no"
3577 if test -n "$MSGFMT"; then
3578 AC_TRY_LINK(
3579 [#include <libintl.h>],
3580 [gettext("Test");],
3581 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3582 olibs=$LIBS
3583 LIBS="$LIBS -lintl"
3584 AC_TRY_LINK(
3585 [#include <libintl.h>],
3586 [gettext("Test");],
3587 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3588 AC_MSG_RESULT([gettext() doesn't work]);
3589 LIBS=$olibs))
3590 else
3591 AC_MSG_RESULT([msgfmt not found - disabled]);
3592 fi
3593 if test $have_gettext = "yes"; then
3594 AC_DEFINE(HAVE_GETTEXT)
3595 MAKEMO=yes
3596 AC_SUBST(MAKEMO)
3597 dnl this was added in GNU gettext 0.10.36
3598 AC_CHECK_FUNCS(bind_textdomain_codeset)
3599 dnl _nl_msg_cat_cntr is required for GNU gettext
3600 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3601 AC_TRY_LINK(
3602 [#include <libintl.h>
3603 extern int _nl_msg_cat_cntr;],
3604 [++_nl_msg_cat_cntr;],
3605 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3606 AC_MSG_RESULT([no]))
3607 fi
3608 else
3609 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3610 fi
3611else
3612 AC_MSG_RESULT(yes)
3613fi
3614
3615dnl Check for dynamic linking loader
3616AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3617if test x${DLL} = xdlfcn.h; then
3618 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3619 AC_MSG_CHECKING([for dlopen()])
3620 AC_TRY_LINK(,[
3621 extern void* dlopen();
3622 dlopen();
3623 ],
3624 AC_MSG_RESULT(yes);
3625 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3626 AC_MSG_RESULT(no);
3627 AC_MSG_CHECKING([for dlopen() in -ldl])
3628 olibs=$LIBS
3629 LIBS="$LIBS -ldl"
3630 AC_TRY_LINK(,[
3631 extern void* dlopen();
3632 dlopen();
3633 ],
3634 AC_MSG_RESULT(yes);
3635 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3636 AC_MSG_RESULT(no);
3637 LIBS=$olibs))
3638 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3639 dnl ick :-)
3640 AC_MSG_CHECKING([for dlsym()])
3641 AC_TRY_LINK(,[
3642 extern void* dlsym();
3643 dlsym();
3644 ],
3645 AC_MSG_RESULT(yes);
3646 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3647 AC_MSG_RESULT(no);
3648 AC_MSG_CHECKING([for dlsym() in -ldl])
3649 olibs=$LIBS
3650 LIBS="$LIBS -ldl"
3651 AC_TRY_LINK(,[
3652 extern void* dlsym();
3653 dlsym();
3654 ],
3655 AC_MSG_RESULT(yes);
3656 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3657 AC_MSG_RESULT(no);
3658 LIBS=$olibs))
3659elif test x${DLL} = xdl.h; then
3660 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3661 AC_MSG_CHECKING([for shl_load()])
3662 AC_TRY_LINK(,[
3663 extern void* shl_load();
3664 shl_load();
3665 ],
3666 AC_MSG_RESULT(yes);
3667 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3668 AC_MSG_RESULT(no);
3669 AC_MSG_CHECKING([for shl_load() in -ldld])
3670 olibs=$LIBS
3671 LIBS="$LIBS -ldld"
3672 AC_TRY_LINK(,[
3673 extern void* shl_load();
3674 shl_load();
3675 ],
3676 AC_MSG_RESULT(yes);
3677 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3678 AC_MSG_RESULT(no);
3679 LIBS=$olibs))
3680fi
3681AC_CHECK_HEADERS(setjmp.h)
3682
3683if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3684 dnl -ldl must come after DynaLoader.a
3685 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3686 LIBS=`echo $LIBS | sed s/-ldl//`
3687 PERL_LIBS="$PERL_LIBS -ldl"
3688 fi
3689fi
3690
Bram Moolenaar164fca32010-07-14 13:58:07 +02003691if test "x$MACOSX" = "xyes"; then
3692 AC_MSG_CHECKING(whether we need -framework Cocoa)
3693 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3694 dnl disabled during tiny build)
3695 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3696 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003697 AC_MSG_RESULT(yes)
3698 else
3699 AC_MSG_RESULT(no)
3700 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003701 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3702 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3703 dnl missing Objective-C symbols.
3704 if test "x$features" = "xtiny"; then
3705 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3706 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3707 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003708fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003709if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003710 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003711fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003712
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003713dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3714dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3715dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003716dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3717dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003718DEPEND_CFLAGS_FILTER=
3719if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003720 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003721 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003722 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003723 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003724 AC_MSG_RESULT(yes)
3725 else
3726 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003727 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003728 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3729 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003730 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003731 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003732 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3733 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003734 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 +00003735 AC_MSG_RESULT(yes)
3736 else
3737 AC_MSG_RESULT(no)
3738 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003739fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003740AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003741
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003742dnl link.sh tries to avoid overlinking in a hackish way.
3743dnl At least GNU ld supports --as-needed which provides the same functionality
3744dnl at linker level. Let's use it.
3745AC_MSG_CHECKING(linker --as-needed support)
3746LINK_AS_NEEDED=
3747# Check if linker supports --as-needed and --no-as-needed options
3748if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003749 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003750 LINK_AS_NEEDED=yes
3751fi
3752if test "$LINK_AS_NEEDED" = yes; then
3753 AC_MSG_RESULT(yes)
3754else
3755 AC_MSG_RESULT(no)
3756fi
3757AC_SUBST(LINK_AS_NEEDED)
3758
Bram Moolenaar77c19352012-06-13 19:19:41 +02003759# IBM z/OS reset CFLAGS for config.mk
3760if test "$zOSUnix" = "yes"; then
3761 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3762fi
3763
Bram Moolenaar071d4272004-06-13 20:20:40 +00003764dnl write output files
3765AC_OUTPUT(auto/config.mk:config.mk.in)
3766
3767dnl vim: set sw=2 tw=78 fo+=l: