blob: 37c3fb12feabf8619c049d1b878a9dd9eacf3d4d [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
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
497 dnl Determine the SONAME for the current version, but fallback to
498 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
499 for i in 0 1 2 3 4 5 6 7 8 9; do
500 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
501 LUA_SONAME=".$i"
502 break
503 fi
504 done
505 vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME"
506 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200507 AC_DEFINE(DYNAMIC_LUA)
508 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200509 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200510 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200511 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100512 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
513 AC_MSG_ERROR([could not configure lua])
514 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200515 AC_SUBST(LUA_SRC)
516 AC_SUBST(LUA_OBJ)
517 AC_SUBST(LUA_PRO)
518 AC_SUBST(LUA_LIBS)
519 AC_SUBST(LUA_CFLAGS)
520fi
521
522
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000523dnl Check for MzScheme feature.
524AC_MSG_CHECKING(--enable-mzschemeinterp argument)
525AC_ARG_ENABLE(mzschemeinterp,
526 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
527 [enable_mzschemeinterp="no"])
528AC_MSG_RESULT($enable_mzschemeinterp)
529
530if test "$enable_mzschemeinterp" = "yes"; then
531 dnl -- find the mzscheme executable
532 AC_SUBST(vi_cv_path_mzscheme)
533
534 AC_MSG_CHECKING(--with-plthome argument)
535 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000536 [ --with-plthome=PLTHOME Use PLTHOME.],
537 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000538 with_plthome="";AC_MSG_RESULT("no"))
539
540 if test "X$with_plthome" != "X"; then
541 vi_cv_path_mzscheme_pfx="$with_plthome"
542 else
543 AC_MSG_CHECKING(PLTHOME environment var)
544 if test "X$PLTHOME" != "X"; then
545 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000547 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000548 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000550 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000551
552 dnl resolve symbolic link, the executable is often elsewhere and there
553 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000554 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000555 lsout=`ls -l $vi_cv_path_mzscheme`
556 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
557 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
558 fi
559 fi
560
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 if test "X$vi_cv_path_mzscheme" != "X"; then
562 dnl -- find where MzScheme thinks it was installed
563 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 dnl different versions of MzScheme differ in command line processing
565 dnl use universal approach
566 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000567 (build-path (call-with-values \
568 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000569 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
570 dnl Remove a trailing slash
571 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
572 sed -e 's+/$++'` ])
573 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000574 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000575 fi
576 fi
577
Bram Moolenaard7afed32007-05-06 13:26:41 +0000578 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000579 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
580 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
581 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000582 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
583 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000584 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000585 AC_MSG_RESULT(no)
586 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000587 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000588 AC_MSG_RESULT(yes)
589 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000590 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000591 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100592 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
593 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000594 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100595 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 else
597 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100598 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
599 if test -f /usr/include/plt/scheme.h; then
600 AC_MSG_RESULT(yes)
601 SCHEME_INC=/usr/include/plt
602 else
603 AC_MSG_RESULT(no)
604 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
605 if test -f /usr/include/racket/scheme.h; then
606 AC_MSG_RESULT(yes)
607 SCHEME_INC=/usr/include/racket
608 else
609 AC_MSG_RESULT(no)
610 vi_cv_path_mzscheme_pfx=
611 fi
612 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000613 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000614 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000615 fi
616 fi
617
618 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000619 if test "x$MACOSX" = "xyes"; then
620 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000621 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
622 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
623 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
625 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
626 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
627 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
628 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
629 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000630 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 +0000631 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000632 dnl Using shared objects
633 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
634 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
640 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000641 else
642 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
643 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000644 if test "$GCC" = yes; then
645 dnl Make Vim remember the path to the library. For when it's not in
646 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000647 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000648 elif test "`(uname) 2>/dev/null`" = SunOS &&
649 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000650 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000651 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000652 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000653 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
654 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100655 else
656 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
657 SCHEME_COLLECTS=lib/racket/
658 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000659 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000660 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000661 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100662 else
663 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
664 MZSCHEME_EXTRA="mzscheme_base.c"
665 fi
666 fi
667 if test "X$MZSCHEME_EXTRA" != "X" ; then
668 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000669 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
670 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
671 fi
672 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000673 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000674 MZSCHEME_SRC="if_mzsch.c"
675 MZSCHEME_OBJ="objects/if_mzsch.o"
676 MZSCHEME_PRO="if_mzsch.pro"
677 AC_DEFINE(FEAT_MZSCHEME)
678 fi
679 AC_SUBST(MZSCHEME_SRC)
680 AC_SUBST(MZSCHEME_OBJ)
681 AC_SUBST(MZSCHEME_PRO)
682 AC_SUBST(MZSCHEME_LIBS)
683 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000684 AC_SUBST(MZSCHEME_EXTRA)
685 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000686fi
687
688
Bram Moolenaar071d4272004-06-13 20:20:40 +0000689AC_MSG_CHECKING(--enable-perlinterp argument)
690AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200691 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000692 [enable_perlinterp="no"])
693AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200694if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000695 AC_SUBST(vi_cv_path_perl)
696 AC_PATH_PROG(vi_cv_path_perl, perl)
697 if test "X$vi_cv_path_perl" != "X"; then
698 AC_MSG_CHECKING(Perl version)
699 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
700 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200701 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000702 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
703 badthreads=no
704 else
705 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
706 eval `$vi_cv_path_perl -V:use5005threads`
707 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
708 badthreads=no
709 else
710 badthreads=yes
711 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
712 fi
713 else
714 badthreads=yes
715 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
716 fi
717 fi
718 if test $badthreads = no; then
719 AC_MSG_RESULT(OK)
720 eval `$vi_cv_path_perl -V:shrpenv`
721 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
722 shrpenv=""
723 fi
724 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
725 AC_SUBST(vi_cv_perllib)
726 dnl Remove "-fno-something", it breaks using cproto.
727 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
728 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
729 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
730 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
731 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
732 -e 's/-bE:perl.exp//' -e 's/-lc //'`
733 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
734 dnl a test in configure may fail because of that.
735 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
736 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
737
738 dnl check that compiling a simple program still works with the flags
739 dnl added for Perl.
740 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
741 cflags_save=$CFLAGS
742 libs_save=$LIBS
743 ldflags_save=$LDFLAGS
744 CFLAGS="$CFLAGS $perlcppflags"
745 LIBS="$LIBS $perllibs"
746 LDFLAGS="$perlldflags $LDFLAGS"
747 AC_TRY_LINK(,[ ],
748 AC_MSG_RESULT(yes); perl_ok=yes,
749 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
750 CFLAGS=$cflags_save
751 LIBS=$libs_save
752 LDFLAGS=$ldflags_save
753 if test $perl_ok = yes; then
754 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000755 dnl remove -pipe and -Wxxx, it confuses cproto
756 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000757 fi
758 if test "X$perlldflags" != "X"; then
759 LDFLAGS="$perlldflags $LDFLAGS"
760 fi
761 PERL_LIBS=$perllibs
762 PERL_SRC="auto/if_perl.c if_perlsfio.c"
763 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
764 PERL_PRO="if_perl.pro if_perlsfio.pro"
765 AC_DEFINE(FEAT_PERL)
766 fi
767 fi
768 else
769 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
770 fi
771 fi
772
773 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000774 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000775 dir=/System/Library/Perl
776 darwindir=$dir/darwin
777 if test -d $darwindir; then
778 PERL=/usr/bin/perl
779 else
780 dnl Mac OS X 10.3
781 dir=/System/Library/Perl/5.8.1
782 darwindir=$dir/darwin-thread-multi-2level
783 if test -d $darwindir; then
784 PERL=/usr/bin/perl
785 fi
786 fi
787 if test -n "$PERL"; then
788 PERL_DIR="$dir"
789 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
790 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
791 PERL_LIBS="-L$darwindir/CORE -lperl"
792 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200793 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
794 dnl be included if requested by passing --with-mac-arch to
795 dnl configure, so strip these flags first (if present)
796 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
797 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 +0000798 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200799 if test "$enable_perlinterp" = "dynamic"; then
800 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
801 AC_DEFINE(DYNAMIC_PERL)
802 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
803 fi
804 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100805
806 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
807 AC_MSG_ERROR([could not configure perl])
808 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000809fi
810AC_SUBST(shrpenv)
811AC_SUBST(PERL_SRC)
812AC_SUBST(PERL_OBJ)
813AC_SUBST(PERL_PRO)
814AC_SUBST(PERL_CFLAGS)
815AC_SUBST(PERL_LIBS)
816
817AC_MSG_CHECKING(--enable-pythoninterp argument)
818AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200819 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000820 [enable_pythoninterp="no"])
821AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200822if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000823 dnl -- find the python executable
824 AC_PATH_PROG(vi_cv_path_python, python)
825 if test "X$vi_cv_path_python" != "X"; then
826
827 dnl -- get its version number
828 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
829 [[vi_cv_var_python_version=`
830 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
831 ]])
832
833 dnl -- it must be at least version 1.4
834 AC_MSG_CHECKING(Python is 1.4 or better)
835 if ${vi_cv_path_python} -c \
836 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
837 then
838 AC_MSG_RESULT(yep)
839
840 dnl -- find where python thinks it was installed
841 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
842 [ vi_cv_path_python_pfx=`
843 ${vi_cv_path_python} -c \
844 "import sys; print sys.prefix"` ])
845
846 dnl -- and where it thinks it runs
847 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
848 [ vi_cv_path_python_epfx=`
849 ${vi_cv_path_python} -c \
850 "import sys; print sys.exec_prefix"` ])
851
852 dnl -- python's internal library path
853
854 AC_CACHE_VAL(vi_cv_path_pythonpath,
855 [ vi_cv_path_pythonpath=`
856 unset PYTHONPATH;
857 ${vi_cv_path_python} -c \
858 "import sys, string; print string.join(sys.path,':')"` ])
859
860 dnl -- where the Python implementation library archives are
861
862 AC_ARG_WITH(python-config-dir,
863 [ --with-python-config-dir=PATH Python's config directory],
864 [ vi_cv_path_python_conf="${withval}" ] )
865
866 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
867 [
868 vi_cv_path_python_conf=
869 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000870 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000871 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
872 if test -d "$d" && test -f "$d/config.c"; then
873 vi_cv_path_python_conf="$d"
874 fi
875 done
876 done
877 ])
878
879 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
880
881 if test "X$PYTHON_CONFDIR" = "X"; then
882 AC_MSG_RESULT([can't find it!])
883 else
884
885 dnl -- we need to examine Python's config/Makefile too
886 dnl see what the interpreter is built from
887 AC_CACHE_VAL(vi_cv_path_python_plibs,
888 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000889 pwd=`pwd`
890 tmp_mkf="$pwd/config-PyMake$$"
891 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000892__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200893 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000894 @echo "python_LIBS='$(LIBS)'"
895 @echo "python_SYSLIBS='$(SYSLIBS)'"
896 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200897 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200898 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899eof
900 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000901 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
902 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000903 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
904 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
905 vi_cv_path_python_plibs="-framework Python"
906 else
907 if test "${vi_cv_var_python_version}" = "1.4"; then
908 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
909 else
910 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
911 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200912 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 +0000913 dnl remove -ltermcap, it can conflict with an earlier -lncurses
914 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
915 fi
916 ])
917
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200918 if test "X$python_DLLLIBRARY" != "X"; then
919 python_INSTSONAME="$python_DLLLIBRARY"
920 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000921 PYTHON_LIBS="${vi_cv_path_python_plibs}"
922 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100923 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 +0000924 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100925 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 +0000926 fi
927 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200928 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000929 if test "${vi_cv_var_python_version}" = "1.4"; then
930 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
931 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100932 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 +0000933
934 dnl On FreeBSD linking with "-pthread" is required to use threads.
935 dnl _THREAD_SAFE must be used for compiling then.
936 dnl The "-pthread" is added to $LIBS, so that the following check for
937 dnl sigaltstack() will look in libc_r (it's there in libc!).
938 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
939 dnl will then define target-specific defines, e.g., -D_REENTRANT.
940 dnl Don't do this for Mac OSX, -pthread will generate a warning.
941 AC_MSG_CHECKING([if -pthread should be used])
942 threadsafe_flag=
943 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000944 dnl if test "x$MACOSX" != "xyes"; then
945 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000946 test "$GCC" = yes && threadsafe_flag="-pthread"
947 if test "`(uname) 2>/dev/null`" = FreeBSD; then
948 threadsafe_flag="-D_THREAD_SAFE"
949 thread_lib="-pthread"
950 fi
951 fi
952 libs_save_old=$LIBS
953 if test -n "$threadsafe_flag"; then
954 cflags_save=$CFLAGS
955 CFLAGS="$CFLAGS $threadsafe_flag"
956 LIBS="$LIBS $thread_lib"
957 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200958 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000959 AC_MSG_RESULT(no); LIBS=$libs_save_old
960 )
961 CFLAGS=$cflags_save
962 else
963 AC_MSG_RESULT(no)
964 fi
965
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200966 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 dnl added for Python.
968 AC_MSG_CHECKING([if compile and link flags for Python are sane])
969 cflags_save=$CFLAGS
970 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200971 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000972 LIBS="$LIBS $PYTHON_LIBS"
973 AC_TRY_LINK(,[ ],
974 AC_MSG_RESULT(yes); python_ok=yes,
975 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
976 CFLAGS=$cflags_save
977 LIBS=$libs_save
978 if test $python_ok = yes; then
979 AC_DEFINE(FEAT_PYTHON)
980 else
981 LIBS=$libs_save_old
982 PYTHON_SRC=
983 PYTHON_OBJ=
984 PYTHON_LIBS=
985 PYTHON_CFLAGS=
986 fi
987
988 fi
989 else
990 AC_MSG_RESULT(too old)
991 fi
992 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100993
994 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
995 AC_MSG_ERROR([could not configure python])
996 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000997fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200998
Bram Moolenaar071d4272004-06-13 20:20:40 +0000999AC_SUBST(PYTHON_CONFDIR)
1000AC_SUBST(PYTHON_LIBS)
1001AC_SUBST(PYTHON_GETPATH_CFLAGS)
1002AC_SUBST(PYTHON_CFLAGS)
1003AC_SUBST(PYTHON_SRC)
1004AC_SUBST(PYTHON_OBJ)
1005
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001006
1007AC_MSG_CHECKING(--enable-python3interp argument)
1008AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001009 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001010 [enable_python3interp="no"])
1011AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001012if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001013 dnl -- find the python3 executable
1014 AC_PATH_PROG(vi_cv_path_python3, python3)
1015 if test "X$vi_cv_path_python3" != "X"; then
1016
1017 dnl -- get its version number
1018 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1019 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001020 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001021 ]])
1022
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001023 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1024 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1025 [
1026 vi_cv_var_python3_abiflags=
1027 if ${vi_cv_path_python3} -c \
1028 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1029 then
1030 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1031 "import sys; print(sys.abiflags)"`
1032 fi ])
1033
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001034 dnl -- find where python3 thinks it was installed
1035 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1036 [ vi_cv_path_python3_pfx=`
1037 ${vi_cv_path_python3} -c \
1038 "import sys; print(sys.prefix)"` ])
1039
1040 dnl -- and where it thinks it runs
1041 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1042 [ vi_cv_path_python3_epfx=`
1043 ${vi_cv_path_python3} -c \
1044 "import sys; print(sys.exec_prefix)"` ])
1045
1046 dnl -- python3's internal library path
1047
1048 AC_CACHE_VAL(vi_cv_path_python3path,
1049 [ vi_cv_path_python3path=`
1050 unset PYTHONPATH;
1051 ${vi_cv_path_python3} -c \
1052 "import sys, string; print(':'.join(sys.path))"` ])
1053
1054 dnl -- where the Python implementation library archives are
1055
1056 AC_ARG_WITH(python3-config-dir,
1057 [ --with-python3-config-dir=PATH Python's config directory],
1058 [ vi_cv_path_python3_conf="${withval}" ] )
1059
1060 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1061 [
1062 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001063 config_dir="config"
1064 if test "${vi_cv_var_python3_abiflags}" != ""; then
1065 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1066 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001067 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001068 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001069 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001070 if test -d "$d" && test -f "$d/config.c"; then
1071 vi_cv_path_python3_conf="$d"
1072 fi
1073 done
1074 done
1075 ])
1076
1077 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1078
1079 if test "X$PYTHON3_CONFDIR" = "X"; then
1080 AC_MSG_RESULT([can't find it!])
1081 else
1082
1083 dnl -- we need to examine Python's config/Makefile too
1084 dnl see what the interpreter is built from
1085 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1086 [
1087 pwd=`pwd`
1088 tmp_mkf="$pwd/config-PyMake$$"
1089 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1090__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001091 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001092 @echo "python3_LIBS='$(LIBS)'"
1093 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001094 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001095 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001096eof
1097 dnl -- delete the lines from make about Entering/Leaving directory
1098 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1099 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001100 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001101 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001102 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1103 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1104 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1105 ])
1106
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001107 if test "X$python3_DLLLIBRARY" != "X"; then
1108 python3_INSTSONAME="$python3_DLLLIBRARY"
1109 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001110 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1111 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001112 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001113 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001114 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001115 fi
1116 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001117 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001118
1119 dnl On FreeBSD linking with "-pthread" is required to use threads.
1120 dnl _THREAD_SAFE must be used for compiling then.
1121 dnl The "-pthread" is added to $LIBS, so that the following check for
1122 dnl sigaltstack() will look in libc_r (it's there in libc!).
1123 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1124 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1125 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1126 AC_MSG_CHECKING([if -pthread should be used])
1127 threadsafe_flag=
1128 thread_lib=
1129 dnl if test "x$MACOSX" != "xyes"; then
1130 if test "`(uname) 2>/dev/null`" != Darwin; then
1131 test "$GCC" = yes && threadsafe_flag="-pthread"
1132 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1133 threadsafe_flag="-D_THREAD_SAFE"
1134 thread_lib="-pthread"
1135 fi
1136 fi
1137 libs_save_old=$LIBS
1138 if test -n "$threadsafe_flag"; then
1139 cflags_save=$CFLAGS
1140 CFLAGS="$CFLAGS $threadsafe_flag"
1141 LIBS="$LIBS $thread_lib"
1142 AC_TRY_LINK(,[ ],
1143 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1144 AC_MSG_RESULT(no); LIBS=$libs_save_old
1145 )
1146 CFLAGS=$cflags_save
1147 else
1148 AC_MSG_RESULT(no)
1149 fi
1150
1151 dnl check that compiling a simple program still works with the flags
1152 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001153 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001154 cflags_save=$CFLAGS
1155 libs_save=$LIBS
1156 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1157 LIBS="$LIBS $PYTHON3_LIBS"
1158 AC_TRY_LINK(,[ ],
1159 AC_MSG_RESULT(yes); python3_ok=yes,
1160 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1161 CFLAGS=$cflags_save
1162 LIBS=$libs_save
1163 if test "$python3_ok" = yes; then
1164 AC_DEFINE(FEAT_PYTHON3)
1165 else
1166 LIBS=$libs_save_old
1167 PYTHON3_SRC=
1168 PYTHON3_OBJ=
1169 PYTHON3_LIBS=
1170 PYTHON3_CFLAGS=
1171 fi
1172 fi
1173 fi
1174fi
1175
1176AC_SUBST(PYTHON3_CONFDIR)
1177AC_SUBST(PYTHON3_LIBS)
1178AC_SUBST(PYTHON3_CFLAGS)
1179AC_SUBST(PYTHON3_SRC)
1180AC_SUBST(PYTHON3_OBJ)
1181
1182dnl if python2.x and python3.x are enabled one can only link in code
1183dnl with dlopen(), dlsym(), dlclose()
1184if test "$python_ok" = yes && test "$python3_ok" = yes; then
1185 AC_DEFINE(DYNAMIC_PYTHON)
1186 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001187 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001188 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001189 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001190 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001191 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1192 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001193 AC_RUN_IFELSE([
1194 #include <dlfcn.h>
1195 /* If this program fails, then RTLD_GLOBAL is needed.
1196 * RTLD_GLOBAL will be used and then it is not possible to
1197 * have both python versions enabled in the same vim instance.
1198 * Only the first pyhton version used will be switched on.
1199 */
1200
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001201 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001202 {
1203 int needed = 0;
1204 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1205 if (pylib != 0)
1206 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001207 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001208 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1209 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1210 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001211 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001212 (*init)();
1213 needed = (*simple)("import termios") == -1;
1214 (*final)();
1215 dlclose(pylib);
1216 }
1217 return !needed;
1218 }
1219
1220 int main(int argc, char** argv)
1221 {
1222 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001223 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001224 not_needed = 1;
1225 return !not_needed;
1226 }],
1227 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001228
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001229 CFLAGS=$cflags_save
1230 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001231
1232 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1233 cflags_save=$CFLAGS
1234 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1235 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001236 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1237 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001238 AC_RUN_IFELSE([
1239 #include <dlfcn.h>
1240 #include <wchar.h>
1241 /* If this program fails, then RTLD_GLOBAL is needed.
1242 * RTLD_GLOBAL will be used and then it is not possible to
1243 * have both python versions enabled in the same vim instance.
1244 * Only the first pyhton version used will be switched on.
1245 */
1246
1247 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1248 {
1249 int needed = 0;
1250 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1251 if (pylib != 0)
1252 {
1253 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1254 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1255 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1256 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1257 (*pfx)(prefix);
1258 (*init)();
1259 needed = (*simple)("import termios") == -1;
1260 (*final)();
1261 dlclose(pylib);
1262 }
1263 return !needed;
1264 }
1265
1266 int main(int argc, char** argv)
1267 {
1268 int not_needed = 0;
1269 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1270 not_needed = 1;
1271 return !not_needed;
1272 }],
1273 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1274
1275 CFLAGS=$cflags_save
1276 LDFLAGS=$ldflags_save
1277
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001278 PYTHON_SRC="if_python.c"
1279 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001280 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001281 PYTHON_LIBS=
1282 PYTHON3_SRC="if_python3.c"
1283 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001284 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001285 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001286elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1287 AC_DEFINE(DYNAMIC_PYTHON)
1288 PYTHON_SRC="if_python.c"
1289 PYTHON_OBJ="objects/if_python.o"
1290 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1291 PYTHON_LIBS=
1292elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1293 AC_DEFINE(DYNAMIC_PYTHON3)
1294 PYTHON3_SRC="if_python3.c"
1295 PYTHON3_OBJ="objects/if_python3.o"
1296 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1297 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001298fi
1299
Bram Moolenaar071d4272004-06-13 20:20:40 +00001300AC_MSG_CHECKING(--enable-tclinterp argument)
1301AC_ARG_ENABLE(tclinterp,
1302 [ --enable-tclinterp Include Tcl interpreter.], ,
1303 [enable_tclinterp="no"])
1304AC_MSG_RESULT($enable_tclinterp)
1305
1306if test "$enable_tclinterp" = "yes"; then
1307
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001308 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001309 AC_MSG_CHECKING(--with-tclsh argument)
1310 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1311 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001312 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001313 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1314 AC_SUBST(vi_cv_path_tcl)
1315
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001316 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1317 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1318 tclsh_name="tclsh8.4"
1319 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1320 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001321 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001322 tclsh_name="tclsh8.2"
1323 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1324 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001325 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1326 tclsh_name="tclsh8.0"
1327 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1328 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001329 dnl still didn't find it, try without version number
1330 if test "X$vi_cv_path_tcl" = "X"; then
1331 tclsh_name="tclsh"
1332 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1333 fi
1334 if test "X$vi_cv_path_tcl" != "X"; then
1335 AC_MSG_CHECKING(Tcl version)
1336 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1337 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1338 AC_MSG_RESULT($tclver - OK);
1339 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 -`
1340
1341 AC_MSG_CHECKING(for location of Tcl include)
1342 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001343 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 +00001344 else
1345 dnl For Mac OS X 10.3, use the OS-provided framework location
1346 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1347 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001348 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001349 for try in $tclinc; do
1350 if test -f "$try/tcl.h"; then
1351 AC_MSG_RESULT($try/tcl.h)
1352 TCL_INC=$try
1353 break
1354 fi
1355 done
1356 if test -z "$TCL_INC"; then
1357 AC_MSG_RESULT(<not found>)
1358 SKIP_TCL=YES
1359 fi
1360 if test -z "$SKIP_TCL"; then
1361 AC_MSG_CHECKING(for location of tclConfig.sh script)
1362 if test "x$MACOSX" != "xyes"; then
1363 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001364 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001365 else
1366 dnl For Mac OS X 10.3, use the OS-provided framework location
1367 tclcnf="/System/Library/Frameworks/Tcl.framework"
1368 fi
1369 for try in $tclcnf; do
1370 if test -f $try/tclConfig.sh; then
1371 AC_MSG_RESULT($try/tclConfig.sh)
1372 . $try/tclConfig.sh
1373 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1374 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1375 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001376 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001377 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 +00001378 break
1379 fi
1380 done
1381 if test -z "$TCL_LIBS"; then
1382 AC_MSG_RESULT(<not found>)
1383 AC_MSG_CHECKING(for Tcl library by myself)
1384 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001385 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 for ext in .so .a ; do
1387 for ver in "" $tclver ; do
1388 for try in $tcllib ; do
1389 trylib=tcl$ver$ext
1390 if test -f $try/lib$trylib ; then
1391 AC_MSG_RESULT($try/lib$trylib)
1392 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1393 if test "`(uname) 2>/dev/null`" = SunOS &&
1394 uname -r | grep '^5' >/dev/null; then
1395 TCL_LIBS="$TCL_LIBS -R $try"
1396 fi
1397 break 3
1398 fi
1399 done
1400 done
1401 done
1402 if test -z "$TCL_LIBS"; then
1403 AC_MSG_RESULT(<not found>)
1404 SKIP_TCL=YES
1405 fi
1406 fi
1407 if test -z "$SKIP_TCL"; then
1408 AC_DEFINE(FEAT_TCL)
1409 TCL_SRC=if_tcl.c
1410 TCL_OBJ=objects/if_tcl.o
1411 TCL_PRO=if_tcl.pro
1412 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1413 fi
1414 fi
1415 else
1416 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1417 fi
1418 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001419 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1420 AC_MSG_ERROR([could not configure Tcl])
1421 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001422fi
1423AC_SUBST(TCL_SRC)
1424AC_SUBST(TCL_OBJ)
1425AC_SUBST(TCL_PRO)
1426AC_SUBST(TCL_CFLAGS)
1427AC_SUBST(TCL_LIBS)
1428
1429AC_MSG_CHECKING(--enable-rubyinterp argument)
1430AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001431 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001432 [enable_rubyinterp="no"])
1433AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001434if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001435 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001436 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001437 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1438 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1439 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001440 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001441 if test "X$vi_cv_path_ruby" != "X"; then
1442 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001443 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 +00001444 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001445 AC_MSG_CHECKING(Ruby rbconfig)
1446 ruby_rbconfig="RbConfig"
1447 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1448 ruby_rbconfig="Config"
1449 fi
1450 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001451 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001452 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 +00001453 if test "X$rubyhdrdir" != "X"; then
1454 AC_MSG_RESULT($rubyhdrdir)
1455 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001456 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001457 if test -d "$rubyhdrdir/$rubyarch"; then
1458 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1459 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001460 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001461 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001462 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463 if test "X$rubylibs" != "X"; then
1464 RUBY_LIBS="$rubylibs"
1465 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001466 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1467 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1468 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001469 if test -f "$rubylibdir/$librubya"; then
1470 librubyarg="$librubyarg"
1471 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1472 elif test "$librubyarg" = "libruby.a"; then
1473 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1474 librubyarg="-lruby"
1475 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001476 fi
1477
1478 if test "X$librubyarg" != "X"; then
1479 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1480 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001481 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001482 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001483 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1484 dnl be included if requested by passing --with-mac-arch to
1485 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001486 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001487 if test "X$rubyldflags" != "X"; then
1488 LDFLAGS="$rubyldflags $LDFLAGS"
1489 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001490 fi
1491 RUBY_SRC="if_ruby.c"
1492 RUBY_OBJ="objects/if_ruby.o"
1493 RUBY_PRO="if_ruby.pro"
1494 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001495 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001496 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001497 AC_DEFINE(DYNAMIC_RUBY)
1498 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1499 RUBY_LIBS=
1500 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001501 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001502 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001503 fi
1504 else
1505 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1506 fi
1507 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001508
1509 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1510 AC_MSG_ERROR([could not configure Ruby])
1511 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001512fi
1513AC_SUBST(RUBY_SRC)
1514AC_SUBST(RUBY_OBJ)
1515AC_SUBST(RUBY_PRO)
1516AC_SUBST(RUBY_CFLAGS)
1517AC_SUBST(RUBY_LIBS)
1518
1519AC_MSG_CHECKING(--enable-cscope argument)
1520AC_ARG_ENABLE(cscope,
1521 [ --enable-cscope Include cscope interface.], ,
1522 [enable_cscope="no"])
1523AC_MSG_RESULT($enable_cscope)
1524if test "$enable_cscope" = "yes"; then
1525 AC_DEFINE(FEAT_CSCOPE)
1526fi
1527
1528AC_MSG_CHECKING(--enable-workshop argument)
1529AC_ARG_ENABLE(workshop,
1530 [ --enable-workshop Include Sun Visual Workshop support.], ,
1531 [enable_workshop="no"])
1532AC_MSG_RESULT($enable_workshop)
1533if test "$enable_workshop" = "yes"; then
1534 AC_DEFINE(FEAT_SUN_WORKSHOP)
1535 WORKSHOP_SRC="workshop.c integration.c"
1536 AC_SUBST(WORKSHOP_SRC)
1537 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1538 AC_SUBST(WORKSHOP_OBJ)
1539 if test "${enable_gui-xxx}" = xxx; then
1540 enable_gui=motif
1541 fi
1542fi
1543
1544AC_MSG_CHECKING(--disable-netbeans argument)
1545AC_ARG_ENABLE(netbeans,
1546 [ --disable-netbeans Disable NetBeans integration support.],
1547 , [enable_netbeans="yes"])
1548if test "$enable_netbeans" = "yes"; then
1549 AC_MSG_RESULT(no)
1550 dnl On Solaris we need the socket and nsl library.
1551 AC_CHECK_LIB(socket, socket)
1552 AC_CHECK_LIB(nsl, gethostbyname)
1553 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1554 AC_TRY_LINK([
1555#include <stdio.h>
1556#include <stdlib.h>
1557#include <stdarg.h>
1558#include <fcntl.h>
1559#include <netdb.h>
1560#include <netinet/in.h>
1561#include <errno.h>
1562#include <sys/types.h>
1563#include <sys/socket.h>
1564 /* Check bitfields */
1565 struct nbbuf {
1566 unsigned int initDone:1;
1567 ushort signmaplen;
1568 };
1569 ], [
1570 /* Check creating a socket. */
1571 struct sockaddr_in server;
1572 (void)socket(AF_INET, SOCK_STREAM, 0);
1573 (void)htons(100);
1574 (void)gethostbyname("microsoft.com");
1575 if (errno == ECONNREFUSED)
1576 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1577 ],
1578 AC_MSG_RESULT(yes),
1579 AC_MSG_RESULT(no); enable_netbeans="no")
1580else
1581 AC_MSG_RESULT(yes)
1582fi
1583if test "$enable_netbeans" = "yes"; then
1584 AC_DEFINE(FEAT_NETBEANS_INTG)
1585 NETBEANS_SRC="netbeans.c"
1586 AC_SUBST(NETBEANS_SRC)
1587 NETBEANS_OBJ="objects/netbeans.o"
1588 AC_SUBST(NETBEANS_OBJ)
1589fi
1590
1591AC_MSG_CHECKING(--enable-sniff argument)
1592AC_ARG_ENABLE(sniff,
1593 [ --enable-sniff Include Sniff interface.], ,
1594 [enable_sniff="no"])
1595AC_MSG_RESULT($enable_sniff)
1596if test "$enable_sniff" = "yes"; then
1597 AC_DEFINE(FEAT_SNIFF)
1598 SNIFF_SRC="if_sniff.c"
1599 AC_SUBST(SNIFF_SRC)
1600 SNIFF_OBJ="objects/if_sniff.o"
1601 AC_SUBST(SNIFF_OBJ)
1602fi
1603
1604AC_MSG_CHECKING(--enable-multibyte argument)
1605AC_ARG_ENABLE(multibyte,
1606 [ --enable-multibyte Include multibyte editing support.], ,
1607 [enable_multibyte="no"])
1608AC_MSG_RESULT($enable_multibyte)
1609if test "$enable_multibyte" = "yes"; then
1610 AC_DEFINE(FEAT_MBYTE)
1611fi
1612
1613AC_MSG_CHECKING(--enable-hangulinput argument)
1614AC_ARG_ENABLE(hangulinput,
1615 [ --enable-hangulinput Include Hangul input support.], ,
1616 [enable_hangulinput="no"])
1617AC_MSG_RESULT($enable_hangulinput)
1618
1619AC_MSG_CHECKING(--enable-xim argument)
1620AC_ARG_ENABLE(xim,
1621 [ --enable-xim Include XIM input support.],
1622 AC_MSG_RESULT($enable_xim),
1623 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001624
1625AC_MSG_CHECKING(--enable-fontset argument)
1626AC_ARG_ENABLE(fontset,
1627 [ --enable-fontset Include X fontset output support.], ,
1628 [enable_fontset="no"])
1629AC_MSG_RESULT($enable_fontset)
1630dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1631
1632test -z "$with_x" && with_x=yes
1633test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1634if test "$with_x" = no; then
1635 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1636else
1637 dnl Do this check early, so that its failure can override user requests.
1638
1639 AC_PATH_PROG(xmkmfpath, xmkmf)
1640
1641 AC_PATH_XTRA
1642
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001643 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001644 dnl be compiled with a special option.
1645 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001646 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001647 CFLAGS="$CFLAGS -W c,dll"
1648 LDFLAGS="$LDFLAGS -W l,dll"
1649 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1650 fi
1651
1652 dnl On my HPUX system the X include dir is found, but the lib dir not.
1653 dnl This is a desparate try to fix this.
1654
1655 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1656 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1657 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1658 X_LIBS="$X_LIBS -L$x_libraries"
1659 if test "`(uname) 2>/dev/null`" = SunOS &&
1660 uname -r | grep '^5' >/dev/null; then
1661 X_LIBS="$X_LIBS -R $x_libraries"
1662 fi
1663 fi
1664
1665 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1666 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1667 AC_MSG_RESULT(Corrected X includes to $x_includes)
1668 X_CFLAGS="$X_CFLAGS -I$x_includes"
1669 fi
1670
1671 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1672 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1673 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1674 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1675 dnl Same for "-R/usr/lib ".
1676 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1677
1678
1679 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001680 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1681 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001682 AC_MSG_CHECKING(if X11 header files can be found)
1683 cflags_save=$CFLAGS
1684 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001685 AC_TRY_COMPILE([#include <X11/Xlib.h>
1686#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001687 AC_MSG_RESULT(yes),
1688 AC_MSG_RESULT(no); no_x=yes)
1689 CFLAGS=$cflags_save
1690
1691 if test "${no_x-no}" = yes; then
1692 with_x=no
1693 else
1694 AC_DEFINE(HAVE_X11)
1695 X_LIB="-lXt -lX11";
1696 AC_SUBST(X_LIB)
1697
1698 ac_save_LDFLAGS="$LDFLAGS"
1699 LDFLAGS="-L$x_libraries $LDFLAGS"
1700
1701 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1702 dnl For HP-UX 10.20 it must be before -lSM -lICE
1703 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1704 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1705
1706 dnl Some systems need -lnsl -lsocket when testing for ICE.
1707 dnl The check above doesn't do this, try here (again). Also needed to get
1708 dnl them after Xdmcp. link.sh will remove them when not needed.
1709 dnl Check for other function than above to avoid the cached value
1710 AC_CHECK_LIB(ICE, IceOpenConnection,
1711 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1712
1713 dnl Check for -lXpm (needed for some versions of Motif)
1714 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1715 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1716 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1717
1718 dnl Check that the X11 header files don't use implicit declarations
1719 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1720 cflags_save=$CFLAGS
1721 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1722 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1723 AC_MSG_RESULT(no),
1724 CFLAGS="$CFLAGS -Wno-implicit-int"
1725 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1726 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1727 AC_MSG_RESULT(test failed)
1728 )
1729 )
1730 CFLAGS=$cflags_save
1731
1732 LDFLAGS="$ac_save_LDFLAGS"
1733
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001734 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1735 AC_CACHE_VAL(ac_cv_small_wchar_t,
1736 [AC_TRY_RUN([
1737#include <X11/Xlib.h>
1738#if STDC_HEADERS
1739# include <stdlib.h>
1740# include <stddef.h>
1741#endif
1742 main()
1743 {
1744 if (sizeof(wchar_t) <= 2)
1745 exit(1);
1746 exit(0);
1747 }],
1748 ac_cv_small_wchar_t="no",
1749 ac_cv_small_wchar_t="yes",
1750 AC_MSG_ERROR(failed to compile test program))])
1751 AC_MSG_RESULT($ac_cv_small_wchar_t)
1752 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1753 AC_DEFINE(SMALL_WCHAR_T)
1754 fi
1755
Bram Moolenaar071d4272004-06-13 20:20:40 +00001756 fi
1757fi
1758
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001759test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001760
1761AC_MSG_CHECKING(--enable-gui argument)
1762AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001763 [ --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 +00001764
1765dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1766dnl Do not use character classes for portability with old tools.
1767enable_gui_canon=`echo "_$enable_gui" | \
1768 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1769
1770dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001771SKIP_GTK2=YES
1772SKIP_GNOME=YES
1773SKIP_MOTIF=YES
1774SKIP_ATHENA=YES
1775SKIP_NEXTAW=YES
1776SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777SKIP_CARBON=YES
1778GUITYPE=NONE
1779
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001780if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001781 SKIP_PHOTON=
1782 case "$enable_gui_canon" in
1783 no) AC_MSG_RESULT(no GUI support)
1784 SKIP_PHOTON=YES ;;
1785 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1786 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1787 photon) AC_MSG_RESULT(Photon GUI support) ;;
1788 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1789 SKIP_PHOTON=YES ;;
1790 esac
1791
1792elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1793 SKIP_CARBON=
1794 case "$enable_gui_canon" in
1795 no) AC_MSG_RESULT(no GUI support)
1796 SKIP_CARBON=YES ;;
1797 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001798 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1799 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001800 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1801 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1802 SKIP_CARBON=YES ;;
1803 esac
1804
1805else
1806
Bram Moolenaar071d4272004-06-13 20:20:40 +00001807 case "$enable_gui_canon" in
1808 no|none) AC_MSG_RESULT(no GUI support) ;;
1809 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001810 SKIP_GTK2=
1811 SKIP_GNOME=
1812 SKIP_MOTIF=
1813 SKIP_ATHENA=
1814 SKIP_NEXTAW=
1815 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001816 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001817 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001818 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1819 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001820 SKIP_GTK2=;;
1821 motif) AC_MSG_RESULT(Motif GUI support)
1822 SKIP_MOTIF=;;
1823 athena) AC_MSG_RESULT(Athena GUI support)
1824 SKIP_ATHENA=;;
1825 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1826 SKIP_NEXTAW=;;
1827 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1828 esac
1829
1830fi
1831
Bram Moolenaar071d4272004-06-13 20:20:40 +00001832if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1833 -a "$enable_gui_canon" != "gnome2"; then
1834 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1835 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001836 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837 , enable_gtk2_check="yes")
1838 AC_MSG_RESULT($enable_gtk2_check)
1839 if test "x$enable_gtk2_check" = "xno"; then
1840 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001841 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842 fi
1843fi
1844
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001845if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001846 AC_MSG_CHECKING(whether or not to look for GNOME)
1847 AC_ARG_ENABLE(gnome-check,
1848 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1849 , enable_gnome_check="no")
1850 AC_MSG_RESULT($enable_gnome_check)
1851 if test "x$enable_gnome_check" = "xno"; then
1852 SKIP_GNOME=YES
1853 fi
1854fi
1855
1856if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1857 AC_MSG_CHECKING(whether or not to look for Motif)
1858 AC_ARG_ENABLE(motif-check,
1859 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1860 , enable_motif_check="yes")
1861 AC_MSG_RESULT($enable_motif_check)
1862 if test "x$enable_motif_check" = "xno"; then
1863 SKIP_MOTIF=YES
1864 fi
1865fi
1866
1867if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1868 AC_MSG_CHECKING(whether or not to look for Athena)
1869 AC_ARG_ENABLE(athena-check,
1870 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1871 , enable_athena_check="yes")
1872 AC_MSG_RESULT($enable_athena_check)
1873 if test "x$enable_athena_check" = "xno"; then
1874 SKIP_ATHENA=YES
1875 fi
1876fi
1877
1878if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1879 AC_MSG_CHECKING(whether or not to look for neXtaw)
1880 AC_ARG_ENABLE(nextaw-check,
1881 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1882 , enable_nextaw_check="yes")
1883 AC_MSG_RESULT($enable_nextaw_check);
1884 if test "x$enable_nextaw_check" = "xno"; then
1885 SKIP_NEXTAW=YES
1886 fi
1887fi
1888
1889if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1890 AC_MSG_CHECKING(whether or not to look for Carbon)
1891 AC_ARG_ENABLE(carbon-check,
1892 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1893 , enable_carbon_check="yes")
1894 AC_MSG_RESULT($enable_carbon_check);
1895 if test "x$enable_carbon_check" = "xno"; then
1896 SKIP_CARBON=YES
1897 fi
1898fi
1899
Bram Moolenaar843ee412004-06-30 16:16:41 +00001900
Bram Moolenaar071d4272004-06-13 20:20:40 +00001901if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1902 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001903 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001904 AC_MSG_RESULT(yes);
1905 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001906 if test "$VIMNAME" = "vim"; then
1907 VIMNAME=Vim
1908 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001909
Bram Moolenaar164fca32010-07-14 13:58:07 +02001910 if test "x$MACARCH" = "xboth"; then
1911 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1912 else
1913 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1914 fi
1915
Bram Moolenaar14716812006-05-04 21:54:08 +00001916 dnl Default install directory is not /usr/local
1917 if test x$prefix = xNONE; then
1918 prefix=/Applications
1919 fi
1920
1921 dnl Sorry for the hard coded default
1922 datadir='${prefix}/Vim.app/Contents/Resources'
1923
Bram Moolenaar071d4272004-06-13 20:20:40 +00001924 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001925 SKIP_GTK2=YES;
1926 SKIP_GNOME=YES;
1927 SKIP_MOTIF=YES;
1928 SKIP_ATHENA=YES;
1929 SKIP_NEXTAW=YES;
1930 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001931 SKIP_CARBON=YES
1932fi
1933
Bram Moolenaar071d4272004-06-13 20:20:40 +00001934dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001935dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001936dnl
1937dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001938dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001939dnl
1940AC_DEFUN(AM_PATH_GTK,
1941[
1942 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1943 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001944 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001945 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1946 no_gtk=""
1947 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1948 && $PKG_CONFIG --exists gtk+-2.0; then
1949 {
1950 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1951 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1952 dnl something like that.
1953 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001954 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001955 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1956 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1957 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1958 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1959 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1960 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1961 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1962 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001963 else
1964 no_gtk=yes
1965 fi
1966
1967 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1968 {
1969 ac_save_CFLAGS="$CFLAGS"
1970 ac_save_LIBS="$LIBS"
1971 CFLAGS="$CFLAGS $GTK_CFLAGS"
1972 LIBS="$LIBS $GTK_LIBS"
1973
1974 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001975 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001976 dnl
1977 rm -f conf.gtktest
1978 AC_TRY_RUN([
1979#include <gtk/gtk.h>
1980#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001981#if STDC_HEADERS
1982# include <stdlib.h>
1983# include <stddef.h>
1984#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001985
1986int
1987main ()
1988{
1989int major, minor, micro;
1990char *tmp_version;
1991
1992system ("touch conf.gtktest");
1993
1994/* HP/UX 9 (%@#!) writes to sscanf strings */
1995tmp_version = g_strdup("$min_gtk_version");
1996if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1997 printf("%s, bad version string\n", "$min_gtk_version");
1998 exit(1);
1999 }
2000
2001if ((gtk_major_version > major) ||
2002 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2003 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2004 (gtk_micro_version >= micro)))
2005{
2006 return 0;
2007}
2008return 1;
2009}
2010],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2011 CFLAGS="$ac_save_CFLAGS"
2012 LIBS="$ac_save_LIBS"
2013 }
2014 fi
2015 if test "x$no_gtk" = x ; then
2016 if test "x$enable_gtktest" = "xyes"; then
2017 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2018 else
2019 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2020 fi
2021 ifelse([$2], , :, [$2])
2022 else
2023 {
2024 AC_MSG_RESULT(no)
2025 GTK_CFLAGS=""
2026 GTK_LIBS=""
2027 ifelse([$3], , :, [$3])
2028 }
2029 fi
2030 }
2031 else
2032 GTK_CFLAGS=""
2033 GTK_LIBS=""
2034 ifelse([$3], , :, [$3])
2035 fi
2036 AC_SUBST(GTK_CFLAGS)
2037 AC_SUBST(GTK_LIBS)
2038 rm -f conf.gtktest
2039])
2040
2041dnl ---------------------------------------------------------------------------
2042dnl gnome
2043dnl ---------------------------------------------------------------------------
2044AC_DEFUN([GNOME_INIT_HOOK],
2045[
2046 AC_SUBST(GNOME_LIBS)
2047 AC_SUBST(GNOME_LIBDIR)
2048 AC_SUBST(GNOME_INCLUDEDIR)
2049
2050 AC_ARG_WITH(gnome-includes,
2051 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2052 [CFLAGS="$CFLAGS -I$withval"]
2053 )
2054
2055 AC_ARG_WITH(gnome-libs,
2056 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2057 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2058 )
2059
2060 AC_ARG_WITH(gnome,
2061 [ --with-gnome Specify prefix for GNOME files],
2062 if test x$withval = xyes; then
2063 want_gnome=yes
2064 ifelse([$1], [], :, [$1])
2065 else
2066 if test "x$withval" = xno; then
2067 want_gnome=no
2068 else
2069 want_gnome=yes
2070 LDFLAGS="$LDFLAGS -L$withval/lib"
2071 CFLAGS="$CFLAGS -I$withval/include"
2072 gnome_prefix=$withval/lib
2073 fi
2074 fi,
2075 want_gnome=yes)
2076
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002077 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002078 {
2079 AC_MSG_CHECKING(for libgnomeui-2.0)
2080 if $PKG_CONFIG --exists libgnomeui-2.0; then
2081 AC_MSG_RESULT(yes)
2082 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2083 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2084 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002085
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002086 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2087 dnl This might not be the right way but it works for me...
2088 AC_MSG_CHECKING(for FreeBSD)
2089 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2090 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002091 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002092 GNOME_LIBS="$GNOME_LIBS -pthread"
2093 else
2094 AC_MSG_RESULT(no)
2095 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002096 $1
2097 else
2098 AC_MSG_RESULT(not found)
2099 if test "x$2" = xfail; then
2100 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2101 fi
2102 fi
2103 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002104 fi
2105])
2106
2107AC_DEFUN([GNOME_INIT],[
2108 GNOME_INIT_HOOK([],fail)
2109])
2110
2111
2112dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002113dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002115if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002116
2117 AC_MSG_CHECKING(--disable-gtktest argument)
2118 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2119 , enable_gtktest=yes)
2120 if test "x$enable_gtktest" = "xyes" ; then
2121 AC_MSG_RESULT(gtk test enabled)
2122 else
2123 AC_MSG_RESULT(gtk test disabled)
2124 fi
2125
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 if test "X$PKG_CONFIG" = "X"; then
2127 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2128 fi
2129
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002130 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002131 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2132 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002133 AM_PATH_GTK(2.2.0,
2134 [GUI_LIB_LOC="$GTK_LIBDIR"
2135 GTK_LIBNAME="$GTK_LIBS"
2136 GUI_INC_LOC="$GTK_CFLAGS"], )
2137 if test "x$GTK_CFLAGS" != "x"; then
2138 SKIP_ATHENA=YES
2139 SKIP_NEXTAW=YES
2140 SKIP_MOTIF=YES
2141 GUITYPE=GTK
2142 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002143 fi
2144 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002145 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002146 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2147 || test "0$gtk_minor_version" -ge 2; then
2148 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2149 fi
2150 dnl
2151 dnl if GTK exists, then check for GNOME.
2152 dnl
2153 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002154 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002155 GNOME_INIT_HOOK([have_gnome=yes])
2156 if test "x$have_gnome" = xyes ; then
2157 AC_DEFINE(FEAT_GUI_GNOME)
2158 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2159 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002160 fi
2161 }
2162 fi
2163 fi
2164fi
2165
2166dnl Check for Motif include files location.
2167dnl The LAST one found is used, this makes the highest version to be used,
2168dnl e.g. when Motif1.2 and Motif2.0 are both present.
2169
2170if test -z "$SKIP_MOTIF"; then
2171 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"
2172 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2173 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2174
2175 AC_MSG_CHECKING(for location of Motif GUI includes)
2176 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2177 GUI_INC_LOC=
2178 for try in $gui_includes; do
2179 if test -f "$try/Xm/Xm.h"; then
2180 GUI_INC_LOC=$try
2181 fi
2182 done
2183 if test -n "$GUI_INC_LOC"; then
2184 if test "$GUI_INC_LOC" = /usr/include; then
2185 GUI_INC_LOC=
2186 AC_MSG_RESULT(in default path)
2187 else
2188 AC_MSG_RESULT($GUI_INC_LOC)
2189 fi
2190 else
2191 AC_MSG_RESULT(<not found>)
2192 SKIP_MOTIF=YES
2193 fi
2194fi
2195
2196dnl Check for Motif library files location. In the same order as the include
2197dnl files, to avoid a mixup if several versions are present
2198
2199if test -z "$SKIP_MOTIF"; then
2200 AC_MSG_CHECKING(--with-motif-lib argument)
2201 AC_ARG_WITH(motif-lib,
2202 [ --with-motif-lib=STRING Library for Motif ],
2203 [ MOTIF_LIBNAME="${withval}" ] )
2204
2205 if test -n "$MOTIF_LIBNAME"; then
2206 AC_MSG_RESULT($MOTIF_LIBNAME)
2207 GUI_LIB_LOC=
2208 else
2209 AC_MSG_RESULT(no)
2210
2211 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2212 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2213
2214 AC_MSG_CHECKING(for location of Motif GUI libs)
2215 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"
2216 GUI_LIB_LOC=
2217 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002218 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002219 if test -f "$libtry"; then
2220 GUI_LIB_LOC=$try
2221 fi
2222 done
2223 done
2224 if test -n "$GUI_LIB_LOC"; then
2225 dnl Remove /usr/lib, it causes trouble on some systems
2226 if test "$GUI_LIB_LOC" = /usr/lib; then
2227 GUI_LIB_LOC=
2228 AC_MSG_RESULT(in default path)
2229 else
2230 if test -n "$GUI_LIB_LOC"; then
2231 AC_MSG_RESULT($GUI_LIB_LOC)
2232 if test "`(uname) 2>/dev/null`" = SunOS &&
2233 uname -r | grep '^5' >/dev/null; then
2234 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2235 fi
2236 fi
2237 fi
2238 MOTIF_LIBNAME=-lXm
2239 else
2240 AC_MSG_RESULT(<not found>)
2241 SKIP_MOTIF=YES
2242 fi
2243 fi
2244fi
2245
2246if test -z "$SKIP_MOTIF"; then
2247 SKIP_ATHENA=YES
2248 SKIP_NEXTAW=YES
2249 GUITYPE=MOTIF
2250 AC_SUBST(MOTIF_LIBNAME)
2251fi
2252
2253dnl Check if the Athena files can be found
2254
2255GUI_X_LIBS=
2256
2257if test -z "$SKIP_ATHENA"; then
2258 AC_MSG_CHECKING(if Athena header files can be found)
2259 cflags_save=$CFLAGS
2260 CFLAGS="$CFLAGS $X_CFLAGS"
2261 AC_TRY_COMPILE([
2262#include <X11/Intrinsic.h>
2263#include <X11/Xaw/Paned.h>], ,
2264 AC_MSG_RESULT(yes),
2265 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2266 CFLAGS=$cflags_save
2267fi
2268
2269if test -z "$SKIP_ATHENA"; then
2270 GUITYPE=ATHENA
2271fi
2272
2273if test -z "$SKIP_NEXTAW"; then
2274 AC_MSG_CHECKING(if neXtaw header files can be found)
2275 cflags_save=$CFLAGS
2276 CFLAGS="$CFLAGS $X_CFLAGS"
2277 AC_TRY_COMPILE([
2278#include <X11/Intrinsic.h>
2279#include <X11/neXtaw/Paned.h>], ,
2280 AC_MSG_RESULT(yes),
2281 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2282 CFLAGS=$cflags_save
2283fi
2284
2285if test -z "$SKIP_NEXTAW"; then
2286 GUITYPE=NEXTAW
2287fi
2288
2289if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2290 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2291 dnl Avoid adding it when it twice
2292 if test -n "$GUI_INC_LOC"; then
2293 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2294 fi
2295 if test -n "$GUI_LIB_LOC"; then
2296 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2297 fi
2298
2299 dnl Check for -lXext and then for -lXmu
2300 ldflags_save=$LDFLAGS
2301 LDFLAGS="$X_LIBS $LDFLAGS"
2302 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2303 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2304 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2305 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2306 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2307 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2308 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2309 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2310 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2311 if test -z "$SKIP_MOTIF"; then
2312 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2313 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2314 fi
2315 LDFLAGS=$ldflags_save
2316
2317 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2318 AC_MSG_CHECKING(for extra X11 defines)
2319 NARROW_PROTO=
2320 rm -fr conftestdir
2321 if mkdir conftestdir; then
2322 cd conftestdir
2323 cat > Imakefile <<'EOF'
2324acfindx:
2325 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2326EOF
2327 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2328 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2329 fi
2330 cd ..
2331 rm -fr conftestdir
2332 fi
2333 if test -z "$NARROW_PROTO"; then
2334 AC_MSG_RESULT(no)
2335 else
2336 AC_MSG_RESULT($NARROW_PROTO)
2337 fi
2338 AC_SUBST(NARROW_PROTO)
2339fi
2340
2341dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2342dnl use the X11 include path
2343if test "$enable_xsmp" = "yes"; then
2344 cppflags_save=$CPPFLAGS
2345 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2346 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2347 CPPFLAGS=$cppflags_save
2348fi
2349
2350
Bram Moolenaare667c952010-07-05 22:57:59 +02002351if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002352 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2353 cppflags_save=$CPPFLAGS
2354 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2355 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2356
2357 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2358 if test ! "$enable_xim" = "no"; then
2359 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2360 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2361 AC_MSG_RESULT(yes),
2362 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2363 fi
2364 CPPFLAGS=$cppflags_save
2365
2366 dnl automatically enable XIM when hangul input isn't enabled
2367 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2368 -a "x$GUITYPE" != "xNONE" ; then
2369 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2370 enable_xim="yes"
2371 fi
2372fi
2373
2374if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2375 cppflags_save=$CPPFLAGS
2376 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002377dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2378 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2379 AC_TRY_COMPILE([
2380#include <X11/Intrinsic.h>
2381#include <X11/Xmu/Editres.h>],
2382 [int i; i = 0;],
2383 AC_MSG_RESULT(yes)
2384 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2385 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002386 CPPFLAGS=$cppflags_save
2387fi
2388
2389dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2390if test -z "$SKIP_MOTIF"; then
2391 cppflags_save=$CPPFLAGS
2392 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002393 if test "$zOSUnix" = "yes"; then
2394 xmheader="Xm/Xm.h"
2395 else
2396 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2397 Xm/UnhighlightT.h Xm/Notebook.h"
2398 fi
2399 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002400
Bram Moolenaar77c19352012-06-13 19:19:41 +02002401 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002402 dnl Solaris uses XpmAttributes_21, very annoying.
2403 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2404 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2405 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2406 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2407 )
2408 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002409 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002410 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002411 CPPFLAGS=$cppflags_save
2412fi
2413
2414if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2415 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2416 enable_xim="no"
2417fi
2418if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2419 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2420 enable_fontset="no"
2421fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002422if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002423 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2424 enable_fontset="no"
2425fi
2426
Bram Moolenaar071d4272004-06-13 20:20:40 +00002427if test -z "$SKIP_PHOTON"; then
2428 GUITYPE=PHOTONGUI
2429fi
2430
2431AC_SUBST(GUI_INC_LOC)
2432AC_SUBST(GUI_LIB_LOC)
2433AC_SUBST(GUITYPE)
2434AC_SUBST(GUI_X_LIBS)
2435
2436if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2437 AC_MSG_ERROR([cannot use workshop without Motif])
2438fi
2439
2440dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2441if test "$enable_xim" = "yes"; then
2442 AC_DEFINE(FEAT_XIM)
2443fi
2444if test "$enable_fontset" = "yes"; then
2445 AC_DEFINE(FEAT_XFONTSET)
2446fi
2447
2448
2449dnl ---------------------------------------------------------------------------
2450dnl end of GUI-checking
2451dnl ---------------------------------------------------------------------------
2452
2453
2454dnl Only really enable hangul input when GUI and XFONTSET are available
2455if test "$enable_hangulinput" = "yes"; then
2456 if test "x$GUITYPE" = "xNONE"; then
2457 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2458 enable_hangulinput=no
2459 else
2460 AC_DEFINE(FEAT_HANGULIN)
2461 HANGULIN_SRC=hangulin.c
2462 AC_SUBST(HANGULIN_SRC)
2463 HANGULIN_OBJ=objects/hangulin.o
2464 AC_SUBST(HANGULIN_OBJ)
2465 fi
2466fi
2467
2468dnl Checks for libraries and include files.
2469
Bram Moolenaar446cb832008-06-24 21:56:24 +00002470AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2471 [
2472 AC_RUN_IFELSE([[
2473#include "confdefs.h"
2474#include <ctype.h>
2475#if STDC_HEADERS
2476# include <stdlib.h>
2477# include <stddef.h>
2478#endif
2479main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2480 ]],[
2481 vim_cv_toupper_broken=yes
2482 ],[
2483 vim_cv_toupper_broken=no
2484 ],[
2485 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2486 ])])
2487
2488if test "x$vim_cv_toupper_broken" = "xyes" ; then
2489 AC_DEFINE(BROKEN_TOUPPER)
2490fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002491
2492AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002493AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002494 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2495 AC_MSG_RESULT(no))
2496
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002497AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2498AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2499 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2500 AC_MSG_RESULT(no))
2501
Bram Moolenaar071d4272004-06-13 20:20:40 +00002502dnl Checks for header files.
2503AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2504dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2505if test "$HAS_ELF" = 1; then
2506 AC_CHECK_LIB(elf, main)
2507fi
2508
2509AC_HEADER_DIRENT
2510
Bram Moolenaar071d4272004-06-13 20:20:40 +00002511dnl If sys/wait.h is not found it might still exist but not be POSIX
2512dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2513if test $ac_cv_header_sys_wait_h = no; then
2514 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2515 AC_TRY_COMPILE([#include <sys/wait.h>],
2516 [union wait xx, yy; xx = yy],
2517 AC_MSG_RESULT(yes)
2518 AC_DEFINE(HAVE_SYS_WAIT_H)
2519 AC_DEFINE(HAVE_UNION_WAIT),
2520 AC_MSG_RESULT(no))
2521fi
2522
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002523AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2524 sys/select.h sys/utsname.h termcap.h fcntl.h \
2525 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2526 termio.h iconv.h inttypes.h langinfo.h math.h \
2527 unistd.h stropts.h errno.h sys/resource.h \
2528 sys/systeminfo.h locale.h sys/stream.h termios.h \
2529 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2530 utime.h sys/param.h libintl.h libgen.h \
2531 util/debug.h util/msg18n.h frame.h sys/acl.h \
2532 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002533
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002534dnl sys/ptem.h depends on sys/stream.h on Solaris
2535AC_CHECK_HEADERS(sys/ptem.h, [], [],
2536[#if defined HAVE_SYS_STREAM_H
2537# include <sys/stream.h>
2538#endif])
2539
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002540dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2541AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2542[#if defined HAVE_SYS_PARAM_H
2543# include <sys/param.h>
2544#endif])
2545
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002546
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002547dnl pthread_np.h may exist but can only be used after including pthread.h
2548AC_MSG_CHECKING([for pthread_np.h])
2549AC_TRY_COMPILE([
2550#include <pthread.h>
2551#include <pthread_np.h>],
2552 [int i; i = 0;],
2553 AC_MSG_RESULT(yes)
2554 AC_DEFINE(HAVE_PTHREAD_NP_H),
2555 AC_MSG_RESULT(no))
2556
Bram Moolenaare344bea2005-09-01 20:46:49 +00002557AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002558if test "x$MACOSX" = "xyes"; then
2559 dnl The strings.h file on OS/X contains a warning and nothing useful.
2560 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2561else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002562
2563dnl Check if strings.h and string.h can both be included when defined.
2564AC_MSG_CHECKING([if strings.h can be included after string.h])
2565cppflags_save=$CPPFLAGS
2566CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2567AC_TRY_COMPILE([
2568#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2569# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2570 /* but don't do it on AIX 5.1 (Uribarri) */
2571#endif
2572#ifdef HAVE_XM_XM_H
2573# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2574#endif
2575#ifdef HAVE_STRING_H
2576# include <string.h>
2577#endif
2578#if defined(HAVE_STRINGS_H)
2579# include <strings.h>
2580#endif
2581 ], [int i; i = 0;],
2582 AC_MSG_RESULT(yes),
2583 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2584 AC_MSG_RESULT(no))
2585CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002586fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002587
2588dnl Checks for typedefs, structures, and compiler characteristics.
2589AC_PROG_GCC_TRADITIONAL
2590AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002591AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592AC_TYPE_MODE_T
2593AC_TYPE_OFF_T
2594AC_TYPE_PID_T
2595AC_TYPE_SIZE_T
2596AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002597AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002598
Bram Moolenaar071d4272004-06-13 20:20:40 +00002599AC_HEADER_TIME
2600AC_CHECK_TYPE(ino_t, long)
2601AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002602AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002603
2604AC_MSG_CHECKING(for rlim_t)
2605if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2606 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2607else
2608 AC_EGREP_CPP(dnl
2609changequote(<<,>>)dnl
2610<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2611changequote([,]),
2612 [
2613#include <sys/types.h>
2614#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002615# include <stdlib.h>
2616# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002617#endif
2618#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002619# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002620#endif
2621 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2622 AC_MSG_RESULT($ac_cv_type_rlim_t)
2623fi
2624if test $ac_cv_type_rlim_t = no; then
2625 cat >> confdefs.h <<\EOF
2626#define rlim_t unsigned long
2627EOF
2628fi
2629
2630AC_MSG_CHECKING(for stack_t)
2631if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2632 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2633else
2634 AC_EGREP_CPP(stack_t,
2635 [
2636#include <sys/types.h>
2637#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002638# include <stdlib.h>
2639# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640#endif
2641#include <signal.h>
2642 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2643 AC_MSG_RESULT($ac_cv_type_stack_t)
2644fi
2645if test $ac_cv_type_stack_t = no; then
2646 cat >> confdefs.h <<\EOF
2647#define stack_t struct sigaltstack
2648EOF
2649fi
2650
2651dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2652AC_MSG_CHECKING(whether stack_t has an ss_base field)
2653AC_TRY_COMPILE([
2654#include <sys/types.h>
2655#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002656# include <stdlib.h>
2657# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002658#endif
2659#include <signal.h>
2660#include "confdefs.h"
2661 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2662 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2663 AC_MSG_RESULT(no))
2664
2665olibs="$LIBS"
2666AC_MSG_CHECKING(--with-tlib argument)
2667AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2668if test -n "$with_tlib"; then
2669 AC_MSG_RESULT($with_tlib)
2670 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002671 AC_MSG_CHECKING(for linking with $with_tlib library)
2672 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2673 dnl Need to check for tgetent() below.
2674 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002675else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002676 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2678 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002679 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002680 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681 dnl Older versions of ncurses have bugs, get a new one!
2682 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002683 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002684 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002685 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2686 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002687 esac
2688 for libname in $tlibs; do
2689 AC_CHECK_LIB(${libname}, tgetent,,)
2690 if test "x$olibs" != "x$LIBS"; then
2691 dnl It's possible that a library is found but it doesn't work
2692 dnl e.g., shared library that cannot be found
2693 dnl compile and run a test program to be sure
2694 AC_TRY_RUN([
2695#ifdef HAVE_TERMCAP_H
2696# include <termcap.h>
2697#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002698#if STDC_HEADERS
2699# include <stdlib.h>
2700# include <stddef.h>
2701#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002702main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2703 res="OK", res="FAIL", res="FAIL")
2704 if test "$res" = "OK"; then
2705 break
2706 fi
2707 AC_MSG_RESULT($libname library is not usable)
2708 LIBS="$olibs"
2709 fi
2710 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002711 if test "x$olibs" = "x$LIBS"; then
2712 AC_MSG_RESULT(no terminal library found)
2713 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002714fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002715
2716if test "x$olibs" = "x$LIBS"; then
2717 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002718 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002719 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2720 AC_MSG_RESULT(yes),
2721 AC_MSG_ERROR([NOT FOUND!
2722 You need to install a terminal library; for example ncurses.
2723 Or specify the name of the library with --with-tlib.]))
2724fi
2725
Bram Moolenaar446cb832008-06-24 21:56:24 +00002726AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2727 [
2728 AC_RUN_IFELSE([[
2729#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002730#ifdef HAVE_TERMCAP_H
2731# include <termcap.h>
2732#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002733#ifdef HAVE_STRING_H
2734# include <string.h>
2735#endif
2736#if STDC_HEADERS
2737# include <stdlib.h>
2738# include <stddef.h>
2739#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002740main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002741{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2742 ]],[
2743 vim_cv_terminfo=no
2744 ],[
2745 vim_cv_terminfo=yes
2746 ],[
2747 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2748 ])
2749 ])
2750
2751if test "x$vim_cv_terminfo" = "xyes" ; then
2752 AC_DEFINE(TERMINFO)
2753fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002754
2755if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002756 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2757 [
2758 AC_RUN_IFELSE([[
2759#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002760#ifdef HAVE_TERMCAP_H
2761# include <termcap.h>
2762#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002763#if STDC_HEADERS
2764# include <stdlib.h>
2765# include <stddef.h>
2766#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002767main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002768{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2769 ]],[
2770 vim_cv_tgent=zero
2771 ],[
2772 vim_cv_tgent=non-zero
2773 ],[
2774 AC_MSG_ERROR(failed to compile test program.)
2775 ])
2776 ])
2777
2778 if test "x$vim_cv_tgent" = "xzero" ; then
2779 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2780 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002781fi
2782
2783AC_MSG_CHECKING(whether termcap.h contains ospeed)
2784AC_TRY_LINK([
2785#ifdef HAVE_TERMCAP_H
2786# include <termcap.h>
2787#endif
2788 ], [ospeed = 20000],
2789 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2790 [AC_MSG_RESULT(no)
2791 AC_MSG_CHECKING(whether ospeed can be extern)
2792 AC_TRY_LINK([
2793#ifdef HAVE_TERMCAP_H
2794# include <termcap.h>
2795#endif
2796extern short ospeed;
2797 ], [ospeed = 20000],
2798 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2799 AC_MSG_RESULT(no))]
2800 )
2801
2802AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2803AC_TRY_LINK([
2804#ifdef HAVE_TERMCAP_H
2805# include <termcap.h>
2806#endif
2807 ], [if (UP == 0 && BC == 0) PC = 1],
2808 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2809 [AC_MSG_RESULT(no)
2810 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2811 AC_TRY_LINK([
2812#ifdef HAVE_TERMCAP_H
2813# include <termcap.h>
2814#endif
2815extern char *UP, *BC, PC;
2816 ], [if (UP == 0 && BC == 0) PC = 1],
2817 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2818 AC_MSG_RESULT(no))]
2819 )
2820
2821AC_MSG_CHECKING(whether tputs() uses outfuntype)
2822AC_TRY_COMPILE([
2823#ifdef HAVE_TERMCAP_H
2824# include <termcap.h>
2825#endif
2826 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2827 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2828 AC_MSG_RESULT(no))
2829
2830dnl On some SCO machines sys/select redefines struct timeval
2831AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2832AC_TRY_COMPILE([
2833#include <sys/types.h>
2834#include <sys/time.h>
2835#include <sys/select.h>], ,
2836 AC_MSG_RESULT(yes)
2837 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2838 AC_MSG_RESULT(no))
2839
2840dnl AC_DECL_SYS_SIGLIST
2841
2842dnl Checks for pty.c (copied from screen) ==========================
2843AC_MSG_CHECKING(for /dev/ptc)
2844if test -r /dev/ptc; then
2845 AC_DEFINE(HAVE_DEV_PTC)
2846 AC_MSG_RESULT(yes)
2847else
2848 AC_MSG_RESULT(no)
2849fi
2850
2851AC_MSG_CHECKING(for SVR4 ptys)
2852if test -c /dev/ptmx ; then
2853 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2854 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2855 AC_MSG_RESULT(no))
2856else
2857 AC_MSG_RESULT(no)
2858fi
2859
2860AC_MSG_CHECKING(for ptyranges)
2861if test -d /dev/ptym ; then
2862 pdir='/dev/ptym'
2863else
2864 pdir='/dev'
2865fi
2866dnl SCO uses ptyp%d
2867AC_EGREP_CPP(yes,
2868[#ifdef M_UNIX
2869 yes;
2870#endif
2871 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2872dnl if test -c /dev/ptyp19; then
2873dnl ptys=`echo /dev/ptyp??`
2874dnl else
2875dnl ptys=`echo $pdir/pty??`
2876dnl fi
2877if test "$ptys" != "$pdir/pty??" ; then
2878 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2879 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2880 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2881 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2882 AC_MSG_RESULT([$p0 / $p1])
2883else
2884 AC_MSG_RESULT([don't know])
2885fi
2886
2887dnl **** pty mode/group handling ****
2888dnl
2889dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002890rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002891AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2892 [
2893 AC_RUN_IFELSE([[
2894#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002895#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002896#if STDC_HEADERS
2897# include <stdlib.h>
2898# include <stddef.h>
2899#endif
2900#ifdef HAVE_UNISTD_H
2901#include <unistd.h>
2902#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002903#include <sys/stat.h>
2904#include <stdio.h>
2905main()
2906{
2907 struct stat sb;
2908 char *x,*ttyname();
2909 int om, m;
2910 FILE *fp;
2911
2912 if (!(x = ttyname(0))) exit(1);
2913 if (stat(x, &sb)) exit(1);
2914 om = sb.st_mode;
2915 if (om & 002) exit(0);
2916 m = system("mesg y");
2917 if (m == -1 || m == 127) exit(1);
2918 if (stat(x, &sb)) exit(1);
2919 m = sb.st_mode;
2920 if (chmod(x, om)) exit(1);
2921 if (m & 002) exit(0);
2922 if (sb.st_gid == getgid()) exit(1);
2923 if (!(fp=fopen("conftest_grp", "w")))
2924 exit(1);
2925 fprintf(fp, "%d\n", sb.st_gid);
2926 fclose(fp);
2927 exit(0);
2928}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002929 ]],[
2930 if test -f conftest_grp; then
2931 vim_cv_tty_group=`cat conftest_grp`
2932 if test "x$vim_cv_tty_mode" = "x" ; then
2933 vim_cv_tty_mode=0620
2934 fi
2935 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2936 else
2937 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002938 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002939 fi
2940 ],[
2941 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002942 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002943 ],[
2944 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2945 ])
2946 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002947rm -f conftest_grp
2948
Bram Moolenaar446cb832008-06-24 21:56:24 +00002949if test "x$vim_cv_tty_group" != "xworld" ; then
2950 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2951 if test "x$vim_cv_tty_mode" = "x" ; then
2952 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2953 else
2954 AC_DEFINE(PTYMODE, 0620)
2955 fi
2956fi
2957
Bram Moolenaar071d4272004-06-13 20:20:40 +00002958dnl Checks for library functions. ===================================
2959
2960AC_TYPE_SIGNAL
2961
2962dnl find out what to use at the end of a signal function
2963if test $ac_cv_type_signal = void; then
2964 AC_DEFINE(SIGRETURN, [return])
2965else
2966 AC_DEFINE(SIGRETURN, [return 0])
2967fi
2968
2969dnl check if struct sigcontext is defined (used for SGI only)
2970AC_MSG_CHECKING(for struct sigcontext)
2971AC_TRY_COMPILE([
2972#include <signal.h>
2973test_sig()
2974{
2975 struct sigcontext *scont;
2976 scont = (struct sigcontext *)0;
2977 return 1;
2978} ], ,
2979 AC_MSG_RESULT(yes)
2980 AC_DEFINE(HAVE_SIGCONTEXT),
2981 AC_MSG_RESULT(no))
2982
2983dnl tricky stuff: try to find out if getcwd() is implemented with
2984dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002985AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2986 [
2987 AC_RUN_IFELSE([[
2988#include "confdefs.h"
2989#ifdef HAVE_UNISTD_H
2990#include <unistd.h>
2991#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002992char *dagger[] = { "IFS=pwd", 0 };
2993main()
2994{
2995 char buffer[500];
2996 extern char **environ;
2997 environ = dagger;
2998 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002999}
3000 ]],[
3001 vim_cv_getcwd_broken=no
3002 ],[
3003 vim_cv_getcwd_broken=yes
3004 ],[
3005 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3006 ])
3007 ])
3008
3009if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3010 AC_DEFINE(BAD_GETCWD)
3011fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012
Bram Moolenaar25153e12010-02-24 14:47:08 +01003013dnl Check for functions in one big call, to reduce the size of configure.
3014dnl Can only be used for functions that do not require any include.
3015AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003016 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003017 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003018 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003019 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003020 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3021 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003022AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003023
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003024dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3025dnl appropriate, so that off_t is 64 bits when needed.
3026AC_SYS_LARGEFILE
3027
Bram Moolenaar071d4272004-06-13 20:20:40 +00003028dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3029AC_MSG_CHECKING(for st_blksize)
3030AC_TRY_COMPILE(
3031[#include <sys/types.h>
3032#include <sys/stat.h>],
3033[ struct stat st;
3034 int n;
3035
3036 stat("/", &st);
3037 n = (int)st.st_blksize;],
3038 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3039 AC_MSG_RESULT(no))
3040
Bram Moolenaar446cb832008-06-24 21:56:24 +00003041AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3042 [
3043 AC_RUN_IFELSE([[
3044#include "confdefs.h"
3045#if STDC_HEADERS
3046# include <stdlib.h>
3047# include <stddef.h>
3048#endif
3049#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003050#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003051main() {struct stat st; exit(stat("configure/", &st) != 0); }
3052 ]],[
3053 vim_cv_stat_ignores_slash=yes
3054 ],[
3055 vim_cv_stat_ignores_slash=no
3056 ],[
3057 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3058 ])
3059 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003060
Bram Moolenaar446cb832008-06-24 21:56:24 +00003061if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3062 AC_DEFINE(STAT_IGNORES_SLASH)
3063fi
3064
Bram Moolenaar071d4272004-06-13 20:20:40 +00003065dnl Link with iconv for charset translation, if not found without library.
3066dnl check for iconv() requires including iconv.h
3067dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3068dnl has been installed.
3069AC_MSG_CHECKING(for iconv_open())
3070save_LIBS="$LIBS"
3071LIBS="$LIBS -liconv"
3072AC_TRY_LINK([
3073#ifdef HAVE_ICONV_H
3074# include <iconv.h>
3075#endif
3076 ], [iconv_open("fr", "to");],
3077 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3078 LIBS="$save_LIBS"
3079 AC_TRY_LINK([
3080#ifdef HAVE_ICONV_H
3081# include <iconv.h>
3082#endif
3083 ], [iconv_open("fr", "to");],
3084 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3085 AC_MSG_RESULT(no)))
3086
3087
3088AC_MSG_CHECKING(for nl_langinfo(CODESET))
3089AC_TRY_LINK([
3090#ifdef HAVE_LANGINFO_H
3091# include <langinfo.h>
3092#endif
3093], [char *cs = nl_langinfo(CODESET);],
3094 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3095 AC_MSG_RESULT(no))
3096
Bram Moolenaar446cb832008-06-24 21:56:24 +00003097dnl Need various functions for floating point support. Only enable
3098dnl floating point when they are all present.
3099AC_CHECK_LIB(m, strtod)
3100AC_MSG_CHECKING([for strtod() and other floating point functions])
3101AC_TRY_LINK([
3102#ifdef HAVE_MATH_H
3103# include <math.h>
3104#endif
3105#if STDC_HEADERS
3106# include <stdlib.h>
3107# include <stddef.h>
3108#endif
3109], [char *s; double d;
3110 d = strtod("1.1", &s);
3111 d = fabs(1.11);
3112 d = ceil(1.11);
3113 d = floor(1.11);
3114 d = log10(1.11);
3115 d = pow(1.11, 2.22);
3116 d = sqrt(1.11);
3117 d = sin(1.11);
3118 d = cos(1.11);
3119 d = atan(1.11);
3120 ],
3121 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3122 AC_MSG_RESULT(no))
3123
Bram Moolenaar071d4272004-06-13 20:20:40 +00003124dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3125dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003126dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003127AC_MSG_CHECKING(--disable-acl argument)
3128AC_ARG_ENABLE(acl,
3129 [ --disable-acl Don't check for ACL support.],
3130 , [enable_acl="yes"])
3131if test "$enable_acl" = "yes"; then
3132AC_MSG_RESULT(no)
3133AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3134 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3135 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3136
3137AC_MSG_CHECKING(for POSIX ACL support)
3138AC_TRY_LINK([
3139#include <sys/types.h>
3140#ifdef HAVE_SYS_ACL_H
3141# include <sys/acl.h>
3142#endif
3143acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3144 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3145 acl_free(acl);],
3146 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3147 AC_MSG_RESULT(no))
3148
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003149AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003150AC_MSG_CHECKING(for Solaris ACL support)
3151AC_TRY_LINK([
3152#ifdef HAVE_SYS_ACL_H
3153# include <sys/acl.h>
3154#endif], [acl("foo", GETACLCNT, 0, NULL);
3155 ],
3156 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003157 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003158
3159AC_MSG_CHECKING(for AIX ACL support)
3160AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003161#if STDC_HEADERS
3162# include <stdlib.h>
3163# include <stddef.h>
3164#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003165#ifdef HAVE_SYS_ACL_H
3166# include <sys/acl.h>
3167#endif
3168#ifdef HAVE_SYS_ACCESS_H
3169# include <sys/access.h>
3170#endif
3171#define _ALL_SOURCE
3172
3173#include <sys/stat.h>
3174
3175int aclsize;
3176struct acl *aclent;], [aclsize = sizeof(struct acl);
3177 aclent = (void *)malloc(aclsize);
3178 statacl("foo", STX_NORMAL, aclent, aclsize);
3179 ],
3180 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3181 AC_MSG_RESULT(no))
3182else
3183 AC_MSG_RESULT(yes)
3184fi
3185
3186AC_MSG_CHECKING(--disable-gpm argument)
3187AC_ARG_ENABLE(gpm,
3188 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3189 [enable_gpm="yes"])
3190
3191if test "$enable_gpm" = "yes"; then
3192 AC_MSG_RESULT(no)
3193 dnl Checking if gpm support can be compiled
3194 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3195 [olibs="$LIBS" ; LIBS="-lgpm"]
3196 AC_TRY_LINK(
3197 [#include <gpm.h>
3198 #include <linux/keyboard.h>],
3199 [Gpm_GetLibVersion(NULL);],
3200 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3201 dnl FEAT_MOUSE_GPM if mouse support is included
3202 [vi_cv_have_gpm=yes],
3203 [vi_cv_have_gpm=no])
3204 [LIBS="$olibs"]
3205 )
3206 if test $vi_cv_have_gpm = yes; then
3207 LIBS="$LIBS -lgpm"
3208 AC_DEFINE(HAVE_GPM)
3209 fi
3210else
3211 AC_MSG_RESULT(yes)
3212fi
3213
Bram Moolenaar446cb832008-06-24 21:56:24 +00003214AC_MSG_CHECKING(--disable-sysmouse argument)
3215AC_ARG_ENABLE(sysmouse,
3216 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3217 [enable_sysmouse="yes"])
3218
3219if test "$enable_sysmouse" = "yes"; then
3220 AC_MSG_RESULT(no)
3221 dnl Checking if sysmouse support can be compiled
3222 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3223 dnl defines FEAT_SYSMOUSE if mouse support is included
3224 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3225 AC_TRY_LINK(
3226 [#include <sys/consio.h>
3227 #include <signal.h>
3228 #include <sys/fbio.h>],
3229 [struct mouse_info mouse;
3230 mouse.operation = MOUSE_MODE;
3231 mouse.operation = MOUSE_SHOW;
3232 mouse.u.mode.mode = 0;
3233 mouse.u.mode.signal = SIGUSR2;],
3234 [vi_cv_have_sysmouse=yes],
3235 [vi_cv_have_sysmouse=no])
3236 )
3237 if test $vi_cv_have_sysmouse = yes; then
3238 AC_DEFINE(HAVE_SYSMOUSE)
3239 fi
3240else
3241 AC_MSG_RESULT(yes)
3242fi
3243
Bram Moolenaarf05da212009-11-17 16:13:15 +00003244dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3245AC_MSG_CHECKING(for FD_CLOEXEC)
3246AC_TRY_COMPILE(
3247[#if HAVE_FCNTL_H
3248# include <fcntl.h>
3249#endif],
3250[ int flag = FD_CLOEXEC;],
3251 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3252 AC_MSG_RESULT(not usable))
3253
Bram Moolenaar071d4272004-06-13 20:20:40 +00003254dnl rename needs to be checked separately to work on Nextstep with cc
3255AC_MSG_CHECKING(for rename)
3256AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3257 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3258 AC_MSG_RESULT(no))
3259
3260dnl sysctl() may exist but not the arguments we use
3261AC_MSG_CHECKING(for sysctl)
3262AC_TRY_COMPILE(
3263[#include <sys/types.h>
3264#include <sys/sysctl.h>],
3265[ int mib[2], r;
3266 size_t len;
3267
3268 mib[0] = CTL_HW;
3269 mib[1] = HW_USERMEM;
3270 len = sizeof(r);
3271 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3272 ],
3273 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3274 AC_MSG_RESULT(not usable))
3275
3276dnl sysinfo() may exist but not be Linux compatible
3277AC_MSG_CHECKING(for sysinfo)
3278AC_TRY_COMPILE(
3279[#include <sys/types.h>
3280#include <sys/sysinfo.h>],
3281[ struct sysinfo sinfo;
3282 int t;
3283
3284 (void)sysinfo(&sinfo);
3285 t = sinfo.totalram;
3286 ],
3287 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3288 AC_MSG_RESULT(not usable))
3289
Bram Moolenaar914572a2007-05-01 11:37:47 +00003290dnl struct sysinfo may have the mem_unit field or not
3291AC_MSG_CHECKING(for sysinfo.mem_unit)
3292AC_TRY_COMPILE(
3293[#include <sys/types.h>
3294#include <sys/sysinfo.h>],
3295[ struct sysinfo sinfo;
3296 sinfo.mem_unit = 1;
3297 ],
3298 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3299 AC_MSG_RESULT(no))
3300
Bram Moolenaar071d4272004-06-13 20:20:40 +00003301dnl sysconf() may exist but not support what we want to use
3302AC_MSG_CHECKING(for sysconf)
3303AC_TRY_COMPILE(
3304[#include <unistd.h>],
3305[ (void)sysconf(_SC_PAGESIZE);
3306 (void)sysconf(_SC_PHYS_PAGES);
3307 ],
3308 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3309 AC_MSG_RESULT(not usable))
3310
Bram Moolenaar914703b2010-05-31 21:59:46 +02003311AC_CHECK_SIZEOF([int])
3312AC_CHECK_SIZEOF([long])
3313AC_CHECK_SIZEOF([time_t])
3314AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003315
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003316dnl Make sure that uint32_t is really 32 bits unsigned.
3317AC_MSG_CHECKING([uint32_t is 32 bits])
3318AC_TRY_RUN([
3319#ifdef HAVE_STDINT_H
3320# include <stdint.h>
3321#endif
3322#ifdef HAVE_INTTYPES_H
3323# include <inttypes.h>
3324#endif
3325main() {
3326 uint32_t nr1 = (uint32_t)-1;
3327 uint32_t nr2 = (uint32_t)0xffffffffUL;
3328 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3329 exit(0);
3330}],
3331AC_MSG_RESULT(ok),
3332AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003333AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003334
Bram Moolenaar446cb832008-06-24 21:56:24 +00003335dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3336dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3337
Bram Moolenaar071d4272004-06-13 20:20:40 +00003338[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003339#include "confdefs.h"
3340#ifdef HAVE_STRING_H
3341# include <string.h>
3342#endif
3343#if STDC_HEADERS
3344# include <stdlib.h>
3345# include <stddef.h>
3346#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003347main() {
3348 char buf[10];
3349 strcpy(buf, "abcdefghi");
3350 mch_memmove(buf, buf + 2, 3);
3351 if (strncmp(buf, "ababcf", 6))
3352 exit(1);
3353 strcpy(buf, "abcdefghi");
3354 mch_memmove(buf + 2, buf, 3);
3355 if (strncmp(buf, "cdedef", 6))
3356 exit(1);
3357 exit(0); /* libc version works properly. */
3358}']
3359
Bram Moolenaar446cb832008-06-24 21:56:24 +00003360AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3361 [
3362 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3363 [
3364 vim_cv_memmove_handles_overlap=yes
3365 ],[
3366 vim_cv_memmove_handles_overlap=no
3367 ],[
3368 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3369 ])
3370 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003371
Bram Moolenaar446cb832008-06-24 21:56:24 +00003372if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3373 AC_DEFINE(USEMEMMOVE)
3374else
3375 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3376 [
3377 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3378 [
3379 vim_cv_bcopy_handles_overlap=yes
3380 ],[
3381 vim_cv_bcopy_handles_overlap=no
3382 ],[
3383 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3384 ])
3385 ])
3386
3387 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3388 AC_DEFINE(USEBCOPY)
3389 else
3390 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3391 [
3392 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3393 [
3394 vim_cv_memcpy_handles_overlap=yes
3395 ],[
3396 vim_cv_memcpy_handles_overlap=no
3397 ],[
3398 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3399 ])
3400 ])
3401
3402 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3403 AC_DEFINE(USEMEMCPY)
3404 fi
3405 fi
3406fi
3407
Bram Moolenaar071d4272004-06-13 20:20:40 +00003408
3409dnl Check for multibyte locale functions
3410dnl Find out if _Xsetlocale() is supported by libX11.
3411dnl Check if X_LOCALE should be defined.
3412
3413if test "$enable_multibyte" = "yes"; then
3414 cflags_save=$CFLAGS
3415 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003416 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003417 CFLAGS="$CFLAGS -I$x_includes"
3418 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3419 AC_MSG_CHECKING(whether X_LOCALE needed)
3420 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3421 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3422 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3423 AC_MSG_RESULT(no))
3424 fi
3425 CFLAGS=$cflags_save
3426 LDFLAGS=$ldflags_save
3427fi
3428
3429dnl Link with xpg4, it is said to make Korean locale working
3430AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3431
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003432dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003433dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003434dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003435dnl -t for typedefs (many ctags have this)
3436dnl -s for static functions (Elvis ctags only?)
3437dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3438dnl -i+m to test for older Exuberant ctags
3439AC_MSG_CHECKING(how to create tags)
3440test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003441if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003442 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003443elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3444 TAGPRG="exctags -I INIT+ --fields=+S"
3445elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3446 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003447else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003448 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003449 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3450 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3451 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3452 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3453 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3454 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3455 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3456fi
3457test -f tags.save && mv tags.save tags
3458AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3459
3460dnl Check how we can run man with a section number
3461AC_MSG_CHECKING(how to run man with a section nr)
3462MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003463(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 +00003464AC_MSG_RESULT($MANDEF)
3465if test "$MANDEF" = "man -s"; then
3466 AC_DEFINE(USEMAN_S)
3467fi
3468
3469dnl Check if gettext() is working and if it needs -lintl
3470AC_MSG_CHECKING(--disable-nls argument)
3471AC_ARG_ENABLE(nls,
3472 [ --disable-nls Don't support NLS (gettext()).], ,
3473 [enable_nls="yes"])
3474
3475if test "$enable_nls" = "yes"; then
3476 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003477
3478 INSTALL_LANGS=install-languages
3479 AC_SUBST(INSTALL_LANGS)
3480 INSTALL_TOOL_LANGS=install-tool-languages
3481 AC_SUBST(INSTALL_TOOL_LANGS)
3482
Bram Moolenaar071d4272004-06-13 20:20:40 +00003483 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3484 AC_MSG_CHECKING([for NLS])
3485 if test -f po/Makefile; then
3486 have_gettext="no"
3487 if test -n "$MSGFMT"; then
3488 AC_TRY_LINK(
3489 [#include <libintl.h>],
3490 [gettext("Test");],
3491 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3492 olibs=$LIBS
3493 LIBS="$LIBS -lintl"
3494 AC_TRY_LINK(
3495 [#include <libintl.h>],
3496 [gettext("Test");],
3497 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3498 AC_MSG_RESULT([gettext() doesn't work]);
3499 LIBS=$olibs))
3500 else
3501 AC_MSG_RESULT([msgfmt not found - disabled]);
3502 fi
3503 if test $have_gettext = "yes"; then
3504 AC_DEFINE(HAVE_GETTEXT)
3505 MAKEMO=yes
3506 AC_SUBST(MAKEMO)
3507 dnl this was added in GNU gettext 0.10.36
3508 AC_CHECK_FUNCS(bind_textdomain_codeset)
3509 dnl _nl_msg_cat_cntr is required for GNU gettext
3510 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3511 AC_TRY_LINK(
3512 [#include <libintl.h>
3513 extern int _nl_msg_cat_cntr;],
3514 [++_nl_msg_cat_cntr;],
3515 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3516 AC_MSG_RESULT([no]))
3517 fi
3518 else
3519 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3520 fi
3521else
3522 AC_MSG_RESULT(yes)
3523fi
3524
3525dnl Check for dynamic linking loader
3526AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3527if test x${DLL} = xdlfcn.h; then
3528 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3529 AC_MSG_CHECKING([for dlopen()])
3530 AC_TRY_LINK(,[
3531 extern void* dlopen();
3532 dlopen();
3533 ],
3534 AC_MSG_RESULT(yes);
3535 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3536 AC_MSG_RESULT(no);
3537 AC_MSG_CHECKING([for dlopen() in -ldl])
3538 olibs=$LIBS
3539 LIBS="$LIBS -ldl"
3540 AC_TRY_LINK(,[
3541 extern void* dlopen();
3542 dlopen();
3543 ],
3544 AC_MSG_RESULT(yes);
3545 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3546 AC_MSG_RESULT(no);
3547 LIBS=$olibs))
3548 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3549 dnl ick :-)
3550 AC_MSG_CHECKING([for dlsym()])
3551 AC_TRY_LINK(,[
3552 extern void* dlsym();
3553 dlsym();
3554 ],
3555 AC_MSG_RESULT(yes);
3556 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3557 AC_MSG_RESULT(no);
3558 AC_MSG_CHECKING([for dlsym() in -ldl])
3559 olibs=$LIBS
3560 LIBS="$LIBS -ldl"
3561 AC_TRY_LINK(,[
3562 extern void* dlsym();
3563 dlsym();
3564 ],
3565 AC_MSG_RESULT(yes);
3566 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3567 AC_MSG_RESULT(no);
3568 LIBS=$olibs))
3569elif test x${DLL} = xdl.h; then
3570 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3571 AC_MSG_CHECKING([for shl_load()])
3572 AC_TRY_LINK(,[
3573 extern void* shl_load();
3574 shl_load();
3575 ],
3576 AC_MSG_RESULT(yes);
3577 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3578 AC_MSG_RESULT(no);
3579 AC_MSG_CHECKING([for shl_load() in -ldld])
3580 olibs=$LIBS
3581 LIBS="$LIBS -ldld"
3582 AC_TRY_LINK(,[
3583 extern void* shl_load();
3584 shl_load();
3585 ],
3586 AC_MSG_RESULT(yes);
3587 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3588 AC_MSG_RESULT(no);
3589 LIBS=$olibs))
3590fi
3591AC_CHECK_HEADERS(setjmp.h)
3592
3593if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3594 dnl -ldl must come after DynaLoader.a
3595 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3596 LIBS=`echo $LIBS | sed s/-ldl//`
3597 PERL_LIBS="$PERL_LIBS -ldl"
3598 fi
3599fi
3600
Bram Moolenaar164fca32010-07-14 13:58:07 +02003601if test "x$MACOSX" = "xyes"; then
3602 AC_MSG_CHECKING(whether we need -framework Cocoa)
3603 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3604 dnl disabled during tiny build)
3605 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3606 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003607 AC_MSG_RESULT(yes)
3608 else
3609 AC_MSG_RESULT(no)
3610 fi
3611fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003612if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003613 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003614fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003615
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003616dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3617dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3618dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003619dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3620dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003621DEPEND_CFLAGS_FILTER=
3622if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003623 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003624 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003625 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003626 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003627 AC_MSG_RESULT(yes)
3628 else
3629 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003630 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003631 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3632 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003633 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003634 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003635 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3636 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003637 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 +00003638 AC_MSG_RESULT(yes)
3639 else
3640 AC_MSG_RESULT(no)
3641 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003642fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003643AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003644
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003645dnl link.sh tries to avoid overlinking in a hackish way.
3646dnl At least GNU ld supports --as-needed which provides the same functionality
3647dnl at linker level. Let's use it.
3648AC_MSG_CHECKING(linker --as-needed support)
3649LINK_AS_NEEDED=
3650# Check if linker supports --as-needed and --no-as-needed options
3651if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3652 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3653 LINK_AS_NEEDED=yes
3654fi
3655if test "$LINK_AS_NEEDED" = yes; then
3656 AC_MSG_RESULT(yes)
3657else
3658 AC_MSG_RESULT(no)
3659fi
3660AC_SUBST(LINK_AS_NEEDED)
3661
Bram Moolenaar77c19352012-06-13 19:19:41 +02003662# IBM z/OS reset CFLAGS for config.mk
3663if test "$zOSUnix" = "yes"; then
3664 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3665fi
3666
Bram Moolenaar071d4272004-06-13 20:20:40 +00003667dnl write output files
3668AC_OUTPUT(auto/config.mk:config.mk.in)
3669
3670dnl vim: set sw=2 tw=78 fo+=l: