blob: d67593001ca87d074bb337a1c27abe76abd959c1 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000705 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100706 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 MZSCHEME_SRC="if_mzsch.c"
708 MZSCHEME_OBJ="objects/if_mzsch.o"
709 MZSCHEME_PRO="if_mzsch.pro"
710 AC_DEFINE(FEAT_MZSCHEME)
711 fi
712 AC_SUBST(MZSCHEME_SRC)
713 AC_SUBST(MZSCHEME_OBJ)
714 AC_SUBST(MZSCHEME_PRO)
715 AC_SUBST(MZSCHEME_LIBS)
716 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_SUBST(MZSCHEME_EXTRA)
718 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000719fi
720
721
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722AC_MSG_CHECKING(--enable-perlinterp argument)
723AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200724 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 [enable_perlinterp="no"])
726AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200727if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000728 AC_SUBST(vi_cv_path_perl)
729 AC_PATH_PROG(vi_cv_path_perl, perl)
730 if test "X$vi_cv_path_perl" != "X"; then
731 AC_MSG_CHECKING(Perl version)
732 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
733 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200734 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000735 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
736 badthreads=no
737 else
738 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
739 eval `$vi_cv_path_perl -V:use5005threads`
740 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
741 badthreads=no
742 else
743 badthreads=yes
744 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
745 fi
746 else
747 badthreads=yes
748 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
749 fi
750 fi
751 if test $badthreads = no; then
752 AC_MSG_RESULT(OK)
753 eval `$vi_cv_path_perl -V:shrpenv`
754 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
755 shrpenv=""
756 fi
757 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
758 AC_SUBST(vi_cv_perllib)
759 dnl Remove "-fno-something", it breaks using cproto.
760 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
761 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
762 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
763 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
764 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
765 -e 's/-bE:perl.exp//' -e 's/-lc //'`
766 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
767 dnl a test in configure may fail because of that.
768 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
769 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
770
771 dnl check that compiling a simple program still works with the flags
772 dnl added for Perl.
773 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
774 cflags_save=$CFLAGS
775 libs_save=$LIBS
776 ldflags_save=$LDFLAGS
777 CFLAGS="$CFLAGS $perlcppflags"
778 LIBS="$LIBS $perllibs"
779 LDFLAGS="$perlldflags $LDFLAGS"
780 AC_TRY_LINK(,[ ],
781 AC_MSG_RESULT(yes); perl_ok=yes,
782 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
783 CFLAGS=$cflags_save
784 LIBS=$libs_save
785 LDFLAGS=$ldflags_save
786 if test $perl_ok = yes; then
787 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000788 dnl remove -pipe and -Wxxx, it confuses cproto
789 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000790 fi
791 if test "X$perlldflags" != "X"; then
792 LDFLAGS="$perlldflags $LDFLAGS"
793 fi
794 PERL_LIBS=$perllibs
795 PERL_SRC="auto/if_perl.c if_perlsfio.c"
796 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
797 PERL_PRO="if_perl.pro if_perlsfio.pro"
798 AC_DEFINE(FEAT_PERL)
799 fi
800 fi
801 else
802 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
803 fi
804 fi
805
806 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000807 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000808 dir=/System/Library/Perl
809 darwindir=$dir/darwin
810 if test -d $darwindir; then
811 PERL=/usr/bin/perl
812 else
813 dnl Mac OS X 10.3
814 dir=/System/Library/Perl/5.8.1
815 darwindir=$dir/darwin-thread-multi-2level
816 if test -d $darwindir; then
817 PERL=/usr/bin/perl
818 fi
819 fi
820 if test -n "$PERL"; then
821 PERL_DIR="$dir"
822 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
823 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
824 PERL_LIBS="-L$darwindir/CORE -lperl"
825 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200826 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
827 dnl be included if requested by passing --with-mac-arch to
828 dnl configure, so strip these flags first (if present)
829 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
830 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000831 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200832 if test "$enable_perlinterp" = "dynamic"; then
833 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
834 AC_DEFINE(DYNAMIC_PERL)
835 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
836 fi
837 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100838
839 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
840 AC_MSG_ERROR([could not configure perl])
841 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842fi
843AC_SUBST(shrpenv)
844AC_SUBST(PERL_SRC)
845AC_SUBST(PERL_OBJ)
846AC_SUBST(PERL_PRO)
847AC_SUBST(PERL_CFLAGS)
848AC_SUBST(PERL_LIBS)
849
850AC_MSG_CHECKING(--enable-pythoninterp argument)
851AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200852 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000853 [enable_pythoninterp="no"])
854AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100857 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 if test "X$vi_cv_path_python" != "X"; then
859
860 dnl -- get its version number
861 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
862 [[vi_cv_var_python_version=`
863 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
864 ]])
865
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200866 dnl -- it must be at least version 2.3
867 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200869 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000870 then
871 AC_MSG_RESULT(yep)
872
873 dnl -- find where python thinks it was installed
874 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
875 [ vi_cv_path_python_pfx=`
876 ${vi_cv_path_python} -c \
877 "import sys; print sys.prefix"` ])
878
879 dnl -- and where it thinks it runs
880 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
881 [ vi_cv_path_python_epfx=`
882 ${vi_cv_path_python} -c \
883 "import sys; print sys.exec_prefix"` ])
884
885 dnl -- python's internal library path
886
887 AC_CACHE_VAL(vi_cv_path_pythonpath,
888 [ vi_cv_path_pythonpath=`
889 unset PYTHONPATH;
890 ${vi_cv_path_python} -c \
891 "import sys, string; print string.join(sys.path,':')"` ])
892
893 dnl -- where the Python implementation library archives are
894
895 AC_ARG_WITH(python-config-dir,
896 [ --with-python-config-dir=PATH Python's config directory],
897 [ vi_cv_path_python_conf="${withval}" ] )
898
899 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
900 [
901 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200902 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
903 if test -d "$d" && test -f "$d/config.c"; then
904 vi_cv_path_python_conf="$d"
905 else
906 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
907 for subdir in lib64 lib share; do
908 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
909 if test -d "$d" && test -f "$d/config.c"; then
910 vi_cv_path_python_conf="$d"
911 fi
912 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000913 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200914 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000915 ])
916
917 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
918
919 if test "X$PYTHON_CONFDIR" = "X"; then
920 AC_MSG_RESULT([can't find it!])
921 else
922
923 dnl -- we need to examine Python's config/Makefile too
924 dnl see what the interpreter is built from
925 AC_CACHE_VAL(vi_cv_path_python_plibs,
926 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000927 pwd=`pwd`
928 tmp_mkf="$pwd/config-PyMake$$"
929 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000930__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200931 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000932 @echo "python_LIBS='$(LIBS)'"
933 @echo "python_SYSLIBS='$(SYSLIBS)'"
934 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200935 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200936 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937eof
938 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000939 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
940 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000941 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
942 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
943 vi_cv_path_python_plibs="-framework Python"
944 else
945 if test "${vi_cv_var_python_version}" = "1.4"; then
946 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
947 else
948 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
949 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200950 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 +0000951 dnl remove -ltermcap, it can conflict with an earlier -lncurses
952 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
953 fi
954 ])
955
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200956 if test "X$python_DLLLIBRARY" != "X"; then
957 python_INSTSONAME="$python_DLLLIBRARY"
958 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000959 PYTHON_LIBS="${vi_cv_path_python_plibs}"
960 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200961 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 +0000962 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200963 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 +0000964 fi
965 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200966 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 if test "${vi_cv_var_python_version}" = "1.4"; then
968 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
969 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100970 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 +0000971
972 dnl On FreeBSD linking with "-pthread" is required to use threads.
973 dnl _THREAD_SAFE must be used for compiling then.
974 dnl The "-pthread" is added to $LIBS, so that the following check for
975 dnl sigaltstack() will look in libc_r (it's there in libc!).
976 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
977 dnl will then define target-specific defines, e.g., -D_REENTRANT.
978 dnl Don't do this for Mac OSX, -pthread will generate a warning.
979 AC_MSG_CHECKING([if -pthread should be used])
980 threadsafe_flag=
981 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000982 dnl if test "x$MACOSX" != "xyes"; then
983 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000984 test "$GCC" = yes && threadsafe_flag="-pthread"
985 if test "`(uname) 2>/dev/null`" = FreeBSD; then
986 threadsafe_flag="-D_THREAD_SAFE"
987 thread_lib="-pthread"
988 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +0200989 if test "`(uname) 2>/dev/null`" = SunOS; then
990 threadsafe_flag="-pthreads"
991 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992 fi
993 libs_save_old=$LIBS
994 if test -n "$threadsafe_flag"; then
995 cflags_save=$CFLAGS
996 CFLAGS="$CFLAGS $threadsafe_flag"
997 LIBS="$LIBS $thread_lib"
998 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200999 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001000 AC_MSG_RESULT(no); LIBS=$libs_save_old
1001 )
1002 CFLAGS=$cflags_save
1003 else
1004 AC_MSG_RESULT(no)
1005 fi
1006
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001007 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001008 dnl added for Python.
1009 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1010 cflags_save=$CFLAGS
1011 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001012 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001013 LIBS="$LIBS $PYTHON_LIBS"
1014 AC_TRY_LINK(,[ ],
1015 AC_MSG_RESULT(yes); python_ok=yes,
1016 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1017 CFLAGS=$cflags_save
1018 LIBS=$libs_save
1019 if test $python_ok = yes; then
1020 AC_DEFINE(FEAT_PYTHON)
1021 else
1022 LIBS=$libs_save_old
1023 PYTHON_SRC=
1024 PYTHON_OBJ=
1025 PYTHON_LIBS=
1026 PYTHON_CFLAGS=
1027 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001028 fi
1029 else
1030 AC_MSG_RESULT(too old)
1031 fi
1032 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001033
1034 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1035 AC_MSG_ERROR([could not configure python])
1036 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001037fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001038
Bram Moolenaar071d4272004-06-13 20:20:40 +00001039AC_SUBST(PYTHON_CONFDIR)
1040AC_SUBST(PYTHON_LIBS)
1041AC_SUBST(PYTHON_GETPATH_CFLAGS)
1042AC_SUBST(PYTHON_CFLAGS)
1043AC_SUBST(PYTHON_SRC)
1044AC_SUBST(PYTHON_OBJ)
1045
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001046
1047AC_MSG_CHECKING(--enable-python3interp argument)
1048AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001049 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001050 [enable_python3interp="no"])
1051AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001052if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001054 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001055 if test "X$vi_cv_path_python3" != "X"; then
1056
1057 dnl -- get its version number
1058 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1059 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001060 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001061 ]])
1062
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001063 dnl -- it must be at least version 3
1064 AC_MSG_CHECKING(Python is 3.0 or better)
1065 if ${vi_cv_path_python3} -c \
1066 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1067 then
1068 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001069
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001070 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1071 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001072 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001073 vi_cv_var_python3_abiflags=
1074 if ${vi_cv_path_python3} -c \
1075 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1076 then
1077 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1078 "import sys; print(sys.abiflags)"`
1079 fi ])
1080
1081 dnl -- find where python3 thinks it was installed
1082 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1083 [ vi_cv_path_python3_pfx=`
1084 ${vi_cv_path_python3} -c \
1085 "import sys; print(sys.prefix)"` ])
1086
1087 dnl -- and where it thinks it runs
1088 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1089 [ vi_cv_path_python3_epfx=`
1090 ${vi_cv_path_python3} -c \
1091 "import sys; print(sys.exec_prefix)"` ])
1092
1093 dnl -- python3's internal library path
1094
1095 AC_CACHE_VAL(vi_cv_path_python3path,
1096 [ vi_cv_path_python3path=`
1097 unset PYTHONPATH;
1098 ${vi_cv_path_python3} -c \
1099 "import sys, string; print(':'.join(sys.path))"` ])
1100
1101 dnl -- where the Python implementation library archives are
1102
1103 AC_ARG_WITH(python3-config-dir,
1104 [ --with-python3-config-dir=PATH Python's config directory],
1105 [ vi_cv_path_python3_conf="${withval}" ] )
1106
1107 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1108 [
1109 vi_cv_path_python3_conf=
1110 config_dir="config"
1111 if test "${vi_cv_var_python3_abiflags}" != ""; then
1112 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1113 fi
1114 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1115 if test -d "$d" && test -f "$d/config.c"; then
1116 vi_cv_path_python3_conf="$d"
1117 else
1118 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1119 for subdir in lib64 lib share; do
1120 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1121 if test -d "$d" && test -f "$d/config.c"; then
1122 vi_cv_path_python3_conf="$d"
1123 fi
1124 done
1125 done
1126 fi
1127 ])
1128
1129 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1130
1131 if test "X$PYTHON3_CONFDIR" = "X"; then
1132 AC_MSG_RESULT([can't find it!])
1133 else
1134
1135 dnl -- we need to examine Python's config/Makefile too
1136 dnl see what the interpreter is built from
1137 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1138 [
1139 pwd=`pwd`
1140 tmp_mkf="$pwd/config-PyMake$$"
1141 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001142__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001143 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001144 @echo "python3_LIBS='$(LIBS)'"
1145 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001146 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001147 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001148eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001149 dnl -- delete the lines from make about Entering/Leaving directory
1150 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1151 rm -f -- "${tmp_mkf}"
1152 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1153 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1154 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1155 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1156 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1157 ])
1158
1159 if test "X$python3_DLLLIBRARY" != "X"; then
1160 python3_INSTSONAME="$python3_DLLLIBRARY"
1161 fi
1162 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1163 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001164 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 +02001165 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001166 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 +02001167 fi
1168 PYTHON3_SRC="if_python3.c"
1169 PYTHON3_OBJ="objects/if_python3.o"
1170
1171 dnl On FreeBSD linking with "-pthread" is required to use threads.
1172 dnl _THREAD_SAFE must be used for compiling then.
1173 dnl The "-pthread" is added to $LIBS, so that the following check for
1174 dnl sigaltstack() will look in libc_r (it's there in libc!).
1175 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1176 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1177 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1178 AC_MSG_CHECKING([if -pthread should be used])
1179 threadsafe_flag=
1180 thread_lib=
1181 dnl if test "x$MACOSX" != "xyes"; then
1182 if test "`(uname) 2>/dev/null`" != Darwin; then
1183 test "$GCC" = yes && threadsafe_flag="-pthread"
1184 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1185 threadsafe_flag="-D_THREAD_SAFE"
1186 thread_lib="-pthread"
1187 fi
1188 if test "`(uname) 2>/dev/null`" = SunOS; then
1189 threadsafe_flag="-pthreads"
1190 fi
1191 fi
1192 libs_save_old=$LIBS
1193 if test -n "$threadsafe_flag"; then
1194 cflags_save=$CFLAGS
1195 CFLAGS="$CFLAGS $threadsafe_flag"
1196 LIBS="$LIBS $thread_lib"
1197 AC_TRY_LINK(,[ ],
1198 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1199 AC_MSG_RESULT(no); LIBS=$libs_save_old
1200 )
1201 CFLAGS=$cflags_save
1202 else
1203 AC_MSG_RESULT(no)
1204 fi
1205
1206 dnl check that compiling a simple program still works with the flags
1207 dnl added for Python.
1208 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1209 cflags_save=$CFLAGS
1210 libs_save=$LIBS
1211 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1212 LIBS="$LIBS $PYTHON3_LIBS"
1213 AC_TRY_LINK(,[ ],
1214 AC_MSG_RESULT(yes); python3_ok=yes,
1215 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1216 CFLAGS=$cflags_save
1217 LIBS=$libs_save
1218 if test "$python3_ok" = yes; then
1219 AC_DEFINE(FEAT_PYTHON3)
1220 else
1221 LIBS=$libs_save_old
1222 PYTHON3_SRC=
1223 PYTHON3_OBJ=
1224 PYTHON3_LIBS=
1225 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001226 fi
1227 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001228 else
1229 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001230 fi
1231 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001232 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1233 AC_MSG_ERROR([could not configure python3])
1234 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235fi
1236
1237AC_SUBST(PYTHON3_CONFDIR)
1238AC_SUBST(PYTHON3_LIBS)
1239AC_SUBST(PYTHON3_CFLAGS)
1240AC_SUBST(PYTHON3_SRC)
1241AC_SUBST(PYTHON3_OBJ)
1242
1243dnl if python2.x and python3.x are enabled one can only link in code
1244dnl with dlopen(), dlsym(), dlclose()
1245if test "$python_ok" = yes && test "$python3_ok" = yes; then
1246 AC_DEFINE(DYNAMIC_PYTHON)
1247 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001248 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001249 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001250 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001251 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001252 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1253 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001254 AC_RUN_IFELSE([
1255 #include <dlfcn.h>
1256 /* If this program fails, then RTLD_GLOBAL is needed.
1257 * RTLD_GLOBAL will be used and then it is not possible to
1258 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001259 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001260 */
1261
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001262 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001263 {
1264 int needed = 0;
1265 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1266 if (pylib != 0)
1267 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001268 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001269 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1270 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1271 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001272 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001273 (*init)();
1274 needed = (*simple)("import termios") == -1;
1275 (*final)();
1276 dlclose(pylib);
1277 }
1278 return !needed;
1279 }
1280
1281 int main(int argc, char** argv)
1282 {
1283 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001284 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001285 not_needed = 1;
1286 return !not_needed;
1287 }],
1288 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001289
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001290 CFLAGS=$cflags_save
1291 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001292
1293 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1294 cflags_save=$CFLAGS
1295 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1296 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001297 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1298 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001299 AC_RUN_IFELSE([
1300 #include <dlfcn.h>
1301 #include <wchar.h>
1302 /* If this program fails, then RTLD_GLOBAL is needed.
1303 * RTLD_GLOBAL will be used and then it is not possible to
1304 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001305 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001306 */
1307
1308 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1309 {
1310 int needed = 0;
1311 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1312 if (pylib != 0)
1313 {
1314 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1315 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1316 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1317 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1318 (*pfx)(prefix);
1319 (*init)();
1320 needed = (*simple)("import termios") == -1;
1321 (*final)();
1322 dlclose(pylib);
1323 }
1324 return !needed;
1325 }
1326
1327 int main(int argc, char** argv)
1328 {
1329 int not_needed = 0;
1330 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1331 not_needed = 1;
1332 return !not_needed;
1333 }],
1334 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1335
1336 CFLAGS=$cflags_save
1337 LDFLAGS=$ldflags_save
1338
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001339 PYTHON_SRC="if_python.c"
1340 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001341 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001342 PYTHON_LIBS=
1343 PYTHON3_SRC="if_python3.c"
1344 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001345 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001346 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001347elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1348 AC_DEFINE(DYNAMIC_PYTHON)
1349 PYTHON_SRC="if_python.c"
1350 PYTHON_OBJ="objects/if_python.o"
1351 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1352 PYTHON_LIBS=
1353elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1354 AC_DEFINE(DYNAMIC_PYTHON3)
1355 PYTHON3_SRC="if_python3.c"
1356 PYTHON3_OBJ="objects/if_python3.o"
1357 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1358 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001359fi
1360
Bram Moolenaar071d4272004-06-13 20:20:40 +00001361AC_MSG_CHECKING(--enable-tclinterp argument)
1362AC_ARG_ENABLE(tclinterp,
1363 [ --enable-tclinterp Include Tcl interpreter.], ,
1364 [enable_tclinterp="no"])
1365AC_MSG_RESULT($enable_tclinterp)
1366
1367if test "$enable_tclinterp" = "yes"; then
1368
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001369 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001370 AC_MSG_CHECKING(--with-tclsh argument)
1371 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1372 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001373 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001374 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1375 AC_SUBST(vi_cv_path_tcl)
1376
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001377 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1378 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1379 tclsh_name="tclsh8.4"
1380 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1381 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001382 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001383 tclsh_name="tclsh8.2"
1384 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1385 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001386 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1387 tclsh_name="tclsh8.0"
1388 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1389 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001390 dnl still didn't find it, try without version number
1391 if test "X$vi_cv_path_tcl" = "X"; then
1392 tclsh_name="tclsh"
1393 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1394 fi
1395 if test "X$vi_cv_path_tcl" != "X"; then
1396 AC_MSG_CHECKING(Tcl version)
1397 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1398 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1399 AC_MSG_RESULT($tclver - OK);
1400 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 -`
1401
1402 AC_MSG_CHECKING(for location of Tcl include)
1403 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001404 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 +00001405 else
1406 dnl For Mac OS X 10.3, use the OS-provided framework location
1407 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1408 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001409 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001410 for try in $tclinc; do
1411 if test -f "$try/tcl.h"; then
1412 AC_MSG_RESULT($try/tcl.h)
1413 TCL_INC=$try
1414 break
1415 fi
1416 done
1417 if test -z "$TCL_INC"; then
1418 AC_MSG_RESULT(<not found>)
1419 SKIP_TCL=YES
1420 fi
1421 if test -z "$SKIP_TCL"; then
1422 AC_MSG_CHECKING(for location of tclConfig.sh script)
1423 if test "x$MACOSX" != "xyes"; then
1424 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001425 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001426 else
1427 dnl For Mac OS X 10.3, use the OS-provided framework location
1428 tclcnf="/System/Library/Frameworks/Tcl.framework"
1429 fi
1430 for try in $tclcnf; do
1431 if test -f $try/tclConfig.sh; then
1432 AC_MSG_RESULT($try/tclConfig.sh)
1433 . $try/tclConfig.sh
1434 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1435 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1436 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001437 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001438 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 +00001439 break
1440 fi
1441 done
1442 if test -z "$TCL_LIBS"; then
1443 AC_MSG_RESULT(<not found>)
1444 AC_MSG_CHECKING(for Tcl library by myself)
1445 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001446 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001447 for ext in .so .a ; do
1448 for ver in "" $tclver ; do
1449 for try in $tcllib ; do
1450 trylib=tcl$ver$ext
1451 if test -f $try/lib$trylib ; then
1452 AC_MSG_RESULT($try/lib$trylib)
1453 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1454 if test "`(uname) 2>/dev/null`" = SunOS &&
1455 uname -r | grep '^5' >/dev/null; then
1456 TCL_LIBS="$TCL_LIBS -R $try"
1457 fi
1458 break 3
1459 fi
1460 done
1461 done
1462 done
1463 if test -z "$TCL_LIBS"; then
1464 AC_MSG_RESULT(<not found>)
1465 SKIP_TCL=YES
1466 fi
1467 fi
1468 if test -z "$SKIP_TCL"; then
1469 AC_DEFINE(FEAT_TCL)
1470 TCL_SRC=if_tcl.c
1471 TCL_OBJ=objects/if_tcl.o
1472 TCL_PRO=if_tcl.pro
1473 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1474 fi
1475 fi
1476 else
1477 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1478 fi
1479 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001480 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1481 AC_MSG_ERROR([could not configure Tcl])
1482 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001483fi
1484AC_SUBST(TCL_SRC)
1485AC_SUBST(TCL_OBJ)
1486AC_SUBST(TCL_PRO)
1487AC_SUBST(TCL_CFLAGS)
1488AC_SUBST(TCL_LIBS)
1489
1490AC_MSG_CHECKING(--enable-rubyinterp argument)
1491AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001492 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001493 [enable_rubyinterp="no"])
1494AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001495if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001496 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001497 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001498 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1499 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1500 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001501 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001502 if test "X$vi_cv_path_ruby" != "X"; then
1503 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001504 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 +00001505 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001506 AC_MSG_CHECKING(Ruby rbconfig)
1507 ruby_rbconfig="RbConfig"
1508 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1509 ruby_rbconfig="Config"
1510 fi
1511 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001512 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001513 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 +00001514 if test "X$rubyhdrdir" != "X"; then
1515 AC_MSG_RESULT($rubyhdrdir)
1516 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001517 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001518 if test -d "$rubyhdrdir/$rubyarch"; then
1519 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1520 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001521 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001522 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001523 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001524 if test "X$rubylibs" != "X"; then
1525 RUBY_LIBS="$rubylibs"
1526 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001527 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1528 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001529 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001530 if test -f "$rubylibdir/$librubya"; then
1531 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001532 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1533 elif test "$librubyarg" = "libruby.a"; then
1534 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1535 librubyarg="-lruby"
1536 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001537 fi
1538
1539 if test "X$librubyarg" != "X"; then
1540 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1541 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001542 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001543 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001544 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1545 dnl be included if requested by passing --with-mac-arch to
1546 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001547 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001548 if test "X$rubyldflags" != "X"; then
1549 LDFLAGS="$rubyldflags $LDFLAGS"
1550 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001551 fi
1552 RUBY_SRC="if_ruby.c"
1553 RUBY_OBJ="objects/if_ruby.o"
1554 RUBY_PRO="if_ruby.pro"
1555 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001556 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001557 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001558 AC_DEFINE(DYNAMIC_RUBY)
1559 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1560 RUBY_LIBS=
1561 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001562 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001563 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001564 fi
1565 else
1566 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1567 fi
1568 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001569
1570 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1571 AC_MSG_ERROR([could not configure Ruby])
1572 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001573fi
1574AC_SUBST(RUBY_SRC)
1575AC_SUBST(RUBY_OBJ)
1576AC_SUBST(RUBY_PRO)
1577AC_SUBST(RUBY_CFLAGS)
1578AC_SUBST(RUBY_LIBS)
1579
1580AC_MSG_CHECKING(--enable-cscope argument)
1581AC_ARG_ENABLE(cscope,
1582 [ --enable-cscope Include cscope interface.], ,
1583 [enable_cscope="no"])
1584AC_MSG_RESULT($enable_cscope)
1585if test "$enable_cscope" = "yes"; then
1586 AC_DEFINE(FEAT_CSCOPE)
1587fi
1588
1589AC_MSG_CHECKING(--enable-workshop argument)
1590AC_ARG_ENABLE(workshop,
1591 [ --enable-workshop Include Sun Visual Workshop support.], ,
1592 [enable_workshop="no"])
1593AC_MSG_RESULT($enable_workshop)
1594if test "$enable_workshop" = "yes"; then
1595 AC_DEFINE(FEAT_SUN_WORKSHOP)
1596 WORKSHOP_SRC="workshop.c integration.c"
1597 AC_SUBST(WORKSHOP_SRC)
1598 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1599 AC_SUBST(WORKSHOP_OBJ)
1600 if test "${enable_gui-xxx}" = xxx; then
1601 enable_gui=motif
1602 fi
1603fi
1604
1605AC_MSG_CHECKING(--disable-netbeans argument)
1606AC_ARG_ENABLE(netbeans,
1607 [ --disable-netbeans Disable NetBeans integration support.],
1608 , [enable_netbeans="yes"])
1609if test "$enable_netbeans" = "yes"; then
1610 AC_MSG_RESULT(no)
1611 dnl On Solaris we need the socket and nsl library.
1612 AC_CHECK_LIB(socket, socket)
1613 AC_CHECK_LIB(nsl, gethostbyname)
1614 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1615 AC_TRY_LINK([
1616#include <stdio.h>
1617#include <stdlib.h>
1618#include <stdarg.h>
1619#include <fcntl.h>
1620#include <netdb.h>
1621#include <netinet/in.h>
1622#include <errno.h>
1623#include <sys/types.h>
1624#include <sys/socket.h>
1625 /* Check bitfields */
1626 struct nbbuf {
1627 unsigned int initDone:1;
1628 ushort signmaplen;
1629 };
1630 ], [
1631 /* Check creating a socket. */
1632 struct sockaddr_in server;
1633 (void)socket(AF_INET, SOCK_STREAM, 0);
1634 (void)htons(100);
1635 (void)gethostbyname("microsoft.com");
1636 if (errno == ECONNREFUSED)
1637 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1638 ],
1639 AC_MSG_RESULT(yes),
1640 AC_MSG_RESULT(no); enable_netbeans="no")
1641else
1642 AC_MSG_RESULT(yes)
1643fi
1644if test "$enable_netbeans" = "yes"; then
1645 AC_DEFINE(FEAT_NETBEANS_INTG)
1646 NETBEANS_SRC="netbeans.c"
1647 AC_SUBST(NETBEANS_SRC)
1648 NETBEANS_OBJ="objects/netbeans.o"
1649 AC_SUBST(NETBEANS_OBJ)
1650fi
1651
1652AC_MSG_CHECKING(--enable-sniff argument)
1653AC_ARG_ENABLE(sniff,
1654 [ --enable-sniff Include Sniff interface.], ,
1655 [enable_sniff="no"])
1656AC_MSG_RESULT($enable_sniff)
1657if test "$enable_sniff" = "yes"; then
1658 AC_DEFINE(FEAT_SNIFF)
1659 SNIFF_SRC="if_sniff.c"
1660 AC_SUBST(SNIFF_SRC)
1661 SNIFF_OBJ="objects/if_sniff.o"
1662 AC_SUBST(SNIFF_OBJ)
1663fi
1664
1665AC_MSG_CHECKING(--enable-multibyte argument)
1666AC_ARG_ENABLE(multibyte,
1667 [ --enable-multibyte Include multibyte editing support.], ,
1668 [enable_multibyte="no"])
1669AC_MSG_RESULT($enable_multibyte)
1670if test "$enable_multibyte" = "yes"; then
1671 AC_DEFINE(FEAT_MBYTE)
1672fi
1673
1674AC_MSG_CHECKING(--enable-hangulinput argument)
1675AC_ARG_ENABLE(hangulinput,
1676 [ --enable-hangulinput Include Hangul input support.], ,
1677 [enable_hangulinput="no"])
1678AC_MSG_RESULT($enable_hangulinput)
1679
1680AC_MSG_CHECKING(--enable-xim argument)
1681AC_ARG_ENABLE(xim,
1682 [ --enable-xim Include XIM input support.],
1683 AC_MSG_RESULT($enable_xim),
1684 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001685
1686AC_MSG_CHECKING(--enable-fontset argument)
1687AC_ARG_ENABLE(fontset,
1688 [ --enable-fontset Include X fontset output support.], ,
1689 [enable_fontset="no"])
1690AC_MSG_RESULT($enable_fontset)
1691dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1692
1693test -z "$with_x" && with_x=yes
1694test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1695if test "$with_x" = no; then
1696 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1697else
1698 dnl Do this check early, so that its failure can override user requests.
1699
1700 AC_PATH_PROG(xmkmfpath, xmkmf)
1701
1702 AC_PATH_XTRA
1703
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001704 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001705 dnl be compiled with a special option.
1706 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001707 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001708 CFLAGS="$CFLAGS -W c,dll"
1709 LDFLAGS="$LDFLAGS -W l,dll"
1710 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1711 fi
1712
1713 dnl On my HPUX system the X include dir is found, but the lib dir not.
1714 dnl This is a desparate try to fix this.
1715
1716 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1717 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1718 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1719 X_LIBS="$X_LIBS -L$x_libraries"
1720 if test "`(uname) 2>/dev/null`" = SunOS &&
1721 uname -r | grep '^5' >/dev/null; then
1722 X_LIBS="$X_LIBS -R $x_libraries"
1723 fi
1724 fi
1725
1726 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1727 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1728 AC_MSG_RESULT(Corrected X includes to $x_includes)
1729 X_CFLAGS="$X_CFLAGS -I$x_includes"
1730 fi
1731
1732 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1733 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1734 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1735 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1736 dnl Same for "-R/usr/lib ".
1737 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1738
1739
1740 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001741 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1742 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001743 AC_MSG_CHECKING(if X11 header files can be found)
1744 cflags_save=$CFLAGS
1745 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001746 AC_TRY_COMPILE([#include <X11/Xlib.h>
1747#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001748 AC_MSG_RESULT(yes),
1749 AC_MSG_RESULT(no); no_x=yes)
1750 CFLAGS=$cflags_save
1751
1752 if test "${no_x-no}" = yes; then
1753 with_x=no
1754 else
1755 AC_DEFINE(HAVE_X11)
1756 X_LIB="-lXt -lX11";
1757 AC_SUBST(X_LIB)
1758
1759 ac_save_LDFLAGS="$LDFLAGS"
1760 LDFLAGS="-L$x_libraries $LDFLAGS"
1761
1762 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1763 dnl For HP-UX 10.20 it must be before -lSM -lICE
1764 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1765 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1766
1767 dnl Some systems need -lnsl -lsocket when testing for ICE.
1768 dnl The check above doesn't do this, try here (again). Also needed to get
1769 dnl them after Xdmcp. link.sh will remove them when not needed.
1770 dnl Check for other function than above to avoid the cached value
1771 AC_CHECK_LIB(ICE, IceOpenConnection,
1772 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1773
1774 dnl Check for -lXpm (needed for some versions of Motif)
1775 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1776 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1777 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1778
1779 dnl Check that the X11 header files don't use implicit declarations
1780 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1781 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001782 dnl -Werror is GCC only, others like Solaris Studio might not like it
1783 if test "$GCC" = yes; then
1784 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1785 else
1786 CFLAGS="$CFLAGS $X_CFLAGS"
1787 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1789 AC_MSG_RESULT(no),
1790 CFLAGS="$CFLAGS -Wno-implicit-int"
1791 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1792 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1793 AC_MSG_RESULT(test failed)
1794 )
1795 )
1796 CFLAGS=$cflags_save
1797
1798 LDFLAGS="$ac_save_LDFLAGS"
1799
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001800 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1801 AC_CACHE_VAL(ac_cv_small_wchar_t,
1802 [AC_TRY_RUN([
1803#include <X11/Xlib.h>
1804#if STDC_HEADERS
1805# include <stdlib.h>
1806# include <stddef.h>
1807#endif
1808 main()
1809 {
1810 if (sizeof(wchar_t) <= 2)
1811 exit(1);
1812 exit(0);
1813 }],
1814 ac_cv_small_wchar_t="no",
1815 ac_cv_small_wchar_t="yes",
1816 AC_MSG_ERROR(failed to compile test program))])
1817 AC_MSG_RESULT($ac_cv_small_wchar_t)
1818 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1819 AC_DEFINE(SMALL_WCHAR_T)
1820 fi
1821
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 fi
1823fi
1824
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001825test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001826
1827AC_MSG_CHECKING(--enable-gui argument)
1828AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001829 [ --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 +00001830
1831dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1832dnl Do not use character classes for portability with old tools.
1833enable_gui_canon=`echo "_$enable_gui" | \
1834 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1835
1836dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837SKIP_GTK2=YES
1838SKIP_GNOME=YES
1839SKIP_MOTIF=YES
1840SKIP_ATHENA=YES
1841SKIP_NEXTAW=YES
1842SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001843SKIP_CARBON=YES
1844GUITYPE=NONE
1845
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001846if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001847 SKIP_PHOTON=
1848 case "$enable_gui_canon" in
1849 no) AC_MSG_RESULT(no GUI support)
1850 SKIP_PHOTON=YES ;;
1851 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1852 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1853 photon) AC_MSG_RESULT(Photon GUI support) ;;
1854 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1855 SKIP_PHOTON=YES ;;
1856 esac
1857
1858elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1859 SKIP_CARBON=
1860 case "$enable_gui_canon" in
1861 no) AC_MSG_RESULT(no GUI support)
1862 SKIP_CARBON=YES ;;
1863 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001864 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1865 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001866 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1867 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1868 SKIP_CARBON=YES ;;
1869 esac
1870
1871else
1872
Bram Moolenaar071d4272004-06-13 20:20:40 +00001873 case "$enable_gui_canon" in
1874 no|none) AC_MSG_RESULT(no GUI support) ;;
1875 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001876 SKIP_GTK2=
1877 SKIP_GNOME=
1878 SKIP_MOTIF=
1879 SKIP_ATHENA=
1880 SKIP_NEXTAW=
1881 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001882 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1885 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001886 SKIP_GTK2=;;
1887 motif) AC_MSG_RESULT(Motif GUI support)
1888 SKIP_MOTIF=;;
1889 athena) AC_MSG_RESULT(Athena GUI support)
1890 SKIP_ATHENA=;;
1891 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1892 SKIP_NEXTAW=;;
1893 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1894 esac
1895
1896fi
1897
Bram Moolenaar071d4272004-06-13 20:20:40 +00001898if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1899 -a "$enable_gui_canon" != "gnome2"; then
1900 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1901 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001902 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903 , enable_gtk2_check="yes")
1904 AC_MSG_RESULT($enable_gtk2_check)
1905 if test "x$enable_gtk2_check" = "xno"; then
1906 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001907 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001908 fi
1909fi
1910
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001911if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001912 AC_MSG_CHECKING(whether or not to look for GNOME)
1913 AC_ARG_ENABLE(gnome-check,
1914 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1915 , enable_gnome_check="no")
1916 AC_MSG_RESULT($enable_gnome_check)
1917 if test "x$enable_gnome_check" = "xno"; then
1918 SKIP_GNOME=YES
1919 fi
1920fi
1921
1922if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1923 AC_MSG_CHECKING(whether or not to look for Motif)
1924 AC_ARG_ENABLE(motif-check,
1925 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1926 , enable_motif_check="yes")
1927 AC_MSG_RESULT($enable_motif_check)
1928 if test "x$enable_motif_check" = "xno"; then
1929 SKIP_MOTIF=YES
1930 fi
1931fi
1932
1933if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1934 AC_MSG_CHECKING(whether or not to look for Athena)
1935 AC_ARG_ENABLE(athena-check,
1936 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1937 , enable_athena_check="yes")
1938 AC_MSG_RESULT($enable_athena_check)
1939 if test "x$enable_athena_check" = "xno"; then
1940 SKIP_ATHENA=YES
1941 fi
1942fi
1943
1944if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1945 AC_MSG_CHECKING(whether or not to look for neXtaw)
1946 AC_ARG_ENABLE(nextaw-check,
1947 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1948 , enable_nextaw_check="yes")
1949 AC_MSG_RESULT($enable_nextaw_check);
1950 if test "x$enable_nextaw_check" = "xno"; then
1951 SKIP_NEXTAW=YES
1952 fi
1953fi
1954
1955if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1956 AC_MSG_CHECKING(whether or not to look for Carbon)
1957 AC_ARG_ENABLE(carbon-check,
1958 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1959 , enable_carbon_check="yes")
1960 AC_MSG_RESULT($enable_carbon_check);
1961 if test "x$enable_carbon_check" = "xno"; then
1962 SKIP_CARBON=YES
1963 fi
1964fi
1965
Bram Moolenaar843ee412004-06-30 16:16:41 +00001966
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1968 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001969 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001970 AC_MSG_RESULT(yes);
1971 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001972 if test "$VIMNAME" = "vim"; then
1973 VIMNAME=Vim
1974 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001975
Bram Moolenaar164fca32010-07-14 13:58:07 +02001976 if test "x$MACARCH" = "xboth"; then
1977 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1978 else
1979 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1980 fi
1981
Bram Moolenaar14716812006-05-04 21:54:08 +00001982 dnl Default install directory is not /usr/local
1983 if test x$prefix = xNONE; then
1984 prefix=/Applications
1985 fi
1986
1987 dnl Sorry for the hard coded default
1988 datadir='${prefix}/Vim.app/Contents/Resources'
1989
Bram Moolenaar071d4272004-06-13 20:20:40 +00001990 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001991 SKIP_GTK2=YES;
1992 SKIP_GNOME=YES;
1993 SKIP_MOTIF=YES;
1994 SKIP_ATHENA=YES;
1995 SKIP_NEXTAW=YES;
1996 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001997 SKIP_CARBON=YES
1998fi
1999
Bram Moolenaar071d4272004-06-13 20:20:40 +00002000dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002001dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002dnl
2003dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002004dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002005dnl
2006AC_DEFUN(AM_PATH_GTK,
2007[
2008 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2009 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002010 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002011 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2012 no_gtk=""
2013 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2014 && $PKG_CONFIG --exists gtk+-2.0; then
2015 {
2016 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2017 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2018 dnl something like that.
2019 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002020 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002021 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2022 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2023 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2024 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2025 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2026 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2027 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2028 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002029 else
2030 no_gtk=yes
2031 fi
2032
2033 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2034 {
2035 ac_save_CFLAGS="$CFLAGS"
2036 ac_save_LIBS="$LIBS"
2037 CFLAGS="$CFLAGS $GTK_CFLAGS"
2038 LIBS="$LIBS $GTK_LIBS"
2039
2040 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002041 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002042 dnl
2043 rm -f conf.gtktest
2044 AC_TRY_RUN([
2045#include <gtk/gtk.h>
2046#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002047#if STDC_HEADERS
2048# include <stdlib.h>
2049# include <stddef.h>
2050#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002051
2052int
2053main ()
2054{
2055int major, minor, micro;
2056char *tmp_version;
2057
2058system ("touch conf.gtktest");
2059
2060/* HP/UX 9 (%@#!) writes to sscanf strings */
2061tmp_version = g_strdup("$min_gtk_version");
2062if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2063 printf("%s, bad version string\n", "$min_gtk_version");
2064 exit(1);
2065 }
2066
2067if ((gtk_major_version > major) ||
2068 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2069 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2070 (gtk_micro_version >= micro)))
2071{
2072 return 0;
2073}
2074return 1;
2075}
2076],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2077 CFLAGS="$ac_save_CFLAGS"
2078 LIBS="$ac_save_LIBS"
2079 }
2080 fi
2081 if test "x$no_gtk" = x ; then
2082 if test "x$enable_gtktest" = "xyes"; then
2083 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2084 else
2085 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2086 fi
2087 ifelse([$2], , :, [$2])
2088 else
2089 {
2090 AC_MSG_RESULT(no)
2091 GTK_CFLAGS=""
2092 GTK_LIBS=""
2093 ifelse([$3], , :, [$3])
2094 }
2095 fi
2096 }
2097 else
2098 GTK_CFLAGS=""
2099 GTK_LIBS=""
2100 ifelse([$3], , :, [$3])
2101 fi
2102 AC_SUBST(GTK_CFLAGS)
2103 AC_SUBST(GTK_LIBS)
2104 rm -f conf.gtktest
2105])
2106
2107dnl ---------------------------------------------------------------------------
2108dnl gnome
2109dnl ---------------------------------------------------------------------------
2110AC_DEFUN([GNOME_INIT_HOOK],
2111[
2112 AC_SUBST(GNOME_LIBS)
2113 AC_SUBST(GNOME_LIBDIR)
2114 AC_SUBST(GNOME_INCLUDEDIR)
2115
2116 AC_ARG_WITH(gnome-includes,
2117 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2118 [CFLAGS="$CFLAGS -I$withval"]
2119 )
2120
2121 AC_ARG_WITH(gnome-libs,
2122 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2123 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2124 )
2125
2126 AC_ARG_WITH(gnome,
2127 [ --with-gnome Specify prefix for GNOME files],
2128 if test x$withval = xyes; then
2129 want_gnome=yes
2130 ifelse([$1], [], :, [$1])
2131 else
2132 if test "x$withval" = xno; then
2133 want_gnome=no
2134 else
2135 want_gnome=yes
2136 LDFLAGS="$LDFLAGS -L$withval/lib"
2137 CFLAGS="$CFLAGS -I$withval/include"
2138 gnome_prefix=$withval/lib
2139 fi
2140 fi,
2141 want_gnome=yes)
2142
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002143 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144 {
2145 AC_MSG_CHECKING(for libgnomeui-2.0)
2146 if $PKG_CONFIG --exists libgnomeui-2.0; then
2147 AC_MSG_RESULT(yes)
2148 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2149 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2150 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002151
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002152 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2153 dnl This might not be the right way but it works for me...
2154 AC_MSG_CHECKING(for FreeBSD)
2155 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2156 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002157 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002158 GNOME_LIBS="$GNOME_LIBS -pthread"
2159 else
2160 AC_MSG_RESULT(no)
2161 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002162 $1
2163 else
2164 AC_MSG_RESULT(not found)
2165 if test "x$2" = xfail; then
2166 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2167 fi
2168 fi
2169 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002170 fi
2171])
2172
2173AC_DEFUN([GNOME_INIT],[
2174 GNOME_INIT_HOOK([],fail)
2175])
2176
2177
2178dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002179dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002180dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002181if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002182
2183 AC_MSG_CHECKING(--disable-gtktest argument)
2184 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2185 , enable_gtktest=yes)
2186 if test "x$enable_gtktest" = "xyes" ; then
2187 AC_MSG_RESULT(gtk test enabled)
2188 else
2189 AC_MSG_RESULT(gtk test disabled)
2190 fi
2191
Bram Moolenaar071d4272004-06-13 20:20:40 +00002192 if test "X$PKG_CONFIG" = "X"; then
2193 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2194 fi
2195
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002196 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002197 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2198 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002199 AM_PATH_GTK(2.2.0,
2200 [GUI_LIB_LOC="$GTK_LIBDIR"
2201 GTK_LIBNAME="$GTK_LIBS"
2202 GUI_INC_LOC="$GTK_CFLAGS"], )
2203 if test "x$GTK_CFLAGS" != "x"; then
2204 SKIP_ATHENA=YES
2205 SKIP_NEXTAW=YES
2206 SKIP_MOTIF=YES
2207 GUITYPE=GTK
2208 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002209 fi
2210 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002211 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002212 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2213 || test "0$gtk_minor_version" -ge 2; then
2214 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2215 fi
2216 dnl
2217 dnl if GTK exists, then check for GNOME.
2218 dnl
2219 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002220 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002221 GNOME_INIT_HOOK([have_gnome=yes])
2222 if test "x$have_gnome" = xyes ; then
2223 AC_DEFINE(FEAT_GUI_GNOME)
2224 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2225 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226 fi
2227 }
2228 fi
2229 fi
2230fi
2231
2232dnl Check for Motif include files location.
2233dnl The LAST one found is used, this makes the highest version to be used,
2234dnl e.g. when Motif1.2 and Motif2.0 are both present.
2235
2236if test -z "$SKIP_MOTIF"; then
2237 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"
2238 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2239 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2240
2241 AC_MSG_CHECKING(for location of Motif GUI includes)
2242 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2243 GUI_INC_LOC=
2244 for try in $gui_includes; do
2245 if test -f "$try/Xm/Xm.h"; then
2246 GUI_INC_LOC=$try
2247 fi
2248 done
2249 if test -n "$GUI_INC_LOC"; then
2250 if test "$GUI_INC_LOC" = /usr/include; then
2251 GUI_INC_LOC=
2252 AC_MSG_RESULT(in default path)
2253 else
2254 AC_MSG_RESULT($GUI_INC_LOC)
2255 fi
2256 else
2257 AC_MSG_RESULT(<not found>)
2258 SKIP_MOTIF=YES
2259 fi
2260fi
2261
2262dnl Check for Motif library files location. In the same order as the include
2263dnl files, to avoid a mixup if several versions are present
2264
2265if test -z "$SKIP_MOTIF"; then
2266 AC_MSG_CHECKING(--with-motif-lib argument)
2267 AC_ARG_WITH(motif-lib,
2268 [ --with-motif-lib=STRING Library for Motif ],
2269 [ MOTIF_LIBNAME="${withval}" ] )
2270
2271 if test -n "$MOTIF_LIBNAME"; then
2272 AC_MSG_RESULT($MOTIF_LIBNAME)
2273 GUI_LIB_LOC=
2274 else
2275 AC_MSG_RESULT(no)
2276
2277 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2278 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2279
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002280 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2281 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002283 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 +00002284 GUI_LIB_LOC=
2285 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002286 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002287 if test -f "$libtry"; then
2288 GUI_LIB_LOC=$try
2289 fi
2290 done
2291 done
2292 if test -n "$GUI_LIB_LOC"; then
2293 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002294 if test "$GUI_LIB_LOC" = /usr/lib \
2295 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2296 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002297 GUI_LIB_LOC=
2298 AC_MSG_RESULT(in default path)
2299 else
2300 if test -n "$GUI_LIB_LOC"; then
2301 AC_MSG_RESULT($GUI_LIB_LOC)
2302 if test "`(uname) 2>/dev/null`" = SunOS &&
2303 uname -r | grep '^5' >/dev/null; then
2304 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2305 fi
2306 fi
2307 fi
2308 MOTIF_LIBNAME=-lXm
2309 else
2310 AC_MSG_RESULT(<not found>)
2311 SKIP_MOTIF=YES
2312 fi
2313 fi
2314fi
2315
2316if test -z "$SKIP_MOTIF"; then
2317 SKIP_ATHENA=YES
2318 SKIP_NEXTAW=YES
2319 GUITYPE=MOTIF
2320 AC_SUBST(MOTIF_LIBNAME)
2321fi
2322
2323dnl Check if the Athena files can be found
2324
2325GUI_X_LIBS=
2326
2327if test -z "$SKIP_ATHENA"; then
2328 AC_MSG_CHECKING(if Athena header files can be found)
2329 cflags_save=$CFLAGS
2330 CFLAGS="$CFLAGS $X_CFLAGS"
2331 AC_TRY_COMPILE([
2332#include <X11/Intrinsic.h>
2333#include <X11/Xaw/Paned.h>], ,
2334 AC_MSG_RESULT(yes),
2335 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2336 CFLAGS=$cflags_save
2337fi
2338
2339if test -z "$SKIP_ATHENA"; then
2340 GUITYPE=ATHENA
2341fi
2342
2343if test -z "$SKIP_NEXTAW"; then
2344 AC_MSG_CHECKING(if neXtaw header files can be found)
2345 cflags_save=$CFLAGS
2346 CFLAGS="$CFLAGS $X_CFLAGS"
2347 AC_TRY_COMPILE([
2348#include <X11/Intrinsic.h>
2349#include <X11/neXtaw/Paned.h>], ,
2350 AC_MSG_RESULT(yes),
2351 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2352 CFLAGS=$cflags_save
2353fi
2354
2355if test -z "$SKIP_NEXTAW"; then
2356 GUITYPE=NEXTAW
2357fi
2358
2359if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2360 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2361 dnl Avoid adding it when it twice
2362 if test -n "$GUI_INC_LOC"; then
2363 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2364 fi
2365 if test -n "$GUI_LIB_LOC"; then
2366 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2367 fi
2368
2369 dnl Check for -lXext and then for -lXmu
2370 ldflags_save=$LDFLAGS
2371 LDFLAGS="$X_LIBS $LDFLAGS"
2372 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2373 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2374 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2375 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2376 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2377 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2378 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2379 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2380 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2381 if test -z "$SKIP_MOTIF"; then
2382 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2383 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2384 fi
2385 LDFLAGS=$ldflags_save
2386
2387 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2388 AC_MSG_CHECKING(for extra X11 defines)
2389 NARROW_PROTO=
2390 rm -fr conftestdir
2391 if mkdir conftestdir; then
2392 cd conftestdir
2393 cat > Imakefile <<'EOF'
2394acfindx:
2395 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2396EOF
2397 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2398 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2399 fi
2400 cd ..
2401 rm -fr conftestdir
2402 fi
2403 if test -z "$NARROW_PROTO"; then
2404 AC_MSG_RESULT(no)
2405 else
2406 AC_MSG_RESULT($NARROW_PROTO)
2407 fi
2408 AC_SUBST(NARROW_PROTO)
2409fi
2410
2411dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2412dnl use the X11 include path
2413if test "$enable_xsmp" = "yes"; then
2414 cppflags_save=$CPPFLAGS
2415 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2416 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2417 CPPFLAGS=$cppflags_save
2418fi
2419
2420
Bram Moolenaare667c952010-07-05 22:57:59 +02002421if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002422 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2423 cppflags_save=$CPPFLAGS
2424 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2425 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2426
2427 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2428 if test ! "$enable_xim" = "no"; then
2429 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2430 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2431 AC_MSG_RESULT(yes),
2432 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2433 fi
2434 CPPFLAGS=$cppflags_save
2435
2436 dnl automatically enable XIM when hangul input isn't enabled
2437 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2438 -a "x$GUITYPE" != "xNONE" ; then
2439 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2440 enable_xim="yes"
2441 fi
2442fi
2443
2444if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2445 cppflags_save=$CPPFLAGS
2446 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002447dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2448 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2449 AC_TRY_COMPILE([
2450#include <X11/Intrinsic.h>
2451#include <X11/Xmu/Editres.h>],
2452 [int i; i = 0;],
2453 AC_MSG_RESULT(yes)
2454 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2455 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002456 CPPFLAGS=$cppflags_save
2457fi
2458
2459dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2460if test -z "$SKIP_MOTIF"; then
2461 cppflags_save=$CPPFLAGS
2462 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002463 if test "$zOSUnix" = "yes"; then
2464 xmheader="Xm/Xm.h"
2465 else
2466 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002467 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002468 fi
2469 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002470
Bram Moolenaar77c19352012-06-13 19:19:41 +02002471 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002472 dnl Solaris uses XpmAttributes_21, very annoying.
2473 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2474 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2475 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2476 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2477 )
2478 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002479 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002480 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002481 CPPFLAGS=$cppflags_save
2482fi
2483
2484if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2485 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2486 enable_xim="no"
2487fi
2488if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2489 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2490 enable_fontset="no"
2491fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002492if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002493 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2494 enable_fontset="no"
2495fi
2496
Bram Moolenaar071d4272004-06-13 20:20:40 +00002497if test -z "$SKIP_PHOTON"; then
2498 GUITYPE=PHOTONGUI
2499fi
2500
2501AC_SUBST(GUI_INC_LOC)
2502AC_SUBST(GUI_LIB_LOC)
2503AC_SUBST(GUITYPE)
2504AC_SUBST(GUI_X_LIBS)
2505
2506if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2507 AC_MSG_ERROR([cannot use workshop without Motif])
2508fi
2509
2510dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2511if test "$enable_xim" = "yes"; then
2512 AC_DEFINE(FEAT_XIM)
2513fi
2514if test "$enable_fontset" = "yes"; then
2515 AC_DEFINE(FEAT_XFONTSET)
2516fi
2517
2518
2519dnl ---------------------------------------------------------------------------
2520dnl end of GUI-checking
2521dnl ---------------------------------------------------------------------------
2522
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002523dnl Check for Cygwin, which needs an extra source file if not using X11
2524AC_MSG_CHECKING(for CYGWIN environment)
2525case `uname` in
2526 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2527 AC_MSG_CHECKING(for CYGWIN clipboard support)
2528 if test "x$with_x" = "xno" ; then
2529 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2530 AC_MSG_RESULT(yes)
2531 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2532 else
2533 AC_MSG_RESULT(no - using X11)
2534 fi ;;
2535
2536 *) CYGWIN=no; AC_MSG_RESULT(no);;
2537esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002538
2539dnl Only really enable hangul input when GUI and XFONTSET are available
2540if test "$enable_hangulinput" = "yes"; then
2541 if test "x$GUITYPE" = "xNONE"; then
2542 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2543 enable_hangulinput=no
2544 else
2545 AC_DEFINE(FEAT_HANGULIN)
2546 HANGULIN_SRC=hangulin.c
2547 AC_SUBST(HANGULIN_SRC)
2548 HANGULIN_OBJ=objects/hangulin.o
2549 AC_SUBST(HANGULIN_OBJ)
2550 fi
2551fi
2552
2553dnl Checks for libraries and include files.
2554
Bram Moolenaar446cb832008-06-24 21:56:24 +00002555AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2556 [
2557 AC_RUN_IFELSE([[
2558#include "confdefs.h"
2559#include <ctype.h>
2560#if STDC_HEADERS
2561# include <stdlib.h>
2562# include <stddef.h>
2563#endif
2564main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2565 ]],[
2566 vim_cv_toupper_broken=yes
2567 ],[
2568 vim_cv_toupper_broken=no
2569 ],[
2570 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2571 ])])
2572
2573if test "x$vim_cv_toupper_broken" = "xyes" ; then
2574 AC_DEFINE(BROKEN_TOUPPER)
2575fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002576
2577AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002578AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002579 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2580 AC_MSG_RESULT(no))
2581
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002582AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2583AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2584 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2585 AC_MSG_RESULT(no))
2586
Bram Moolenaar071d4272004-06-13 20:20:40 +00002587dnl Checks for header files.
2588AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2589dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2590if test "$HAS_ELF" = 1; then
2591 AC_CHECK_LIB(elf, main)
2592fi
2593
2594AC_HEADER_DIRENT
2595
Bram Moolenaar071d4272004-06-13 20:20:40 +00002596dnl If sys/wait.h is not found it might still exist but not be POSIX
2597dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2598if test $ac_cv_header_sys_wait_h = no; then
2599 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2600 AC_TRY_COMPILE([#include <sys/wait.h>],
2601 [union wait xx, yy; xx = yy],
2602 AC_MSG_RESULT(yes)
2603 AC_DEFINE(HAVE_SYS_WAIT_H)
2604 AC_DEFINE(HAVE_UNION_WAIT),
2605 AC_MSG_RESULT(no))
2606fi
2607
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002608AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2609 sys/select.h sys/utsname.h termcap.h fcntl.h \
2610 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2611 termio.h iconv.h inttypes.h langinfo.h math.h \
2612 unistd.h stropts.h errno.h sys/resource.h \
2613 sys/systeminfo.h locale.h sys/stream.h termios.h \
2614 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2615 utime.h sys/param.h libintl.h libgen.h \
2616 util/debug.h util/msg18n.h frame.h sys/acl.h \
2617 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002618
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002619dnl sys/ptem.h depends on sys/stream.h on Solaris
2620AC_CHECK_HEADERS(sys/ptem.h, [], [],
2621[#if defined HAVE_SYS_STREAM_H
2622# include <sys/stream.h>
2623#endif])
2624
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002625dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2626AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2627[#if defined HAVE_SYS_PARAM_H
2628# include <sys/param.h>
2629#endif])
2630
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002631
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002632dnl pthread_np.h may exist but can only be used after including pthread.h
2633AC_MSG_CHECKING([for pthread_np.h])
2634AC_TRY_COMPILE([
2635#include <pthread.h>
2636#include <pthread_np.h>],
2637 [int i; i = 0;],
2638 AC_MSG_RESULT(yes)
2639 AC_DEFINE(HAVE_PTHREAD_NP_H),
2640 AC_MSG_RESULT(no))
2641
Bram Moolenaare344bea2005-09-01 20:46:49 +00002642AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002643if test "x$MACOSX" = "xyes"; then
2644 dnl The strings.h file on OS/X contains a warning and nothing useful.
2645 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2646else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002647
2648dnl Check if strings.h and string.h can both be included when defined.
2649AC_MSG_CHECKING([if strings.h can be included after string.h])
2650cppflags_save=$CPPFLAGS
2651CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2652AC_TRY_COMPILE([
2653#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2654# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2655 /* but don't do it on AIX 5.1 (Uribarri) */
2656#endif
2657#ifdef HAVE_XM_XM_H
2658# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2659#endif
2660#ifdef HAVE_STRING_H
2661# include <string.h>
2662#endif
2663#if defined(HAVE_STRINGS_H)
2664# include <strings.h>
2665#endif
2666 ], [int i; i = 0;],
2667 AC_MSG_RESULT(yes),
2668 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2669 AC_MSG_RESULT(no))
2670CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002671fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002672
2673dnl Checks for typedefs, structures, and compiler characteristics.
2674AC_PROG_GCC_TRADITIONAL
2675AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002676AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677AC_TYPE_MODE_T
2678AC_TYPE_OFF_T
2679AC_TYPE_PID_T
2680AC_TYPE_SIZE_T
2681AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002682AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002683
Bram Moolenaar071d4272004-06-13 20:20:40 +00002684AC_HEADER_TIME
2685AC_CHECK_TYPE(ino_t, long)
2686AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002687AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002688
2689AC_MSG_CHECKING(for rlim_t)
2690if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2691 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2692else
2693 AC_EGREP_CPP(dnl
2694changequote(<<,>>)dnl
2695<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2696changequote([,]),
2697 [
2698#include <sys/types.h>
2699#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002700# include <stdlib.h>
2701# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002702#endif
2703#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002704# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002705#endif
2706 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2707 AC_MSG_RESULT($ac_cv_type_rlim_t)
2708fi
2709if test $ac_cv_type_rlim_t = no; then
2710 cat >> confdefs.h <<\EOF
2711#define rlim_t unsigned long
2712EOF
2713fi
2714
2715AC_MSG_CHECKING(for stack_t)
2716if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2717 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2718else
2719 AC_EGREP_CPP(stack_t,
2720 [
2721#include <sys/types.h>
2722#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002723# include <stdlib.h>
2724# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725#endif
2726#include <signal.h>
2727 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2728 AC_MSG_RESULT($ac_cv_type_stack_t)
2729fi
2730if test $ac_cv_type_stack_t = no; then
2731 cat >> confdefs.h <<\EOF
2732#define stack_t struct sigaltstack
2733EOF
2734fi
2735
2736dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2737AC_MSG_CHECKING(whether stack_t has an ss_base field)
2738AC_TRY_COMPILE([
2739#include <sys/types.h>
2740#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002741# include <stdlib.h>
2742# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002743#endif
2744#include <signal.h>
2745#include "confdefs.h"
2746 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2747 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2748 AC_MSG_RESULT(no))
2749
2750olibs="$LIBS"
2751AC_MSG_CHECKING(--with-tlib argument)
2752AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2753if test -n "$with_tlib"; then
2754 AC_MSG_RESULT($with_tlib)
2755 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002756 AC_MSG_CHECKING(for linking with $with_tlib library)
2757 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2758 dnl Need to check for tgetent() below.
2759 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002760else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002761 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2763 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002764 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002765 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002766 dnl Older versions of ncurses have bugs, get a new one!
2767 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002768 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002769 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002770 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2771 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002772 esac
2773 for libname in $tlibs; do
2774 AC_CHECK_LIB(${libname}, tgetent,,)
2775 if test "x$olibs" != "x$LIBS"; then
2776 dnl It's possible that a library is found but it doesn't work
2777 dnl e.g., shared library that cannot be found
2778 dnl compile and run a test program to be sure
2779 AC_TRY_RUN([
2780#ifdef HAVE_TERMCAP_H
2781# include <termcap.h>
2782#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002783#if STDC_HEADERS
2784# include <stdlib.h>
2785# include <stddef.h>
2786#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002787main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2788 res="OK", res="FAIL", res="FAIL")
2789 if test "$res" = "OK"; then
2790 break
2791 fi
2792 AC_MSG_RESULT($libname library is not usable)
2793 LIBS="$olibs"
2794 fi
2795 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002796 if test "x$olibs" = "x$LIBS"; then
2797 AC_MSG_RESULT(no terminal library found)
2798 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002799fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002800
2801if test "x$olibs" = "x$LIBS"; then
2802 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002803 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002804 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2805 AC_MSG_RESULT(yes),
2806 AC_MSG_ERROR([NOT FOUND!
2807 You need to install a terminal library; for example ncurses.
2808 Or specify the name of the library with --with-tlib.]))
2809fi
2810
Bram Moolenaar446cb832008-06-24 21:56:24 +00002811AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2812 [
2813 AC_RUN_IFELSE([[
2814#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002815#ifdef HAVE_TERMCAP_H
2816# include <termcap.h>
2817#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002818#ifdef HAVE_STRING_H
2819# include <string.h>
2820#endif
2821#if STDC_HEADERS
2822# include <stdlib.h>
2823# include <stddef.h>
2824#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002825main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002826{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2827 ]],[
2828 vim_cv_terminfo=no
2829 ],[
2830 vim_cv_terminfo=yes
2831 ],[
2832 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2833 ])
2834 ])
2835
2836if test "x$vim_cv_terminfo" = "xyes" ; then
2837 AC_DEFINE(TERMINFO)
2838fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002839
2840if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002841 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2842 [
2843 AC_RUN_IFELSE([[
2844#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002845#ifdef HAVE_TERMCAP_H
2846# include <termcap.h>
2847#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002848#if STDC_HEADERS
2849# include <stdlib.h>
2850# include <stddef.h>
2851#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002852main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002853{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2854 ]],[
2855 vim_cv_tgent=zero
2856 ],[
2857 vim_cv_tgent=non-zero
2858 ],[
2859 AC_MSG_ERROR(failed to compile test program.)
2860 ])
2861 ])
2862
2863 if test "x$vim_cv_tgent" = "xzero" ; then
2864 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2865 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002866fi
2867
2868AC_MSG_CHECKING(whether termcap.h contains ospeed)
2869AC_TRY_LINK([
2870#ifdef HAVE_TERMCAP_H
2871# include <termcap.h>
2872#endif
2873 ], [ospeed = 20000],
2874 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2875 [AC_MSG_RESULT(no)
2876 AC_MSG_CHECKING(whether ospeed can be extern)
2877 AC_TRY_LINK([
2878#ifdef HAVE_TERMCAP_H
2879# include <termcap.h>
2880#endif
2881extern short ospeed;
2882 ], [ospeed = 20000],
2883 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2884 AC_MSG_RESULT(no))]
2885 )
2886
2887AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2888AC_TRY_LINK([
2889#ifdef HAVE_TERMCAP_H
2890# include <termcap.h>
2891#endif
2892 ], [if (UP == 0 && BC == 0) PC = 1],
2893 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2894 [AC_MSG_RESULT(no)
2895 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2896 AC_TRY_LINK([
2897#ifdef HAVE_TERMCAP_H
2898# include <termcap.h>
2899#endif
2900extern char *UP, *BC, PC;
2901 ], [if (UP == 0 && BC == 0) PC = 1],
2902 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2903 AC_MSG_RESULT(no))]
2904 )
2905
2906AC_MSG_CHECKING(whether tputs() uses outfuntype)
2907AC_TRY_COMPILE([
2908#ifdef HAVE_TERMCAP_H
2909# include <termcap.h>
2910#endif
2911 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2912 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2913 AC_MSG_RESULT(no))
2914
2915dnl On some SCO machines sys/select redefines struct timeval
2916AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2917AC_TRY_COMPILE([
2918#include <sys/types.h>
2919#include <sys/time.h>
2920#include <sys/select.h>], ,
2921 AC_MSG_RESULT(yes)
2922 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2923 AC_MSG_RESULT(no))
2924
2925dnl AC_DECL_SYS_SIGLIST
2926
2927dnl Checks for pty.c (copied from screen) ==========================
2928AC_MSG_CHECKING(for /dev/ptc)
2929if test -r /dev/ptc; then
2930 AC_DEFINE(HAVE_DEV_PTC)
2931 AC_MSG_RESULT(yes)
2932else
2933 AC_MSG_RESULT(no)
2934fi
2935
2936AC_MSG_CHECKING(for SVR4 ptys)
2937if test -c /dev/ptmx ; then
2938 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2939 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2940 AC_MSG_RESULT(no))
2941else
2942 AC_MSG_RESULT(no)
2943fi
2944
2945AC_MSG_CHECKING(for ptyranges)
2946if test -d /dev/ptym ; then
2947 pdir='/dev/ptym'
2948else
2949 pdir='/dev'
2950fi
2951dnl SCO uses ptyp%d
2952AC_EGREP_CPP(yes,
2953[#ifdef M_UNIX
2954 yes;
2955#endif
2956 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2957dnl if test -c /dev/ptyp19; then
2958dnl ptys=`echo /dev/ptyp??`
2959dnl else
2960dnl ptys=`echo $pdir/pty??`
2961dnl fi
2962if test "$ptys" != "$pdir/pty??" ; then
2963 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2964 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2965 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2966 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2967 AC_MSG_RESULT([$p0 / $p1])
2968else
2969 AC_MSG_RESULT([don't know])
2970fi
2971
2972dnl **** pty mode/group handling ****
2973dnl
2974dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002976AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2977 [
2978 AC_RUN_IFELSE([[
2979#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002980#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002981#if STDC_HEADERS
2982# include <stdlib.h>
2983# include <stddef.h>
2984#endif
2985#ifdef HAVE_UNISTD_H
2986#include <unistd.h>
2987#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002988#include <sys/stat.h>
2989#include <stdio.h>
2990main()
2991{
2992 struct stat sb;
2993 char *x,*ttyname();
2994 int om, m;
2995 FILE *fp;
2996
2997 if (!(x = ttyname(0))) exit(1);
2998 if (stat(x, &sb)) exit(1);
2999 om = sb.st_mode;
3000 if (om & 002) exit(0);
3001 m = system("mesg y");
3002 if (m == -1 || m == 127) exit(1);
3003 if (stat(x, &sb)) exit(1);
3004 m = sb.st_mode;
3005 if (chmod(x, om)) exit(1);
3006 if (m & 002) exit(0);
3007 if (sb.st_gid == getgid()) exit(1);
3008 if (!(fp=fopen("conftest_grp", "w")))
3009 exit(1);
3010 fprintf(fp, "%d\n", sb.st_gid);
3011 fclose(fp);
3012 exit(0);
3013}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003014 ]],[
3015 if test -f conftest_grp; then
3016 vim_cv_tty_group=`cat conftest_grp`
3017 if test "x$vim_cv_tty_mode" = "x" ; then
3018 vim_cv_tty_mode=0620
3019 fi
3020 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3021 else
3022 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003023 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003024 fi
3025 ],[
3026 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003027 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003028 ],[
3029 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3030 ])
3031 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003032rm -f conftest_grp
3033
Bram Moolenaar446cb832008-06-24 21:56:24 +00003034if test "x$vim_cv_tty_group" != "xworld" ; then
3035 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3036 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003037 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 +00003038 else
3039 AC_DEFINE(PTYMODE, 0620)
3040 fi
3041fi
3042
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043dnl Checks for library functions. ===================================
3044
3045AC_TYPE_SIGNAL
3046
3047dnl find out what to use at the end of a signal function
3048if test $ac_cv_type_signal = void; then
3049 AC_DEFINE(SIGRETURN, [return])
3050else
3051 AC_DEFINE(SIGRETURN, [return 0])
3052fi
3053
3054dnl check if struct sigcontext is defined (used for SGI only)
3055AC_MSG_CHECKING(for struct sigcontext)
3056AC_TRY_COMPILE([
3057#include <signal.h>
3058test_sig()
3059{
3060 struct sigcontext *scont;
3061 scont = (struct sigcontext *)0;
3062 return 1;
3063} ], ,
3064 AC_MSG_RESULT(yes)
3065 AC_DEFINE(HAVE_SIGCONTEXT),
3066 AC_MSG_RESULT(no))
3067
3068dnl tricky stuff: try to find out if getcwd() is implemented with
3069dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003070AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3071 [
3072 AC_RUN_IFELSE([[
3073#include "confdefs.h"
3074#ifdef HAVE_UNISTD_H
3075#include <unistd.h>
3076#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003077char *dagger[] = { "IFS=pwd", 0 };
3078main()
3079{
3080 char buffer[500];
3081 extern char **environ;
3082 environ = dagger;
3083 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003084}
3085 ]],[
3086 vim_cv_getcwd_broken=no
3087 ],[
3088 vim_cv_getcwd_broken=yes
3089 ],[
3090 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3091 ])
3092 ])
3093
3094if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3095 AC_DEFINE(BAD_GETCWD)
3096fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003097
Bram Moolenaar25153e12010-02-24 14:47:08 +01003098dnl Check for functions in one big call, to reduce the size of configure.
3099dnl Can only be used for functions that do not require any include.
3100AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003101 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003102 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003103 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003104 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003105 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3106 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003107AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003108
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003109dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3110dnl appropriate, so that off_t is 64 bits when needed.
3111AC_SYS_LARGEFILE
3112
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3114AC_MSG_CHECKING(for st_blksize)
3115AC_TRY_COMPILE(
3116[#include <sys/types.h>
3117#include <sys/stat.h>],
3118[ struct stat st;
3119 int n;
3120
3121 stat("/", &st);
3122 n = (int)st.st_blksize;],
3123 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3124 AC_MSG_RESULT(no))
3125
Bram Moolenaar446cb832008-06-24 21:56:24 +00003126AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3127 [
3128 AC_RUN_IFELSE([[
3129#include "confdefs.h"
3130#if STDC_HEADERS
3131# include <stdlib.h>
3132# include <stddef.h>
3133#endif
3134#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003135#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003136main() {struct stat st; exit(stat("configure/", &st) != 0); }
3137 ]],[
3138 vim_cv_stat_ignores_slash=yes
3139 ],[
3140 vim_cv_stat_ignores_slash=no
3141 ],[
3142 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3143 ])
3144 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003145
Bram Moolenaar446cb832008-06-24 21:56:24 +00003146if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3147 AC_DEFINE(STAT_IGNORES_SLASH)
3148fi
3149
Bram Moolenaar071d4272004-06-13 20:20:40 +00003150dnl Link with iconv for charset translation, if not found without library.
3151dnl check for iconv() requires including iconv.h
3152dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3153dnl has been installed.
3154AC_MSG_CHECKING(for iconv_open())
3155save_LIBS="$LIBS"
3156LIBS="$LIBS -liconv"
3157AC_TRY_LINK([
3158#ifdef HAVE_ICONV_H
3159# include <iconv.h>
3160#endif
3161 ], [iconv_open("fr", "to");],
3162 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3163 LIBS="$save_LIBS"
3164 AC_TRY_LINK([
3165#ifdef HAVE_ICONV_H
3166# include <iconv.h>
3167#endif
3168 ], [iconv_open("fr", "to");],
3169 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3170 AC_MSG_RESULT(no)))
3171
3172
3173AC_MSG_CHECKING(for nl_langinfo(CODESET))
3174AC_TRY_LINK([
3175#ifdef HAVE_LANGINFO_H
3176# include <langinfo.h>
3177#endif
3178], [char *cs = nl_langinfo(CODESET);],
3179 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3180 AC_MSG_RESULT(no))
3181
Bram Moolenaar446cb832008-06-24 21:56:24 +00003182dnl Need various functions for floating point support. Only enable
3183dnl floating point when they are all present.
3184AC_CHECK_LIB(m, strtod)
3185AC_MSG_CHECKING([for strtod() and other floating point functions])
3186AC_TRY_LINK([
3187#ifdef HAVE_MATH_H
3188# include <math.h>
3189#endif
3190#if STDC_HEADERS
3191# include <stdlib.h>
3192# include <stddef.h>
3193#endif
3194], [char *s; double d;
3195 d = strtod("1.1", &s);
3196 d = fabs(1.11);
3197 d = ceil(1.11);
3198 d = floor(1.11);
3199 d = log10(1.11);
3200 d = pow(1.11, 2.22);
3201 d = sqrt(1.11);
3202 d = sin(1.11);
3203 d = cos(1.11);
3204 d = atan(1.11);
3205 ],
3206 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3207 AC_MSG_RESULT(no))
3208
Bram Moolenaar071d4272004-06-13 20:20:40 +00003209dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3210dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003211dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003212AC_MSG_CHECKING(--disable-acl argument)
3213AC_ARG_ENABLE(acl,
3214 [ --disable-acl Don't check for ACL support.],
3215 , [enable_acl="yes"])
3216if test "$enable_acl" = "yes"; then
3217AC_MSG_RESULT(no)
3218AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3219 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3220 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3221
3222AC_MSG_CHECKING(for POSIX ACL support)
3223AC_TRY_LINK([
3224#include <sys/types.h>
3225#ifdef HAVE_SYS_ACL_H
3226# include <sys/acl.h>
3227#endif
3228acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3229 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3230 acl_free(acl);],
3231 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3232 AC_MSG_RESULT(no))
3233
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003234AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003235AC_MSG_CHECKING(for Solaris ACL support)
3236AC_TRY_LINK([
3237#ifdef HAVE_SYS_ACL_H
3238# include <sys/acl.h>
3239#endif], [acl("foo", GETACLCNT, 0, NULL);
3240 ],
3241 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003242 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243
3244AC_MSG_CHECKING(for AIX ACL support)
3245AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003246#if STDC_HEADERS
3247# include <stdlib.h>
3248# include <stddef.h>
3249#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003250#ifdef HAVE_SYS_ACL_H
3251# include <sys/acl.h>
3252#endif
3253#ifdef HAVE_SYS_ACCESS_H
3254# include <sys/access.h>
3255#endif
3256#define _ALL_SOURCE
3257
3258#include <sys/stat.h>
3259
3260int aclsize;
3261struct acl *aclent;], [aclsize = sizeof(struct acl);
3262 aclent = (void *)malloc(aclsize);
3263 statacl("foo", STX_NORMAL, aclent, aclsize);
3264 ],
3265 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3266 AC_MSG_RESULT(no))
3267else
3268 AC_MSG_RESULT(yes)
3269fi
3270
3271AC_MSG_CHECKING(--disable-gpm argument)
3272AC_ARG_ENABLE(gpm,
3273 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3274 [enable_gpm="yes"])
3275
3276if test "$enable_gpm" = "yes"; then
3277 AC_MSG_RESULT(no)
3278 dnl Checking if gpm support can be compiled
3279 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3280 [olibs="$LIBS" ; LIBS="-lgpm"]
3281 AC_TRY_LINK(
3282 [#include <gpm.h>
3283 #include <linux/keyboard.h>],
3284 [Gpm_GetLibVersion(NULL);],
3285 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3286 dnl FEAT_MOUSE_GPM if mouse support is included
3287 [vi_cv_have_gpm=yes],
3288 [vi_cv_have_gpm=no])
3289 [LIBS="$olibs"]
3290 )
3291 if test $vi_cv_have_gpm = yes; then
3292 LIBS="$LIBS -lgpm"
3293 AC_DEFINE(HAVE_GPM)
3294 fi
3295else
3296 AC_MSG_RESULT(yes)
3297fi
3298
Bram Moolenaar446cb832008-06-24 21:56:24 +00003299AC_MSG_CHECKING(--disable-sysmouse argument)
3300AC_ARG_ENABLE(sysmouse,
3301 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3302 [enable_sysmouse="yes"])
3303
3304if test "$enable_sysmouse" = "yes"; then
3305 AC_MSG_RESULT(no)
3306 dnl Checking if sysmouse support can be compiled
3307 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3308 dnl defines FEAT_SYSMOUSE if mouse support is included
3309 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3310 AC_TRY_LINK(
3311 [#include <sys/consio.h>
3312 #include <signal.h>
3313 #include <sys/fbio.h>],
3314 [struct mouse_info mouse;
3315 mouse.operation = MOUSE_MODE;
3316 mouse.operation = MOUSE_SHOW;
3317 mouse.u.mode.mode = 0;
3318 mouse.u.mode.signal = SIGUSR2;],
3319 [vi_cv_have_sysmouse=yes],
3320 [vi_cv_have_sysmouse=no])
3321 )
3322 if test $vi_cv_have_sysmouse = yes; then
3323 AC_DEFINE(HAVE_SYSMOUSE)
3324 fi
3325else
3326 AC_MSG_RESULT(yes)
3327fi
3328
Bram Moolenaarf05da212009-11-17 16:13:15 +00003329dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3330AC_MSG_CHECKING(for FD_CLOEXEC)
3331AC_TRY_COMPILE(
3332[#if HAVE_FCNTL_H
3333# include <fcntl.h>
3334#endif],
3335[ int flag = FD_CLOEXEC;],
3336 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3337 AC_MSG_RESULT(not usable))
3338
Bram Moolenaar071d4272004-06-13 20:20:40 +00003339dnl rename needs to be checked separately to work on Nextstep with cc
3340AC_MSG_CHECKING(for rename)
3341AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3342 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3343 AC_MSG_RESULT(no))
3344
3345dnl sysctl() may exist but not the arguments we use
3346AC_MSG_CHECKING(for sysctl)
3347AC_TRY_COMPILE(
3348[#include <sys/types.h>
3349#include <sys/sysctl.h>],
3350[ int mib[2], r;
3351 size_t len;
3352
3353 mib[0] = CTL_HW;
3354 mib[1] = HW_USERMEM;
3355 len = sizeof(r);
3356 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3357 ],
3358 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3359 AC_MSG_RESULT(not usable))
3360
3361dnl sysinfo() may exist but not be Linux compatible
3362AC_MSG_CHECKING(for sysinfo)
3363AC_TRY_COMPILE(
3364[#include <sys/types.h>
3365#include <sys/sysinfo.h>],
3366[ struct sysinfo sinfo;
3367 int t;
3368
3369 (void)sysinfo(&sinfo);
3370 t = sinfo.totalram;
3371 ],
3372 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3373 AC_MSG_RESULT(not usable))
3374
Bram Moolenaar914572a2007-05-01 11:37:47 +00003375dnl struct sysinfo may have the mem_unit field or not
3376AC_MSG_CHECKING(for sysinfo.mem_unit)
3377AC_TRY_COMPILE(
3378[#include <sys/types.h>
3379#include <sys/sysinfo.h>],
3380[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003381 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003382 ],
3383 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3384 AC_MSG_RESULT(no))
3385
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386dnl sysconf() may exist but not support what we want to use
3387AC_MSG_CHECKING(for sysconf)
3388AC_TRY_COMPILE(
3389[#include <unistd.h>],
3390[ (void)sysconf(_SC_PAGESIZE);
3391 (void)sysconf(_SC_PHYS_PAGES);
3392 ],
3393 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3394 AC_MSG_RESULT(not usable))
3395
Bram Moolenaar914703b2010-05-31 21:59:46 +02003396AC_CHECK_SIZEOF([int])
3397AC_CHECK_SIZEOF([long])
3398AC_CHECK_SIZEOF([time_t])
3399AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003400
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003401dnl Make sure that uint32_t is really 32 bits unsigned.
3402AC_MSG_CHECKING([uint32_t is 32 bits])
3403AC_TRY_RUN([
3404#ifdef HAVE_STDINT_H
3405# include <stdint.h>
3406#endif
3407#ifdef HAVE_INTTYPES_H
3408# include <inttypes.h>
3409#endif
3410main() {
3411 uint32_t nr1 = (uint32_t)-1;
3412 uint32_t nr2 = (uint32_t)0xffffffffUL;
3413 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3414 exit(0);
3415}],
3416AC_MSG_RESULT(ok),
3417AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003418AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003419
Bram Moolenaar446cb832008-06-24 21:56:24 +00003420dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3421dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3422
Bram Moolenaar071d4272004-06-13 20:20:40 +00003423[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003424#include "confdefs.h"
3425#ifdef HAVE_STRING_H
3426# include <string.h>
3427#endif
3428#if STDC_HEADERS
3429# include <stdlib.h>
3430# include <stddef.h>
3431#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003432main() {
3433 char buf[10];
3434 strcpy(buf, "abcdefghi");
3435 mch_memmove(buf, buf + 2, 3);
3436 if (strncmp(buf, "ababcf", 6))
3437 exit(1);
3438 strcpy(buf, "abcdefghi");
3439 mch_memmove(buf + 2, buf, 3);
3440 if (strncmp(buf, "cdedef", 6))
3441 exit(1);
3442 exit(0); /* libc version works properly. */
3443}']
3444
Bram Moolenaar446cb832008-06-24 21:56:24 +00003445AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3446 [
3447 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3448 [
3449 vim_cv_memmove_handles_overlap=yes
3450 ],[
3451 vim_cv_memmove_handles_overlap=no
3452 ],[
3453 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3454 ])
3455 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003456
Bram Moolenaar446cb832008-06-24 21:56:24 +00003457if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3458 AC_DEFINE(USEMEMMOVE)
3459else
3460 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3461 [
3462 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3463 [
3464 vim_cv_bcopy_handles_overlap=yes
3465 ],[
3466 vim_cv_bcopy_handles_overlap=no
3467 ],[
3468 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3469 ])
3470 ])
3471
3472 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3473 AC_DEFINE(USEBCOPY)
3474 else
3475 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3476 [
3477 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3478 [
3479 vim_cv_memcpy_handles_overlap=yes
3480 ],[
3481 vim_cv_memcpy_handles_overlap=no
3482 ],[
3483 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3484 ])
3485 ])
3486
3487 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3488 AC_DEFINE(USEMEMCPY)
3489 fi
3490 fi
3491fi
3492
Bram Moolenaar071d4272004-06-13 20:20:40 +00003493
3494dnl Check for multibyte locale functions
3495dnl Find out if _Xsetlocale() is supported by libX11.
3496dnl Check if X_LOCALE should be defined.
3497
3498if test "$enable_multibyte" = "yes"; then
3499 cflags_save=$CFLAGS
3500 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003501 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003502 CFLAGS="$CFLAGS -I$x_includes"
3503 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3504 AC_MSG_CHECKING(whether X_LOCALE needed)
3505 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3506 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3507 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3508 AC_MSG_RESULT(no))
3509 fi
3510 CFLAGS=$cflags_save
3511 LDFLAGS=$ldflags_save
3512fi
3513
3514dnl Link with xpg4, it is said to make Korean locale working
3515AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3516
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003517dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003518dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003519dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003520dnl -t for typedefs (many ctags have this)
3521dnl -s for static functions (Elvis ctags only?)
3522dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3523dnl -i+m to test for older Exuberant ctags
3524AC_MSG_CHECKING(how to create tags)
3525test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003526if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003527 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003528elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3529 TAGPRG="exctags -I INIT+ --fields=+S"
3530elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3531 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003532else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003533 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003534 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3535 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3536 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3537 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3538 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3539 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3540 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3541fi
3542test -f tags.save && mv tags.save tags
3543AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3544
3545dnl Check how we can run man with a section number
3546AC_MSG_CHECKING(how to run man with a section nr)
3547MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003548(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 +00003549AC_MSG_RESULT($MANDEF)
3550if test "$MANDEF" = "man -s"; then
3551 AC_DEFINE(USEMAN_S)
3552fi
3553
3554dnl Check if gettext() is working and if it needs -lintl
3555AC_MSG_CHECKING(--disable-nls argument)
3556AC_ARG_ENABLE(nls,
3557 [ --disable-nls Don't support NLS (gettext()).], ,
3558 [enable_nls="yes"])
3559
3560if test "$enable_nls" = "yes"; then
3561 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003562
3563 INSTALL_LANGS=install-languages
3564 AC_SUBST(INSTALL_LANGS)
3565 INSTALL_TOOL_LANGS=install-tool-languages
3566 AC_SUBST(INSTALL_TOOL_LANGS)
3567
Bram Moolenaar071d4272004-06-13 20:20:40 +00003568 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3569 AC_MSG_CHECKING([for NLS])
3570 if test -f po/Makefile; then
3571 have_gettext="no"
3572 if test -n "$MSGFMT"; then
3573 AC_TRY_LINK(
3574 [#include <libintl.h>],
3575 [gettext("Test");],
3576 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3577 olibs=$LIBS
3578 LIBS="$LIBS -lintl"
3579 AC_TRY_LINK(
3580 [#include <libintl.h>],
3581 [gettext("Test");],
3582 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3583 AC_MSG_RESULT([gettext() doesn't work]);
3584 LIBS=$olibs))
3585 else
3586 AC_MSG_RESULT([msgfmt not found - disabled]);
3587 fi
3588 if test $have_gettext = "yes"; then
3589 AC_DEFINE(HAVE_GETTEXT)
3590 MAKEMO=yes
3591 AC_SUBST(MAKEMO)
3592 dnl this was added in GNU gettext 0.10.36
3593 AC_CHECK_FUNCS(bind_textdomain_codeset)
3594 dnl _nl_msg_cat_cntr is required for GNU gettext
3595 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3596 AC_TRY_LINK(
3597 [#include <libintl.h>
3598 extern int _nl_msg_cat_cntr;],
3599 [++_nl_msg_cat_cntr;],
3600 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3601 AC_MSG_RESULT([no]))
3602 fi
3603 else
3604 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3605 fi
3606else
3607 AC_MSG_RESULT(yes)
3608fi
3609
3610dnl Check for dynamic linking loader
3611AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3612if test x${DLL} = xdlfcn.h; then
3613 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3614 AC_MSG_CHECKING([for dlopen()])
3615 AC_TRY_LINK(,[
3616 extern void* dlopen();
3617 dlopen();
3618 ],
3619 AC_MSG_RESULT(yes);
3620 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3621 AC_MSG_RESULT(no);
3622 AC_MSG_CHECKING([for dlopen() in -ldl])
3623 olibs=$LIBS
3624 LIBS="$LIBS -ldl"
3625 AC_TRY_LINK(,[
3626 extern void* dlopen();
3627 dlopen();
3628 ],
3629 AC_MSG_RESULT(yes);
3630 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3631 AC_MSG_RESULT(no);
3632 LIBS=$olibs))
3633 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3634 dnl ick :-)
3635 AC_MSG_CHECKING([for dlsym()])
3636 AC_TRY_LINK(,[
3637 extern void* dlsym();
3638 dlsym();
3639 ],
3640 AC_MSG_RESULT(yes);
3641 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3642 AC_MSG_RESULT(no);
3643 AC_MSG_CHECKING([for dlsym() in -ldl])
3644 olibs=$LIBS
3645 LIBS="$LIBS -ldl"
3646 AC_TRY_LINK(,[
3647 extern void* dlsym();
3648 dlsym();
3649 ],
3650 AC_MSG_RESULT(yes);
3651 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3652 AC_MSG_RESULT(no);
3653 LIBS=$olibs))
3654elif test x${DLL} = xdl.h; then
3655 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3656 AC_MSG_CHECKING([for shl_load()])
3657 AC_TRY_LINK(,[
3658 extern void* shl_load();
3659 shl_load();
3660 ],
3661 AC_MSG_RESULT(yes);
3662 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3663 AC_MSG_RESULT(no);
3664 AC_MSG_CHECKING([for shl_load() in -ldld])
3665 olibs=$LIBS
3666 LIBS="$LIBS -ldld"
3667 AC_TRY_LINK(,[
3668 extern void* shl_load();
3669 shl_load();
3670 ],
3671 AC_MSG_RESULT(yes);
3672 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3673 AC_MSG_RESULT(no);
3674 LIBS=$olibs))
3675fi
3676AC_CHECK_HEADERS(setjmp.h)
3677
3678if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3679 dnl -ldl must come after DynaLoader.a
3680 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3681 LIBS=`echo $LIBS | sed s/-ldl//`
3682 PERL_LIBS="$PERL_LIBS -ldl"
3683 fi
3684fi
3685
Bram Moolenaar164fca32010-07-14 13:58:07 +02003686if test "x$MACOSX" = "xyes"; then
3687 AC_MSG_CHECKING(whether we need -framework Cocoa)
3688 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3689 dnl disabled during tiny build)
3690 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3691 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003692 AC_MSG_RESULT(yes)
3693 else
3694 AC_MSG_RESULT(no)
3695 fi
3696fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003697if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003698 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003699fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003700
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003701dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3702dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3703dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003704dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3705dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003706DEPEND_CFLAGS_FILTER=
3707if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003708 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003709 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003710 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003711 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003712 AC_MSG_RESULT(yes)
3713 else
3714 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003715 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003716 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3717 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003718 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003719 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003720 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3721 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003722 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003723 AC_MSG_RESULT(yes)
3724 else
3725 AC_MSG_RESULT(no)
3726 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003727fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003728AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003729
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003730dnl link.sh tries to avoid overlinking in a hackish way.
3731dnl At least GNU ld supports --as-needed which provides the same functionality
3732dnl at linker level. Let's use it.
3733AC_MSG_CHECKING(linker --as-needed support)
3734LINK_AS_NEEDED=
3735# Check if linker supports --as-needed and --no-as-needed options
3736if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3737 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3738 LINK_AS_NEEDED=yes
3739fi
3740if test "$LINK_AS_NEEDED" = yes; then
3741 AC_MSG_RESULT(yes)
3742else
3743 AC_MSG_RESULT(no)
3744fi
3745AC_SUBST(LINK_AS_NEEDED)
3746
Bram Moolenaar77c19352012-06-13 19:19:41 +02003747# IBM z/OS reset CFLAGS for config.mk
3748if test "$zOSUnix" = "yes"; then
3749 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3750fi
3751
Bram Moolenaar071d4272004-06-13 20:20:40 +00003752dnl write output files
3753AC_OUTPUT(auto/config.mk:config.mk.in)
3754
3755dnl vim: set sw=2 tw=78 fo+=l: