blob: 37b6c141019b8cea839bf6b92a4be81d67a96c13 [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
2280 AC_MSG_CHECKING(for location of Motif GUI libs)
2281 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
2282 GUI_LIB_LOC=
2283 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002284 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002285 if test -f "$libtry"; then
2286 GUI_LIB_LOC=$try
2287 fi
2288 done
2289 done
2290 if test -n "$GUI_LIB_LOC"; then
2291 dnl Remove /usr/lib, it causes trouble on some systems
2292 if test "$GUI_LIB_LOC" = /usr/lib; then
2293 GUI_LIB_LOC=
2294 AC_MSG_RESULT(in default path)
2295 else
2296 if test -n "$GUI_LIB_LOC"; then
2297 AC_MSG_RESULT($GUI_LIB_LOC)
2298 if test "`(uname) 2>/dev/null`" = SunOS &&
2299 uname -r | grep '^5' >/dev/null; then
2300 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2301 fi
2302 fi
2303 fi
2304 MOTIF_LIBNAME=-lXm
2305 else
2306 AC_MSG_RESULT(<not found>)
2307 SKIP_MOTIF=YES
2308 fi
2309 fi
2310fi
2311
2312if test -z "$SKIP_MOTIF"; then
2313 SKIP_ATHENA=YES
2314 SKIP_NEXTAW=YES
2315 GUITYPE=MOTIF
2316 AC_SUBST(MOTIF_LIBNAME)
2317fi
2318
2319dnl Check if the Athena files can be found
2320
2321GUI_X_LIBS=
2322
2323if test -z "$SKIP_ATHENA"; then
2324 AC_MSG_CHECKING(if Athena header files can be found)
2325 cflags_save=$CFLAGS
2326 CFLAGS="$CFLAGS $X_CFLAGS"
2327 AC_TRY_COMPILE([
2328#include <X11/Intrinsic.h>
2329#include <X11/Xaw/Paned.h>], ,
2330 AC_MSG_RESULT(yes),
2331 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2332 CFLAGS=$cflags_save
2333fi
2334
2335if test -z "$SKIP_ATHENA"; then
2336 GUITYPE=ATHENA
2337fi
2338
2339if test -z "$SKIP_NEXTAW"; then
2340 AC_MSG_CHECKING(if neXtaw header files can be found)
2341 cflags_save=$CFLAGS
2342 CFLAGS="$CFLAGS $X_CFLAGS"
2343 AC_TRY_COMPILE([
2344#include <X11/Intrinsic.h>
2345#include <X11/neXtaw/Paned.h>], ,
2346 AC_MSG_RESULT(yes),
2347 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2348 CFLAGS=$cflags_save
2349fi
2350
2351if test -z "$SKIP_NEXTAW"; then
2352 GUITYPE=NEXTAW
2353fi
2354
2355if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2356 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2357 dnl Avoid adding it when it twice
2358 if test -n "$GUI_INC_LOC"; then
2359 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2360 fi
2361 if test -n "$GUI_LIB_LOC"; then
2362 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2363 fi
2364
2365 dnl Check for -lXext and then for -lXmu
2366 ldflags_save=$LDFLAGS
2367 LDFLAGS="$X_LIBS $LDFLAGS"
2368 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2369 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2370 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2371 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2372 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2373 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2374 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2375 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2376 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2377 if test -z "$SKIP_MOTIF"; then
2378 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2379 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2380 fi
2381 LDFLAGS=$ldflags_save
2382
2383 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2384 AC_MSG_CHECKING(for extra X11 defines)
2385 NARROW_PROTO=
2386 rm -fr conftestdir
2387 if mkdir conftestdir; then
2388 cd conftestdir
2389 cat > Imakefile <<'EOF'
2390acfindx:
2391 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2392EOF
2393 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2394 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2395 fi
2396 cd ..
2397 rm -fr conftestdir
2398 fi
2399 if test -z "$NARROW_PROTO"; then
2400 AC_MSG_RESULT(no)
2401 else
2402 AC_MSG_RESULT($NARROW_PROTO)
2403 fi
2404 AC_SUBST(NARROW_PROTO)
2405fi
2406
2407dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2408dnl use the X11 include path
2409if test "$enable_xsmp" = "yes"; then
2410 cppflags_save=$CPPFLAGS
2411 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2412 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2413 CPPFLAGS=$cppflags_save
2414fi
2415
2416
Bram Moolenaare667c952010-07-05 22:57:59 +02002417if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002418 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2419 cppflags_save=$CPPFLAGS
2420 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2421 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2422
2423 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2424 if test ! "$enable_xim" = "no"; then
2425 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2426 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2427 AC_MSG_RESULT(yes),
2428 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2429 fi
2430 CPPFLAGS=$cppflags_save
2431
2432 dnl automatically enable XIM when hangul input isn't enabled
2433 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2434 -a "x$GUITYPE" != "xNONE" ; then
2435 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2436 enable_xim="yes"
2437 fi
2438fi
2439
2440if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2441 cppflags_save=$CPPFLAGS
2442 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002443dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2444 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2445 AC_TRY_COMPILE([
2446#include <X11/Intrinsic.h>
2447#include <X11/Xmu/Editres.h>],
2448 [int i; i = 0;],
2449 AC_MSG_RESULT(yes)
2450 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2451 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002452 CPPFLAGS=$cppflags_save
2453fi
2454
2455dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2456if test -z "$SKIP_MOTIF"; then
2457 cppflags_save=$CPPFLAGS
2458 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002459 if test "$zOSUnix" = "yes"; then
2460 xmheader="Xm/Xm.h"
2461 else
2462 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002463 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002464 fi
2465 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002466
Bram Moolenaar77c19352012-06-13 19:19:41 +02002467 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002468 dnl Solaris uses XpmAttributes_21, very annoying.
2469 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2470 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2471 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2472 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2473 )
2474 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002475 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002476 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002477 CPPFLAGS=$cppflags_save
2478fi
2479
2480if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2481 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2482 enable_xim="no"
2483fi
2484if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2485 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2486 enable_fontset="no"
2487fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002488if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002489 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2490 enable_fontset="no"
2491fi
2492
Bram Moolenaar071d4272004-06-13 20:20:40 +00002493if test -z "$SKIP_PHOTON"; then
2494 GUITYPE=PHOTONGUI
2495fi
2496
2497AC_SUBST(GUI_INC_LOC)
2498AC_SUBST(GUI_LIB_LOC)
2499AC_SUBST(GUITYPE)
2500AC_SUBST(GUI_X_LIBS)
2501
2502if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2503 AC_MSG_ERROR([cannot use workshop without Motif])
2504fi
2505
2506dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2507if test "$enable_xim" = "yes"; then
2508 AC_DEFINE(FEAT_XIM)
2509fi
2510if test "$enable_fontset" = "yes"; then
2511 AC_DEFINE(FEAT_XFONTSET)
2512fi
2513
2514
2515dnl ---------------------------------------------------------------------------
2516dnl end of GUI-checking
2517dnl ---------------------------------------------------------------------------
2518
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002519dnl Check for Cygwin, which needs an extra source file if not using X11
2520AC_MSG_CHECKING(for CYGWIN environment)
2521case `uname` in
2522 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2523 AC_MSG_CHECKING(for CYGWIN clipboard support)
2524 if test "x$with_x" = "xno" ; then
2525 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2526 AC_MSG_RESULT(yes)
2527 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2528 else
2529 AC_MSG_RESULT(no - using X11)
2530 fi ;;
2531
2532 *) CYGWIN=no; AC_MSG_RESULT(no);;
2533esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002534
2535dnl Only really enable hangul input when GUI and XFONTSET are available
2536if test "$enable_hangulinput" = "yes"; then
2537 if test "x$GUITYPE" = "xNONE"; then
2538 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2539 enable_hangulinput=no
2540 else
2541 AC_DEFINE(FEAT_HANGULIN)
2542 HANGULIN_SRC=hangulin.c
2543 AC_SUBST(HANGULIN_SRC)
2544 HANGULIN_OBJ=objects/hangulin.o
2545 AC_SUBST(HANGULIN_OBJ)
2546 fi
2547fi
2548
2549dnl Checks for libraries and include files.
2550
Bram Moolenaar446cb832008-06-24 21:56:24 +00002551AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2552 [
2553 AC_RUN_IFELSE([[
2554#include "confdefs.h"
2555#include <ctype.h>
2556#if STDC_HEADERS
2557# include <stdlib.h>
2558# include <stddef.h>
2559#endif
2560main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2561 ]],[
2562 vim_cv_toupper_broken=yes
2563 ],[
2564 vim_cv_toupper_broken=no
2565 ],[
2566 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2567 ])])
2568
2569if test "x$vim_cv_toupper_broken" = "xyes" ; then
2570 AC_DEFINE(BROKEN_TOUPPER)
2571fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572
2573AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002574AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002575 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2576 AC_MSG_RESULT(no))
2577
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002578AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2579AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2580 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2581 AC_MSG_RESULT(no))
2582
Bram Moolenaar071d4272004-06-13 20:20:40 +00002583dnl Checks for header files.
2584AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2585dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2586if test "$HAS_ELF" = 1; then
2587 AC_CHECK_LIB(elf, main)
2588fi
2589
2590AC_HEADER_DIRENT
2591
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592dnl If sys/wait.h is not found it might still exist but not be POSIX
2593dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2594if test $ac_cv_header_sys_wait_h = no; then
2595 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2596 AC_TRY_COMPILE([#include <sys/wait.h>],
2597 [union wait xx, yy; xx = yy],
2598 AC_MSG_RESULT(yes)
2599 AC_DEFINE(HAVE_SYS_WAIT_H)
2600 AC_DEFINE(HAVE_UNION_WAIT),
2601 AC_MSG_RESULT(no))
2602fi
2603
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002604AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2605 sys/select.h sys/utsname.h termcap.h fcntl.h \
2606 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2607 termio.h iconv.h inttypes.h langinfo.h math.h \
2608 unistd.h stropts.h errno.h sys/resource.h \
2609 sys/systeminfo.h locale.h sys/stream.h termios.h \
2610 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2611 utime.h sys/param.h libintl.h libgen.h \
2612 util/debug.h util/msg18n.h frame.h sys/acl.h \
2613 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002614
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002615dnl sys/ptem.h depends on sys/stream.h on Solaris
2616AC_CHECK_HEADERS(sys/ptem.h, [], [],
2617[#if defined HAVE_SYS_STREAM_H
2618# include <sys/stream.h>
2619#endif])
2620
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002621dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2622AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2623[#if defined HAVE_SYS_PARAM_H
2624# include <sys/param.h>
2625#endif])
2626
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002627
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002628dnl pthread_np.h may exist but can only be used after including pthread.h
2629AC_MSG_CHECKING([for pthread_np.h])
2630AC_TRY_COMPILE([
2631#include <pthread.h>
2632#include <pthread_np.h>],
2633 [int i; i = 0;],
2634 AC_MSG_RESULT(yes)
2635 AC_DEFINE(HAVE_PTHREAD_NP_H),
2636 AC_MSG_RESULT(no))
2637
Bram Moolenaare344bea2005-09-01 20:46:49 +00002638AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002639if test "x$MACOSX" = "xyes"; then
2640 dnl The strings.h file on OS/X contains a warning and nothing useful.
2641 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2642else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002643
2644dnl Check if strings.h and string.h can both be included when defined.
2645AC_MSG_CHECKING([if strings.h can be included after string.h])
2646cppflags_save=$CPPFLAGS
2647CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2648AC_TRY_COMPILE([
2649#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2650# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2651 /* but don't do it on AIX 5.1 (Uribarri) */
2652#endif
2653#ifdef HAVE_XM_XM_H
2654# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2655#endif
2656#ifdef HAVE_STRING_H
2657# include <string.h>
2658#endif
2659#if defined(HAVE_STRINGS_H)
2660# include <strings.h>
2661#endif
2662 ], [int i; i = 0;],
2663 AC_MSG_RESULT(yes),
2664 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2665 AC_MSG_RESULT(no))
2666CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002667fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002668
2669dnl Checks for typedefs, structures, and compiler characteristics.
2670AC_PROG_GCC_TRADITIONAL
2671AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002672AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002673AC_TYPE_MODE_T
2674AC_TYPE_OFF_T
2675AC_TYPE_PID_T
2676AC_TYPE_SIZE_T
2677AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002678AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002679
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680AC_HEADER_TIME
2681AC_CHECK_TYPE(ino_t, long)
2682AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002683AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002684
2685AC_MSG_CHECKING(for rlim_t)
2686if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2687 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2688else
2689 AC_EGREP_CPP(dnl
2690changequote(<<,>>)dnl
2691<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2692changequote([,]),
2693 [
2694#include <sys/types.h>
2695#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002696# include <stdlib.h>
2697# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002698#endif
2699#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002700# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002701#endif
2702 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2703 AC_MSG_RESULT($ac_cv_type_rlim_t)
2704fi
2705if test $ac_cv_type_rlim_t = no; then
2706 cat >> confdefs.h <<\EOF
2707#define rlim_t unsigned long
2708EOF
2709fi
2710
2711AC_MSG_CHECKING(for stack_t)
2712if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2713 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2714else
2715 AC_EGREP_CPP(stack_t,
2716 [
2717#include <sys/types.h>
2718#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002719# include <stdlib.h>
2720# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721#endif
2722#include <signal.h>
2723 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2724 AC_MSG_RESULT($ac_cv_type_stack_t)
2725fi
2726if test $ac_cv_type_stack_t = no; then
2727 cat >> confdefs.h <<\EOF
2728#define stack_t struct sigaltstack
2729EOF
2730fi
2731
2732dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2733AC_MSG_CHECKING(whether stack_t has an ss_base field)
2734AC_TRY_COMPILE([
2735#include <sys/types.h>
2736#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002737# include <stdlib.h>
2738# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002739#endif
2740#include <signal.h>
2741#include "confdefs.h"
2742 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2743 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2744 AC_MSG_RESULT(no))
2745
2746olibs="$LIBS"
2747AC_MSG_CHECKING(--with-tlib argument)
2748AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2749if test -n "$with_tlib"; then
2750 AC_MSG_RESULT($with_tlib)
2751 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002752 AC_MSG_CHECKING(for linking with $with_tlib library)
2753 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2754 dnl Need to check for tgetent() below.
2755 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002756else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002757 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002758 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2759 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002760 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002761 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762 dnl Older versions of ncurses have bugs, get a new one!
2763 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002764 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002765 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002766 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2767 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002768 esac
2769 for libname in $tlibs; do
2770 AC_CHECK_LIB(${libname}, tgetent,,)
2771 if test "x$olibs" != "x$LIBS"; then
2772 dnl It's possible that a library is found but it doesn't work
2773 dnl e.g., shared library that cannot be found
2774 dnl compile and run a test program to be sure
2775 AC_TRY_RUN([
2776#ifdef HAVE_TERMCAP_H
2777# include <termcap.h>
2778#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002779#if STDC_HEADERS
2780# include <stdlib.h>
2781# include <stddef.h>
2782#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002783main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2784 res="OK", res="FAIL", res="FAIL")
2785 if test "$res" = "OK"; then
2786 break
2787 fi
2788 AC_MSG_RESULT($libname library is not usable)
2789 LIBS="$olibs"
2790 fi
2791 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002792 if test "x$olibs" = "x$LIBS"; then
2793 AC_MSG_RESULT(no terminal library found)
2794 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002795fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002796
2797if test "x$olibs" = "x$LIBS"; then
2798 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002799 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002800 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2801 AC_MSG_RESULT(yes),
2802 AC_MSG_ERROR([NOT FOUND!
2803 You need to install a terminal library; for example ncurses.
2804 Or specify the name of the library with --with-tlib.]))
2805fi
2806
Bram Moolenaar446cb832008-06-24 21:56:24 +00002807AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2808 [
2809 AC_RUN_IFELSE([[
2810#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811#ifdef HAVE_TERMCAP_H
2812# include <termcap.h>
2813#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002814#ifdef HAVE_STRING_H
2815# include <string.h>
2816#endif
2817#if STDC_HEADERS
2818# include <stdlib.h>
2819# include <stddef.h>
2820#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002821main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002822{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2823 ]],[
2824 vim_cv_terminfo=no
2825 ],[
2826 vim_cv_terminfo=yes
2827 ],[
2828 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2829 ])
2830 ])
2831
2832if test "x$vim_cv_terminfo" = "xyes" ; then
2833 AC_DEFINE(TERMINFO)
2834fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002835
2836if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002837 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2838 [
2839 AC_RUN_IFELSE([[
2840#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002841#ifdef HAVE_TERMCAP_H
2842# include <termcap.h>
2843#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002844#if STDC_HEADERS
2845# include <stdlib.h>
2846# include <stddef.h>
2847#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002848main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002849{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2850 ]],[
2851 vim_cv_tgent=zero
2852 ],[
2853 vim_cv_tgent=non-zero
2854 ],[
2855 AC_MSG_ERROR(failed to compile test program.)
2856 ])
2857 ])
2858
2859 if test "x$vim_cv_tgent" = "xzero" ; then
2860 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2861 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002862fi
2863
2864AC_MSG_CHECKING(whether termcap.h contains ospeed)
2865AC_TRY_LINK([
2866#ifdef HAVE_TERMCAP_H
2867# include <termcap.h>
2868#endif
2869 ], [ospeed = 20000],
2870 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2871 [AC_MSG_RESULT(no)
2872 AC_MSG_CHECKING(whether ospeed can be extern)
2873 AC_TRY_LINK([
2874#ifdef HAVE_TERMCAP_H
2875# include <termcap.h>
2876#endif
2877extern short ospeed;
2878 ], [ospeed = 20000],
2879 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2880 AC_MSG_RESULT(no))]
2881 )
2882
2883AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2884AC_TRY_LINK([
2885#ifdef HAVE_TERMCAP_H
2886# include <termcap.h>
2887#endif
2888 ], [if (UP == 0 && BC == 0) PC = 1],
2889 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2890 [AC_MSG_RESULT(no)
2891 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2892 AC_TRY_LINK([
2893#ifdef HAVE_TERMCAP_H
2894# include <termcap.h>
2895#endif
2896extern char *UP, *BC, PC;
2897 ], [if (UP == 0 && BC == 0) PC = 1],
2898 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2899 AC_MSG_RESULT(no))]
2900 )
2901
2902AC_MSG_CHECKING(whether tputs() uses outfuntype)
2903AC_TRY_COMPILE([
2904#ifdef HAVE_TERMCAP_H
2905# include <termcap.h>
2906#endif
2907 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2908 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2909 AC_MSG_RESULT(no))
2910
2911dnl On some SCO machines sys/select redefines struct timeval
2912AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2913AC_TRY_COMPILE([
2914#include <sys/types.h>
2915#include <sys/time.h>
2916#include <sys/select.h>], ,
2917 AC_MSG_RESULT(yes)
2918 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2919 AC_MSG_RESULT(no))
2920
2921dnl AC_DECL_SYS_SIGLIST
2922
2923dnl Checks for pty.c (copied from screen) ==========================
2924AC_MSG_CHECKING(for /dev/ptc)
2925if test -r /dev/ptc; then
2926 AC_DEFINE(HAVE_DEV_PTC)
2927 AC_MSG_RESULT(yes)
2928else
2929 AC_MSG_RESULT(no)
2930fi
2931
2932AC_MSG_CHECKING(for SVR4 ptys)
2933if test -c /dev/ptmx ; then
2934 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2935 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2936 AC_MSG_RESULT(no))
2937else
2938 AC_MSG_RESULT(no)
2939fi
2940
2941AC_MSG_CHECKING(for ptyranges)
2942if test -d /dev/ptym ; then
2943 pdir='/dev/ptym'
2944else
2945 pdir='/dev'
2946fi
2947dnl SCO uses ptyp%d
2948AC_EGREP_CPP(yes,
2949[#ifdef M_UNIX
2950 yes;
2951#endif
2952 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2953dnl if test -c /dev/ptyp19; then
2954dnl ptys=`echo /dev/ptyp??`
2955dnl else
2956dnl ptys=`echo $pdir/pty??`
2957dnl fi
2958if test "$ptys" != "$pdir/pty??" ; then
2959 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2960 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2961 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2962 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2963 AC_MSG_RESULT([$p0 / $p1])
2964else
2965 AC_MSG_RESULT([don't know])
2966fi
2967
2968dnl **** pty mode/group handling ****
2969dnl
2970dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002972AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2973 [
2974 AC_RUN_IFELSE([[
2975#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002976#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002977#if STDC_HEADERS
2978# include <stdlib.h>
2979# include <stddef.h>
2980#endif
2981#ifdef HAVE_UNISTD_H
2982#include <unistd.h>
2983#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002984#include <sys/stat.h>
2985#include <stdio.h>
2986main()
2987{
2988 struct stat sb;
2989 char *x,*ttyname();
2990 int om, m;
2991 FILE *fp;
2992
2993 if (!(x = ttyname(0))) exit(1);
2994 if (stat(x, &sb)) exit(1);
2995 om = sb.st_mode;
2996 if (om & 002) exit(0);
2997 m = system("mesg y");
2998 if (m == -1 || m == 127) exit(1);
2999 if (stat(x, &sb)) exit(1);
3000 m = sb.st_mode;
3001 if (chmod(x, om)) exit(1);
3002 if (m & 002) exit(0);
3003 if (sb.st_gid == getgid()) exit(1);
3004 if (!(fp=fopen("conftest_grp", "w")))
3005 exit(1);
3006 fprintf(fp, "%d\n", sb.st_gid);
3007 fclose(fp);
3008 exit(0);
3009}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003010 ]],[
3011 if test -f conftest_grp; then
3012 vim_cv_tty_group=`cat conftest_grp`
3013 if test "x$vim_cv_tty_mode" = "x" ; then
3014 vim_cv_tty_mode=0620
3015 fi
3016 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3017 else
3018 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003019 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003020 fi
3021 ],[
3022 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003023 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003024 ],[
3025 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3026 ])
3027 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003028rm -f conftest_grp
3029
Bram Moolenaar446cb832008-06-24 21:56:24 +00003030if test "x$vim_cv_tty_group" != "xworld" ; then
3031 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3032 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003033 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 +00003034 else
3035 AC_DEFINE(PTYMODE, 0620)
3036 fi
3037fi
3038
Bram Moolenaar071d4272004-06-13 20:20:40 +00003039dnl Checks for library functions. ===================================
3040
3041AC_TYPE_SIGNAL
3042
3043dnl find out what to use at the end of a signal function
3044if test $ac_cv_type_signal = void; then
3045 AC_DEFINE(SIGRETURN, [return])
3046else
3047 AC_DEFINE(SIGRETURN, [return 0])
3048fi
3049
3050dnl check if struct sigcontext is defined (used for SGI only)
3051AC_MSG_CHECKING(for struct sigcontext)
3052AC_TRY_COMPILE([
3053#include <signal.h>
3054test_sig()
3055{
3056 struct sigcontext *scont;
3057 scont = (struct sigcontext *)0;
3058 return 1;
3059} ], ,
3060 AC_MSG_RESULT(yes)
3061 AC_DEFINE(HAVE_SIGCONTEXT),
3062 AC_MSG_RESULT(no))
3063
3064dnl tricky stuff: try to find out if getcwd() is implemented with
3065dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003066AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3067 [
3068 AC_RUN_IFELSE([[
3069#include "confdefs.h"
3070#ifdef HAVE_UNISTD_H
3071#include <unistd.h>
3072#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003073char *dagger[] = { "IFS=pwd", 0 };
3074main()
3075{
3076 char buffer[500];
3077 extern char **environ;
3078 environ = dagger;
3079 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080}
3081 ]],[
3082 vim_cv_getcwd_broken=no
3083 ],[
3084 vim_cv_getcwd_broken=yes
3085 ],[
3086 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3087 ])
3088 ])
3089
3090if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3091 AC_DEFINE(BAD_GETCWD)
3092fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003093
Bram Moolenaar25153e12010-02-24 14:47:08 +01003094dnl Check for functions in one big call, to reduce the size of configure.
3095dnl Can only be used for functions that do not require any include.
3096AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003097 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003098 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003099 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003100 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003101 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3102 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003103AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003104
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003105dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3106dnl appropriate, so that off_t is 64 bits when needed.
3107AC_SYS_LARGEFILE
3108
Bram Moolenaar071d4272004-06-13 20:20:40 +00003109dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3110AC_MSG_CHECKING(for st_blksize)
3111AC_TRY_COMPILE(
3112[#include <sys/types.h>
3113#include <sys/stat.h>],
3114[ struct stat st;
3115 int n;
3116
3117 stat("/", &st);
3118 n = (int)st.st_blksize;],
3119 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3120 AC_MSG_RESULT(no))
3121
Bram Moolenaar446cb832008-06-24 21:56:24 +00003122AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3123 [
3124 AC_RUN_IFELSE([[
3125#include "confdefs.h"
3126#if STDC_HEADERS
3127# include <stdlib.h>
3128# include <stddef.h>
3129#endif
3130#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003132main() {struct stat st; exit(stat("configure/", &st) != 0); }
3133 ]],[
3134 vim_cv_stat_ignores_slash=yes
3135 ],[
3136 vim_cv_stat_ignores_slash=no
3137 ],[
3138 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3139 ])
3140 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003141
Bram Moolenaar446cb832008-06-24 21:56:24 +00003142if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3143 AC_DEFINE(STAT_IGNORES_SLASH)
3144fi
3145
Bram Moolenaar071d4272004-06-13 20:20:40 +00003146dnl Link with iconv for charset translation, if not found without library.
3147dnl check for iconv() requires including iconv.h
3148dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3149dnl has been installed.
3150AC_MSG_CHECKING(for iconv_open())
3151save_LIBS="$LIBS"
3152LIBS="$LIBS -liconv"
3153AC_TRY_LINK([
3154#ifdef HAVE_ICONV_H
3155# include <iconv.h>
3156#endif
3157 ], [iconv_open("fr", "to");],
3158 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3159 LIBS="$save_LIBS"
3160 AC_TRY_LINK([
3161#ifdef HAVE_ICONV_H
3162# include <iconv.h>
3163#endif
3164 ], [iconv_open("fr", "to");],
3165 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3166 AC_MSG_RESULT(no)))
3167
3168
3169AC_MSG_CHECKING(for nl_langinfo(CODESET))
3170AC_TRY_LINK([
3171#ifdef HAVE_LANGINFO_H
3172# include <langinfo.h>
3173#endif
3174], [char *cs = nl_langinfo(CODESET);],
3175 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3176 AC_MSG_RESULT(no))
3177
Bram Moolenaar446cb832008-06-24 21:56:24 +00003178dnl Need various functions for floating point support. Only enable
3179dnl floating point when they are all present.
3180AC_CHECK_LIB(m, strtod)
3181AC_MSG_CHECKING([for strtod() and other floating point functions])
3182AC_TRY_LINK([
3183#ifdef HAVE_MATH_H
3184# include <math.h>
3185#endif
3186#if STDC_HEADERS
3187# include <stdlib.h>
3188# include <stddef.h>
3189#endif
3190], [char *s; double d;
3191 d = strtod("1.1", &s);
3192 d = fabs(1.11);
3193 d = ceil(1.11);
3194 d = floor(1.11);
3195 d = log10(1.11);
3196 d = pow(1.11, 2.22);
3197 d = sqrt(1.11);
3198 d = sin(1.11);
3199 d = cos(1.11);
3200 d = atan(1.11);
3201 ],
3202 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3203 AC_MSG_RESULT(no))
3204
Bram Moolenaar071d4272004-06-13 20:20:40 +00003205dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3206dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003207dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003208AC_MSG_CHECKING(--disable-acl argument)
3209AC_ARG_ENABLE(acl,
3210 [ --disable-acl Don't check for ACL support.],
3211 , [enable_acl="yes"])
3212if test "$enable_acl" = "yes"; then
3213AC_MSG_RESULT(no)
3214AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3215 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3216 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3217
3218AC_MSG_CHECKING(for POSIX ACL support)
3219AC_TRY_LINK([
3220#include <sys/types.h>
3221#ifdef HAVE_SYS_ACL_H
3222# include <sys/acl.h>
3223#endif
3224acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3225 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3226 acl_free(acl);],
3227 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3228 AC_MSG_RESULT(no))
3229
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003230AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003231AC_MSG_CHECKING(for Solaris ACL support)
3232AC_TRY_LINK([
3233#ifdef HAVE_SYS_ACL_H
3234# include <sys/acl.h>
3235#endif], [acl("foo", GETACLCNT, 0, NULL);
3236 ],
3237 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003238 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003239
3240AC_MSG_CHECKING(for AIX ACL support)
3241AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003242#if STDC_HEADERS
3243# include <stdlib.h>
3244# include <stddef.h>
3245#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246#ifdef HAVE_SYS_ACL_H
3247# include <sys/acl.h>
3248#endif
3249#ifdef HAVE_SYS_ACCESS_H
3250# include <sys/access.h>
3251#endif
3252#define _ALL_SOURCE
3253
3254#include <sys/stat.h>
3255
3256int aclsize;
3257struct acl *aclent;], [aclsize = sizeof(struct acl);
3258 aclent = (void *)malloc(aclsize);
3259 statacl("foo", STX_NORMAL, aclent, aclsize);
3260 ],
3261 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3262 AC_MSG_RESULT(no))
3263else
3264 AC_MSG_RESULT(yes)
3265fi
3266
3267AC_MSG_CHECKING(--disable-gpm argument)
3268AC_ARG_ENABLE(gpm,
3269 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3270 [enable_gpm="yes"])
3271
3272if test "$enable_gpm" = "yes"; then
3273 AC_MSG_RESULT(no)
3274 dnl Checking if gpm support can be compiled
3275 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3276 [olibs="$LIBS" ; LIBS="-lgpm"]
3277 AC_TRY_LINK(
3278 [#include <gpm.h>
3279 #include <linux/keyboard.h>],
3280 [Gpm_GetLibVersion(NULL);],
3281 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3282 dnl FEAT_MOUSE_GPM if mouse support is included
3283 [vi_cv_have_gpm=yes],
3284 [vi_cv_have_gpm=no])
3285 [LIBS="$olibs"]
3286 )
3287 if test $vi_cv_have_gpm = yes; then
3288 LIBS="$LIBS -lgpm"
3289 AC_DEFINE(HAVE_GPM)
3290 fi
3291else
3292 AC_MSG_RESULT(yes)
3293fi
3294
Bram Moolenaar446cb832008-06-24 21:56:24 +00003295AC_MSG_CHECKING(--disable-sysmouse argument)
3296AC_ARG_ENABLE(sysmouse,
3297 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3298 [enable_sysmouse="yes"])
3299
3300if test "$enable_sysmouse" = "yes"; then
3301 AC_MSG_RESULT(no)
3302 dnl Checking if sysmouse support can be compiled
3303 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3304 dnl defines FEAT_SYSMOUSE if mouse support is included
3305 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3306 AC_TRY_LINK(
3307 [#include <sys/consio.h>
3308 #include <signal.h>
3309 #include <sys/fbio.h>],
3310 [struct mouse_info mouse;
3311 mouse.operation = MOUSE_MODE;
3312 mouse.operation = MOUSE_SHOW;
3313 mouse.u.mode.mode = 0;
3314 mouse.u.mode.signal = SIGUSR2;],
3315 [vi_cv_have_sysmouse=yes],
3316 [vi_cv_have_sysmouse=no])
3317 )
3318 if test $vi_cv_have_sysmouse = yes; then
3319 AC_DEFINE(HAVE_SYSMOUSE)
3320 fi
3321else
3322 AC_MSG_RESULT(yes)
3323fi
3324
Bram Moolenaarf05da212009-11-17 16:13:15 +00003325dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3326AC_MSG_CHECKING(for FD_CLOEXEC)
3327AC_TRY_COMPILE(
3328[#if HAVE_FCNTL_H
3329# include <fcntl.h>
3330#endif],
3331[ int flag = FD_CLOEXEC;],
3332 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3333 AC_MSG_RESULT(not usable))
3334
Bram Moolenaar071d4272004-06-13 20:20:40 +00003335dnl rename needs to be checked separately to work on Nextstep with cc
3336AC_MSG_CHECKING(for rename)
3337AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3338 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3339 AC_MSG_RESULT(no))
3340
3341dnl sysctl() may exist but not the arguments we use
3342AC_MSG_CHECKING(for sysctl)
3343AC_TRY_COMPILE(
3344[#include <sys/types.h>
3345#include <sys/sysctl.h>],
3346[ int mib[2], r;
3347 size_t len;
3348
3349 mib[0] = CTL_HW;
3350 mib[1] = HW_USERMEM;
3351 len = sizeof(r);
3352 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3353 ],
3354 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3355 AC_MSG_RESULT(not usable))
3356
3357dnl sysinfo() may exist but not be Linux compatible
3358AC_MSG_CHECKING(for sysinfo)
3359AC_TRY_COMPILE(
3360[#include <sys/types.h>
3361#include <sys/sysinfo.h>],
3362[ struct sysinfo sinfo;
3363 int t;
3364
3365 (void)sysinfo(&sinfo);
3366 t = sinfo.totalram;
3367 ],
3368 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3369 AC_MSG_RESULT(not usable))
3370
Bram Moolenaar914572a2007-05-01 11:37:47 +00003371dnl struct sysinfo may have the mem_unit field or not
3372AC_MSG_CHECKING(for sysinfo.mem_unit)
3373AC_TRY_COMPILE(
3374[#include <sys/types.h>
3375#include <sys/sysinfo.h>],
3376[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003377 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003378 ],
3379 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3380 AC_MSG_RESULT(no))
3381
Bram Moolenaar071d4272004-06-13 20:20:40 +00003382dnl sysconf() may exist but not support what we want to use
3383AC_MSG_CHECKING(for sysconf)
3384AC_TRY_COMPILE(
3385[#include <unistd.h>],
3386[ (void)sysconf(_SC_PAGESIZE);
3387 (void)sysconf(_SC_PHYS_PAGES);
3388 ],
3389 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3390 AC_MSG_RESULT(not usable))
3391
Bram Moolenaar914703b2010-05-31 21:59:46 +02003392AC_CHECK_SIZEOF([int])
3393AC_CHECK_SIZEOF([long])
3394AC_CHECK_SIZEOF([time_t])
3395AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003396
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003397dnl Make sure that uint32_t is really 32 bits unsigned.
3398AC_MSG_CHECKING([uint32_t is 32 bits])
3399AC_TRY_RUN([
3400#ifdef HAVE_STDINT_H
3401# include <stdint.h>
3402#endif
3403#ifdef HAVE_INTTYPES_H
3404# include <inttypes.h>
3405#endif
3406main() {
3407 uint32_t nr1 = (uint32_t)-1;
3408 uint32_t nr2 = (uint32_t)0xffffffffUL;
3409 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3410 exit(0);
3411}],
3412AC_MSG_RESULT(ok),
3413AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003414AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003415
Bram Moolenaar446cb832008-06-24 21:56:24 +00003416dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3417dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3418
Bram Moolenaar071d4272004-06-13 20:20:40 +00003419[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003420#include "confdefs.h"
3421#ifdef HAVE_STRING_H
3422# include <string.h>
3423#endif
3424#if STDC_HEADERS
3425# include <stdlib.h>
3426# include <stddef.h>
3427#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003428main() {
3429 char buf[10];
3430 strcpy(buf, "abcdefghi");
3431 mch_memmove(buf, buf + 2, 3);
3432 if (strncmp(buf, "ababcf", 6))
3433 exit(1);
3434 strcpy(buf, "abcdefghi");
3435 mch_memmove(buf + 2, buf, 3);
3436 if (strncmp(buf, "cdedef", 6))
3437 exit(1);
3438 exit(0); /* libc version works properly. */
3439}']
3440
Bram Moolenaar446cb832008-06-24 21:56:24 +00003441AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3442 [
3443 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3444 [
3445 vim_cv_memmove_handles_overlap=yes
3446 ],[
3447 vim_cv_memmove_handles_overlap=no
3448 ],[
3449 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3450 ])
3451 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003452
Bram Moolenaar446cb832008-06-24 21:56:24 +00003453if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3454 AC_DEFINE(USEMEMMOVE)
3455else
3456 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3457 [
3458 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3459 [
3460 vim_cv_bcopy_handles_overlap=yes
3461 ],[
3462 vim_cv_bcopy_handles_overlap=no
3463 ],[
3464 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3465 ])
3466 ])
3467
3468 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3469 AC_DEFINE(USEBCOPY)
3470 else
3471 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3472 [
3473 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3474 [
3475 vim_cv_memcpy_handles_overlap=yes
3476 ],[
3477 vim_cv_memcpy_handles_overlap=no
3478 ],[
3479 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3480 ])
3481 ])
3482
3483 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3484 AC_DEFINE(USEMEMCPY)
3485 fi
3486 fi
3487fi
3488
Bram Moolenaar071d4272004-06-13 20:20:40 +00003489
3490dnl Check for multibyte locale functions
3491dnl Find out if _Xsetlocale() is supported by libX11.
3492dnl Check if X_LOCALE should be defined.
3493
3494if test "$enable_multibyte" = "yes"; then
3495 cflags_save=$CFLAGS
3496 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003497 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003498 CFLAGS="$CFLAGS -I$x_includes"
3499 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3500 AC_MSG_CHECKING(whether X_LOCALE needed)
3501 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3502 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3503 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3504 AC_MSG_RESULT(no))
3505 fi
3506 CFLAGS=$cflags_save
3507 LDFLAGS=$ldflags_save
3508fi
3509
3510dnl Link with xpg4, it is said to make Korean locale working
3511AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3512
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003513dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003514dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003515dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003516dnl -t for typedefs (many ctags have this)
3517dnl -s for static functions (Elvis ctags only?)
3518dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3519dnl -i+m to test for older Exuberant ctags
3520AC_MSG_CHECKING(how to create tags)
3521test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003522if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003523 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003524elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3525 TAGPRG="exctags -I INIT+ --fields=+S"
3526elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3527 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003528else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003529 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003530 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3531 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3532 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3533 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3534 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3535 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3536 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3537fi
3538test -f tags.save && mv tags.save tags
3539AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3540
3541dnl Check how we can run man with a section number
3542AC_MSG_CHECKING(how to run man with a section nr)
3543MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003544(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 +00003545AC_MSG_RESULT($MANDEF)
3546if test "$MANDEF" = "man -s"; then
3547 AC_DEFINE(USEMAN_S)
3548fi
3549
3550dnl Check if gettext() is working and if it needs -lintl
3551AC_MSG_CHECKING(--disable-nls argument)
3552AC_ARG_ENABLE(nls,
3553 [ --disable-nls Don't support NLS (gettext()).], ,
3554 [enable_nls="yes"])
3555
3556if test "$enable_nls" = "yes"; then
3557 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003558
3559 INSTALL_LANGS=install-languages
3560 AC_SUBST(INSTALL_LANGS)
3561 INSTALL_TOOL_LANGS=install-tool-languages
3562 AC_SUBST(INSTALL_TOOL_LANGS)
3563
Bram Moolenaar071d4272004-06-13 20:20:40 +00003564 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3565 AC_MSG_CHECKING([for NLS])
3566 if test -f po/Makefile; then
3567 have_gettext="no"
3568 if test -n "$MSGFMT"; then
3569 AC_TRY_LINK(
3570 [#include <libintl.h>],
3571 [gettext("Test");],
3572 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3573 olibs=$LIBS
3574 LIBS="$LIBS -lintl"
3575 AC_TRY_LINK(
3576 [#include <libintl.h>],
3577 [gettext("Test");],
3578 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3579 AC_MSG_RESULT([gettext() doesn't work]);
3580 LIBS=$olibs))
3581 else
3582 AC_MSG_RESULT([msgfmt not found - disabled]);
3583 fi
3584 if test $have_gettext = "yes"; then
3585 AC_DEFINE(HAVE_GETTEXT)
3586 MAKEMO=yes
3587 AC_SUBST(MAKEMO)
3588 dnl this was added in GNU gettext 0.10.36
3589 AC_CHECK_FUNCS(bind_textdomain_codeset)
3590 dnl _nl_msg_cat_cntr is required for GNU gettext
3591 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3592 AC_TRY_LINK(
3593 [#include <libintl.h>
3594 extern int _nl_msg_cat_cntr;],
3595 [++_nl_msg_cat_cntr;],
3596 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3597 AC_MSG_RESULT([no]))
3598 fi
3599 else
3600 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3601 fi
3602else
3603 AC_MSG_RESULT(yes)
3604fi
3605
3606dnl Check for dynamic linking loader
3607AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3608if test x${DLL} = xdlfcn.h; then
3609 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3610 AC_MSG_CHECKING([for dlopen()])
3611 AC_TRY_LINK(,[
3612 extern void* dlopen();
3613 dlopen();
3614 ],
3615 AC_MSG_RESULT(yes);
3616 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3617 AC_MSG_RESULT(no);
3618 AC_MSG_CHECKING([for dlopen() in -ldl])
3619 olibs=$LIBS
3620 LIBS="$LIBS -ldl"
3621 AC_TRY_LINK(,[
3622 extern void* dlopen();
3623 dlopen();
3624 ],
3625 AC_MSG_RESULT(yes);
3626 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3627 AC_MSG_RESULT(no);
3628 LIBS=$olibs))
3629 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3630 dnl ick :-)
3631 AC_MSG_CHECKING([for dlsym()])
3632 AC_TRY_LINK(,[
3633 extern void* dlsym();
3634 dlsym();
3635 ],
3636 AC_MSG_RESULT(yes);
3637 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3638 AC_MSG_RESULT(no);
3639 AC_MSG_CHECKING([for dlsym() in -ldl])
3640 olibs=$LIBS
3641 LIBS="$LIBS -ldl"
3642 AC_TRY_LINK(,[
3643 extern void* dlsym();
3644 dlsym();
3645 ],
3646 AC_MSG_RESULT(yes);
3647 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3648 AC_MSG_RESULT(no);
3649 LIBS=$olibs))
3650elif test x${DLL} = xdl.h; then
3651 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3652 AC_MSG_CHECKING([for shl_load()])
3653 AC_TRY_LINK(,[
3654 extern void* shl_load();
3655 shl_load();
3656 ],
3657 AC_MSG_RESULT(yes);
3658 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3659 AC_MSG_RESULT(no);
3660 AC_MSG_CHECKING([for shl_load() in -ldld])
3661 olibs=$LIBS
3662 LIBS="$LIBS -ldld"
3663 AC_TRY_LINK(,[
3664 extern void* shl_load();
3665 shl_load();
3666 ],
3667 AC_MSG_RESULT(yes);
3668 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3669 AC_MSG_RESULT(no);
3670 LIBS=$olibs))
3671fi
3672AC_CHECK_HEADERS(setjmp.h)
3673
3674if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3675 dnl -ldl must come after DynaLoader.a
3676 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3677 LIBS=`echo $LIBS | sed s/-ldl//`
3678 PERL_LIBS="$PERL_LIBS -ldl"
3679 fi
3680fi
3681
Bram Moolenaar164fca32010-07-14 13:58:07 +02003682if test "x$MACOSX" = "xyes"; then
3683 AC_MSG_CHECKING(whether we need -framework Cocoa)
3684 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3685 dnl disabled during tiny build)
3686 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3687 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003688 AC_MSG_RESULT(yes)
3689 else
3690 AC_MSG_RESULT(no)
3691 fi
3692fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003693if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003694 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003695fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003696
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003697dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3698dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3699dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003700dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3701dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003702DEPEND_CFLAGS_FILTER=
3703if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003704 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003705 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003706 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003707 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003708 AC_MSG_RESULT(yes)
3709 else
3710 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003711 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003712 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3713 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003714 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003715 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003716 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3717 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003718 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 +00003719 AC_MSG_RESULT(yes)
3720 else
3721 AC_MSG_RESULT(no)
3722 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003723fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003724AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003725
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003726dnl link.sh tries to avoid overlinking in a hackish way.
3727dnl At least GNU ld supports --as-needed which provides the same functionality
3728dnl at linker level. Let's use it.
3729AC_MSG_CHECKING(linker --as-needed support)
3730LINK_AS_NEEDED=
3731# Check if linker supports --as-needed and --no-as-needed options
3732if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3733 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3734 LINK_AS_NEEDED=yes
3735fi
3736if test "$LINK_AS_NEEDED" = yes; then
3737 AC_MSG_RESULT(yes)
3738else
3739 AC_MSG_RESULT(no)
3740fi
3741AC_SUBST(LINK_AS_NEEDED)
3742
Bram Moolenaar77c19352012-06-13 19:19:41 +02003743# IBM z/OS reset CFLAGS for config.mk
3744if test "$zOSUnix" = "yes"; then
3745 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3746fi
3747
Bram Moolenaar071d4272004-06-13 20:20:40 +00003748dnl write output files
3749AC_OUTPUT(auto/config.mk:config.mk.in)
3750
3751dnl vim: set sw=2 tw=78 fo+=l: