blob: 431bc2cbdf6f5a91cc80ab8864ea63d6e6ff9d94 [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
Bram Moolenaar75676462013-01-30 14:55:42 +0100620 MZSCHEME_LIBS="-framework Racket"
621 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000622 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
623 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
624 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100625 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
626 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
627 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
628 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
629 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
630 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000631 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 +0000632 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 dnl Using shared objects
634 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
635 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
636 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100637 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
638 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
639 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
640 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
641 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000642 else
643 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
644 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000645 if test "$GCC" = yes; then
646 dnl Make Vim remember the path to the library. For when it's not in
647 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000648 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000649 elif test "`(uname) 2>/dev/null`" = SunOS &&
650 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000651 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000652 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000653 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100654
655 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000656 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100657 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100658 else
659 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100660 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
661 else
662 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
663 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100664 else
665 if test -d $vi_cv_path_mzscheme_pfx/collects; then
666 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
667 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000670 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 if test "X$SCHEME_COLLECTS" != "X" ; then
672 AC_MSG_RESULT(${SCHEME_COLLECTS})
673 else
674 AC_MSG_RESULT(not found)
675 fi
676
677 AC_MSG_CHECKING(for mzscheme_base.c)
678 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000679 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100681 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100682 MZSCHEME_EXTRA="mzscheme_base.c"
683 fi
684 fi
685 if test "X$MZSCHEME_EXTRA" != "X" ; then
686 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000687 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
688 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100689 AC_MSG_RESULT(needed)
690 else
691 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000692 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100693
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000694 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100695 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000696 MZSCHEME_SRC="if_mzsch.c"
697 MZSCHEME_OBJ="objects/if_mzsch.o"
698 MZSCHEME_PRO="if_mzsch.pro"
699 AC_DEFINE(FEAT_MZSCHEME)
700 fi
701 AC_SUBST(MZSCHEME_SRC)
702 AC_SUBST(MZSCHEME_OBJ)
703 AC_SUBST(MZSCHEME_PRO)
704 AC_SUBST(MZSCHEME_LIBS)
705 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000706 AC_SUBST(MZSCHEME_EXTRA)
707 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000708fi
709
710
Bram Moolenaar071d4272004-06-13 20:20:40 +0000711AC_MSG_CHECKING(--enable-perlinterp argument)
712AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200713 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000714 [enable_perlinterp="no"])
715AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200716if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000717 AC_SUBST(vi_cv_path_perl)
718 AC_PATH_PROG(vi_cv_path_perl, perl)
719 if test "X$vi_cv_path_perl" != "X"; then
720 AC_MSG_CHECKING(Perl version)
721 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
722 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200723 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000724 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
725 badthreads=no
726 else
727 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
728 eval `$vi_cv_path_perl -V:use5005threads`
729 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
730 badthreads=no
731 else
732 badthreads=yes
733 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
734 fi
735 else
736 badthreads=yes
737 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
738 fi
739 fi
740 if test $badthreads = no; then
741 AC_MSG_RESULT(OK)
742 eval `$vi_cv_path_perl -V:shrpenv`
743 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
744 shrpenv=""
745 fi
746 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
747 AC_SUBST(vi_cv_perllib)
748 dnl Remove "-fno-something", it breaks using cproto.
749 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
750 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
751 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
752 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
753 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
754 -e 's/-bE:perl.exp//' -e 's/-lc //'`
755 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
756 dnl a test in configure may fail because of that.
757 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
758 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
759
760 dnl check that compiling a simple program still works with the flags
761 dnl added for Perl.
762 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
763 cflags_save=$CFLAGS
764 libs_save=$LIBS
765 ldflags_save=$LDFLAGS
766 CFLAGS="$CFLAGS $perlcppflags"
767 LIBS="$LIBS $perllibs"
768 LDFLAGS="$perlldflags $LDFLAGS"
769 AC_TRY_LINK(,[ ],
770 AC_MSG_RESULT(yes); perl_ok=yes,
771 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
772 CFLAGS=$cflags_save
773 LIBS=$libs_save
774 LDFLAGS=$ldflags_save
775 if test $perl_ok = yes; then
776 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000777 dnl remove -pipe and -Wxxx, it confuses cproto
778 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000779 fi
780 if test "X$perlldflags" != "X"; then
781 LDFLAGS="$perlldflags $LDFLAGS"
782 fi
783 PERL_LIBS=$perllibs
784 PERL_SRC="auto/if_perl.c if_perlsfio.c"
785 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
786 PERL_PRO="if_perl.pro if_perlsfio.pro"
787 AC_DEFINE(FEAT_PERL)
788 fi
789 fi
790 else
791 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
792 fi
793 fi
794
795 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000796 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000797 dir=/System/Library/Perl
798 darwindir=$dir/darwin
799 if test -d $darwindir; then
800 PERL=/usr/bin/perl
801 else
802 dnl Mac OS X 10.3
803 dir=/System/Library/Perl/5.8.1
804 darwindir=$dir/darwin-thread-multi-2level
805 if test -d $darwindir; then
806 PERL=/usr/bin/perl
807 fi
808 fi
809 if test -n "$PERL"; then
810 PERL_DIR="$dir"
811 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
812 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
813 PERL_LIBS="-L$darwindir/CORE -lperl"
814 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200815 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
816 dnl be included if requested by passing --with-mac-arch to
817 dnl configure, so strip these flags first (if present)
818 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
819 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 +0000820 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200821 if test "$enable_perlinterp" = "dynamic"; then
822 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
823 AC_DEFINE(DYNAMIC_PERL)
824 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
825 fi
826 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100827
828 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
829 AC_MSG_ERROR([could not configure perl])
830 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000831fi
832AC_SUBST(shrpenv)
833AC_SUBST(PERL_SRC)
834AC_SUBST(PERL_OBJ)
835AC_SUBST(PERL_PRO)
836AC_SUBST(PERL_CFLAGS)
837AC_SUBST(PERL_LIBS)
838
839AC_MSG_CHECKING(--enable-pythoninterp argument)
840AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200841 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842 [enable_pythoninterp="no"])
843AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200844if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000845 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100846 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000847 if test "X$vi_cv_path_python" != "X"; then
848
849 dnl -- get its version number
850 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
851 [[vi_cv_var_python_version=`
852 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
853 ]])
854
855 dnl -- it must be at least version 1.4
856 AC_MSG_CHECKING(Python is 1.4 or better)
857 if ${vi_cv_path_python} -c \
858 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
859 then
860 AC_MSG_RESULT(yep)
861
862 dnl -- find where python thinks it was installed
863 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
864 [ vi_cv_path_python_pfx=`
865 ${vi_cv_path_python} -c \
866 "import sys; print sys.prefix"` ])
867
868 dnl -- and where it thinks it runs
869 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
870 [ vi_cv_path_python_epfx=`
871 ${vi_cv_path_python} -c \
872 "import sys; print sys.exec_prefix"` ])
873
874 dnl -- python's internal library path
875
876 AC_CACHE_VAL(vi_cv_path_pythonpath,
877 [ vi_cv_path_pythonpath=`
878 unset PYTHONPATH;
879 ${vi_cv_path_python} -c \
880 "import sys, string; print string.join(sys.path,':')"` ])
881
882 dnl -- where the Python implementation library archives are
883
884 AC_ARG_WITH(python-config-dir,
885 [ --with-python-config-dir=PATH Python's config directory],
886 [ vi_cv_path_python_conf="${withval}" ] )
887
888 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
889 [
890 vi_cv_path_python_conf=
891 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000892 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000893 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
894 if test -d "$d" && test -f "$d/config.c"; then
895 vi_cv_path_python_conf="$d"
896 fi
897 done
898 done
899 ])
900
901 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
902
903 if test "X$PYTHON_CONFDIR" = "X"; then
904 AC_MSG_RESULT([can't find it!])
905 else
906
907 dnl -- we need to examine Python's config/Makefile too
908 dnl see what the interpreter is built from
909 AC_CACHE_VAL(vi_cv_path_python_plibs,
910 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000911 pwd=`pwd`
912 tmp_mkf="$pwd/config-PyMake$$"
913 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000914__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200915 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916 @echo "python_LIBS='$(LIBS)'"
917 @echo "python_SYSLIBS='$(SYSLIBS)'"
918 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200919 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200920 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000921eof
922 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000923 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
924 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000925 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
926 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
927 vi_cv_path_python_plibs="-framework Python"
928 else
929 if test "${vi_cv_var_python_version}" = "1.4"; then
930 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
931 else
932 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
933 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200934 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 +0000935 dnl remove -ltermcap, it can conflict with an earlier -lncurses
936 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
937 fi
938 ])
939
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200940 if test "X$python_DLLLIBRARY" != "X"; then
941 python_INSTSONAME="$python_DLLLIBRARY"
942 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943 PYTHON_LIBS="${vi_cv_path_python_plibs}"
944 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100945 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 +0000946 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100947 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 +0000948 fi
949 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200950 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000951 if test "${vi_cv_var_python_version}" = "1.4"; then
952 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
953 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100954 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 +0000955
956 dnl On FreeBSD linking with "-pthread" is required to use threads.
957 dnl _THREAD_SAFE must be used for compiling then.
958 dnl The "-pthread" is added to $LIBS, so that the following check for
959 dnl sigaltstack() will look in libc_r (it's there in libc!).
960 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
961 dnl will then define target-specific defines, e.g., -D_REENTRANT.
962 dnl Don't do this for Mac OSX, -pthread will generate a warning.
963 AC_MSG_CHECKING([if -pthread should be used])
964 threadsafe_flag=
965 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000966 dnl if test "x$MACOSX" != "xyes"; then
967 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000968 test "$GCC" = yes && threadsafe_flag="-pthread"
969 if test "`(uname) 2>/dev/null`" = FreeBSD; then
970 threadsafe_flag="-D_THREAD_SAFE"
971 thread_lib="-pthread"
972 fi
973 fi
974 libs_save_old=$LIBS
975 if test -n "$threadsafe_flag"; then
976 cflags_save=$CFLAGS
977 CFLAGS="$CFLAGS $threadsafe_flag"
978 LIBS="$LIBS $thread_lib"
979 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200980 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000981 AC_MSG_RESULT(no); LIBS=$libs_save_old
982 )
983 CFLAGS=$cflags_save
984 else
985 AC_MSG_RESULT(no)
986 fi
987
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200988 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000989 dnl added for Python.
990 AC_MSG_CHECKING([if compile and link flags for Python are sane])
991 cflags_save=$CFLAGS
992 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200993 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000994 LIBS="$LIBS $PYTHON_LIBS"
995 AC_TRY_LINK(,[ ],
996 AC_MSG_RESULT(yes); python_ok=yes,
997 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
998 CFLAGS=$cflags_save
999 LIBS=$libs_save
1000 if test $python_ok = yes; then
1001 AC_DEFINE(FEAT_PYTHON)
1002 else
1003 LIBS=$libs_save_old
1004 PYTHON_SRC=
1005 PYTHON_OBJ=
1006 PYTHON_LIBS=
1007 PYTHON_CFLAGS=
1008 fi
1009
1010 fi
1011 else
1012 AC_MSG_RESULT(too old)
1013 fi
1014 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001015
1016 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1017 AC_MSG_ERROR([could not configure python])
1018 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001019fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001020
Bram Moolenaar071d4272004-06-13 20:20:40 +00001021AC_SUBST(PYTHON_CONFDIR)
1022AC_SUBST(PYTHON_LIBS)
1023AC_SUBST(PYTHON_GETPATH_CFLAGS)
1024AC_SUBST(PYTHON_CFLAGS)
1025AC_SUBST(PYTHON_SRC)
1026AC_SUBST(PYTHON_OBJ)
1027
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001028
1029AC_MSG_CHECKING(--enable-python3interp argument)
1030AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001031 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001032 [enable_python3interp="no"])
1033AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001034if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001035 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001036 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001037 if test "X$vi_cv_path_python3" != "X"; then
1038
1039 dnl -- get its version number
1040 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1041 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001042 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001043 ]])
1044
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001045 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1046 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1047 [
1048 vi_cv_var_python3_abiflags=
1049 if ${vi_cv_path_python3} -c \
1050 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1051 then
1052 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1053 "import sys; print(sys.abiflags)"`
1054 fi ])
1055
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001056 dnl -- find where python3 thinks it was installed
1057 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1058 [ vi_cv_path_python3_pfx=`
1059 ${vi_cv_path_python3} -c \
1060 "import sys; print(sys.prefix)"` ])
1061
1062 dnl -- and where it thinks it runs
1063 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1064 [ vi_cv_path_python3_epfx=`
1065 ${vi_cv_path_python3} -c \
1066 "import sys; print(sys.exec_prefix)"` ])
1067
1068 dnl -- python3's internal library path
1069
1070 AC_CACHE_VAL(vi_cv_path_python3path,
1071 [ vi_cv_path_python3path=`
1072 unset PYTHONPATH;
1073 ${vi_cv_path_python3} -c \
1074 "import sys, string; print(':'.join(sys.path))"` ])
1075
1076 dnl -- where the Python implementation library archives are
1077
1078 AC_ARG_WITH(python3-config-dir,
1079 [ --with-python3-config-dir=PATH Python's config directory],
1080 [ vi_cv_path_python3_conf="${withval}" ] )
1081
1082 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1083 [
1084 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001085 config_dir="config"
1086 if test "${vi_cv_var_python3_abiflags}" != ""; then
1087 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1088 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001089 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001090 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001091 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001092 if test -d "$d" && test -f "$d/config.c"; then
1093 vi_cv_path_python3_conf="$d"
1094 fi
1095 done
1096 done
1097 ])
1098
1099 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1100
1101 if test "X$PYTHON3_CONFDIR" = "X"; then
1102 AC_MSG_RESULT([can't find it!])
1103 else
1104
1105 dnl -- we need to examine Python's config/Makefile too
1106 dnl see what the interpreter is built from
1107 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1108 [
1109 pwd=`pwd`
1110 tmp_mkf="$pwd/config-PyMake$$"
1111 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1112__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001113 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001114 @echo "python3_LIBS='$(LIBS)'"
1115 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001116 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001117 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001118eof
1119 dnl -- delete the lines from make about Entering/Leaving directory
1120 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1121 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001122 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 +02001123 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001124 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1125 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1126 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1127 ])
1128
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001129 if test "X$python3_DLLLIBRARY" != "X"; then
1130 python3_INSTSONAME="$python3_DLLLIBRARY"
1131 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001132 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1133 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001134 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 +02001135 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001136 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 +02001137 fi
1138 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001139 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001140
1141 dnl On FreeBSD linking with "-pthread" is required to use threads.
1142 dnl _THREAD_SAFE must be used for compiling then.
1143 dnl The "-pthread" is added to $LIBS, so that the following check for
1144 dnl sigaltstack() will look in libc_r (it's there in libc!).
1145 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1146 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1147 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1148 AC_MSG_CHECKING([if -pthread should be used])
1149 threadsafe_flag=
1150 thread_lib=
1151 dnl if test "x$MACOSX" != "xyes"; then
1152 if test "`(uname) 2>/dev/null`" != Darwin; then
1153 test "$GCC" = yes && threadsafe_flag="-pthread"
1154 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1155 threadsafe_flag="-D_THREAD_SAFE"
1156 thread_lib="-pthread"
1157 fi
1158 fi
1159 libs_save_old=$LIBS
1160 if test -n "$threadsafe_flag"; then
1161 cflags_save=$CFLAGS
1162 CFLAGS="$CFLAGS $threadsafe_flag"
1163 LIBS="$LIBS $thread_lib"
1164 AC_TRY_LINK(,[ ],
1165 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1166 AC_MSG_RESULT(no); LIBS=$libs_save_old
1167 )
1168 CFLAGS=$cflags_save
1169 else
1170 AC_MSG_RESULT(no)
1171 fi
1172
1173 dnl check that compiling a simple program still works with the flags
1174 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001175 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001176 cflags_save=$CFLAGS
1177 libs_save=$LIBS
1178 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1179 LIBS="$LIBS $PYTHON3_LIBS"
1180 AC_TRY_LINK(,[ ],
1181 AC_MSG_RESULT(yes); python3_ok=yes,
1182 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1183 CFLAGS=$cflags_save
1184 LIBS=$libs_save
1185 if test "$python3_ok" = yes; then
1186 AC_DEFINE(FEAT_PYTHON3)
1187 else
1188 LIBS=$libs_save_old
1189 PYTHON3_SRC=
1190 PYTHON3_OBJ=
1191 PYTHON3_LIBS=
1192 PYTHON3_CFLAGS=
1193 fi
1194 fi
1195 fi
1196fi
1197
1198AC_SUBST(PYTHON3_CONFDIR)
1199AC_SUBST(PYTHON3_LIBS)
1200AC_SUBST(PYTHON3_CFLAGS)
1201AC_SUBST(PYTHON3_SRC)
1202AC_SUBST(PYTHON3_OBJ)
1203
1204dnl if python2.x and python3.x are enabled one can only link in code
1205dnl with dlopen(), dlsym(), dlclose()
1206if test "$python_ok" = yes && test "$python3_ok" = yes; then
1207 AC_DEFINE(DYNAMIC_PYTHON)
1208 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001209 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001210 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001211 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001212 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001213 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1214 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001215 AC_RUN_IFELSE([
1216 #include <dlfcn.h>
1217 /* If this program fails, then RTLD_GLOBAL is needed.
1218 * RTLD_GLOBAL will be used and then it is not possible to
1219 * have both python versions enabled in the same vim instance.
1220 * Only the first pyhton version used will be switched on.
1221 */
1222
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001223 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001224 {
1225 int needed = 0;
1226 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1227 if (pylib != 0)
1228 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001229 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001230 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1231 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1232 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001233 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001234 (*init)();
1235 needed = (*simple)("import termios") == -1;
1236 (*final)();
1237 dlclose(pylib);
1238 }
1239 return !needed;
1240 }
1241
1242 int main(int argc, char** argv)
1243 {
1244 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001245 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001246 not_needed = 1;
1247 return !not_needed;
1248 }],
1249 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001250
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001251 CFLAGS=$cflags_save
1252 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001253
1254 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1255 cflags_save=$CFLAGS
1256 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1257 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001258 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1259 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001260 AC_RUN_IFELSE([
1261 #include <dlfcn.h>
1262 #include <wchar.h>
1263 /* If this program fails, then RTLD_GLOBAL is needed.
1264 * RTLD_GLOBAL will be used and then it is not possible to
1265 * have both python versions enabled in the same vim instance.
1266 * Only the first pyhton version used will be switched on.
1267 */
1268
1269 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1270 {
1271 int needed = 0;
1272 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1273 if (pylib != 0)
1274 {
1275 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1276 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1277 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1278 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1279 (*pfx)(prefix);
1280 (*init)();
1281 needed = (*simple)("import termios") == -1;
1282 (*final)();
1283 dlclose(pylib);
1284 }
1285 return !needed;
1286 }
1287
1288 int main(int argc, char** argv)
1289 {
1290 int not_needed = 0;
1291 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1292 not_needed = 1;
1293 return !not_needed;
1294 }],
1295 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1296
1297 CFLAGS=$cflags_save
1298 LDFLAGS=$ldflags_save
1299
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001300 PYTHON_SRC="if_python.c"
1301 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001302 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001303 PYTHON_LIBS=
1304 PYTHON3_SRC="if_python3.c"
1305 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001306 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001307 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001308elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1309 AC_DEFINE(DYNAMIC_PYTHON)
1310 PYTHON_SRC="if_python.c"
1311 PYTHON_OBJ="objects/if_python.o"
1312 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1313 PYTHON_LIBS=
1314elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1315 AC_DEFINE(DYNAMIC_PYTHON3)
1316 PYTHON3_SRC="if_python3.c"
1317 PYTHON3_OBJ="objects/if_python3.o"
1318 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1319 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001320fi
1321
Bram Moolenaar071d4272004-06-13 20:20:40 +00001322AC_MSG_CHECKING(--enable-tclinterp argument)
1323AC_ARG_ENABLE(tclinterp,
1324 [ --enable-tclinterp Include Tcl interpreter.], ,
1325 [enable_tclinterp="no"])
1326AC_MSG_RESULT($enable_tclinterp)
1327
1328if test "$enable_tclinterp" = "yes"; then
1329
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001330 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001331 AC_MSG_CHECKING(--with-tclsh argument)
1332 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1333 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001334 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001335 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1336 AC_SUBST(vi_cv_path_tcl)
1337
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001338 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1339 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1340 tclsh_name="tclsh8.4"
1341 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1342 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001343 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001344 tclsh_name="tclsh8.2"
1345 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1346 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001347 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1348 tclsh_name="tclsh8.0"
1349 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1350 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001351 dnl still didn't find it, try without version number
1352 if test "X$vi_cv_path_tcl" = "X"; then
1353 tclsh_name="tclsh"
1354 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1355 fi
1356 if test "X$vi_cv_path_tcl" != "X"; then
1357 AC_MSG_CHECKING(Tcl version)
1358 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1359 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1360 AC_MSG_RESULT($tclver - OK);
1361 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 -`
1362
1363 AC_MSG_CHECKING(for location of Tcl include)
1364 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001365 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 +00001366 else
1367 dnl For Mac OS X 10.3, use the OS-provided framework location
1368 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1369 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001370 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001371 for try in $tclinc; do
1372 if test -f "$try/tcl.h"; then
1373 AC_MSG_RESULT($try/tcl.h)
1374 TCL_INC=$try
1375 break
1376 fi
1377 done
1378 if test -z "$TCL_INC"; then
1379 AC_MSG_RESULT(<not found>)
1380 SKIP_TCL=YES
1381 fi
1382 if test -z "$SKIP_TCL"; then
1383 AC_MSG_CHECKING(for location of tclConfig.sh script)
1384 if test "x$MACOSX" != "xyes"; then
1385 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001386 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001387 else
1388 dnl For Mac OS X 10.3, use the OS-provided framework location
1389 tclcnf="/System/Library/Frameworks/Tcl.framework"
1390 fi
1391 for try in $tclcnf; do
1392 if test -f $try/tclConfig.sh; then
1393 AC_MSG_RESULT($try/tclConfig.sh)
1394 . $try/tclConfig.sh
1395 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1396 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1397 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001398 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001399 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 +00001400 break
1401 fi
1402 done
1403 if test -z "$TCL_LIBS"; then
1404 AC_MSG_RESULT(<not found>)
1405 AC_MSG_CHECKING(for Tcl library by myself)
1406 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001407 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001408 for ext in .so .a ; do
1409 for ver in "" $tclver ; do
1410 for try in $tcllib ; do
1411 trylib=tcl$ver$ext
1412 if test -f $try/lib$trylib ; then
1413 AC_MSG_RESULT($try/lib$trylib)
1414 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1415 if test "`(uname) 2>/dev/null`" = SunOS &&
1416 uname -r | grep '^5' >/dev/null; then
1417 TCL_LIBS="$TCL_LIBS -R $try"
1418 fi
1419 break 3
1420 fi
1421 done
1422 done
1423 done
1424 if test -z "$TCL_LIBS"; then
1425 AC_MSG_RESULT(<not found>)
1426 SKIP_TCL=YES
1427 fi
1428 fi
1429 if test -z "$SKIP_TCL"; then
1430 AC_DEFINE(FEAT_TCL)
1431 TCL_SRC=if_tcl.c
1432 TCL_OBJ=objects/if_tcl.o
1433 TCL_PRO=if_tcl.pro
1434 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1435 fi
1436 fi
1437 else
1438 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1439 fi
1440 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001441 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1442 AC_MSG_ERROR([could not configure Tcl])
1443 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001444fi
1445AC_SUBST(TCL_SRC)
1446AC_SUBST(TCL_OBJ)
1447AC_SUBST(TCL_PRO)
1448AC_SUBST(TCL_CFLAGS)
1449AC_SUBST(TCL_LIBS)
1450
1451AC_MSG_CHECKING(--enable-rubyinterp argument)
1452AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001453 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001454 [enable_rubyinterp="no"])
1455AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001456if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001457 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001458 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001459 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1460 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1461 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001462 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463 if test "X$vi_cv_path_ruby" != "X"; then
1464 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001465 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 +00001466 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001467 AC_MSG_CHECKING(Ruby rbconfig)
1468 ruby_rbconfig="RbConfig"
1469 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1470 ruby_rbconfig="Config"
1471 fi
1472 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001473 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001474 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 +00001475 if test "X$rubyhdrdir" != "X"; then
1476 AC_MSG_RESULT($rubyhdrdir)
1477 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001478 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001479 if test -d "$rubyhdrdir/$rubyarch"; then
1480 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1481 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001482 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001483 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001484 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001485 if test "X$rubylibs" != "X"; then
1486 RUBY_LIBS="$rubylibs"
1487 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001488 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1489 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1490 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001491 if test -f "$rubylibdir/$librubya"; then
1492 librubyarg="$librubyarg"
1493 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1494 elif test "$librubyarg" = "libruby.a"; then
1495 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1496 librubyarg="-lruby"
1497 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001498 fi
1499
1500 if test "X$librubyarg" != "X"; then
1501 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1502 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001503 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001504 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001505 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1506 dnl be included if requested by passing --with-mac-arch to
1507 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001508 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001509 if test "X$rubyldflags" != "X"; then
1510 LDFLAGS="$rubyldflags $LDFLAGS"
1511 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001512 fi
1513 RUBY_SRC="if_ruby.c"
1514 RUBY_OBJ="objects/if_ruby.o"
1515 RUBY_PRO="if_ruby.pro"
1516 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001517 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001518 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001519 AC_DEFINE(DYNAMIC_RUBY)
1520 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1521 RUBY_LIBS=
1522 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001523 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001524 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001525 fi
1526 else
1527 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1528 fi
1529 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001530
1531 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1532 AC_MSG_ERROR([could not configure Ruby])
1533 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001534fi
1535AC_SUBST(RUBY_SRC)
1536AC_SUBST(RUBY_OBJ)
1537AC_SUBST(RUBY_PRO)
1538AC_SUBST(RUBY_CFLAGS)
1539AC_SUBST(RUBY_LIBS)
1540
1541AC_MSG_CHECKING(--enable-cscope argument)
1542AC_ARG_ENABLE(cscope,
1543 [ --enable-cscope Include cscope interface.], ,
1544 [enable_cscope="no"])
1545AC_MSG_RESULT($enable_cscope)
1546if test "$enable_cscope" = "yes"; then
1547 AC_DEFINE(FEAT_CSCOPE)
1548fi
1549
1550AC_MSG_CHECKING(--enable-workshop argument)
1551AC_ARG_ENABLE(workshop,
1552 [ --enable-workshop Include Sun Visual Workshop support.], ,
1553 [enable_workshop="no"])
1554AC_MSG_RESULT($enable_workshop)
1555if test "$enable_workshop" = "yes"; then
1556 AC_DEFINE(FEAT_SUN_WORKSHOP)
1557 WORKSHOP_SRC="workshop.c integration.c"
1558 AC_SUBST(WORKSHOP_SRC)
1559 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1560 AC_SUBST(WORKSHOP_OBJ)
1561 if test "${enable_gui-xxx}" = xxx; then
1562 enable_gui=motif
1563 fi
1564fi
1565
1566AC_MSG_CHECKING(--disable-netbeans argument)
1567AC_ARG_ENABLE(netbeans,
1568 [ --disable-netbeans Disable NetBeans integration support.],
1569 , [enable_netbeans="yes"])
1570if test "$enable_netbeans" = "yes"; then
1571 AC_MSG_RESULT(no)
1572 dnl On Solaris we need the socket and nsl library.
1573 AC_CHECK_LIB(socket, socket)
1574 AC_CHECK_LIB(nsl, gethostbyname)
1575 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1576 AC_TRY_LINK([
1577#include <stdio.h>
1578#include <stdlib.h>
1579#include <stdarg.h>
1580#include <fcntl.h>
1581#include <netdb.h>
1582#include <netinet/in.h>
1583#include <errno.h>
1584#include <sys/types.h>
1585#include <sys/socket.h>
1586 /* Check bitfields */
1587 struct nbbuf {
1588 unsigned int initDone:1;
1589 ushort signmaplen;
1590 };
1591 ], [
1592 /* Check creating a socket. */
1593 struct sockaddr_in server;
1594 (void)socket(AF_INET, SOCK_STREAM, 0);
1595 (void)htons(100);
1596 (void)gethostbyname("microsoft.com");
1597 if (errno == ECONNREFUSED)
1598 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1599 ],
1600 AC_MSG_RESULT(yes),
1601 AC_MSG_RESULT(no); enable_netbeans="no")
1602else
1603 AC_MSG_RESULT(yes)
1604fi
1605if test "$enable_netbeans" = "yes"; then
1606 AC_DEFINE(FEAT_NETBEANS_INTG)
1607 NETBEANS_SRC="netbeans.c"
1608 AC_SUBST(NETBEANS_SRC)
1609 NETBEANS_OBJ="objects/netbeans.o"
1610 AC_SUBST(NETBEANS_OBJ)
1611fi
1612
1613AC_MSG_CHECKING(--enable-sniff argument)
1614AC_ARG_ENABLE(sniff,
1615 [ --enable-sniff Include Sniff interface.], ,
1616 [enable_sniff="no"])
1617AC_MSG_RESULT($enable_sniff)
1618if test "$enable_sniff" = "yes"; then
1619 AC_DEFINE(FEAT_SNIFF)
1620 SNIFF_SRC="if_sniff.c"
1621 AC_SUBST(SNIFF_SRC)
1622 SNIFF_OBJ="objects/if_sniff.o"
1623 AC_SUBST(SNIFF_OBJ)
1624fi
1625
1626AC_MSG_CHECKING(--enable-multibyte argument)
1627AC_ARG_ENABLE(multibyte,
1628 [ --enable-multibyte Include multibyte editing support.], ,
1629 [enable_multibyte="no"])
1630AC_MSG_RESULT($enable_multibyte)
1631if test "$enable_multibyte" = "yes"; then
1632 AC_DEFINE(FEAT_MBYTE)
1633fi
1634
1635AC_MSG_CHECKING(--enable-hangulinput argument)
1636AC_ARG_ENABLE(hangulinput,
1637 [ --enable-hangulinput Include Hangul input support.], ,
1638 [enable_hangulinput="no"])
1639AC_MSG_RESULT($enable_hangulinput)
1640
1641AC_MSG_CHECKING(--enable-xim argument)
1642AC_ARG_ENABLE(xim,
1643 [ --enable-xim Include XIM input support.],
1644 AC_MSG_RESULT($enable_xim),
1645 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001646
1647AC_MSG_CHECKING(--enable-fontset argument)
1648AC_ARG_ENABLE(fontset,
1649 [ --enable-fontset Include X fontset output support.], ,
1650 [enable_fontset="no"])
1651AC_MSG_RESULT($enable_fontset)
1652dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1653
1654test -z "$with_x" && with_x=yes
1655test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1656if test "$with_x" = no; then
1657 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1658else
1659 dnl Do this check early, so that its failure can override user requests.
1660
1661 AC_PATH_PROG(xmkmfpath, xmkmf)
1662
1663 AC_PATH_XTRA
1664
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001665 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001666 dnl be compiled with a special option.
1667 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001668 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001669 CFLAGS="$CFLAGS -W c,dll"
1670 LDFLAGS="$LDFLAGS -W l,dll"
1671 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1672 fi
1673
1674 dnl On my HPUX system the X include dir is found, but the lib dir not.
1675 dnl This is a desparate try to fix this.
1676
1677 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1678 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1679 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1680 X_LIBS="$X_LIBS -L$x_libraries"
1681 if test "`(uname) 2>/dev/null`" = SunOS &&
1682 uname -r | grep '^5' >/dev/null; then
1683 X_LIBS="$X_LIBS -R $x_libraries"
1684 fi
1685 fi
1686
1687 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1688 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1689 AC_MSG_RESULT(Corrected X includes to $x_includes)
1690 X_CFLAGS="$X_CFLAGS -I$x_includes"
1691 fi
1692
1693 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1694 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1695 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1696 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1697 dnl Same for "-R/usr/lib ".
1698 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1699
1700
1701 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001702 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1703 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001704 AC_MSG_CHECKING(if X11 header files can be found)
1705 cflags_save=$CFLAGS
1706 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001707 AC_TRY_COMPILE([#include <X11/Xlib.h>
1708#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001709 AC_MSG_RESULT(yes),
1710 AC_MSG_RESULT(no); no_x=yes)
1711 CFLAGS=$cflags_save
1712
1713 if test "${no_x-no}" = yes; then
1714 with_x=no
1715 else
1716 AC_DEFINE(HAVE_X11)
1717 X_LIB="-lXt -lX11";
1718 AC_SUBST(X_LIB)
1719
1720 ac_save_LDFLAGS="$LDFLAGS"
1721 LDFLAGS="-L$x_libraries $LDFLAGS"
1722
1723 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1724 dnl For HP-UX 10.20 it must be before -lSM -lICE
1725 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1726 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1727
1728 dnl Some systems need -lnsl -lsocket when testing for ICE.
1729 dnl The check above doesn't do this, try here (again). Also needed to get
1730 dnl them after Xdmcp. link.sh will remove them when not needed.
1731 dnl Check for other function than above to avoid the cached value
1732 AC_CHECK_LIB(ICE, IceOpenConnection,
1733 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1734
1735 dnl Check for -lXpm (needed for some versions of Motif)
1736 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1737 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1738 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1739
1740 dnl Check that the X11 header files don't use implicit declarations
1741 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1742 cflags_save=$CFLAGS
1743 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1744 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1745 AC_MSG_RESULT(no),
1746 CFLAGS="$CFLAGS -Wno-implicit-int"
1747 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1748 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1749 AC_MSG_RESULT(test failed)
1750 )
1751 )
1752 CFLAGS=$cflags_save
1753
1754 LDFLAGS="$ac_save_LDFLAGS"
1755
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001756 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1757 AC_CACHE_VAL(ac_cv_small_wchar_t,
1758 [AC_TRY_RUN([
1759#include <X11/Xlib.h>
1760#if STDC_HEADERS
1761# include <stdlib.h>
1762# include <stddef.h>
1763#endif
1764 main()
1765 {
1766 if (sizeof(wchar_t) <= 2)
1767 exit(1);
1768 exit(0);
1769 }],
1770 ac_cv_small_wchar_t="no",
1771 ac_cv_small_wchar_t="yes",
1772 AC_MSG_ERROR(failed to compile test program))])
1773 AC_MSG_RESULT($ac_cv_small_wchar_t)
1774 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1775 AC_DEFINE(SMALL_WCHAR_T)
1776 fi
1777
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 fi
1779fi
1780
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001781test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001782
1783AC_MSG_CHECKING(--enable-gui argument)
1784AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001785 [ --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 +00001786
1787dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1788dnl Do not use character classes for portability with old tools.
1789enable_gui_canon=`echo "_$enable_gui" | \
1790 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1791
1792dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001793SKIP_GTK2=YES
1794SKIP_GNOME=YES
1795SKIP_MOTIF=YES
1796SKIP_ATHENA=YES
1797SKIP_NEXTAW=YES
1798SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001799SKIP_CARBON=YES
1800GUITYPE=NONE
1801
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001802if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001803 SKIP_PHOTON=
1804 case "$enable_gui_canon" in
1805 no) AC_MSG_RESULT(no GUI support)
1806 SKIP_PHOTON=YES ;;
1807 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1808 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1809 photon) AC_MSG_RESULT(Photon GUI support) ;;
1810 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1811 SKIP_PHOTON=YES ;;
1812 esac
1813
1814elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1815 SKIP_CARBON=
1816 case "$enable_gui_canon" in
1817 no) AC_MSG_RESULT(no GUI support)
1818 SKIP_CARBON=YES ;;
1819 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001820 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1821 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1823 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1824 SKIP_CARBON=YES ;;
1825 esac
1826
1827else
1828
Bram Moolenaar071d4272004-06-13 20:20:40 +00001829 case "$enable_gui_canon" in
1830 no|none) AC_MSG_RESULT(no GUI support) ;;
1831 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001832 SKIP_GTK2=
1833 SKIP_GNOME=
1834 SKIP_MOTIF=
1835 SKIP_ATHENA=
1836 SKIP_NEXTAW=
1837 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001838 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001839 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1841 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842 SKIP_GTK2=;;
1843 motif) AC_MSG_RESULT(Motif GUI support)
1844 SKIP_MOTIF=;;
1845 athena) AC_MSG_RESULT(Athena GUI support)
1846 SKIP_ATHENA=;;
1847 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1848 SKIP_NEXTAW=;;
1849 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1850 esac
1851
1852fi
1853
Bram Moolenaar071d4272004-06-13 20:20:40 +00001854if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1855 -a "$enable_gui_canon" != "gnome2"; then
1856 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1857 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001858 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001859 , enable_gtk2_check="yes")
1860 AC_MSG_RESULT($enable_gtk2_check)
1861 if test "x$enable_gtk2_check" = "xno"; then
1862 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001863 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001864 fi
1865fi
1866
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001867if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001868 AC_MSG_CHECKING(whether or not to look for GNOME)
1869 AC_ARG_ENABLE(gnome-check,
1870 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1871 , enable_gnome_check="no")
1872 AC_MSG_RESULT($enable_gnome_check)
1873 if test "x$enable_gnome_check" = "xno"; then
1874 SKIP_GNOME=YES
1875 fi
1876fi
1877
1878if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1879 AC_MSG_CHECKING(whether or not to look for Motif)
1880 AC_ARG_ENABLE(motif-check,
1881 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1882 , enable_motif_check="yes")
1883 AC_MSG_RESULT($enable_motif_check)
1884 if test "x$enable_motif_check" = "xno"; then
1885 SKIP_MOTIF=YES
1886 fi
1887fi
1888
1889if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1890 AC_MSG_CHECKING(whether or not to look for Athena)
1891 AC_ARG_ENABLE(athena-check,
1892 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1893 , enable_athena_check="yes")
1894 AC_MSG_RESULT($enable_athena_check)
1895 if test "x$enable_athena_check" = "xno"; then
1896 SKIP_ATHENA=YES
1897 fi
1898fi
1899
1900if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1901 AC_MSG_CHECKING(whether or not to look for neXtaw)
1902 AC_ARG_ENABLE(nextaw-check,
1903 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1904 , enable_nextaw_check="yes")
1905 AC_MSG_RESULT($enable_nextaw_check);
1906 if test "x$enable_nextaw_check" = "xno"; then
1907 SKIP_NEXTAW=YES
1908 fi
1909fi
1910
1911if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1912 AC_MSG_CHECKING(whether or not to look for Carbon)
1913 AC_ARG_ENABLE(carbon-check,
1914 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1915 , enable_carbon_check="yes")
1916 AC_MSG_RESULT($enable_carbon_check);
1917 if test "x$enable_carbon_check" = "xno"; then
1918 SKIP_CARBON=YES
1919 fi
1920fi
1921
Bram Moolenaar843ee412004-06-30 16:16:41 +00001922
Bram Moolenaar071d4272004-06-13 20:20:40 +00001923if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1924 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001925 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001926 AC_MSG_RESULT(yes);
1927 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001928 if test "$VIMNAME" = "vim"; then
1929 VIMNAME=Vim
1930 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001931
Bram Moolenaar164fca32010-07-14 13:58:07 +02001932 if test "x$MACARCH" = "xboth"; then
1933 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1934 else
1935 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1936 fi
1937
Bram Moolenaar14716812006-05-04 21:54:08 +00001938 dnl Default install directory is not /usr/local
1939 if test x$prefix = xNONE; then
1940 prefix=/Applications
1941 fi
1942
1943 dnl Sorry for the hard coded default
1944 datadir='${prefix}/Vim.app/Contents/Resources'
1945
Bram Moolenaar071d4272004-06-13 20:20:40 +00001946 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001947 SKIP_GTK2=YES;
1948 SKIP_GNOME=YES;
1949 SKIP_MOTIF=YES;
1950 SKIP_ATHENA=YES;
1951 SKIP_NEXTAW=YES;
1952 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001953 SKIP_CARBON=YES
1954fi
1955
Bram Moolenaar071d4272004-06-13 20:20:40 +00001956dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001957dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001958dnl
1959dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001960dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001961dnl
1962AC_DEFUN(AM_PATH_GTK,
1963[
1964 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1965 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001966 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1968 no_gtk=""
1969 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1970 && $PKG_CONFIG --exists gtk+-2.0; then
1971 {
1972 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1973 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1974 dnl something like that.
1975 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001976 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001977 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1978 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1979 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1980 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1981 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1982 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1983 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1984 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001985 else
1986 no_gtk=yes
1987 fi
1988
1989 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1990 {
1991 ac_save_CFLAGS="$CFLAGS"
1992 ac_save_LIBS="$LIBS"
1993 CFLAGS="$CFLAGS $GTK_CFLAGS"
1994 LIBS="$LIBS $GTK_LIBS"
1995
1996 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001997 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001998 dnl
1999 rm -f conf.gtktest
2000 AC_TRY_RUN([
2001#include <gtk/gtk.h>
2002#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002003#if STDC_HEADERS
2004# include <stdlib.h>
2005# include <stddef.h>
2006#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002007
2008int
2009main ()
2010{
2011int major, minor, micro;
2012char *tmp_version;
2013
2014system ("touch conf.gtktest");
2015
2016/* HP/UX 9 (%@#!) writes to sscanf strings */
2017tmp_version = g_strdup("$min_gtk_version");
2018if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2019 printf("%s, bad version string\n", "$min_gtk_version");
2020 exit(1);
2021 }
2022
2023if ((gtk_major_version > major) ||
2024 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2025 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2026 (gtk_micro_version >= micro)))
2027{
2028 return 0;
2029}
2030return 1;
2031}
2032],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2033 CFLAGS="$ac_save_CFLAGS"
2034 LIBS="$ac_save_LIBS"
2035 }
2036 fi
2037 if test "x$no_gtk" = x ; then
2038 if test "x$enable_gtktest" = "xyes"; then
2039 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2040 else
2041 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2042 fi
2043 ifelse([$2], , :, [$2])
2044 else
2045 {
2046 AC_MSG_RESULT(no)
2047 GTK_CFLAGS=""
2048 GTK_LIBS=""
2049 ifelse([$3], , :, [$3])
2050 }
2051 fi
2052 }
2053 else
2054 GTK_CFLAGS=""
2055 GTK_LIBS=""
2056 ifelse([$3], , :, [$3])
2057 fi
2058 AC_SUBST(GTK_CFLAGS)
2059 AC_SUBST(GTK_LIBS)
2060 rm -f conf.gtktest
2061])
2062
2063dnl ---------------------------------------------------------------------------
2064dnl gnome
2065dnl ---------------------------------------------------------------------------
2066AC_DEFUN([GNOME_INIT_HOOK],
2067[
2068 AC_SUBST(GNOME_LIBS)
2069 AC_SUBST(GNOME_LIBDIR)
2070 AC_SUBST(GNOME_INCLUDEDIR)
2071
2072 AC_ARG_WITH(gnome-includes,
2073 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2074 [CFLAGS="$CFLAGS -I$withval"]
2075 )
2076
2077 AC_ARG_WITH(gnome-libs,
2078 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2079 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2080 )
2081
2082 AC_ARG_WITH(gnome,
2083 [ --with-gnome Specify prefix for GNOME files],
2084 if test x$withval = xyes; then
2085 want_gnome=yes
2086 ifelse([$1], [], :, [$1])
2087 else
2088 if test "x$withval" = xno; then
2089 want_gnome=no
2090 else
2091 want_gnome=yes
2092 LDFLAGS="$LDFLAGS -L$withval/lib"
2093 CFLAGS="$CFLAGS -I$withval/include"
2094 gnome_prefix=$withval/lib
2095 fi
2096 fi,
2097 want_gnome=yes)
2098
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002099 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002100 {
2101 AC_MSG_CHECKING(for libgnomeui-2.0)
2102 if $PKG_CONFIG --exists libgnomeui-2.0; then
2103 AC_MSG_RESULT(yes)
2104 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2105 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2106 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002107
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002108 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2109 dnl This might not be the right way but it works for me...
2110 AC_MSG_CHECKING(for FreeBSD)
2111 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2112 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002113 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002114 GNOME_LIBS="$GNOME_LIBS -pthread"
2115 else
2116 AC_MSG_RESULT(no)
2117 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118 $1
2119 else
2120 AC_MSG_RESULT(not found)
2121 if test "x$2" = xfail; then
2122 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2123 fi
2124 fi
2125 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 fi
2127])
2128
2129AC_DEFUN([GNOME_INIT],[
2130 GNOME_INIT_HOOK([],fail)
2131])
2132
2133
2134dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002135dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002136dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002137if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002138
2139 AC_MSG_CHECKING(--disable-gtktest argument)
2140 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2141 , enable_gtktest=yes)
2142 if test "x$enable_gtktest" = "xyes" ; then
2143 AC_MSG_RESULT(gtk test enabled)
2144 else
2145 AC_MSG_RESULT(gtk test disabled)
2146 fi
2147
Bram Moolenaar071d4272004-06-13 20:20:40 +00002148 if test "X$PKG_CONFIG" = "X"; then
2149 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2150 fi
2151
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002152 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2154 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002155 AM_PATH_GTK(2.2.0,
2156 [GUI_LIB_LOC="$GTK_LIBDIR"
2157 GTK_LIBNAME="$GTK_LIBS"
2158 GUI_INC_LOC="$GTK_CFLAGS"], )
2159 if test "x$GTK_CFLAGS" != "x"; then
2160 SKIP_ATHENA=YES
2161 SKIP_NEXTAW=YES
2162 SKIP_MOTIF=YES
2163 GUITYPE=GTK
2164 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002165 fi
2166 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002168 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2169 || test "0$gtk_minor_version" -ge 2; then
2170 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2171 fi
2172 dnl
2173 dnl if GTK exists, then check for GNOME.
2174 dnl
2175 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002176 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002177 GNOME_INIT_HOOK([have_gnome=yes])
2178 if test "x$have_gnome" = xyes ; then
2179 AC_DEFINE(FEAT_GUI_GNOME)
2180 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2181 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002182 fi
2183 }
2184 fi
2185 fi
2186fi
2187
2188dnl Check for Motif include files location.
2189dnl The LAST one found is used, this makes the highest version to be used,
2190dnl e.g. when Motif1.2 and Motif2.0 are both present.
2191
2192if test -z "$SKIP_MOTIF"; then
2193 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"
2194 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2195 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2196
2197 AC_MSG_CHECKING(for location of Motif GUI includes)
2198 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2199 GUI_INC_LOC=
2200 for try in $gui_includes; do
2201 if test -f "$try/Xm/Xm.h"; then
2202 GUI_INC_LOC=$try
2203 fi
2204 done
2205 if test -n "$GUI_INC_LOC"; then
2206 if test "$GUI_INC_LOC" = /usr/include; then
2207 GUI_INC_LOC=
2208 AC_MSG_RESULT(in default path)
2209 else
2210 AC_MSG_RESULT($GUI_INC_LOC)
2211 fi
2212 else
2213 AC_MSG_RESULT(<not found>)
2214 SKIP_MOTIF=YES
2215 fi
2216fi
2217
2218dnl Check for Motif library files location. In the same order as the include
2219dnl files, to avoid a mixup if several versions are present
2220
2221if test -z "$SKIP_MOTIF"; then
2222 AC_MSG_CHECKING(--with-motif-lib argument)
2223 AC_ARG_WITH(motif-lib,
2224 [ --with-motif-lib=STRING Library for Motif ],
2225 [ MOTIF_LIBNAME="${withval}" ] )
2226
2227 if test -n "$MOTIF_LIBNAME"; then
2228 AC_MSG_RESULT($MOTIF_LIBNAME)
2229 GUI_LIB_LOC=
2230 else
2231 AC_MSG_RESULT(no)
2232
2233 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2234 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2235
2236 AC_MSG_CHECKING(for location of Motif GUI libs)
2237 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"
2238 GUI_LIB_LOC=
2239 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002240 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002241 if test -f "$libtry"; then
2242 GUI_LIB_LOC=$try
2243 fi
2244 done
2245 done
2246 if test -n "$GUI_LIB_LOC"; then
2247 dnl Remove /usr/lib, it causes trouble on some systems
2248 if test "$GUI_LIB_LOC" = /usr/lib; then
2249 GUI_LIB_LOC=
2250 AC_MSG_RESULT(in default path)
2251 else
2252 if test -n "$GUI_LIB_LOC"; then
2253 AC_MSG_RESULT($GUI_LIB_LOC)
2254 if test "`(uname) 2>/dev/null`" = SunOS &&
2255 uname -r | grep '^5' >/dev/null; then
2256 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2257 fi
2258 fi
2259 fi
2260 MOTIF_LIBNAME=-lXm
2261 else
2262 AC_MSG_RESULT(<not found>)
2263 SKIP_MOTIF=YES
2264 fi
2265 fi
2266fi
2267
2268if test -z "$SKIP_MOTIF"; then
2269 SKIP_ATHENA=YES
2270 SKIP_NEXTAW=YES
2271 GUITYPE=MOTIF
2272 AC_SUBST(MOTIF_LIBNAME)
2273fi
2274
2275dnl Check if the Athena files can be found
2276
2277GUI_X_LIBS=
2278
2279if test -z "$SKIP_ATHENA"; then
2280 AC_MSG_CHECKING(if Athena header files can be found)
2281 cflags_save=$CFLAGS
2282 CFLAGS="$CFLAGS $X_CFLAGS"
2283 AC_TRY_COMPILE([
2284#include <X11/Intrinsic.h>
2285#include <X11/Xaw/Paned.h>], ,
2286 AC_MSG_RESULT(yes),
2287 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2288 CFLAGS=$cflags_save
2289fi
2290
2291if test -z "$SKIP_ATHENA"; then
2292 GUITYPE=ATHENA
2293fi
2294
2295if test -z "$SKIP_NEXTAW"; then
2296 AC_MSG_CHECKING(if neXtaw header files can be found)
2297 cflags_save=$CFLAGS
2298 CFLAGS="$CFLAGS $X_CFLAGS"
2299 AC_TRY_COMPILE([
2300#include <X11/Intrinsic.h>
2301#include <X11/neXtaw/Paned.h>], ,
2302 AC_MSG_RESULT(yes),
2303 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2304 CFLAGS=$cflags_save
2305fi
2306
2307if test -z "$SKIP_NEXTAW"; then
2308 GUITYPE=NEXTAW
2309fi
2310
2311if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2312 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2313 dnl Avoid adding it when it twice
2314 if test -n "$GUI_INC_LOC"; then
2315 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2316 fi
2317 if test -n "$GUI_LIB_LOC"; then
2318 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2319 fi
2320
2321 dnl Check for -lXext and then for -lXmu
2322 ldflags_save=$LDFLAGS
2323 LDFLAGS="$X_LIBS $LDFLAGS"
2324 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2325 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2326 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2327 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2328 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2329 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2330 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2331 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2332 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2333 if test -z "$SKIP_MOTIF"; then
2334 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2335 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2336 fi
2337 LDFLAGS=$ldflags_save
2338
2339 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2340 AC_MSG_CHECKING(for extra X11 defines)
2341 NARROW_PROTO=
2342 rm -fr conftestdir
2343 if mkdir conftestdir; then
2344 cd conftestdir
2345 cat > Imakefile <<'EOF'
2346acfindx:
2347 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2348EOF
2349 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2350 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2351 fi
2352 cd ..
2353 rm -fr conftestdir
2354 fi
2355 if test -z "$NARROW_PROTO"; then
2356 AC_MSG_RESULT(no)
2357 else
2358 AC_MSG_RESULT($NARROW_PROTO)
2359 fi
2360 AC_SUBST(NARROW_PROTO)
2361fi
2362
2363dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2364dnl use the X11 include path
2365if test "$enable_xsmp" = "yes"; then
2366 cppflags_save=$CPPFLAGS
2367 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2368 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2369 CPPFLAGS=$cppflags_save
2370fi
2371
2372
Bram Moolenaare667c952010-07-05 22:57:59 +02002373if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002374 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2375 cppflags_save=$CPPFLAGS
2376 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2377 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2378
2379 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2380 if test ! "$enable_xim" = "no"; then
2381 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2382 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2383 AC_MSG_RESULT(yes),
2384 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2385 fi
2386 CPPFLAGS=$cppflags_save
2387
2388 dnl automatically enable XIM when hangul input isn't enabled
2389 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2390 -a "x$GUITYPE" != "xNONE" ; then
2391 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2392 enable_xim="yes"
2393 fi
2394fi
2395
2396if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2397 cppflags_save=$CPPFLAGS
2398 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002399dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2400 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2401 AC_TRY_COMPILE([
2402#include <X11/Intrinsic.h>
2403#include <X11/Xmu/Editres.h>],
2404 [int i; i = 0;],
2405 AC_MSG_RESULT(yes)
2406 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2407 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002408 CPPFLAGS=$cppflags_save
2409fi
2410
2411dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2412if test -z "$SKIP_MOTIF"; then
2413 cppflags_save=$CPPFLAGS
2414 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002415 if test "$zOSUnix" = "yes"; then
2416 xmheader="Xm/Xm.h"
2417 else
2418 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2419 Xm/UnhighlightT.h Xm/Notebook.h"
2420 fi
2421 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002422
Bram Moolenaar77c19352012-06-13 19:19:41 +02002423 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002424 dnl Solaris uses XpmAttributes_21, very annoying.
2425 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2426 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2427 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2428 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2429 )
2430 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002431 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002432 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002433 CPPFLAGS=$cppflags_save
2434fi
2435
2436if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2437 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2438 enable_xim="no"
2439fi
2440if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2441 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2442 enable_fontset="no"
2443fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002444if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002445 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2446 enable_fontset="no"
2447fi
2448
Bram Moolenaar071d4272004-06-13 20:20:40 +00002449if test -z "$SKIP_PHOTON"; then
2450 GUITYPE=PHOTONGUI
2451fi
2452
2453AC_SUBST(GUI_INC_LOC)
2454AC_SUBST(GUI_LIB_LOC)
2455AC_SUBST(GUITYPE)
2456AC_SUBST(GUI_X_LIBS)
2457
2458if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2459 AC_MSG_ERROR([cannot use workshop without Motif])
2460fi
2461
2462dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2463if test "$enable_xim" = "yes"; then
2464 AC_DEFINE(FEAT_XIM)
2465fi
2466if test "$enable_fontset" = "yes"; then
2467 AC_DEFINE(FEAT_XFONTSET)
2468fi
2469
2470
2471dnl ---------------------------------------------------------------------------
2472dnl end of GUI-checking
2473dnl ---------------------------------------------------------------------------
2474
2475
2476dnl Only really enable hangul input when GUI and XFONTSET are available
2477if test "$enable_hangulinput" = "yes"; then
2478 if test "x$GUITYPE" = "xNONE"; then
2479 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2480 enable_hangulinput=no
2481 else
2482 AC_DEFINE(FEAT_HANGULIN)
2483 HANGULIN_SRC=hangulin.c
2484 AC_SUBST(HANGULIN_SRC)
2485 HANGULIN_OBJ=objects/hangulin.o
2486 AC_SUBST(HANGULIN_OBJ)
2487 fi
2488fi
2489
2490dnl Checks for libraries and include files.
2491
Bram Moolenaar446cb832008-06-24 21:56:24 +00002492AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2493 [
2494 AC_RUN_IFELSE([[
2495#include "confdefs.h"
2496#include <ctype.h>
2497#if STDC_HEADERS
2498# include <stdlib.h>
2499# include <stddef.h>
2500#endif
2501main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2502 ]],[
2503 vim_cv_toupper_broken=yes
2504 ],[
2505 vim_cv_toupper_broken=no
2506 ],[
2507 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2508 ])])
2509
2510if test "x$vim_cv_toupper_broken" = "xyes" ; then
2511 AC_DEFINE(BROKEN_TOUPPER)
2512fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002513
2514AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002515AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002516 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2517 AC_MSG_RESULT(no))
2518
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002519AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2520AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2521 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2522 AC_MSG_RESULT(no))
2523
Bram Moolenaar071d4272004-06-13 20:20:40 +00002524dnl Checks for header files.
2525AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2526dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2527if test "$HAS_ELF" = 1; then
2528 AC_CHECK_LIB(elf, main)
2529fi
2530
2531AC_HEADER_DIRENT
2532
Bram Moolenaar071d4272004-06-13 20:20:40 +00002533dnl If sys/wait.h is not found it might still exist but not be POSIX
2534dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2535if test $ac_cv_header_sys_wait_h = no; then
2536 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2537 AC_TRY_COMPILE([#include <sys/wait.h>],
2538 [union wait xx, yy; xx = yy],
2539 AC_MSG_RESULT(yes)
2540 AC_DEFINE(HAVE_SYS_WAIT_H)
2541 AC_DEFINE(HAVE_UNION_WAIT),
2542 AC_MSG_RESULT(no))
2543fi
2544
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002545AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2546 sys/select.h sys/utsname.h termcap.h fcntl.h \
2547 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2548 termio.h iconv.h inttypes.h langinfo.h math.h \
2549 unistd.h stropts.h errno.h sys/resource.h \
2550 sys/systeminfo.h locale.h sys/stream.h termios.h \
2551 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2552 utime.h sys/param.h libintl.h libgen.h \
2553 util/debug.h util/msg18n.h frame.h sys/acl.h \
2554 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002555
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002556dnl sys/ptem.h depends on sys/stream.h on Solaris
2557AC_CHECK_HEADERS(sys/ptem.h, [], [],
2558[#if defined HAVE_SYS_STREAM_H
2559# include <sys/stream.h>
2560#endif])
2561
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002562dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2563AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2564[#if defined HAVE_SYS_PARAM_H
2565# include <sys/param.h>
2566#endif])
2567
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002568
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002569dnl pthread_np.h may exist but can only be used after including pthread.h
2570AC_MSG_CHECKING([for pthread_np.h])
2571AC_TRY_COMPILE([
2572#include <pthread.h>
2573#include <pthread_np.h>],
2574 [int i; i = 0;],
2575 AC_MSG_RESULT(yes)
2576 AC_DEFINE(HAVE_PTHREAD_NP_H),
2577 AC_MSG_RESULT(no))
2578
Bram Moolenaare344bea2005-09-01 20:46:49 +00002579AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002580if test "x$MACOSX" = "xyes"; then
2581 dnl The strings.h file on OS/X contains a warning and nothing useful.
2582 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2583else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002584
2585dnl Check if strings.h and string.h can both be included when defined.
2586AC_MSG_CHECKING([if strings.h can be included after string.h])
2587cppflags_save=$CPPFLAGS
2588CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2589AC_TRY_COMPILE([
2590#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2591# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2592 /* but don't do it on AIX 5.1 (Uribarri) */
2593#endif
2594#ifdef HAVE_XM_XM_H
2595# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2596#endif
2597#ifdef HAVE_STRING_H
2598# include <string.h>
2599#endif
2600#if defined(HAVE_STRINGS_H)
2601# include <strings.h>
2602#endif
2603 ], [int i; i = 0;],
2604 AC_MSG_RESULT(yes),
2605 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2606 AC_MSG_RESULT(no))
2607CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002608fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002609
2610dnl Checks for typedefs, structures, and compiler characteristics.
2611AC_PROG_GCC_TRADITIONAL
2612AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002613AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002614AC_TYPE_MODE_T
2615AC_TYPE_OFF_T
2616AC_TYPE_PID_T
2617AC_TYPE_SIZE_T
2618AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002619AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002620
Bram Moolenaar071d4272004-06-13 20:20:40 +00002621AC_HEADER_TIME
2622AC_CHECK_TYPE(ino_t, long)
2623AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002624AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002625
2626AC_MSG_CHECKING(for rlim_t)
2627if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2628 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2629else
2630 AC_EGREP_CPP(dnl
2631changequote(<<,>>)dnl
2632<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2633changequote([,]),
2634 [
2635#include <sys/types.h>
2636#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002637# include <stdlib.h>
2638# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639#endif
2640#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002641# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642#endif
2643 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2644 AC_MSG_RESULT($ac_cv_type_rlim_t)
2645fi
2646if test $ac_cv_type_rlim_t = no; then
2647 cat >> confdefs.h <<\EOF
2648#define rlim_t unsigned long
2649EOF
2650fi
2651
2652AC_MSG_CHECKING(for stack_t)
2653if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2654 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2655else
2656 AC_EGREP_CPP(stack_t,
2657 [
2658#include <sys/types.h>
2659#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002660# include <stdlib.h>
2661# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002662#endif
2663#include <signal.h>
2664 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2665 AC_MSG_RESULT($ac_cv_type_stack_t)
2666fi
2667if test $ac_cv_type_stack_t = no; then
2668 cat >> confdefs.h <<\EOF
2669#define stack_t struct sigaltstack
2670EOF
2671fi
2672
2673dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2674AC_MSG_CHECKING(whether stack_t has an ss_base field)
2675AC_TRY_COMPILE([
2676#include <sys/types.h>
2677#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002678# include <stdlib.h>
2679# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680#endif
2681#include <signal.h>
2682#include "confdefs.h"
2683 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2684 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2685 AC_MSG_RESULT(no))
2686
2687olibs="$LIBS"
2688AC_MSG_CHECKING(--with-tlib argument)
2689AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2690if test -n "$with_tlib"; then
2691 AC_MSG_RESULT($with_tlib)
2692 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002693 AC_MSG_CHECKING(for linking with $with_tlib library)
2694 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2695 dnl Need to check for tgetent() below.
2696 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002697else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002698 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002699 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2700 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002701 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002702 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002703 dnl Older versions of ncurses have bugs, get a new one!
2704 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002705 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002706 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002707 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2708 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002709 esac
2710 for libname in $tlibs; do
2711 AC_CHECK_LIB(${libname}, tgetent,,)
2712 if test "x$olibs" != "x$LIBS"; then
2713 dnl It's possible that a library is found but it doesn't work
2714 dnl e.g., shared library that cannot be found
2715 dnl compile and run a test program to be sure
2716 AC_TRY_RUN([
2717#ifdef HAVE_TERMCAP_H
2718# include <termcap.h>
2719#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002720#if STDC_HEADERS
2721# include <stdlib.h>
2722# include <stddef.h>
2723#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002724main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2725 res="OK", res="FAIL", res="FAIL")
2726 if test "$res" = "OK"; then
2727 break
2728 fi
2729 AC_MSG_RESULT($libname library is not usable)
2730 LIBS="$olibs"
2731 fi
2732 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002733 if test "x$olibs" = "x$LIBS"; then
2734 AC_MSG_RESULT(no terminal library found)
2735 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002736fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002737
2738if test "x$olibs" = "x$LIBS"; then
2739 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002740 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002741 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2742 AC_MSG_RESULT(yes),
2743 AC_MSG_ERROR([NOT FOUND!
2744 You need to install a terminal library; for example ncurses.
2745 Or specify the name of the library with --with-tlib.]))
2746fi
2747
Bram Moolenaar446cb832008-06-24 21:56:24 +00002748AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2749 [
2750 AC_RUN_IFELSE([[
2751#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002752#ifdef HAVE_TERMCAP_H
2753# include <termcap.h>
2754#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002755#ifdef HAVE_STRING_H
2756# include <string.h>
2757#endif
2758#if STDC_HEADERS
2759# include <stdlib.h>
2760# include <stddef.h>
2761#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002763{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2764 ]],[
2765 vim_cv_terminfo=no
2766 ],[
2767 vim_cv_terminfo=yes
2768 ],[
2769 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2770 ])
2771 ])
2772
2773if test "x$vim_cv_terminfo" = "xyes" ; then
2774 AC_DEFINE(TERMINFO)
2775fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002776
2777if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002778 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2779 [
2780 AC_RUN_IFELSE([[
2781#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002782#ifdef HAVE_TERMCAP_H
2783# include <termcap.h>
2784#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002785#if STDC_HEADERS
2786# include <stdlib.h>
2787# include <stddef.h>
2788#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002789main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002790{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2791 ]],[
2792 vim_cv_tgent=zero
2793 ],[
2794 vim_cv_tgent=non-zero
2795 ],[
2796 AC_MSG_ERROR(failed to compile test program.)
2797 ])
2798 ])
2799
2800 if test "x$vim_cv_tgent" = "xzero" ; then
2801 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2802 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002803fi
2804
2805AC_MSG_CHECKING(whether termcap.h contains ospeed)
2806AC_TRY_LINK([
2807#ifdef HAVE_TERMCAP_H
2808# include <termcap.h>
2809#endif
2810 ], [ospeed = 20000],
2811 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2812 [AC_MSG_RESULT(no)
2813 AC_MSG_CHECKING(whether ospeed can be extern)
2814 AC_TRY_LINK([
2815#ifdef HAVE_TERMCAP_H
2816# include <termcap.h>
2817#endif
2818extern short ospeed;
2819 ], [ospeed = 20000],
2820 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2821 AC_MSG_RESULT(no))]
2822 )
2823
2824AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2825AC_TRY_LINK([
2826#ifdef HAVE_TERMCAP_H
2827# include <termcap.h>
2828#endif
2829 ], [if (UP == 0 && BC == 0) PC = 1],
2830 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2831 [AC_MSG_RESULT(no)
2832 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2833 AC_TRY_LINK([
2834#ifdef HAVE_TERMCAP_H
2835# include <termcap.h>
2836#endif
2837extern char *UP, *BC, PC;
2838 ], [if (UP == 0 && BC == 0) PC = 1],
2839 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2840 AC_MSG_RESULT(no))]
2841 )
2842
2843AC_MSG_CHECKING(whether tputs() uses outfuntype)
2844AC_TRY_COMPILE([
2845#ifdef HAVE_TERMCAP_H
2846# include <termcap.h>
2847#endif
2848 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2849 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2850 AC_MSG_RESULT(no))
2851
2852dnl On some SCO machines sys/select redefines struct timeval
2853AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2854AC_TRY_COMPILE([
2855#include <sys/types.h>
2856#include <sys/time.h>
2857#include <sys/select.h>], ,
2858 AC_MSG_RESULT(yes)
2859 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2860 AC_MSG_RESULT(no))
2861
2862dnl AC_DECL_SYS_SIGLIST
2863
2864dnl Checks for pty.c (copied from screen) ==========================
2865AC_MSG_CHECKING(for /dev/ptc)
2866if test -r /dev/ptc; then
2867 AC_DEFINE(HAVE_DEV_PTC)
2868 AC_MSG_RESULT(yes)
2869else
2870 AC_MSG_RESULT(no)
2871fi
2872
2873AC_MSG_CHECKING(for SVR4 ptys)
2874if test -c /dev/ptmx ; then
2875 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2876 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2877 AC_MSG_RESULT(no))
2878else
2879 AC_MSG_RESULT(no)
2880fi
2881
2882AC_MSG_CHECKING(for ptyranges)
2883if test -d /dev/ptym ; then
2884 pdir='/dev/ptym'
2885else
2886 pdir='/dev'
2887fi
2888dnl SCO uses ptyp%d
2889AC_EGREP_CPP(yes,
2890[#ifdef M_UNIX
2891 yes;
2892#endif
2893 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2894dnl if test -c /dev/ptyp19; then
2895dnl ptys=`echo /dev/ptyp??`
2896dnl else
2897dnl ptys=`echo $pdir/pty??`
2898dnl fi
2899if test "$ptys" != "$pdir/pty??" ; then
2900 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2901 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2902 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2903 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2904 AC_MSG_RESULT([$p0 / $p1])
2905else
2906 AC_MSG_RESULT([don't know])
2907fi
2908
2909dnl **** pty mode/group handling ****
2910dnl
2911dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002912rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002913AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2914 [
2915 AC_RUN_IFELSE([[
2916#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002917#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002918#if STDC_HEADERS
2919# include <stdlib.h>
2920# include <stddef.h>
2921#endif
2922#ifdef HAVE_UNISTD_H
2923#include <unistd.h>
2924#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002925#include <sys/stat.h>
2926#include <stdio.h>
2927main()
2928{
2929 struct stat sb;
2930 char *x,*ttyname();
2931 int om, m;
2932 FILE *fp;
2933
2934 if (!(x = ttyname(0))) exit(1);
2935 if (stat(x, &sb)) exit(1);
2936 om = sb.st_mode;
2937 if (om & 002) exit(0);
2938 m = system("mesg y");
2939 if (m == -1 || m == 127) exit(1);
2940 if (stat(x, &sb)) exit(1);
2941 m = sb.st_mode;
2942 if (chmod(x, om)) exit(1);
2943 if (m & 002) exit(0);
2944 if (sb.st_gid == getgid()) exit(1);
2945 if (!(fp=fopen("conftest_grp", "w")))
2946 exit(1);
2947 fprintf(fp, "%d\n", sb.st_gid);
2948 fclose(fp);
2949 exit(0);
2950}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002951 ]],[
2952 if test -f conftest_grp; then
2953 vim_cv_tty_group=`cat conftest_grp`
2954 if test "x$vim_cv_tty_mode" = "x" ; then
2955 vim_cv_tty_mode=0620
2956 fi
2957 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2958 else
2959 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002960 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002961 fi
2962 ],[
2963 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002964 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002965 ],[
2966 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2967 ])
2968 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002969rm -f conftest_grp
2970
Bram Moolenaar446cb832008-06-24 21:56:24 +00002971if test "x$vim_cv_tty_group" != "xworld" ; then
2972 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2973 if test "x$vim_cv_tty_mode" = "x" ; then
2974 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)])
2975 else
2976 AC_DEFINE(PTYMODE, 0620)
2977 fi
2978fi
2979
Bram Moolenaar071d4272004-06-13 20:20:40 +00002980dnl Checks for library functions. ===================================
2981
2982AC_TYPE_SIGNAL
2983
2984dnl find out what to use at the end of a signal function
2985if test $ac_cv_type_signal = void; then
2986 AC_DEFINE(SIGRETURN, [return])
2987else
2988 AC_DEFINE(SIGRETURN, [return 0])
2989fi
2990
2991dnl check if struct sigcontext is defined (used for SGI only)
2992AC_MSG_CHECKING(for struct sigcontext)
2993AC_TRY_COMPILE([
2994#include <signal.h>
2995test_sig()
2996{
2997 struct sigcontext *scont;
2998 scont = (struct sigcontext *)0;
2999 return 1;
3000} ], ,
3001 AC_MSG_RESULT(yes)
3002 AC_DEFINE(HAVE_SIGCONTEXT),
3003 AC_MSG_RESULT(no))
3004
3005dnl tricky stuff: try to find out if getcwd() is implemented with
3006dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003007AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3008 [
3009 AC_RUN_IFELSE([[
3010#include "confdefs.h"
3011#ifdef HAVE_UNISTD_H
3012#include <unistd.h>
3013#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014char *dagger[] = { "IFS=pwd", 0 };
3015main()
3016{
3017 char buffer[500];
3018 extern char **environ;
3019 environ = dagger;
3020 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003021}
3022 ]],[
3023 vim_cv_getcwd_broken=no
3024 ],[
3025 vim_cv_getcwd_broken=yes
3026 ],[
3027 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3028 ])
3029 ])
3030
3031if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3032 AC_DEFINE(BAD_GETCWD)
3033fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003034
Bram Moolenaar25153e12010-02-24 14:47:08 +01003035dnl Check for functions in one big call, to reduce the size of configure.
3036dnl Can only be used for functions that do not require any include.
3037AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003038 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003039 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003040 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003041 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003042 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3043 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003044AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003045
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003046dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3047dnl appropriate, so that off_t is 64 bits when needed.
3048AC_SYS_LARGEFILE
3049
Bram Moolenaar071d4272004-06-13 20:20:40 +00003050dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3051AC_MSG_CHECKING(for st_blksize)
3052AC_TRY_COMPILE(
3053[#include <sys/types.h>
3054#include <sys/stat.h>],
3055[ struct stat st;
3056 int n;
3057
3058 stat("/", &st);
3059 n = (int)st.st_blksize;],
3060 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3061 AC_MSG_RESULT(no))
3062
Bram Moolenaar446cb832008-06-24 21:56:24 +00003063AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3064 [
3065 AC_RUN_IFELSE([[
3066#include "confdefs.h"
3067#if STDC_HEADERS
3068# include <stdlib.h>
3069# include <stddef.h>
3070#endif
3071#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003072#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003073main() {struct stat st; exit(stat("configure/", &st) != 0); }
3074 ]],[
3075 vim_cv_stat_ignores_slash=yes
3076 ],[
3077 vim_cv_stat_ignores_slash=no
3078 ],[
3079 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3080 ])
3081 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003082
Bram Moolenaar446cb832008-06-24 21:56:24 +00003083if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3084 AC_DEFINE(STAT_IGNORES_SLASH)
3085fi
3086
Bram Moolenaar071d4272004-06-13 20:20:40 +00003087dnl Link with iconv for charset translation, if not found without library.
3088dnl check for iconv() requires including iconv.h
3089dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3090dnl has been installed.
3091AC_MSG_CHECKING(for iconv_open())
3092save_LIBS="$LIBS"
3093LIBS="$LIBS -liconv"
3094AC_TRY_LINK([
3095#ifdef HAVE_ICONV_H
3096# include <iconv.h>
3097#endif
3098 ], [iconv_open("fr", "to");],
3099 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3100 LIBS="$save_LIBS"
3101 AC_TRY_LINK([
3102#ifdef HAVE_ICONV_H
3103# include <iconv.h>
3104#endif
3105 ], [iconv_open("fr", "to");],
3106 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3107 AC_MSG_RESULT(no)))
3108
3109
3110AC_MSG_CHECKING(for nl_langinfo(CODESET))
3111AC_TRY_LINK([
3112#ifdef HAVE_LANGINFO_H
3113# include <langinfo.h>
3114#endif
3115], [char *cs = nl_langinfo(CODESET);],
3116 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3117 AC_MSG_RESULT(no))
3118
Bram Moolenaar446cb832008-06-24 21:56:24 +00003119dnl Need various functions for floating point support. Only enable
3120dnl floating point when they are all present.
3121AC_CHECK_LIB(m, strtod)
3122AC_MSG_CHECKING([for strtod() and other floating point functions])
3123AC_TRY_LINK([
3124#ifdef HAVE_MATH_H
3125# include <math.h>
3126#endif
3127#if STDC_HEADERS
3128# include <stdlib.h>
3129# include <stddef.h>
3130#endif
3131], [char *s; double d;
3132 d = strtod("1.1", &s);
3133 d = fabs(1.11);
3134 d = ceil(1.11);
3135 d = floor(1.11);
3136 d = log10(1.11);
3137 d = pow(1.11, 2.22);
3138 d = sqrt(1.11);
3139 d = sin(1.11);
3140 d = cos(1.11);
3141 d = atan(1.11);
3142 ],
3143 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3144 AC_MSG_RESULT(no))
3145
Bram Moolenaar071d4272004-06-13 20:20:40 +00003146dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3147dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003148dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003149AC_MSG_CHECKING(--disable-acl argument)
3150AC_ARG_ENABLE(acl,
3151 [ --disable-acl Don't check for ACL support.],
3152 , [enable_acl="yes"])
3153if test "$enable_acl" = "yes"; then
3154AC_MSG_RESULT(no)
3155AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3156 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3157 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3158
3159AC_MSG_CHECKING(for POSIX ACL support)
3160AC_TRY_LINK([
3161#include <sys/types.h>
3162#ifdef HAVE_SYS_ACL_H
3163# include <sys/acl.h>
3164#endif
3165acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3166 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3167 acl_free(acl);],
3168 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3169 AC_MSG_RESULT(no))
3170
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003171AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003172AC_MSG_CHECKING(for Solaris ACL support)
3173AC_TRY_LINK([
3174#ifdef HAVE_SYS_ACL_H
3175# include <sys/acl.h>
3176#endif], [acl("foo", GETACLCNT, 0, NULL);
3177 ],
3178 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003179 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003180
3181AC_MSG_CHECKING(for AIX ACL support)
3182AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003183#if STDC_HEADERS
3184# include <stdlib.h>
3185# include <stddef.h>
3186#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003187#ifdef HAVE_SYS_ACL_H
3188# include <sys/acl.h>
3189#endif
3190#ifdef HAVE_SYS_ACCESS_H
3191# include <sys/access.h>
3192#endif
3193#define _ALL_SOURCE
3194
3195#include <sys/stat.h>
3196
3197int aclsize;
3198struct acl *aclent;], [aclsize = sizeof(struct acl);
3199 aclent = (void *)malloc(aclsize);
3200 statacl("foo", STX_NORMAL, aclent, aclsize);
3201 ],
3202 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3203 AC_MSG_RESULT(no))
3204else
3205 AC_MSG_RESULT(yes)
3206fi
3207
3208AC_MSG_CHECKING(--disable-gpm argument)
3209AC_ARG_ENABLE(gpm,
3210 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3211 [enable_gpm="yes"])
3212
3213if test "$enable_gpm" = "yes"; then
3214 AC_MSG_RESULT(no)
3215 dnl Checking if gpm support can be compiled
3216 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3217 [olibs="$LIBS" ; LIBS="-lgpm"]
3218 AC_TRY_LINK(
3219 [#include <gpm.h>
3220 #include <linux/keyboard.h>],
3221 [Gpm_GetLibVersion(NULL);],
3222 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3223 dnl FEAT_MOUSE_GPM if mouse support is included
3224 [vi_cv_have_gpm=yes],
3225 [vi_cv_have_gpm=no])
3226 [LIBS="$olibs"]
3227 )
3228 if test $vi_cv_have_gpm = yes; then
3229 LIBS="$LIBS -lgpm"
3230 AC_DEFINE(HAVE_GPM)
3231 fi
3232else
3233 AC_MSG_RESULT(yes)
3234fi
3235
Bram Moolenaar446cb832008-06-24 21:56:24 +00003236AC_MSG_CHECKING(--disable-sysmouse argument)
3237AC_ARG_ENABLE(sysmouse,
3238 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3239 [enable_sysmouse="yes"])
3240
3241if test "$enable_sysmouse" = "yes"; then
3242 AC_MSG_RESULT(no)
3243 dnl Checking if sysmouse support can be compiled
3244 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3245 dnl defines FEAT_SYSMOUSE if mouse support is included
3246 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3247 AC_TRY_LINK(
3248 [#include <sys/consio.h>
3249 #include <signal.h>
3250 #include <sys/fbio.h>],
3251 [struct mouse_info mouse;
3252 mouse.operation = MOUSE_MODE;
3253 mouse.operation = MOUSE_SHOW;
3254 mouse.u.mode.mode = 0;
3255 mouse.u.mode.signal = SIGUSR2;],
3256 [vi_cv_have_sysmouse=yes],
3257 [vi_cv_have_sysmouse=no])
3258 )
3259 if test $vi_cv_have_sysmouse = yes; then
3260 AC_DEFINE(HAVE_SYSMOUSE)
3261 fi
3262else
3263 AC_MSG_RESULT(yes)
3264fi
3265
Bram Moolenaarf05da212009-11-17 16:13:15 +00003266dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3267AC_MSG_CHECKING(for FD_CLOEXEC)
3268AC_TRY_COMPILE(
3269[#if HAVE_FCNTL_H
3270# include <fcntl.h>
3271#endif],
3272[ int flag = FD_CLOEXEC;],
3273 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3274 AC_MSG_RESULT(not usable))
3275
Bram Moolenaar071d4272004-06-13 20:20:40 +00003276dnl rename needs to be checked separately to work on Nextstep with cc
3277AC_MSG_CHECKING(for rename)
3278AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3279 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3280 AC_MSG_RESULT(no))
3281
3282dnl sysctl() may exist but not the arguments we use
3283AC_MSG_CHECKING(for sysctl)
3284AC_TRY_COMPILE(
3285[#include <sys/types.h>
3286#include <sys/sysctl.h>],
3287[ int mib[2], r;
3288 size_t len;
3289
3290 mib[0] = CTL_HW;
3291 mib[1] = HW_USERMEM;
3292 len = sizeof(r);
3293 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3294 ],
3295 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3296 AC_MSG_RESULT(not usable))
3297
3298dnl sysinfo() may exist but not be Linux compatible
3299AC_MSG_CHECKING(for sysinfo)
3300AC_TRY_COMPILE(
3301[#include <sys/types.h>
3302#include <sys/sysinfo.h>],
3303[ struct sysinfo sinfo;
3304 int t;
3305
3306 (void)sysinfo(&sinfo);
3307 t = sinfo.totalram;
3308 ],
3309 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3310 AC_MSG_RESULT(not usable))
3311
Bram Moolenaar914572a2007-05-01 11:37:47 +00003312dnl struct sysinfo may have the mem_unit field or not
3313AC_MSG_CHECKING(for sysinfo.mem_unit)
3314AC_TRY_COMPILE(
3315[#include <sys/types.h>
3316#include <sys/sysinfo.h>],
3317[ struct sysinfo sinfo;
3318 sinfo.mem_unit = 1;
3319 ],
3320 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3321 AC_MSG_RESULT(no))
3322
Bram Moolenaar071d4272004-06-13 20:20:40 +00003323dnl sysconf() may exist but not support what we want to use
3324AC_MSG_CHECKING(for sysconf)
3325AC_TRY_COMPILE(
3326[#include <unistd.h>],
3327[ (void)sysconf(_SC_PAGESIZE);
3328 (void)sysconf(_SC_PHYS_PAGES);
3329 ],
3330 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3331 AC_MSG_RESULT(not usable))
3332
Bram Moolenaar914703b2010-05-31 21:59:46 +02003333AC_CHECK_SIZEOF([int])
3334AC_CHECK_SIZEOF([long])
3335AC_CHECK_SIZEOF([time_t])
3336AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003337
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003338dnl Make sure that uint32_t is really 32 bits unsigned.
3339AC_MSG_CHECKING([uint32_t is 32 bits])
3340AC_TRY_RUN([
3341#ifdef HAVE_STDINT_H
3342# include <stdint.h>
3343#endif
3344#ifdef HAVE_INTTYPES_H
3345# include <inttypes.h>
3346#endif
3347main() {
3348 uint32_t nr1 = (uint32_t)-1;
3349 uint32_t nr2 = (uint32_t)0xffffffffUL;
3350 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3351 exit(0);
3352}],
3353AC_MSG_RESULT(ok),
3354AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003355AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003356
Bram Moolenaar446cb832008-06-24 21:56:24 +00003357dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3358dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3359
Bram Moolenaar071d4272004-06-13 20:20:40 +00003360[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003361#include "confdefs.h"
3362#ifdef HAVE_STRING_H
3363# include <string.h>
3364#endif
3365#if STDC_HEADERS
3366# include <stdlib.h>
3367# include <stddef.h>
3368#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003369main() {
3370 char buf[10];
3371 strcpy(buf, "abcdefghi");
3372 mch_memmove(buf, buf + 2, 3);
3373 if (strncmp(buf, "ababcf", 6))
3374 exit(1);
3375 strcpy(buf, "abcdefghi");
3376 mch_memmove(buf + 2, buf, 3);
3377 if (strncmp(buf, "cdedef", 6))
3378 exit(1);
3379 exit(0); /* libc version works properly. */
3380}']
3381
Bram Moolenaar446cb832008-06-24 21:56:24 +00003382AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3383 [
3384 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3385 [
3386 vim_cv_memmove_handles_overlap=yes
3387 ],[
3388 vim_cv_memmove_handles_overlap=no
3389 ],[
3390 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3391 ])
3392 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003393
Bram Moolenaar446cb832008-06-24 21:56:24 +00003394if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3395 AC_DEFINE(USEMEMMOVE)
3396else
3397 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3398 [
3399 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3400 [
3401 vim_cv_bcopy_handles_overlap=yes
3402 ],[
3403 vim_cv_bcopy_handles_overlap=no
3404 ],[
3405 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3406 ])
3407 ])
3408
3409 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3410 AC_DEFINE(USEBCOPY)
3411 else
3412 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3413 [
3414 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3415 [
3416 vim_cv_memcpy_handles_overlap=yes
3417 ],[
3418 vim_cv_memcpy_handles_overlap=no
3419 ],[
3420 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3421 ])
3422 ])
3423
3424 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3425 AC_DEFINE(USEMEMCPY)
3426 fi
3427 fi
3428fi
3429
Bram Moolenaar071d4272004-06-13 20:20:40 +00003430
3431dnl Check for multibyte locale functions
3432dnl Find out if _Xsetlocale() is supported by libX11.
3433dnl Check if X_LOCALE should be defined.
3434
3435if test "$enable_multibyte" = "yes"; then
3436 cflags_save=$CFLAGS
3437 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003438 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003439 CFLAGS="$CFLAGS -I$x_includes"
3440 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3441 AC_MSG_CHECKING(whether X_LOCALE needed)
3442 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3443 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3444 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3445 AC_MSG_RESULT(no))
3446 fi
3447 CFLAGS=$cflags_save
3448 LDFLAGS=$ldflags_save
3449fi
3450
3451dnl Link with xpg4, it is said to make Korean locale working
3452AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3453
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003454dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003455dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003456dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003457dnl -t for typedefs (many ctags have this)
3458dnl -s for static functions (Elvis ctags only?)
3459dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3460dnl -i+m to test for older Exuberant ctags
3461AC_MSG_CHECKING(how to create tags)
3462test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003463if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003464 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003465elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3466 TAGPRG="exctags -I INIT+ --fields=+S"
3467elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3468 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003469else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003470 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003471 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3472 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3473 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3474 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3475 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3476 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3477 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3478fi
3479test -f tags.save && mv tags.save tags
3480AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3481
3482dnl Check how we can run man with a section number
3483AC_MSG_CHECKING(how to run man with a section nr)
3484MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003485(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 +00003486AC_MSG_RESULT($MANDEF)
3487if test "$MANDEF" = "man -s"; then
3488 AC_DEFINE(USEMAN_S)
3489fi
3490
3491dnl Check if gettext() is working and if it needs -lintl
3492AC_MSG_CHECKING(--disable-nls argument)
3493AC_ARG_ENABLE(nls,
3494 [ --disable-nls Don't support NLS (gettext()).], ,
3495 [enable_nls="yes"])
3496
3497if test "$enable_nls" = "yes"; then
3498 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003499
3500 INSTALL_LANGS=install-languages
3501 AC_SUBST(INSTALL_LANGS)
3502 INSTALL_TOOL_LANGS=install-tool-languages
3503 AC_SUBST(INSTALL_TOOL_LANGS)
3504
Bram Moolenaar071d4272004-06-13 20:20:40 +00003505 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3506 AC_MSG_CHECKING([for NLS])
3507 if test -f po/Makefile; then
3508 have_gettext="no"
3509 if test -n "$MSGFMT"; then
3510 AC_TRY_LINK(
3511 [#include <libintl.h>],
3512 [gettext("Test");],
3513 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3514 olibs=$LIBS
3515 LIBS="$LIBS -lintl"
3516 AC_TRY_LINK(
3517 [#include <libintl.h>],
3518 [gettext("Test");],
3519 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3520 AC_MSG_RESULT([gettext() doesn't work]);
3521 LIBS=$olibs))
3522 else
3523 AC_MSG_RESULT([msgfmt not found - disabled]);
3524 fi
3525 if test $have_gettext = "yes"; then
3526 AC_DEFINE(HAVE_GETTEXT)
3527 MAKEMO=yes
3528 AC_SUBST(MAKEMO)
3529 dnl this was added in GNU gettext 0.10.36
3530 AC_CHECK_FUNCS(bind_textdomain_codeset)
3531 dnl _nl_msg_cat_cntr is required for GNU gettext
3532 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3533 AC_TRY_LINK(
3534 [#include <libintl.h>
3535 extern int _nl_msg_cat_cntr;],
3536 [++_nl_msg_cat_cntr;],
3537 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3538 AC_MSG_RESULT([no]))
3539 fi
3540 else
3541 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3542 fi
3543else
3544 AC_MSG_RESULT(yes)
3545fi
3546
3547dnl Check for dynamic linking loader
3548AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3549if test x${DLL} = xdlfcn.h; then
3550 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3551 AC_MSG_CHECKING([for dlopen()])
3552 AC_TRY_LINK(,[
3553 extern void* dlopen();
3554 dlopen();
3555 ],
3556 AC_MSG_RESULT(yes);
3557 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3558 AC_MSG_RESULT(no);
3559 AC_MSG_CHECKING([for dlopen() in -ldl])
3560 olibs=$LIBS
3561 LIBS="$LIBS -ldl"
3562 AC_TRY_LINK(,[
3563 extern void* dlopen();
3564 dlopen();
3565 ],
3566 AC_MSG_RESULT(yes);
3567 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3568 AC_MSG_RESULT(no);
3569 LIBS=$olibs))
3570 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3571 dnl ick :-)
3572 AC_MSG_CHECKING([for dlsym()])
3573 AC_TRY_LINK(,[
3574 extern void* dlsym();
3575 dlsym();
3576 ],
3577 AC_MSG_RESULT(yes);
3578 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3579 AC_MSG_RESULT(no);
3580 AC_MSG_CHECKING([for dlsym() in -ldl])
3581 olibs=$LIBS
3582 LIBS="$LIBS -ldl"
3583 AC_TRY_LINK(,[
3584 extern void* dlsym();
3585 dlsym();
3586 ],
3587 AC_MSG_RESULT(yes);
3588 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3589 AC_MSG_RESULT(no);
3590 LIBS=$olibs))
3591elif test x${DLL} = xdl.h; then
3592 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3593 AC_MSG_CHECKING([for shl_load()])
3594 AC_TRY_LINK(,[
3595 extern void* shl_load();
3596 shl_load();
3597 ],
3598 AC_MSG_RESULT(yes);
3599 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3600 AC_MSG_RESULT(no);
3601 AC_MSG_CHECKING([for shl_load() in -ldld])
3602 olibs=$LIBS
3603 LIBS="$LIBS -ldld"
3604 AC_TRY_LINK(,[
3605 extern void* shl_load();
3606 shl_load();
3607 ],
3608 AC_MSG_RESULT(yes);
3609 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3610 AC_MSG_RESULT(no);
3611 LIBS=$olibs))
3612fi
3613AC_CHECK_HEADERS(setjmp.h)
3614
3615if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3616 dnl -ldl must come after DynaLoader.a
3617 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3618 LIBS=`echo $LIBS | sed s/-ldl//`
3619 PERL_LIBS="$PERL_LIBS -ldl"
3620 fi
3621fi
3622
Bram Moolenaar164fca32010-07-14 13:58:07 +02003623if test "x$MACOSX" = "xyes"; then
3624 AC_MSG_CHECKING(whether we need -framework Cocoa)
3625 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3626 dnl disabled during tiny build)
3627 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3628 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003629 AC_MSG_RESULT(yes)
3630 else
3631 AC_MSG_RESULT(no)
3632 fi
3633fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003634if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003635 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003636fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003637
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003638dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3639dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3640dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003641dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3642dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003643DEPEND_CFLAGS_FILTER=
3644if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003645 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003646 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003647 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003648 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003649 AC_MSG_RESULT(yes)
3650 else
3651 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003652 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003653 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3654 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003655 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003656 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003657 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3658 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003659 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 +00003660 AC_MSG_RESULT(yes)
3661 else
3662 AC_MSG_RESULT(no)
3663 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003664fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003665AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003666
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003667dnl link.sh tries to avoid overlinking in a hackish way.
3668dnl At least GNU ld supports --as-needed which provides the same functionality
3669dnl at linker level. Let's use it.
3670AC_MSG_CHECKING(linker --as-needed support)
3671LINK_AS_NEEDED=
3672# Check if linker supports --as-needed and --no-as-needed options
3673if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3674 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3675 LINK_AS_NEEDED=yes
3676fi
3677if test "$LINK_AS_NEEDED" = yes; then
3678 AC_MSG_RESULT(yes)
3679else
3680 AC_MSG_RESULT(no)
3681fi
3682AC_SUBST(LINK_AS_NEEDED)
3683
Bram Moolenaar77c19352012-06-13 19:19:41 +02003684# IBM z/OS reset CFLAGS for config.mk
3685if test "$zOSUnix" = "yes"; then
3686 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3687fi
3688
Bram Moolenaar071d4272004-06-13 20:20:40 +00003689dnl write output files
3690AC_OUTPUT(auto/config.mk:config.mk.in)
3691
3692dnl vim: set sw=2 tw=78 fo+=l: