blob: d0fa6ffc06e59fdb2379953c385e58c60d3ed36e [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.
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100499 for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
500 for i in 0 1 2 3 4 5 6 7 8 9; do
501 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
502 LUA_SONAME=".$i"
503 break
504 fi
505 done
506 vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200507 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200508 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200509 AC_DEFINE(DYNAMIC_LUA)
510 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200511 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200512 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200513 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100514 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
515 AC_MSG_ERROR([could not configure lua])
516 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200517 AC_SUBST(LUA_SRC)
518 AC_SUBST(LUA_OBJ)
519 AC_SUBST(LUA_PRO)
520 AC_SUBST(LUA_LIBS)
521 AC_SUBST(LUA_CFLAGS)
522fi
523
524
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000525dnl Check for MzScheme feature.
526AC_MSG_CHECKING(--enable-mzschemeinterp argument)
527AC_ARG_ENABLE(mzschemeinterp,
528 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
529 [enable_mzschemeinterp="no"])
530AC_MSG_RESULT($enable_mzschemeinterp)
531
532if test "$enable_mzschemeinterp" = "yes"; then
533 dnl -- find the mzscheme executable
534 AC_SUBST(vi_cv_path_mzscheme)
535
536 AC_MSG_CHECKING(--with-plthome argument)
537 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000538 [ --with-plthome=PLTHOME Use PLTHOME.],
539 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000540 with_plthome="";AC_MSG_RESULT("no"))
541
542 if test "X$with_plthome" != "X"; then
543 vi_cv_path_mzscheme_pfx="$with_plthome"
544 else
545 AC_MSG_CHECKING(PLTHOME environment var)
546 if test "X$PLTHOME" != "X"; then
547 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000548 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000550 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000551 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000552 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000553
554 dnl resolve symbolic link, the executable is often elsewhere and there
555 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000556 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000557 lsout=`ls -l $vi_cv_path_mzscheme`
558 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
559 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
560 fi
561 fi
562
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000563 if test "X$vi_cv_path_mzscheme" != "X"; then
564 dnl -- find where MzScheme thinks it was installed
565 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000566 dnl different versions of MzScheme differ in command line processing
567 dnl use universal approach
568 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000569 (build-path (call-with-values \
570 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000571 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
572 dnl Remove a trailing slash
573 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
574 sed -e 's+/$++'` ])
575 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000576 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000577 fi
578 fi
579
Bram Moolenaard7afed32007-05-06 13:26:41 +0000580 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000581 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
582 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
583 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000584 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
585 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000587 AC_MSG_RESULT(no)
588 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000590 AC_MSG_RESULT(yes)
591 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000592 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100594 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
595 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100597 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000598 else
599 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100600 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
601 if test -f /usr/include/plt/scheme.h; then
602 AC_MSG_RESULT(yes)
603 SCHEME_INC=/usr/include/plt
604 else
605 AC_MSG_RESULT(no)
606 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
607 if test -f /usr/include/racket/scheme.h; then
608 AC_MSG_RESULT(yes)
609 SCHEME_INC=/usr/include/racket
610 else
611 AC_MSG_RESULT(no)
612 vi_cv_path_mzscheme_pfx=
613 fi
614 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000615 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000616 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000617 fi
618 fi
619
620 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000621 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100622 MZSCHEME_LIBS="-framework Racket"
623 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
625 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
626 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100627 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
628 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
629 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
630 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
631 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
632 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000633 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 +0000634 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000635 dnl Using shared objects
636 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
640 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
641 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
642 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
643 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 else
645 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
646 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000647 if test "$GCC" = yes; then
648 dnl Make Vim remember the path to the library. For when it's not in
649 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000650 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000651 elif test "`(uname) 2>/dev/null`" = SunOS &&
652 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000654 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000655 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100656
657 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000658 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100659 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100660 else
661 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100662 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
663 else
664 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
665 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100666 else
667 if test -d $vi_cv_path_mzscheme_pfx/collects; then
668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
669 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100670 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100671 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000672 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100673 if test "X$SCHEME_COLLECTS" != "X" ; then
674 AC_MSG_RESULT(${SCHEME_COLLECTS})
675 else
676 AC_MSG_RESULT(not found)
677 fi
678
679 AC_MSG_CHECKING(for mzscheme_base.c)
680 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000681 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100682 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100683 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100684 MZSCHEME_EXTRA="mzscheme_base.c"
685 fi
686 fi
687 if test "X$MZSCHEME_EXTRA" != "X" ; then
688 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000689 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
690 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100691 AC_MSG_RESULT(needed)
692 else
693 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000694 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100695
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000696 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100697 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000698 MZSCHEME_SRC="if_mzsch.c"
699 MZSCHEME_OBJ="objects/if_mzsch.o"
700 MZSCHEME_PRO="if_mzsch.pro"
701 AC_DEFINE(FEAT_MZSCHEME)
702 fi
703 AC_SUBST(MZSCHEME_SRC)
704 AC_SUBST(MZSCHEME_OBJ)
705 AC_SUBST(MZSCHEME_PRO)
706 AC_SUBST(MZSCHEME_LIBS)
707 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000708 AC_SUBST(MZSCHEME_EXTRA)
709 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000710fi
711
712
Bram Moolenaar071d4272004-06-13 20:20:40 +0000713AC_MSG_CHECKING(--enable-perlinterp argument)
714AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200715 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000716 [enable_perlinterp="no"])
717AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200718if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000719 AC_SUBST(vi_cv_path_perl)
720 AC_PATH_PROG(vi_cv_path_perl, perl)
721 if test "X$vi_cv_path_perl" != "X"; then
722 AC_MSG_CHECKING(Perl version)
723 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
724 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200725 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000726 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
727 badthreads=no
728 else
729 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
730 eval `$vi_cv_path_perl -V:use5005threads`
731 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
732 badthreads=no
733 else
734 badthreads=yes
735 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
736 fi
737 else
738 badthreads=yes
739 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
740 fi
741 fi
742 if test $badthreads = no; then
743 AC_MSG_RESULT(OK)
744 eval `$vi_cv_path_perl -V:shrpenv`
745 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
746 shrpenv=""
747 fi
748 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
749 AC_SUBST(vi_cv_perllib)
750 dnl Remove "-fno-something", it breaks using cproto.
751 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
752 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
753 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
754 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
755 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
756 -e 's/-bE:perl.exp//' -e 's/-lc //'`
757 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
758 dnl a test in configure may fail because of that.
759 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
760 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
761
762 dnl check that compiling a simple program still works with the flags
763 dnl added for Perl.
764 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
765 cflags_save=$CFLAGS
766 libs_save=$LIBS
767 ldflags_save=$LDFLAGS
768 CFLAGS="$CFLAGS $perlcppflags"
769 LIBS="$LIBS $perllibs"
770 LDFLAGS="$perlldflags $LDFLAGS"
771 AC_TRY_LINK(,[ ],
772 AC_MSG_RESULT(yes); perl_ok=yes,
773 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
774 CFLAGS=$cflags_save
775 LIBS=$libs_save
776 LDFLAGS=$ldflags_save
777 if test $perl_ok = yes; then
778 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000779 dnl remove -pipe and -Wxxx, it confuses cproto
780 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000781 fi
782 if test "X$perlldflags" != "X"; then
783 LDFLAGS="$perlldflags $LDFLAGS"
784 fi
785 PERL_LIBS=$perllibs
786 PERL_SRC="auto/if_perl.c if_perlsfio.c"
787 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
788 PERL_PRO="if_perl.pro if_perlsfio.pro"
789 AC_DEFINE(FEAT_PERL)
790 fi
791 fi
792 else
793 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
794 fi
795 fi
796
797 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000798 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000799 dir=/System/Library/Perl
800 darwindir=$dir/darwin
801 if test -d $darwindir; then
802 PERL=/usr/bin/perl
803 else
804 dnl Mac OS X 10.3
805 dir=/System/Library/Perl/5.8.1
806 darwindir=$dir/darwin-thread-multi-2level
807 if test -d $darwindir; then
808 PERL=/usr/bin/perl
809 fi
810 fi
811 if test -n "$PERL"; then
812 PERL_DIR="$dir"
813 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
814 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
815 PERL_LIBS="-L$darwindir/CORE -lperl"
816 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200817 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
818 dnl be included if requested by passing --with-mac-arch to
819 dnl configure, so strip these flags first (if present)
820 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
821 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 +0000822 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200823 if test "$enable_perlinterp" = "dynamic"; then
824 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
825 AC_DEFINE(DYNAMIC_PERL)
826 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
827 fi
828 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100829
830 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
831 AC_MSG_ERROR([could not configure perl])
832 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833fi
834AC_SUBST(shrpenv)
835AC_SUBST(PERL_SRC)
836AC_SUBST(PERL_OBJ)
837AC_SUBST(PERL_PRO)
838AC_SUBST(PERL_CFLAGS)
839AC_SUBST(PERL_LIBS)
840
841AC_MSG_CHECKING(--enable-pythoninterp argument)
842AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200843 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000844 [enable_pythoninterp="no"])
845AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200846if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000847 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100848 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000849 if test "X$vi_cv_path_python" != "X"; then
850
851 dnl -- get its version number
852 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
853 [[vi_cv_var_python_version=`
854 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
855 ]])
856
857 dnl -- it must be at least version 1.4
858 AC_MSG_CHECKING(Python is 1.4 or better)
859 if ${vi_cv_path_python} -c \
860 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
861 then
862 AC_MSG_RESULT(yep)
863
864 dnl -- find where python thinks it was installed
865 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
866 [ vi_cv_path_python_pfx=`
867 ${vi_cv_path_python} -c \
868 "import sys; print sys.prefix"` ])
869
870 dnl -- and where it thinks it runs
871 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
872 [ vi_cv_path_python_epfx=`
873 ${vi_cv_path_python} -c \
874 "import sys; print sys.exec_prefix"` ])
875
876 dnl -- python's internal library path
877
878 AC_CACHE_VAL(vi_cv_path_pythonpath,
879 [ vi_cv_path_pythonpath=`
880 unset PYTHONPATH;
881 ${vi_cv_path_python} -c \
882 "import sys, string; print string.join(sys.path,':')"` ])
883
884 dnl -- where the Python implementation library archives are
885
886 AC_ARG_WITH(python-config-dir,
887 [ --with-python-config-dir=PATH Python's config directory],
888 [ vi_cv_path_python_conf="${withval}" ] )
889
890 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
891 [
892 vi_cv_path_python_conf=
893 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000894 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000895 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
896 if test -d "$d" && test -f "$d/config.c"; then
897 vi_cv_path_python_conf="$d"
898 fi
899 done
900 done
901 ])
902
903 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
904
905 if test "X$PYTHON_CONFDIR" = "X"; then
906 AC_MSG_RESULT([can't find it!])
907 else
908
909 dnl -- we need to examine Python's config/Makefile too
910 dnl see what the interpreter is built from
911 AC_CACHE_VAL(vi_cv_path_python_plibs,
912 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000913 pwd=`pwd`
914 tmp_mkf="$pwd/config-PyMake$$"
915 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200917 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000918 @echo "python_LIBS='$(LIBS)'"
919 @echo "python_SYSLIBS='$(SYSLIBS)'"
920 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200921 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200922 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000923eof
924 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000925 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
926 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000927 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
928 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
929 vi_cv_path_python_plibs="-framework Python"
930 else
931 if test "${vi_cv_var_python_version}" = "1.4"; then
932 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
933 else
934 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
935 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200936 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 +0000937 dnl remove -ltermcap, it can conflict with an earlier -lncurses
938 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
939 fi
940 ])
941
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200942 if test "X$python_DLLLIBRARY" != "X"; then
943 python_INSTSONAME="$python_DLLLIBRARY"
944 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000945 PYTHON_LIBS="${vi_cv_path_python_plibs}"
946 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100947 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 +0000948 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100949 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 +0000950 fi
951 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200952 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000953 if test "${vi_cv_var_python_version}" = "1.4"; then
954 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
955 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100956 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 +0000957
958 dnl On FreeBSD linking with "-pthread" is required to use threads.
959 dnl _THREAD_SAFE must be used for compiling then.
960 dnl The "-pthread" is added to $LIBS, so that the following check for
961 dnl sigaltstack() will look in libc_r (it's there in libc!).
962 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
963 dnl will then define target-specific defines, e.g., -D_REENTRANT.
964 dnl Don't do this for Mac OSX, -pthread will generate a warning.
965 AC_MSG_CHECKING([if -pthread should be used])
966 threadsafe_flag=
967 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000968 dnl if test "x$MACOSX" != "xyes"; then
969 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000970 test "$GCC" = yes && threadsafe_flag="-pthread"
971 if test "`(uname) 2>/dev/null`" = FreeBSD; then
972 threadsafe_flag="-D_THREAD_SAFE"
973 thread_lib="-pthread"
974 fi
975 fi
976 libs_save_old=$LIBS
977 if test -n "$threadsafe_flag"; then
978 cflags_save=$CFLAGS
979 CFLAGS="$CFLAGS $threadsafe_flag"
980 LIBS="$LIBS $thread_lib"
981 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200982 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000983 AC_MSG_RESULT(no); LIBS=$libs_save_old
984 )
985 CFLAGS=$cflags_save
986 else
987 AC_MSG_RESULT(no)
988 fi
989
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200990 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000991 dnl added for Python.
992 AC_MSG_CHECKING([if compile and link flags for Python are sane])
993 cflags_save=$CFLAGS
994 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200995 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000996 LIBS="$LIBS $PYTHON_LIBS"
997 AC_TRY_LINK(,[ ],
998 AC_MSG_RESULT(yes); python_ok=yes,
999 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1000 CFLAGS=$cflags_save
1001 LIBS=$libs_save
1002 if test $python_ok = yes; then
1003 AC_DEFINE(FEAT_PYTHON)
1004 else
1005 LIBS=$libs_save_old
1006 PYTHON_SRC=
1007 PYTHON_OBJ=
1008 PYTHON_LIBS=
1009 PYTHON_CFLAGS=
1010 fi
1011
1012 fi
1013 else
1014 AC_MSG_RESULT(too old)
1015 fi
1016 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001017
1018 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1019 AC_MSG_ERROR([could not configure python])
1020 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001021fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001022
Bram Moolenaar071d4272004-06-13 20:20:40 +00001023AC_SUBST(PYTHON_CONFDIR)
1024AC_SUBST(PYTHON_LIBS)
1025AC_SUBST(PYTHON_GETPATH_CFLAGS)
1026AC_SUBST(PYTHON_CFLAGS)
1027AC_SUBST(PYTHON_SRC)
1028AC_SUBST(PYTHON_OBJ)
1029
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001030
1031AC_MSG_CHECKING(--enable-python3interp argument)
1032AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001033 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001034 [enable_python3interp="no"])
1035AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001036if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001037 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001038 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001039 if test "X$vi_cv_path_python3" != "X"; then
1040
1041 dnl -- get its version number
1042 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1043 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001044 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001045 ]])
1046
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001047 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1048 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1049 [
1050 vi_cv_var_python3_abiflags=
1051 if ${vi_cv_path_python3} -c \
1052 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1053 then
1054 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1055 "import sys; print(sys.abiflags)"`
1056 fi ])
1057
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001058 dnl -- find where python3 thinks it was installed
1059 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1060 [ vi_cv_path_python3_pfx=`
1061 ${vi_cv_path_python3} -c \
1062 "import sys; print(sys.prefix)"` ])
1063
1064 dnl -- and where it thinks it runs
1065 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1066 [ vi_cv_path_python3_epfx=`
1067 ${vi_cv_path_python3} -c \
1068 "import sys; print(sys.exec_prefix)"` ])
1069
1070 dnl -- python3's internal library path
1071
1072 AC_CACHE_VAL(vi_cv_path_python3path,
1073 [ vi_cv_path_python3path=`
1074 unset PYTHONPATH;
1075 ${vi_cv_path_python3} -c \
1076 "import sys, string; print(':'.join(sys.path))"` ])
1077
1078 dnl -- where the Python implementation library archives are
1079
1080 AC_ARG_WITH(python3-config-dir,
1081 [ --with-python3-config-dir=PATH Python's config directory],
1082 [ vi_cv_path_python3_conf="${withval}" ] )
1083
1084 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1085 [
1086 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001087 config_dir="config"
1088 if test "${vi_cv_var_python3_abiflags}" != ""; then
1089 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1090 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001091 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001092 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001093 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001094 if test -d "$d" && test -f "$d/config.c"; then
1095 vi_cv_path_python3_conf="$d"
1096 fi
1097 done
1098 done
1099 ])
1100
1101 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1102
1103 if test "X$PYTHON3_CONFDIR" = "X"; then
1104 AC_MSG_RESULT([can't find it!])
1105 else
1106
1107 dnl -- we need to examine Python's config/Makefile too
1108 dnl see what the interpreter is built from
1109 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1110 [
1111 pwd=`pwd`
1112 tmp_mkf="$pwd/config-PyMake$$"
1113 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1114__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001115 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001116 @echo "python3_LIBS='$(LIBS)'"
1117 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001118 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001119 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001120eof
1121 dnl -- delete the lines from make about Entering/Leaving directory
1122 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1123 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001124 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 +02001125 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001126 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1127 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1128 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1129 ])
1130
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001131 if test "X$python3_DLLLIBRARY" != "X"; then
1132 python3_INSTSONAME="$python3_DLLLIBRARY"
1133 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001134 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1135 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001136 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 +02001137 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001138 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 +02001139 fi
1140 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001141 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001142
1143 dnl On FreeBSD linking with "-pthread" is required to use threads.
1144 dnl _THREAD_SAFE must be used for compiling then.
1145 dnl The "-pthread" is added to $LIBS, so that the following check for
1146 dnl sigaltstack() will look in libc_r (it's there in libc!).
1147 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1148 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1149 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1150 AC_MSG_CHECKING([if -pthread should be used])
1151 threadsafe_flag=
1152 thread_lib=
1153 dnl if test "x$MACOSX" != "xyes"; then
1154 if test "`(uname) 2>/dev/null`" != Darwin; then
1155 test "$GCC" = yes && threadsafe_flag="-pthread"
1156 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1157 threadsafe_flag="-D_THREAD_SAFE"
1158 thread_lib="-pthread"
1159 fi
1160 fi
1161 libs_save_old=$LIBS
1162 if test -n "$threadsafe_flag"; then
1163 cflags_save=$CFLAGS
1164 CFLAGS="$CFLAGS $threadsafe_flag"
1165 LIBS="$LIBS $thread_lib"
1166 AC_TRY_LINK(,[ ],
1167 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1168 AC_MSG_RESULT(no); LIBS=$libs_save_old
1169 )
1170 CFLAGS=$cflags_save
1171 else
1172 AC_MSG_RESULT(no)
1173 fi
1174
1175 dnl check that compiling a simple program still works with the flags
1176 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001177 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001178 cflags_save=$CFLAGS
1179 libs_save=$LIBS
1180 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1181 LIBS="$LIBS $PYTHON3_LIBS"
1182 AC_TRY_LINK(,[ ],
1183 AC_MSG_RESULT(yes); python3_ok=yes,
1184 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1185 CFLAGS=$cflags_save
1186 LIBS=$libs_save
1187 if test "$python3_ok" = yes; then
1188 AC_DEFINE(FEAT_PYTHON3)
1189 else
1190 LIBS=$libs_save_old
1191 PYTHON3_SRC=
1192 PYTHON3_OBJ=
1193 PYTHON3_LIBS=
1194 PYTHON3_CFLAGS=
1195 fi
1196 fi
1197 fi
1198fi
1199
1200AC_SUBST(PYTHON3_CONFDIR)
1201AC_SUBST(PYTHON3_LIBS)
1202AC_SUBST(PYTHON3_CFLAGS)
1203AC_SUBST(PYTHON3_SRC)
1204AC_SUBST(PYTHON3_OBJ)
1205
1206dnl if python2.x and python3.x are enabled one can only link in code
1207dnl with dlopen(), dlsym(), dlclose()
1208if test "$python_ok" = yes && test "$python3_ok" = yes; then
1209 AC_DEFINE(DYNAMIC_PYTHON)
1210 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001211 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001212 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001213 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001214 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001215 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1216 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001217 AC_RUN_IFELSE([
1218 #include <dlfcn.h>
1219 /* If this program fails, then RTLD_GLOBAL is needed.
1220 * RTLD_GLOBAL will be used and then it is not possible to
1221 * have both python versions enabled in the same vim instance.
1222 * Only the first pyhton version used will be switched on.
1223 */
1224
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001225 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001226 {
1227 int needed = 0;
1228 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1229 if (pylib != 0)
1230 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001231 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001232 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1233 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1234 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001235 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001236 (*init)();
1237 needed = (*simple)("import termios") == -1;
1238 (*final)();
1239 dlclose(pylib);
1240 }
1241 return !needed;
1242 }
1243
1244 int main(int argc, char** argv)
1245 {
1246 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001247 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001248 not_needed = 1;
1249 return !not_needed;
1250 }],
1251 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001252
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001253 CFLAGS=$cflags_save
1254 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001255
1256 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1257 cflags_save=$CFLAGS
1258 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1259 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001260 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1261 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001262 AC_RUN_IFELSE([
1263 #include <dlfcn.h>
1264 #include <wchar.h>
1265 /* If this program fails, then RTLD_GLOBAL is needed.
1266 * RTLD_GLOBAL will be used and then it is not possible to
1267 * have both python versions enabled in the same vim instance.
1268 * Only the first pyhton version used will be switched on.
1269 */
1270
1271 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1272 {
1273 int needed = 0;
1274 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1275 if (pylib != 0)
1276 {
1277 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1278 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1279 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1280 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1281 (*pfx)(prefix);
1282 (*init)();
1283 needed = (*simple)("import termios") == -1;
1284 (*final)();
1285 dlclose(pylib);
1286 }
1287 return !needed;
1288 }
1289
1290 int main(int argc, char** argv)
1291 {
1292 int not_needed = 0;
1293 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1294 not_needed = 1;
1295 return !not_needed;
1296 }],
1297 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1298
1299 CFLAGS=$cflags_save
1300 LDFLAGS=$ldflags_save
1301
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001302 PYTHON_SRC="if_python.c"
1303 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001304 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001305 PYTHON_LIBS=
1306 PYTHON3_SRC="if_python3.c"
1307 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001308 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001309 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001310elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1311 AC_DEFINE(DYNAMIC_PYTHON)
1312 PYTHON_SRC="if_python.c"
1313 PYTHON_OBJ="objects/if_python.o"
1314 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1315 PYTHON_LIBS=
1316elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1317 AC_DEFINE(DYNAMIC_PYTHON3)
1318 PYTHON3_SRC="if_python3.c"
1319 PYTHON3_OBJ="objects/if_python3.o"
1320 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1321 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001322fi
1323
Bram Moolenaar071d4272004-06-13 20:20:40 +00001324AC_MSG_CHECKING(--enable-tclinterp argument)
1325AC_ARG_ENABLE(tclinterp,
1326 [ --enable-tclinterp Include Tcl interpreter.], ,
1327 [enable_tclinterp="no"])
1328AC_MSG_RESULT($enable_tclinterp)
1329
1330if test "$enable_tclinterp" = "yes"; then
1331
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001332 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001333 AC_MSG_CHECKING(--with-tclsh argument)
1334 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1335 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001336 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001337 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1338 AC_SUBST(vi_cv_path_tcl)
1339
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001340 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1341 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1342 tclsh_name="tclsh8.4"
1343 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1344 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001345 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 tclsh_name="tclsh8.2"
1347 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1348 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001349 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1350 tclsh_name="tclsh8.0"
1351 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1352 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001353 dnl still didn't find it, try without version number
1354 if test "X$vi_cv_path_tcl" = "X"; then
1355 tclsh_name="tclsh"
1356 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1357 fi
1358 if test "X$vi_cv_path_tcl" != "X"; then
1359 AC_MSG_CHECKING(Tcl version)
1360 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1361 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1362 AC_MSG_RESULT($tclver - OK);
1363 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 -`
1364
1365 AC_MSG_CHECKING(for location of Tcl include)
1366 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001367 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 +00001368 else
1369 dnl For Mac OS X 10.3, use the OS-provided framework location
1370 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1371 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001372 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001373 for try in $tclinc; do
1374 if test -f "$try/tcl.h"; then
1375 AC_MSG_RESULT($try/tcl.h)
1376 TCL_INC=$try
1377 break
1378 fi
1379 done
1380 if test -z "$TCL_INC"; then
1381 AC_MSG_RESULT(<not found>)
1382 SKIP_TCL=YES
1383 fi
1384 if test -z "$SKIP_TCL"; then
1385 AC_MSG_CHECKING(for location of tclConfig.sh script)
1386 if test "x$MACOSX" != "xyes"; then
1387 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001388 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001389 else
1390 dnl For Mac OS X 10.3, use the OS-provided framework location
1391 tclcnf="/System/Library/Frameworks/Tcl.framework"
1392 fi
1393 for try in $tclcnf; do
1394 if test -f $try/tclConfig.sh; then
1395 AC_MSG_RESULT($try/tclConfig.sh)
1396 . $try/tclConfig.sh
1397 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1398 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1399 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001400 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001401 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 +00001402 break
1403 fi
1404 done
1405 if test -z "$TCL_LIBS"; then
1406 AC_MSG_RESULT(<not found>)
1407 AC_MSG_CHECKING(for Tcl library by myself)
1408 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001409 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001410 for ext in .so .a ; do
1411 for ver in "" $tclver ; do
1412 for try in $tcllib ; do
1413 trylib=tcl$ver$ext
1414 if test -f $try/lib$trylib ; then
1415 AC_MSG_RESULT($try/lib$trylib)
1416 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1417 if test "`(uname) 2>/dev/null`" = SunOS &&
1418 uname -r | grep '^5' >/dev/null; then
1419 TCL_LIBS="$TCL_LIBS -R $try"
1420 fi
1421 break 3
1422 fi
1423 done
1424 done
1425 done
1426 if test -z "$TCL_LIBS"; then
1427 AC_MSG_RESULT(<not found>)
1428 SKIP_TCL=YES
1429 fi
1430 fi
1431 if test -z "$SKIP_TCL"; then
1432 AC_DEFINE(FEAT_TCL)
1433 TCL_SRC=if_tcl.c
1434 TCL_OBJ=objects/if_tcl.o
1435 TCL_PRO=if_tcl.pro
1436 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1437 fi
1438 fi
1439 else
1440 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1441 fi
1442 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001443 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1444 AC_MSG_ERROR([could not configure Tcl])
1445 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001446fi
1447AC_SUBST(TCL_SRC)
1448AC_SUBST(TCL_OBJ)
1449AC_SUBST(TCL_PRO)
1450AC_SUBST(TCL_CFLAGS)
1451AC_SUBST(TCL_LIBS)
1452
1453AC_MSG_CHECKING(--enable-rubyinterp argument)
1454AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001455 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001456 [enable_rubyinterp="no"])
1457AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001458if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001459 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001460 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001461 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1462 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1463 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001464 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 if test "X$vi_cv_path_ruby" != "X"; then
1466 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001467 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 +00001468 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001469 AC_MSG_CHECKING(Ruby rbconfig)
1470 ruby_rbconfig="RbConfig"
1471 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1472 ruby_rbconfig="Config"
1473 fi
1474 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001475 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001476 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 +00001477 if test "X$rubyhdrdir" != "X"; then
1478 AC_MSG_RESULT($rubyhdrdir)
1479 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001480 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001481 if test -d "$rubyhdrdir/$rubyarch"; then
1482 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1483 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001484 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001485 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001486 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001487 if test "X$rubylibs" != "X"; then
1488 RUBY_LIBS="$rubylibs"
1489 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001490 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1491 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1492 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001493 if test -f "$rubylibdir/$librubya"; then
1494 librubyarg="$librubyarg"
1495 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1496 elif test "$librubyarg" = "libruby.a"; then
1497 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1498 librubyarg="-lruby"
1499 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001500 fi
1501
1502 if test "X$librubyarg" != "X"; then
1503 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1504 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001505 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001506 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001507 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1508 dnl be included if requested by passing --with-mac-arch to
1509 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001510 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001511 if test "X$rubyldflags" != "X"; then
1512 LDFLAGS="$rubyldflags $LDFLAGS"
1513 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001514 fi
1515 RUBY_SRC="if_ruby.c"
1516 RUBY_OBJ="objects/if_ruby.o"
1517 RUBY_PRO="if_ruby.pro"
1518 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001519 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001520 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001521 AC_DEFINE(DYNAMIC_RUBY)
1522 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1523 RUBY_LIBS=
1524 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001525 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001526 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001527 fi
1528 else
1529 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1530 fi
1531 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001532
1533 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1534 AC_MSG_ERROR([could not configure Ruby])
1535 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001536fi
1537AC_SUBST(RUBY_SRC)
1538AC_SUBST(RUBY_OBJ)
1539AC_SUBST(RUBY_PRO)
1540AC_SUBST(RUBY_CFLAGS)
1541AC_SUBST(RUBY_LIBS)
1542
1543AC_MSG_CHECKING(--enable-cscope argument)
1544AC_ARG_ENABLE(cscope,
1545 [ --enable-cscope Include cscope interface.], ,
1546 [enable_cscope="no"])
1547AC_MSG_RESULT($enable_cscope)
1548if test "$enable_cscope" = "yes"; then
1549 AC_DEFINE(FEAT_CSCOPE)
1550fi
1551
1552AC_MSG_CHECKING(--enable-workshop argument)
1553AC_ARG_ENABLE(workshop,
1554 [ --enable-workshop Include Sun Visual Workshop support.], ,
1555 [enable_workshop="no"])
1556AC_MSG_RESULT($enable_workshop)
1557if test "$enable_workshop" = "yes"; then
1558 AC_DEFINE(FEAT_SUN_WORKSHOP)
1559 WORKSHOP_SRC="workshop.c integration.c"
1560 AC_SUBST(WORKSHOP_SRC)
1561 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1562 AC_SUBST(WORKSHOP_OBJ)
1563 if test "${enable_gui-xxx}" = xxx; then
1564 enable_gui=motif
1565 fi
1566fi
1567
1568AC_MSG_CHECKING(--disable-netbeans argument)
1569AC_ARG_ENABLE(netbeans,
1570 [ --disable-netbeans Disable NetBeans integration support.],
1571 , [enable_netbeans="yes"])
1572if test "$enable_netbeans" = "yes"; then
1573 AC_MSG_RESULT(no)
1574 dnl On Solaris we need the socket and nsl library.
1575 AC_CHECK_LIB(socket, socket)
1576 AC_CHECK_LIB(nsl, gethostbyname)
1577 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1578 AC_TRY_LINK([
1579#include <stdio.h>
1580#include <stdlib.h>
1581#include <stdarg.h>
1582#include <fcntl.h>
1583#include <netdb.h>
1584#include <netinet/in.h>
1585#include <errno.h>
1586#include <sys/types.h>
1587#include <sys/socket.h>
1588 /* Check bitfields */
1589 struct nbbuf {
1590 unsigned int initDone:1;
1591 ushort signmaplen;
1592 };
1593 ], [
1594 /* Check creating a socket. */
1595 struct sockaddr_in server;
1596 (void)socket(AF_INET, SOCK_STREAM, 0);
1597 (void)htons(100);
1598 (void)gethostbyname("microsoft.com");
1599 if (errno == ECONNREFUSED)
1600 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1601 ],
1602 AC_MSG_RESULT(yes),
1603 AC_MSG_RESULT(no); enable_netbeans="no")
1604else
1605 AC_MSG_RESULT(yes)
1606fi
1607if test "$enable_netbeans" = "yes"; then
1608 AC_DEFINE(FEAT_NETBEANS_INTG)
1609 NETBEANS_SRC="netbeans.c"
1610 AC_SUBST(NETBEANS_SRC)
1611 NETBEANS_OBJ="objects/netbeans.o"
1612 AC_SUBST(NETBEANS_OBJ)
1613fi
1614
1615AC_MSG_CHECKING(--enable-sniff argument)
1616AC_ARG_ENABLE(sniff,
1617 [ --enable-sniff Include Sniff interface.], ,
1618 [enable_sniff="no"])
1619AC_MSG_RESULT($enable_sniff)
1620if test "$enable_sniff" = "yes"; then
1621 AC_DEFINE(FEAT_SNIFF)
1622 SNIFF_SRC="if_sniff.c"
1623 AC_SUBST(SNIFF_SRC)
1624 SNIFF_OBJ="objects/if_sniff.o"
1625 AC_SUBST(SNIFF_OBJ)
1626fi
1627
1628AC_MSG_CHECKING(--enable-multibyte argument)
1629AC_ARG_ENABLE(multibyte,
1630 [ --enable-multibyte Include multibyte editing support.], ,
1631 [enable_multibyte="no"])
1632AC_MSG_RESULT($enable_multibyte)
1633if test "$enable_multibyte" = "yes"; then
1634 AC_DEFINE(FEAT_MBYTE)
1635fi
1636
1637AC_MSG_CHECKING(--enable-hangulinput argument)
1638AC_ARG_ENABLE(hangulinput,
1639 [ --enable-hangulinput Include Hangul input support.], ,
1640 [enable_hangulinput="no"])
1641AC_MSG_RESULT($enable_hangulinput)
1642
1643AC_MSG_CHECKING(--enable-xim argument)
1644AC_ARG_ENABLE(xim,
1645 [ --enable-xim Include XIM input support.],
1646 AC_MSG_RESULT($enable_xim),
1647 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001648
1649AC_MSG_CHECKING(--enable-fontset argument)
1650AC_ARG_ENABLE(fontset,
1651 [ --enable-fontset Include X fontset output support.], ,
1652 [enable_fontset="no"])
1653AC_MSG_RESULT($enable_fontset)
1654dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1655
1656test -z "$with_x" && with_x=yes
1657test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1658if test "$with_x" = no; then
1659 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1660else
1661 dnl Do this check early, so that its failure can override user requests.
1662
1663 AC_PATH_PROG(xmkmfpath, xmkmf)
1664
1665 AC_PATH_XTRA
1666
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001667 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001668 dnl be compiled with a special option.
1669 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001670 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671 CFLAGS="$CFLAGS -W c,dll"
1672 LDFLAGS="$LDFLAGS -W l,dll"
1673 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1674 fi
1675
1676 dnl On my HPUX system the X include dir is found, but the lib dir not.
1677 dnl This is a desparate try to fix this.
1678
1679 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1680 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1681 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1682 X_LIBS="$X_LIBS -L$x_libraries"
1683 if test "`(uname) 2>/dev/null`" = SunOS &&
1684 uname -r | grep '^5' >/dev/null; then
1685 X_LIBS="$X_LIBS -R $x_libraries"
1686 fi
1687 fi
1688
1689 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1690 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1691 AC_MSG_RESULT(Corrected X includes to $x_includes)
1692 X_CFLAGS="$X_CFLAGS -I$x_includes"
1693 fi
1694
1695 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1696 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1697 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1698 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1699 dnl Same for "-R/usr/lib ".
1700 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1701
1702
1703 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001704 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1705 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 AC_MSG_CHECKING(if X11 header files can be found)
1707 cflags_save=$CFLAGS
1708 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001709 AC_TRY_COMPILE([#include <X11/Xlib.h>
1710#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001711 AC_MSG_RESULT(yes),
1712 AC_MSG_RESULT(no); no_x=yes)
1713 CFLAGS=$cflags_save
1714
1715 if test "${no_x-no}" = yes; then
1716 with_x=no
1717 else
1718 AC_DEFINE(HAVE_X11)
1719 X_LIB="-lXt -lX11";
1720 AC_SUBST(X_LIB)
1721
1722 ac_save_LDFLAGS="$LDFLAGS"
1723 LDFLAGS="-L$x_libraries $LDFLAGS"
1724
1725 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1726 dnl For HP-UX 10.20 it must be before -lSM -lICE
1727 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1728 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1729
1730 dnl Some systems need -lnsl -lsocket when testing for ICE.
1731 dnl The check above doesn't do this, try here (again). Also needed to get
1732 dnl them after Xdmcp. link.sh will remove them when not needed.
1733 dnl Check for other function than above to avoid the cached value
1734 AC_CHECK_LIB(ICE, IceOpenConnection,
1735 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1736
1737 dnl Check for -lXpm (needed for some versions of Motif)
1738 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1739 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1740 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1741
1742 dnl Check that the X11 header files don't use implicit declarations
1743 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1744 cflags_save=$CFLAGS
1745 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1746 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1747 AC_MSG_RESULT(no),
1748 CFLAGS="$CFLAGS -Wno-implicit-int"
1749 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1750 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1751 AC_MSG_RESULT(test failed)
1752 )
1753 )
1754 CFLAGS=$cflags_save
1755
1756 LDFLAGS="$ac_save_LDFLAGS"
1757
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001758 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1759 AC_CACHE_VAL(ac_cv_small_wchar_t,
1760 [AC_TRY_RUN([
1761#include <X11/Xlib.h>
1762#if STDC_HEADERS
1763# include <stdlib.h>
1764# include <stddef.h>
1765#endif
1766 main()
1767 {
1768 if (sizeof(wchar_t) <= 2)
1769 exit(1);
1770 exit(0);
1771 }],
1772 ac_cv_small_wchar_t="no",
1773 ac_cv_small_wchar_t="yes",
1774 AC_MSG_ERROR(failed to compile test program))])
1775 AC_MSG_RESULT($ac_cv_small_wchar_t)
1776 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1777 AC_DEFINE(SMALL_WCHAR_T)
1778 fi
1779
Bram Moolenaar071d4272004-06-13 20:20:40 +00001780 fi
1781fi
1782
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001783test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001784
1785AC_MSG_CHECKING(--enable-gui argument)
1786AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001787 [ --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 +00001788
1789dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1790dnl Do not use character classes for portability with old tools.
1791enable_gui_canon=`echo "_$enable_gui" | \
1792 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1793
1794dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795SKIP_GTK2=YES
1796SKIP_GNOME=YES
1797SKIP_MOTIF=YES
1798SKIP_ATHENA=YES
1799SKIP_NEXTAW=YES
1800SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001801SKIP_CARBON=YES
1802GUITYPE=NONE
1803
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001804if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805 SKIP_PHOTON=
1806 case "$enable_gui_canon" in
1807 no) AC_MSG_RESULT(no GUI support)
1808 SKIP_PHOTON=YES ;;
1809 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1810 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1811 photon) AC_MSG_RESULT(Photon GUI support) ;;
1812 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1813 SKIP_PHOTON=YES ;;
1814 esac
1815
1816elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1817 SKIP_CARBON=
1818 case "$enable_gui_canon" in
1819 no) AC_MSG_RESULT(no GUI support)
1820 SKIP_CARBON=YES ;;
1821 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001822 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1823 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001824 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1825 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1826 SKIP_CARBON=YES ;;
1827 esac
1828
1829else
1830
Bram Moolenaar071d4272004-06-13 20:20:40 +00001831 case "$enable_gui_canon" in
1832 no|none) AC_MSG_RESULT(no GUI support) ;;
1833 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834 SKIP_GTK2=
1835 SKIP_GNOME=
1836 SKIP_MOTIF=
1837 SKIP_ATHENA=
1838 SKIP_NEXTAW=
1839 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001841 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1843 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844 SKIP_GTK2=;;
1845 motif) AC_MSG_RESULT(Motif GUI support)
1846 SKIP_MOTIF=;;
1847 athena) AC_MSG_RESULT(Athena GUI support)
1848 SKIP_ATHENA=;;
1849 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1850 SKIP_NEXTAW=;;
1851 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1852 esac
1853
1854fi
1855
Bram Moolenaar071d4272004-06-13 20:20:40 +00001856if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1857 -a "$enable_gui_canon" != "gnome2"; then
1858 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1859 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001860 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001861 , enable_gtk2_check="yes")
1862 AC_MSG_RESULT($enable_gtk2_check)
1863 if test "x$enable_gtk2_check" = "xno"; then
1864 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001865 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001866 fi
1867fi
1868
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001869if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001870 AC_MSG_CHECKING(whether or not to look for GNOME)
1871 AC_ARG_ENABLE(gnome-check,
1872 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1873 , enable_gnome_check="no")
1874 AC_MSG_RESULT($enable_gnome_check)
1875 if test "x$enable_gnome_check" = "xno"; then
1876 SKIP_GNOME=YES
1877 fi
1878fi
1879
1880if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1881 AC_MSG_CHECKING(whether or not to look for Motif)
1882 AC_ARG_ENABLE(motif-check,
1883 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1884 , enable_motif_check="yes")
1885 AC_MSG_RESULT($enable_motif_check)
1886 if test "x$enable_motif_check" = "xno"; then
1887 SKIP_MOTIF=YES
1888 fi
1889fi
1890
1891if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1892 AC_MSG_CHECKING(whether or not to look for Athena)
1893 AC_ARG_ENABLE(athena-check,
1894 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1895 , enable_athena_check="yes")
1896 AC_MSG_RESULT($enable_athena_check)
1897 if test "x$enable_athena_check" = "xno"; then
1898 SKIP_ATHENA=YES
1899 fi
1900fi
1901
1902if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1903 AC_MSG_CHECKING(whether or not to look for neXtaw)
1904 AC_ARG_ENABLE(nextaw-check,
1905 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1906 , enable_nextaw_check="yes")
1907 AC_MSG_RESULT($enable_nextaw_check);
1908 if test "x$enable_nextaw_check" = "xno"; then
1909 SKIP_NEXTAW=YES
1910 fi
1911fi
1912
1913if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1914 AC_MSG_CHECKING(whether or not to look for Carbon)
1915 AC_ARG_ENABLE(carbon-check,
1916 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1917 , enable_carbon_check="yes")
1918 AC_MSG_RESULT($enable_carbon_check);
1919 if test "x$enable_carbon_check" = "xno"; then
1920 SKIP_CARBON=YES
1921 fi
1922fi
1923
Bram Moolenaar843ee412004-06-30 16:16:41 +00001924
Bram Moolenaar071d4272004-06-13 20:20:40 +00001925if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1926 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001927 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001928 AC_MSG_RESULT(yes);
1929 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001930 if test "$VIMNAME" = "vim"; then
1931 VIMNAME=Vim
1932 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001933
Bram Moolenaar164fca32010-07-14 13:58:07 +02001934 if test "x$MACARCH" = "xboth"; then
1935 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1936 else
1937 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1938 fi
1939
Bram Moolenaar14716812006-05-04 21:54:08 +00001940 dnl Default install directory is not /usr/local
1941 if test x$prefix = xNONE; then
1942 prefix=/Applications
1943 fi
1944
1945 dnl Sorry for the hard coded default
1946 datadir='${prefix}/Vim.app/Contents/Resources'
1947
Bram Moolenaar071d4272004-06-13 20:20:40 +00001948 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949 SKIP_GTK2=YES;
1950 SKIP_GNOME=YES;
1951 SKIP_MOTIF=YES;
1952 SKIP_ATHENA=YES;
1953 SKIP_NEXTAW=YES;
1954 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001955 SKIP_CARBON=YES
1956fi
1957
Bram Moolenaar071d4272004-06-13 20:20:40 +00001958dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001959dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001960dnl
1961dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001962dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001963dnl
1964AC_DEFUN(AM_PATH_GTK,
1965[
1966 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1967 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001968 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001969 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1970 no_gtk=""
1971 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1972 && $PKG_CONFIG --exists gtk+-2.0; then
1973 {
1974 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1975 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1976 dnl something like that.
1977 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001978 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001979 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1980 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1981 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1982 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1983 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1984 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1985 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1986 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987 else
1988 no_gtk=yes
1989 fi
1990
1991 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1992 {
1993 ac_save_CFLAGS="$CFLAGS"
1994 ac_save_LIBS="$LIBS"
1995 CFLAGS="$CFLAGS $GTK_CFLAGS"
1996 LIBS="$LIBS $GTK_LIBS"
1997
1998 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001999 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002000 dnl
2001 rm -f conf.gtktest
2002 AC_TRY_RUN([
2003#include <gtk/gtk.h>
2004#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002005#if STDC_HEADERS
2006# include <stdlib.h>
2007# include <stddef.h>
2008#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002009
2010int
2011main ()
2012{
2013int major, minor, micro;
2014char *tmp_version;
2015
2016system ("touch conf.gtktest");
2017
2018/* HP/UX 9 (%@#!) writes to sscanf strings */
2019tmp_version = g_strdup("$min_gtk_version");
2020if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2021 printf("%s, bad version string\n", "$min_gtk_version");
2022 exit(1);
2023 }
2024
2025if ((gtk_major_version > major) ||
2026 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2027 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2028 (gtk_micro_version >= micro)))
2029{
2030 return 0;
2031}
2032return 1;
2033}
2034],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2035 CFLAGS="$ac_save_CFLAGS"
2036 LIBS="$ac_save_LIBS"
2037 }
2038 fi
2039 if test "x$no_gtk" = x ; then
2040 if test "x$enable_gtktest" = "xyes"; then
2041 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2042 else
2043 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2044 fi
2045 ifelse([$2], , :, [$2])
2046 else
2047 {
2048 AC_MSG_RESULT(no)
2049 GTK_CFLAGS=""
2050 GTK_LIBS=""
2051 ifelse([$3], , :, [$3])
2052 }
2053 fi
2054 }
2055 else
2056 GTK_CFLAGS=""
2057 GTK_LIBS=""
2058 ifelse([$3], , :, [$3])
2059 fi
2060 AC_SUBST(GTK_CFLAGS)
2061 AC_SUBST(GTK_LIBS)
2062 rm -f conf.gtktest
2063])
2064
2065dnl ---------------------------------------------------------------------------
2066dnl gnome
2067dnl ---------------------------------------------------------------------------
2068AC_DEFUN([GNOME_INIT_HOOK],
2069[
2070 AC_SUBST(GNOME_LIBS)
2071 AC_SUBST(GNOME_LIBDIR)
2072 AC_SUBST(GNOME_INCLUDEDIR)
2073
2074 AC_ARG_WITH(gnome-includes,
2075 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2076 [CFLAGS="$CFLAGS -I$withval"]
2077 )
2078
2079 AC_ARG_WITH(gnome-libs,
2080 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2081 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2082 )
2083
2084 AC_ARG_WITH(gnome,
2085 [ --with-gnome Specify prefix for GNOME files],
2086 if test x$withval = xyes; then
2087 want_gnome=yes
2088 ifelse([$1], [], :, [$1])
2089 else
2090 if test "x$withval" = xno; then
2091 want_gnome=no
2092 else
2093 want_gnome=yes
2094 LDFLAGS="$LDFLAGS -L$withval/lib"
2095 CFLAGS="$CFLAGS -I$withval/include"
2096 gnome_prefix=$withval/lib
2097 fi
2098 fi,
2099 want_gnome=yes)
2100
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002101 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002102 {
2103 AC_MSG_CHECKING(for libgnomeui-2.0)
2104 if $PKG_CONFIG --exists libgnomeui-2.0; then
2105 AC_MSG_RESULT(yes)
2106 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2107 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2108 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002109
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002110 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2111 dnl This might not be the right way but it works for me...
2112 AC_MSG_CHECKING(for FreeBSD)
2113 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2114 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002115 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002116 GNOME_LIBS="$GNOME_LIBS -pthread"
2117 else
2118 AC_MSG_RESULT(no)
2119 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 $1
2121 else
2122 AC_MSG_RESULT(not found)
2123 if test "x$2" = xfail; then
2124 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2125 fi
2126 fi
2127 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002128 fi
2129])
2130
2131AC_DEFUN([GNOME_INIT],[
2132 GNOME_INIT_HOOK([],fail)
2133])
2134
2135
2136dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002137dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002138dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002139if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002140
2141 AC_MSG_CHECKING(--disable-gtktest argument)
2142 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2143 , enable_gtktest=yes)
2144 if test "x$enable_gtktest" = "xyes" ; then
2145 AC_MSG_RESULT(gtk test enabled)
2146 else
2147 AC_MSG_RESULT(gtk test disabled)
2148 fi
2149
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150 if test "X$PKG_CONFIG" = "X"; then
2151 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2152 fi
2153
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002154 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002155 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2156 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002157 AM_PATH_GTK(2.2.0,
2158 [GUI_LIB_LOC="$GTK_LIBDIR"
2159 GTK_LIBNAME="$GTK_LIBS"
2160 GUI_INC_LOC="$GTK_CFLAGS"], )
2161 if test "x$GTK_CFLAGS" != "x"; then
2162 SKIP_ATHENA=YES
2163 SKIP_NEXTAW=YES
2164 SKIP_MOTIF=YES
2165 GUITYPE=GTK
2166 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167 fi
2168 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002169 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002170 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2171 || test "0$gtk_minor_version" -ge 2; then
2172 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2173 fi
2174 dnl
2175 dnl if GTK exists, then check for GNOME.
2176 dnl
2177 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002178 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002179 GNOME_INIT_HOOK([have_gnome=yes])
2180 if test "x$have_gnome" = xyes ; then
2181 AC_DEFINE(FEAT_GUI_GNOME)
2182 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2183 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184 fi
2185 }
2186 fi
2187 fi
2188fi
2189
2190dnl Check for Motif include files location.
2191dnl The LAST one found is used, this makes the highest version to be used,
2192dnl e.g. when Motif1.2 and Motif2.0 are both present.
2193
2194if test -z "$SKIP_MOTIF"; then
2195 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"
2196 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2197 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2198
2199 AC_MSG_CHECKING(for location of Motif GUI includes)
2200 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2201 GUI_INC_LOC=
2202 for try in $gui_includes; do
2203 if test -f "$try/Xm/Xm.h"; then
2204 GUI_INC_LOC=$try
2205 fi
2206 done
2207 if test -n "$GUI_INC_LOC"; then
2208 if test "$GUI_INC_LOC" = /usr/include; then
2209 GUI_INC_LOC=
2210 AC_MSG_RESULT(in default path)
2211 else
2212 AC_MSG_RESULT($GUI_INC_LOC)
2213 fi
2214 else
2215 AC_MSG_RESULT(<not found>)
2216 SKIP_MOTIF=YES
2217 fi
2218fi
2219
2220dnl Check for Motif library files location. In the same order as the include
2221dnl files, to avoid a mixup if several versions are present
2222
2223if test -z "$SKIP_MOTIF"; then
2224 AC_MSG_CHECKING(--with-motif-lib argument)
2225 AC_ARG_WITH(motif-lib,
2226 [ --with-motif-lib=STRING Library for Motif ],
2227 [ MOTIF_LIBNAME="${withval}" ] )
2228
2229 if test -n "$MOTIF_LIBNAME"; then
2230 AC_MSG_RESULT($MOTIF_LIBNAME)
2231 GUI_LIB_LOC=
2232 else
2233 AC_MSG_RESULT(no)
2234
2235 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2236 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2237
2238 AC_MSG_CHECKING(for location of Motif GUI libs)
2239 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"
2240 GUI_LIB_LOC=
2241 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002242 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243 if test -f "$libtry"; then
2244 GUI_LIB_LOC=$try
2245 fi
2246 done
2247 done
2248 if test -n "$GUI_LIB_LOC"; then
2249 dnl Remove /usr/lib, it causes trouble on some systems
2250 if test "$GUI_LIB_LOC" = /usr/lib; then
2251 GUI_LIB_LOC=
2252 AC_MSG_RESULT(in default path)
2253 else
2254 if test -n "$GUI_LIB_LOC"; then
2255 AC_MSG_RESULT($GUI_LIB_LOC)
2256 if test "`(uname) 2>/dev/null`" = SunOS &&
2257 uname -r | grep '^5' >/dev/null; then
2258 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2259 fi
2260 fi
2261 fi
2262 MOTIF_LIBNAME=-lXm
2263 else
2264 AC_MSG_RESULT(<not found>)
2265 SKIP_MOTIF=YES
2266 fi
2267 fi
2268fi
2269
2270if test -z "$SKIP_MOTIF"; then
2271 SKIP_ATHENA=YES
2272 SKIP_NEXTAW=YES
2273 GUITYPE=MOTIF
2274 AC_SUBST(MOTIF_LIBNAME)
2275fi
2276
2277dnl Check if the Athena files can be found
2278
2279GUI_X_LIBS=
2280
2281if test -z "$SKIP_ATHENA"; then
2282 AC_MSG_CHECKING(if Athena header files can be found)
2283 cflags_save=$CFLAGS
2284 CFLAGS="$CFLAGS $X_CFLAGS"
2285 AC_TRY_COMPILE([
2286#include <X11/Intrinsic.h>
2287#include <X11/Xaw/Paned.h>], ,
2288 AC_MSG_RESULT(yes),
2289 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2290 CFLAGS=$cflags_save
2291fi
2292
2293if test -z "$SKIP_ATHENA"; then
2294 GUITYPE=ATHENA
2295fi
2296
2297if test -z "$SKIP_NEXTAW"; then
2298 AC_MSG_CHECKING(if neXtaw header files can be found)
2299 cflags_save=$CFLAGS
2300 CFLAGS="$CFLAGS $X_CFLAGS"
2301 AC_TRY_COMPILE([
2302#include <X11/Intrinsic.h>
2303#include <X11/neXtaw/Paned.h>], ,
2304 AC_MSG_RESULT(yes),
2305 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2306 CFLAGS=$cflags_save
2307fi
2308
2309if test -z "$SKIP_NEXTAW"; then
2310 GUITYPE=NEXTAW
2311fi
2312
2313if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2314 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2315 dnl Avoid adding it when it twice
2316 if test -n "$GUI_INC_LOC"; then
2317 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2318 fi
2319 if test -n "$GUI_LIB_LOC"; then
2320 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2321 fi
2322
2323 dnl Check for -lXext and then for -lXmu
2324 ldflags_save=$LDFLAGS
2325 LDFLAGS="$X_LIBS $LDFLAGS"
2326 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2327 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2328 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2329 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2330 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2331 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2332 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2333 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2334 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2335 if test -z "$SKIP_MOTIF"; then
2336 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2337 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2338 fi
2339 LDFLAGS=$ldflags_save
2340
2341 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2342 AC_MSG_CHECKING(for extra X11 defines)
2343 NARROW_PROTO=
2344 rm -fr conftestdir
2345 if mkdir conftestdir; then
2346 cd conftestdir
2347 cat > Imakefile <<'EOF'
2348acfindx:
2349 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2350EOF
2351 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2352 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2353 fi
2354 cd ..
2355 rm -fr conftestdir
2356 fi
2357 if test -z "$NARROW_PROTO"; then
2358 AC_MSG_RESULT(no)
2359 else
2360 AC_MSG_RESULT($NARROW_PROTO)
2361 fi
2362 AC_SUBST(NARROW_PROTO)
2363fi
2364
2365dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2366dnl use the X11 include path
2367if test "$enable_xsmp" = "yes"; then
2368 cppflags_save=$CPPFLAGS
2369 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2370 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2371 CPPFLAGS=$cppflags_save
2372fi
2373
2374
Bram Moolenaare667c952010-07-05 22:57:59 +02002375if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2377 cppflags_save=$CPPFLAGS
2378 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2379 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2380
2381 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2382 if test ! "$enable_xim" = "no"; then
2383 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2384 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2385 AC_MSG_RESULT(yes),
2386 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2387 fi
2388 CPPFLAGS=$cppflags_save
2389
2390 dnl automatically enable XIM when hangul input isn't enabled
2391 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2392 -a "x$GUITYPE" != "xNONE" ; then
2393 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2394 enable_xim="yes"
2395 fi
2396fi
2397
2398if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2399 cppflags_save=$CPPFLAGS
2400 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002401dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2402 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2403 AC_TRY_COMPILE([
2404#include <X11/Intrinsic.h>
2405#include <X11/Xmu/Editres.h>],
2406 [int i; i = 0;],
2407 AC_MSG_RESULT(yes)
2408 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2409 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002410 CPPFLAGS=$cppflags_save
2411fi
2412
2413dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2414if test -z "$SKIP_MOTIF"; then
2415 cppflags_save=$CPPFLAGS
2416 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002417 if test "$zOSUnix" = "yes"; then
2418 xmheader="Xm/Xm.h"
2419 else
2420 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2421 Xm/UnhighlightT.h Xm/Notebook.h"
2422 fi
2423 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002424
Bram Moolenaar77c19352012-06-13 19:19:41 +02002425 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002426 dnl Solaris uses XpmAttributes_21, very annoying.
2427 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2428 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2429 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2430 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2431 )
2432 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002433 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002434 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002435 CPPFLAGS=$cppflags_save
2436fi
2437
2438if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2439 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2440 enable_xim="no"
2441fi
2442if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2443 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2444 enable_fontset="no"
2445fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002446if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002447 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2448 enable_fontset="no"
2449fi
2450
Bram Moolenaar071d4272004-06-13 20:20:40 +00002451if test -z "$SKIP_PHOTON"; then
2452 GUITYPE=PHOTONGUI
2453fi
2454
2455AC_SUBST(GUI_INC_LOC)
2456AC_SUBST(GUI_LIB_LOC)
2457AC_SUBST(GUITYPE)
2458AC_SUBST(GUI_X_LIBS)
2459
2460if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2461 AC_MSG_ERROR([cannot use workshop without Motif])
2462fi
2463
2464dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2465if test "$enable_xim" = "yes"; then
2466 AC_DEFINE(FEAT_XIM)
2467fi
2468if test "$enable_fontset" = "yes"; then
2469 AC_DEFINE(FEAT_XFONTSET)
2470fi
2471
2472
2473dnl ---------------------------------------------------------------------------
2474dnl end of GUI-checking
2475dnl ---------------------------------------------------------------------------
2476
2477
2478dnl Only really enable hangul input when GUI and XFONTSET are available
2479if test "$enable_hangulinput" = "yes"; then
2480 if test "x$GUITYPE" = "xNONE"; then
2481 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2482 enable_hangulinput=no
2483 else
2484 AC_DEFINE(FEAT_HANGULIN)
2485 HANGULIN_SRC=hangulin.c
2486 AC_SUBST(HANGULIN_SRC)
2487 HANGULIN_OBJ=objects/hangulin.o
2488 AC_SUBST(HANGULIN_OBJ)
2489 fi
2490fi
2491
2492dnl Checks for libraries and include files.
2493
Bram Moolenaar446cb832008-06-24 21:56:24 +00002494AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2495 [
2496 AC_RUN_IFELSE([[
2497#include "confdefs.h"
2498#include <ctype.h>
2499#if STDC_HEADERS
2500# include <stdlib.h>
2501# include <stddef.h>
2502#endif
2503main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2504 ]],[
2505 vim_cv_toupper_broken=yes
2506 ],[
2507 vim_cv_toupper_broken=no
2508 ],[
2509 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2510 ])])
2511
2512if test "x$vim_cv_toupper_broken" = "xyes" ; then
2513 AC_DEFINE(BROKEN_TOUPPER)
2514fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002515
2516AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002517AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002518 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2519 AC_MSG_RESULT(no))
2520
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002521AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2522AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2523 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2524 AC_MSG_RESULT(no))
2525
Bram Moolenaar071d4272004-06-13 20:20:40 +00002526dnl Checks for header files.
2527AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2528dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2529if test "$HAS_ELF" = 1; then
2530 AC_CHECK_LIB(elf, main)
2531fi
2532
2533AC_HEADER_DIRENT
2534
Bram Moolenaar071d4272004-06-13 20:20:40 +00002535dnl If sys/wait.h is not found it might still exist but not be POSIX
2536dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2537if test $ac_cv_header_sys_wait_h = no; then
2538 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2539 AC_TRY_COMPILE([#include <sys/wait.h>],
2540 [union wait xx, yy; xx = yy],
2541 AC_MSG_RESULT(yes)
2542 AC_DEFINE(HAVE_SYS_WAIT_H)
2543 AC_DEFINE(HAVE_UNION_WAIT),
2544 AC_MSG_RESULT(no))
2545fi
2546
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002547AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2548 sys/select.h sys/utsname.h termcap.h fcntl.h \
2549 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2550 termio.h iconv.h inttypes.h langinfo.h math.h \
2551 unistd.h stropts.h errno.h sys/resource.h \
2552 sys/systeminfo.h locale.h sys/stream.h termios.h \
2553 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2554 utime.h sys/param.h libintl.h libgen.h \
2555 util/debug.h util/msg18n.h frame.h sys/acl.h \
2556 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002557
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002558dnl sys/ptem.h depends on sys/stream.h on Solaris
2559AC_CHECK_HEADERS(sys/ptem.h, [], [],
2560[#if defined HAVE_SYS_STREAM_H
2561# include <sys/stream.h>
2562#endif])
2563
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002564dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2565AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2566[#if defined HAVE_SYS_PARAM_H
2567# include <sys/param.h>
2568#endif])
2569
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002570
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002571dnl pthread_np.h may exist but can only be used after including pthread.h
2572AC_MSG_CHECKING([for pthread_np.h])
2573AC_TRY_COMPILE([
2574#include <pthread.h>
2575#include <pthread_np.h>],
2576 [int i; i = 0;],
2577 AC_MSG_RESULT(yes)
2578 AC_DEFINE(HAVE_PTHREAD_NP_H),
2579 AC_MSG_RESULT(no))
2580
Bram Moolenaare344bea2005-09-01 20:46:49 +00002581AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002582if test "x$MACOSX" = "xyes"; then
2583 dnl The strings.h file on OS/X contains a warning and nothing useful.
2584 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2585else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002586
2587dnl Check if strings.h and string.h can both be included when defined.
2588AC_MSG_CHECKING([if strings.h can be included after string.h])
2589cppflags_save=$CPPFLAGS
2590CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2591AC_TRY_COMPILE([
2592#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2593# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2594 /* but don't do it on AIX 5.1 (Uribarri) */
2595#endif
2596#ifdef HAVE_XM_XM_H
2597# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2598#endif
2599#ifdef HAVE_STRING_H
2600# include <string.h>
2601#endif
2602#if defined(HAVE_STRINGS_H)
2603# include <strings.h>
2604#endif
2605 ], [int i; i = 0;],
2606 AC_MSG_RESULT(yes),
2607 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2608 AC_MSG_RESULT(no))
2609CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002610fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002611
2612dnl Checks for typedefs, structures, and compiler characteristics.
2613AC_PROG_GCC_TRADITIONAL
2614AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002615AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002616AC_TYPE_MODE_T
2617AC_TYPE_OFF_T
2618AC_TYPE_PID_T
2619AC_TYPE_SIZE_T
2620AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002621AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002622
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623AC_HEADER_TIME
2624AC_CHECK_TYPE(ino_t, long)
2625AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002626AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002627
2628AC_MSG_CHECKING(for rlim_t)
2629if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2630 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2631else
2632 AC_EGREP_CPP(dnl
2633changequote(<<,>>)dnl
2634<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2635changequote([,]),
2636 [
2637#include <sys/types.h>
2638#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002639# include <stdlib.h>
2640# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002641#endif
2642#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002643# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002644#endif
2645 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2646 AC_MSG_RESULT($ac_cv_type_rlim_t)
2647fi
2648if test $ac_cv_type_rlim_t = no; then
2649 cat >> confdefs.h <<\EOF
2650#define rlim_t unsigned long
2651EOF
2652fi
2653
2654AC_MSG_CHECKING(for stack_t)
2655if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2656 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2657else
2658 AC_EGREP_CPP(stack_t,
2659 [
2660#include <sys/types.h>
2661#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002662# include <stdlib.h>
2663# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002664#endif
2665#include <signal.h>
2666 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2667 AC_MSG_RESULT($ac_cv_type_stack_t)
2668fi
2669if test $ac_cv_type_stack_t = no; then
2670 cat >> confdefs.h <<\EOF
2671#define stack_t struct sigaltstack
2672EOF
2673fi
2674
2675dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2676AC_MSG_CHECKING(whether stack_t has an ss_base field)
2677AC_TRY_COMPILE([
2678#include <sys/types.h>
2679#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002680# include <stdlib.h>
2681# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002682#endif
2683#include <signal.h>
2684#include "confdefs.h"
2685 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2686 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2687 AC_MSG_RESULT(no))
2688
2689olibs="$LIBS"
2690AC_MSG_CHECKING(--with-tlib argument)
2691AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2692if test -n "$with_tlib"; then
2693 AC_MSG_RESULT($with_tlib)
2694 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002695 AC_MSG_CHECKING(for linking with $with_tlib library)
2696 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2697 dnl Need to check for tgetent() below.
2698 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002699else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002700 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002701 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2702 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002703 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002704 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002705 dnl Older versions of ncurses have bugs, get a new one!
2706 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002707 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002708 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002709 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2710 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002711 esac
2712 for libname in $tlibs; do
2713 AC_CHECK_LIB(${libname}, tgetent,,)
2714 if test "x$olibs" != "x$LIBS"; then
2715 dnl It's possible that a library is found but it doesn't work
2716 dnl e.g., shared library that cannot be found
2717 dnl compile and run a test program to be sure
2718 AC_TRY_RUN([
2719#ifdef HAVE_TERMCAP_H
2720# include <termcap.h>
2721#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002722#if STDC_HEADERS
2723# include <stdlib.h>
2724# include <stddef.h>
2725#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002726main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2727 res="OK", res="FAIL", res="FAIL")
2728 if test "$res" = "OK"; then
2729 break
2730 fi
2731 AC_MSG_RESULT($libname library is not usable)
2732 LIBS="$olibs"
2733 fi
2734 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002735 if test "x$olibs" = "x$LIBS"; then
2736 AC_MSG_RESULT(no terminal library found)
2737 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002738fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002739
2740if test "x$olibs" = "x$LIBS"; then
2741 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002742 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002743 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2744 AC_MSG_RESULT(yes),
2745 AC_MSG_ERROR([NOT FOUND!
2746 You need to install a terminal library; for example ncurses.
2747 Or specify the name of the library with --with-tlib.]))
2748fi
2749
Bram Moolenaar446cb832008-06-24 21:56:24 +00002750AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2751 [
2752 AC_RUN_IFELSE([[
2753#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002754#ifdef HAVE_TERMCAP_H
2755# include <termcap.h>
2756#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002757#ifdef HAVE_STRING_H
2758# include <string.h>
2759#endif
2760#if STDC_HEADERS
2761# include <stdlib.h>
2762# include <stddef.h>
2763#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002764main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002765{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2766 ]],[
2767 vim_cv_terminfo=no
2768 ],[
2769 vim_cv_terminfo=yes
2770 ],[
2771 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2772 ])
2773 ])
2774
2775if test "x$vim_cv_terminfo" = "xyes" ; then
2776 AC_DEFINE(TERMINFO)
2777fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002778
2779if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002780 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2781 [
2782 AC_RUN_IFELSE([[
2783#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002784#ifdef HAVE_TERMCAP_H
2785# include <termcap.h>
2786#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002787#if STDC_HEADERS
2788# include <stdlib.h>
2789# include <stddef.h>
2790#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002791main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002792{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2793 ]],[
2794 vim_cv_tgent=zero
2795 ],[
2796 vim_cv_tgent=non-zero
2797 ],[
2798 AC_MSG_ERROR(failed to compile test program.)
2799 ])
2800 ])
2801
2802 if test "x$vim_cv_tgent" = "xzero" ; then
2803 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2804 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002805fi
2806
2807AC_MSG_CHECKING(whether termcap.h contains ospeed)
2808AC_TRY_LINK([
2809#ifdef HAVE_TERMCAP_H
2810# include <termcap.h>
2811#endif
2812 ], [ospeed = 20000],
2813 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2814 [AC_MSG_RESULT(no)
2815 AC_MSG_CHECKING(whether ospeed can be extern)
2816 AC_TRY_LINK([
2817#ifdef HAVE_TERMCAP_H
2818# include <termcap.h>
2819#endif
2820extern short ospeed;
2821 ], [ospeed = 20000],
2822 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2823 AC_MSG_RESULT(no))]
2824 )
2825
2826AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2827AC_TRY_LINK([
2828#ifdef HAVE_TERMCAP_H
2829# include <termcap.h>
2830#endif
2831 ], [if (UP == 0 && BC == 0) PC = 1],
2832 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2833 [AC_MSG_RESULT(no)
2834 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2835 AC_TRY_LINK([
2836#ifdef HAVE_TERMCAP_H
2837# include <termcap.h>
2838#endif
2839extern char *UP, *BC, PC;
2840 ], [if (UP == 0 && BC == 0) PC = 1],
2841 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2842 AC_MSG_RESULT(no))]
2843 )
2844
2845AC_MSG_CHECKING(whether tputs() uses outfuntype)
2846AC_TRY_COMPILE([
2847#ifdef HAVE_TERMCAP_H
2848# include <termcap.h>
2849#endif
2850 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2851 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2852 AC_MSG_RESULT(no))
2853
2854dnl On some SCO machines sys/select redefines struct timeval
2855AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2856AC_TRY_COMPILE([
2857#include <sys/types.h>
2858#include <sys/time.h>
2859#include <sys/select.h>], ,
2860 AC_MSG_RESULT(yes)
2861 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2862 AC_MSG_RESULT(no))
2863
2864dnl AC_DECL_SYS_SIGLIST
2865
2866dnl Checks for pty.c (copied from screen) ==========================
2867AC_MSG_CHECKING(for /dev/ptc)
2868if test -r /dev/ptc; then
2869 AC_DEFINE(HAVE_DEV_PTC)
2870 AC_MSG_RESULT(yes)
2871else
2872 AC_MSG_RESULT(no)
2873fi
2874
2875AC_MSG_CHECKING(for SVR4 ptys)
2876if test -c /dev/ptmx ; then
2877 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2878 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2879 AC_MSG_RESULT(no))
2880else
2881 AC_MSG_RESULT(no)
2882fi
2883
2884AC_MSG_CHECKING(for ptyranges)
2885if test -d /dev/ptym ; then
2886 pdir='/dev/ptym'
2887else
2888 pdir='/dev'
2889fi
2890dnl SCO uses ptyp%d
2891AC_EGREP_CPP(yes,
2892[#ifdef M_UNIX
2893 yes;
2894#endif
2895 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2896dnl if test -c /dev/ptyp19; then
2897dnl ptys=`echo /dev/ptyp??`
2898dnl else
2899dnl ptys=`echo $pdir/pty??`
2900dnl fi
2901if test "$ptys" != "$pdir/pty??" ; then
2902 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2903 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2904 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2905 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2906 AC_MSG_RESULT([$p0 / $p1])
2907else
2908 AC_MSG_RESULT([don't know])
2909fi
2910
2911dnl **** pty mode/group handling ****
2912dnl
2913dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002914rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002915AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2916 [
2917 AC_RUN_IFELSE([[
2918#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002919#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002920#if STDC_HEADERS
2921# include <stdlib.h>
2922# include <stddef.h>
2923#endif
2924#ifdef HAVE_UNISTD_H
2925#include <unistd.h>
2926#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002927#include <sys/stat.h>
2928#include <stdio.h>
2929main()
2930{
2931 struct stat sb;
2932 char *x,*ttyname();
2933 int om, m;
2934 FILE *fp;
2935
2936 if (!(x = ttyname(0))) exit(1);
2937 if (stat(x, &sb)) exit(1);
2938 om = sb.st_mode;
2939 if (om & 002) exit(0);
2940 m = system("mesg y");
2941 if (m == -1 || m == 127) exit(1);
2942 if (stat(x, &sb)) exit(1);
2943 m = sb.st_mode;
2944 if (chmod(x, om)) exit(1);
2945 if (m & 002) exit(0);
2946 if (sb.st_gid == getgid()) exit(1);
2947 if (!(fp=fopen("conftest_grp", "w")))
2948 exit(1);
2949 fprintf(fp, "%d\n", sb.st_gid);
2950 fclose(fp);
2951 exit(0);
2952}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002953 ]],[
2954 if test -f conftest_grp; then
2955 vim_cv_tty_group=`cat conftest_grp`
2956 if test "x$vim_cv_tty_mode" = "x" ; then
2957 vim_cv_tty_mode=0620
2958 fi
2959 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2960 else
2961 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002962 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002963 fi
2964 ],[
2965 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002966 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002967 ],[
2968 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2969 ])
2970 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971rm -f conftest_grp
2972
Bram Moolenaar446cb832008-06-24 21:56:24 +00002973if test "x$vim_cv_tty_group" != "xworld" ; then
2974 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2975 if test "x$vim_cv_tty_mode" = "x" ; then
2976 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)])
2977 else
2978 AC_DEFINE(PTYMODE, 0620)
2979 fi
2980fi
2981
Bram Moolenaar071d4272004-06-13 20:20:40 +00002982dnl Checks for library functions. ===================================
2983
2984AC_TYPE_SIGNAL
2985
2986dnl find out what to use at the end of a signal function
2987if test $ac_cv_type_signal = void; then
2988 AC_DEFINE(SIGRETURN, [return])
2989else
2990 AC_DEFINE(SIGRETURN, [return 0])
2991fi
2992
2993dnl check if struct sigcontext is defined (used for SGI only)
2994AC_MSG_CHECKING(for struct sigcontext)
2995AC_TRY_COMPILE([
2996#include <signal.h>
2997test_sig()
2998{
2999 struct sigcontext *scont;
3000 scont = (struct sigcontext *)0;
3001 return 1;
3002} ], ,
3003 AC_MSG_RESULT(yes)
3004 AC_DEFINE(HAVE_SIGCONTEXT),
3005 AC_MSG_RESULT(no))
3006
3007dnl tricky stuff: try to find out if getcwd() is implemented with
3008dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003009AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3010 [
3011 AC_RUN_IFELSE([[
3012#include "confdefs.h"
3013#ifdef HAVE_UNISTD_H
3014#include <unistd.h>
3015#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003016char *dagger[] = { "IFS=pwd", 0 };
3017main()
3018{
3019 char buffer[500];
3020 extern char **environ;
3021 environ = dagger;
3022 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003023}
3024 ]],[
3025 vim_cv_getcwd_broken=no
3026 ],[
3027 vim_cv_getcwd_broken=yes
3028 ],[
3029 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3030 ])
3031 ])
3032
3033if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3034 AC_DEFINE(BAD_GETCWD)
3035fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036
Bram Moolenaar25153e12010-02-24 14:47:08 +01003037dnl Check for functions in one big call, to reduce the size of configure.
3038dnl Can only be used for functions that do not require any include.
3039AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003040 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003041 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003042 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003043 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003044 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3045 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003046AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003047
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003048dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3049dnl appropriate, so that off_t is 64 bits when needed.
3050AC_SYS_LARGEFILE
3051
Bram Moolenaar071d4272004-06-13 20:20:40 +00003052dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3053AC_MSG_CHECKING(for st_blksize)
3054AC_TRY_COMPILE(
3055[#include <sys/types.h>
3056#include <sys/stat.h>],
3057[ struct stat st;
3058 int n;
3059
3060 stat("/", &st);
3061 n = (int)st.st_blksize;],
3062 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3063 AC_MSG_RESULT(no))
3064
Bram Moolenaar446cb832008-06-24 21:56:24 +00003065AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3066 [
3067 AC_RUN_IFELSE([[
3068#include "confdefs.h"
3069#if STDC_HEADERS
3070# include <stdlib.h>
3071# include <stddef.h>
3072#endif
3073#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003074#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003075main() {struct stat st; exit(stat("configure/", &st) != 0); }
3076 ]],[
3077 vim_cv_stat_ignores_slash=yes
3078 ],[
3079 vim_cv_stat_ignores_slash=no
3080 ],[
3081 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3082 ])
3083 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003084
Bram Moolenaar446cb832008-06-24 21:56:24 +00003085if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3086 AC_DEFINE(STAT_IGNORES_SLASH)
3087fi
3088
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089dnl Link with iconv for charset translation, if not found without library.
3090dnl check for iconv() requires including iconv.h
3091dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3092dnl has been installed.
3093AC_MSG_CHECKING(for iconv_open())
3094save_LIBS="$LIBS"
3095LIBS="$LIBS -liconv"
3096AC_TRY_LINK([
3097#ifdef HAVE_ICONV_H
3098# include <iconv.h>
3099#endif
3100 ], [iconv_open("fr", "to");],
3101 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3102 LIBS="$save_LIBS"
3103 AC_TRY_LINK([
3104#ifdef HAVE_ICONV_H
3105# include <iconv.h>
3106#endif
3107 ], [iconv_open("fr", "to");],
3108 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3109 AC_MSG_RESULT(no)))
3110
3111
3112AC_MSG_CHECKING(for nl_langinfo(CODESET))
3113AC_TRY_LINK([
3114#ifdef HAVE_LANGINFO_H
3115# include <langinfo.h>
3116#endif
3117], [char *cs = nl_langinfo(CODESET);],
3118 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3119 AC_MSG_RESULT(no))
3120
Bram Moolenaar446cb832008-06-24 21:56:24 +00003121dnl Need various functions for floating point support. Only enable
3122dnl floating point when they are all present.
3123AC_CHECK_LIB(m, strtod)
3124AC_MSG_CHECKING([for strtod() and other floating point functions])
3125AC_TRY_LINK([
3126#ifdef HAVE_MATH_H
3127# include <math.h>
3128#endif
3129#if STDC_HEADERS
3130# include <stdlib.h>
3131# include <stddef.h>
3132#endif
3133], [char *s; double d;
3134 d = strtod("1.1", &s);
3135 d = fabs(1.11);
3136 d = ceil(1.11);
3137 d = floor(1.11);
3138 d = log10(1.11);
3139 d = pow(1.11, 2.22);
3140 d = sqrt(1.11);
3141 d = sin(1.11);
3142 d = cos(1.11);
3143 d = atan(1.11);
3144 ],
3145 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3146 AC_MSG_RESULT(no))
3147
Bram Moolenaar071d4272004-06-13 20:20:40 +00003148dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3149dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003150dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003151AC_MSG_CHECKING(--disable-acl argument)
3152AC_ARG_ENABLE(acl,
3153 [ --disable-acl Don't check for ACL support.],
3154 , [enable_acl="yes"])
3155if test "$enable_acl" = "yes"; then
3156AC_MSG_RESULT(no)
3157AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3158 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3159 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3160
3161AC_MSG_CHECKING(for POSIX ACL support)
3162AC_TRY_LINK([
3163#include <sys/types.h>
3164#ifdef HAVE_SYS_ACL_H
3165# include <sys/acl.h>
3166#endif
3167acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3168 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3169 acl_free(acl);],
3170 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3171 AC_MSG_RESULT(no))
3172
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003173AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003174AC_MSG_CHECKING(for Solaris ACL support)
3175AC_TRY_LINK([
3176#ifdef HAVE_SYS_ACL_H
3177# include <sys/acl.h>
3178#endif], [acl("foo", GETACLCNT, 0, NULL);
3179 ],
3180 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003181 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003182
3183AC_MSG_CHECKING(for AIX ACL support)
3184AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003185#if STDC_HEADERS
3186# include <stdlib.h>
3187# include <stddef.h>
3188#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003189#ifdef HAVE_SYS_ACL_H
3190# include <sys/acl.h>
3191#endif
3192#ifdef HAVE_SYS_ACCESS_H
3193# include <sys/access.h>
3194#endif
3195#define _ALL_SOURCE
3196
3197#include <sys/stat.h>
3198
3199int aclsize;
3200struct acl *aclent;], [aclsize = sizeof(struct acl);
3201 aclent = (void *)malloc(aclsize);
3202 statacl("foo", STX_NORMAL, aclent, aclsize);
3203 ],
3204 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3205 AC_MSG_RESULT(no))
3206else
3207 AC_MSG_RESULT(yes)
3208fi
3209
3210AC_MSG_CHECKING(--disable-gpm argument)
3211AC_ARG_ENABLE(gpm,
3212 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3213 [enable_gpm="yes"])
3214
3215if test "$enable_gpm" = "yes"; then
3216 AC_MSG_RESULT(no)
3217 dnl Checking if gpm support can be compiled
3218 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3219 [olibs="$LIBS" ; LIBS="-lgpm"]
3220 AC_TRY_LINK(
3221 [#include <gpm.h>
3222 #include <linux/keyboard.h>],
3223 [Gpm_GetLibVersion(NULL);],
3224 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3225 dnl FEAT_MOUSE_GPM if mouse support is included
3226 [vi_cv_have_gpm=yes],
3227 [vi_cv_have_gpm=no])
3228 [LIBS="$olibs"]
3229 )
3230 if test $vi_cv_have_gpm = yes; then
3231 LIBS="$LIBS -lgpm"
3232 AC_DEFINE(HAVE_GPM)
3233 fi
3234else
3235 AC_MSG_RESULT(yes)
3236fi
3237
Bram Moolenaar446cb832008-06-24 21:56:24 +00003238AC_MSG_CHECKING(--disable-sysmouse argument)
3239AC_ARG_ENABLE(sysmouse,
3240 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3241 [enable_sysmouse="yes"])
3242
3243if test "$enable_sysmouse" = "yes"; then
3244 AC_MSG_RESULT(no)
3245 dnl Checking if sysmouse support can be compiled
3246 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3247 dnl defines FEAT_SYSMOUSE if mouse support is included
3248 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3249 AC_TRY_LINK(
3250 [#include <sys/consio.h>
3251 #include <signal.h>
3252 #include <sys/fbio.h>],
3253 [struct mouse_info mouse;
3254 mouse.operation = MOUSE_MODE;
3255 mouse.operation = MOUSE_SHOW;
3256 mouse.u.mode.mode = 0;
3257 mouse.u.mode.signal = SIGUSR2;],
3258 [vi_cv_have_sysmouse=yes],
3259 [vi_cv_have_sysmouse=no])
3260 )
3261 if test $vi_cv_have_sysmouse = yes; then
3262 AC_DEFINE(HAVE_SYSMOUSE)
3263 fi
3264else
3265 AC_MSG_RESULT(yes)
3266fi
3267
Bram Moolenaarf05da212009-11-17 16:13:15 +00003268dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3269AC_MSG_CHECKING(for FD_CLOEXEC)
3270AC_TRY_COMPILE(
3271[#if HAVE_FCNTL_H
3272# include <fcntl.h>
3273#endif],
3274[ int flag = FD_CLOEXEC;],
3275 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3276 AC_MSG_RESULT(not usable))
3277
Bram Moolenaar071d4272004-06-13 20:20:40 +00003278dnl rename needs to be checked separately to work on Nextstep with cc
3279AC_MSG_CHECKING(for rename)
3280AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3281 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3282 AC_MSG_RESULT(no))
3283
3284dnl sysctl() may exist but not the arguments we use
3285AC_MSG_CHECKING(for sysctl)
3286AC_TRY_COMPILE(
3287[#include <sys/types.h>
3288#include <sys/sysctl.h>],
3289[ int mib[2], r;
3290 size_t len;
3291
3292 mib[0] = CTL_HW;
3293 mib[1] = HW_USERMEM;
3294 len = sizeof(r);
3295 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3296 ],
3297 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3298 AC_MSG_RESULT(not usable))
3299
3300dnl sysinfo() may exist but not be Linux compatible
3301AC_MSG_CHECKING(for sysinfo)
3302AC_TRY_COMPILE(
3303[#include <sys/types.h>
3304#include <sys/sysinfo.h>],
3305[ struct sysinfo sinfo;
3306 int t;
3307
3308 (void)sysinfo(&sinfo);
3309 t = sinfo.totalram;
3310 ],
3311 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3312 AC_MSG_RESULT(not usable))
3313
Bram Moolenaar914572a2007-05-01 11:37:47 +00003314dnl struct sysinfo may have the mem_unit field or not
3315AC_MSG_CHECKING(for sysinfo.mem_unit)
3316AC_TRY_COMPILE(
3317[#include <sys/types.h>
3318#include <sys/sysinfo.h>],
3319[ struct sysinfo sinfo;
3320 sinfo.mem_unit = 1;
3321 ],
3322 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3323 AC_MSG_RESULT(no))
3324
Bram Moolenaar071d4272004-06-13 20:20:40 +00003325dnl sysconf() may exist but not support what we want to use
3326AC_MSG_CHECKING(for sysconf)
3327AC_TRY_COMPILE(
3328[#include <unistd.h>],
3329[ (void)sysconf(_SC_PAGESIZE);
3330 (void)sysconf(_SC_PHYS_PAGES);
3331 ],
3332 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3333 AC_MSG_RESULT(not usable))
3334
Bram Moolenaar914703b2010-05-31 21:59:46 +02003335AC_CHECK_SIZEOF([int])
3336AC_CHECK_SIZEOF([long])
3337AC_CHECK_SIZEOF([time_t])
3338AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003339
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003340dnl Make sure that uint32_t is really 32 bits unsigned.
3341AC_MSG_CHECKING([uint32_t is 32 bits])
3342AC_TRY_RUN([
3343#ifdef HAVE_STDINT_H
3344# include <stdint.h>
3345#endif
3346#ifdef HAVE_INTTYPES_H
3347# include <inttypes.h>
3348#endif
3349main() {
3350 uint32_t nr1 = (uint32_t)-1;
3351 uint32_t nr2 = (uint32_t)0xffffffffUL;
3352 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3353 exit(0);
3354}],
3355AC_MSG_RESULT(ok),
3356AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003357AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003358
Bram Moolenaar446cb832008-06-24 21:56:24 +00003359dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3360dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3361
Bram Moolenaar071d4272004-06-13 20:20:40 +00003362[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003363#include "confdefs.h"
3364#ifdef HAVE_STRING_H
3365# include <string.h>
3366#endif
3367#if STDC_HEADERS
3368# include <stdlib.h>
3369# include <stddef.h>
3370#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003371main() {
3372 char buf[10];
3373 strcpy(buf, "abcdefghi");
3374 mch_memmove(buf, buf + 2, 3);
3375 if (strncmp(buf, "ababcf", 6))
3376 exit(1);
3377 strcpy(buf, "abcdefghi");
3378 mch_memmove(buf + 2, buf, 3);
3379 if (strncmp(buf, "cdedef", 6))
3380 exit(1);
3381 exit(0); /* libc version works properly. */
3382}']
3383
Bram Moolenaar446cb832008-06-24 21:56:24 +00003384AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3385 [
3386 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3387 [
3388 vim_cv_memmove_handles_overlap=yes
3389 ],[
3390 vim_cv_memmove_handles_overlap=no
3391 ],[
3392 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3393 ])
3394 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003395
Bram Moolenaar446cb832008-06-24 21:56:24 +00003396if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3397 AC_DEFINE(USEMEMMOVE)
3398else
3399 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3400 [
3401 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3402 [
3403 vim_cv_bcopy_handles_overlap=yes
3404 ],[
3405 vim_cv_bcopy_handles_overlap=no
3406 ],[
3407 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3408 ])
3409 ])
3410
3411 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3412 AC_DEFINE(USEBCOPY)
3413 else
3414 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3415 [
3416 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3417 [
3418 vim_cv_memcpy_handles_overlap=yes
3419 ],[
3420 vim_cv_memcpy_handles_overlap=no
3421 ],[
3422 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3423 ])
3424 ])
3425
3426 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3427 AC_DEFINE(USEMEMCPY)
3428 fi
3429 fi
3430fi
3431
Bram Moolenaar071d4272004-06-13 20:20:40 +00003432
3433dnl Check for multibyte locale functions
3434dnl Find out if _Xsetlocale() is supported by libX11.
3435dnl Check if X_LOCALE should be defined.
3436
3437if test "$enable_multibyte" = "yes"; then
3438 cflags_save=$CFLAGS
3439 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003440 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003441 CFLAGS="$CFLAGS -I$x_includes"
3442 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3443 AC_MSG_CHECKING(whether X_LOCALE needed)
3444 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3445 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3446 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3447 AC_MSG_RESULT(no))
3448 fi
3449 CFLAGS=$cflags_save
3450 LDFLAGS=$ldflags_save
3451fi
3452
3453dnl Link with xpg4, it is said to make Korean locale working
3454AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3455
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003456dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003457dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003458dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003459dnl -t for typedefs (many ctags have this)
3460dnl -s for static functions (Elvis ctags only?)
3461dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3462dnl -i+m to test for older Exuberant ctags
3463AC_MSG_CHECKING(how to create tags)
3464test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003465if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003466 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003467elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3468 TAGPRG="exctags -I INIT+ --fields=+S"
3469elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3470 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003471else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003472 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003473 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3474 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3475 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3476 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3477 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3478 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3479 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3480fi
3481test -f tags.save && mv tags.save tags
3482AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3483
3484dnl Check how we can run man with a section number
3485AC_MSG_CHECKING(how to run man with a section nr)
3486MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003487(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 +00003488AC_MSG_RESULT($MANDEF)
3489if test "$MANDEF" = "man -s"; then
3490 AC_DEFINE(USEMAN_S)
3491fi
3492
3493dnl Check if gettext() is working and if it needs -lintl
3494AC_MSG_CHECKING(--disable-nls argument)
3495AC_ARG_ENABLE(nls,
3496 [ --disable-nls Don't support NLS (gettext()).], ,
3497 [enable_nls="yes"])
3498
3499if test "$enable_nls" = "yes"; then
3500 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003501
3502 INSTALL_LANGS=install-languages
3503 AC_SUBST(INSTALL_LANGS)
3504 INSTALL_TOOL_LANGS=install-tool-languages
3505 AC_SUBST(INSTALL_TOOL_LANGS)
3506
Bram Moolenaar071d4272004-06-13 20:20:40 +00003507 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3508 AC_MSG_CHECKING([for NLS])
3509 if test -f po/Makefile; then
3510 have_gettext="no"
3511 if test -n "$MSGFMT"; then
3512 AC_TRY_LINK(
3513 [#include <libintl.h>],
3514 [gettext("Test");],
3515 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3516 olibs=$LIBS
3517 LIBS="$LIBS -lintl"
3518 AC_TRY_LINK(
3519 [#include <libintl.h>],
3520 [gettext("Test");],
3521 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3522 AC_MSG_RESULT([gettext() doesn't work]);
3523 LIBS=$olibs))
3524 else
3525 AC_MSG_RESULT([msgfmt not found - disabled]);
3526 fi
3527 if test $have_gettext = "yes"; then
3528 AC_DEFINE(HAVE_GETTEXT)
3529 MAKEMO=yes
3530 AC_SUBST(MAKEMO)
3531 dnl this was added in GNU gettext 0.10.36
3532 AC_CHECK_FUNCS(bind_textdomain_codeset)
3533 dnl _nl_msg_cat_cntr is required for GNU gettext
3534 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3535 AC_TRY_LINK(
3536 [#include <libintl.h>
3537 extern int _nl_msg_cat_cntr;],
3538 [++_nl_msg_cat_cntr;],
3539 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3540 AC_MSG_RESULT([no]))
3541 fi
3542 else
3543 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3544 fi
3545else
3546 AC_MSG_RESULT(yes)
3547fi
3548
3549dnl Check for dynamic linking loader
3550AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3551if test x${DLL} = xdlfcn.h; then
3552 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3553 AC_MSG_CHECKING([for dlopen()])
3554 AC_TRY_LINK(,[
3555 extern void* dlopen();
3556 dlopen();
3557 ],
3558 AC_MSG_RESULT(yes);
3559 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3560 AC_MSG_RESULT(no);
3561 AC_MSG_CHECKING([for dlopen() in -ldl])
3562 olibs=$LIBS
3563 LIBS="$LIBS -ldl"
3564 AC_TRY_LINK(,[
3565 extern void* dlopen();
3566 dlopen();
3567 ],
3568 AC_MSG_RESULT(yes);
3569 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3570 AC_MSG_RESULT(no);
3571 LIBS=$olibs))
3572 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3573 dnl ick :-)
3574 AC_MSG_CHECKING([for dlsym()])
3575 AC_TRY_LINK(,[
3576 extern void* dlsym();
3577 dlsym();
3578 ],
3579 AC_MSG_RESULT(yes);
3580 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3581 AC_MSG_RESULT(no);
3582 AC_MSG_CHECKING([for dlsym() in -ldl])
3583 olibs=$LIBS
3584 LIBS="$LIBS -ldl"
3585 AC_TRY_LINK(,[
3586 extern void* dlsym();
3587 dlsym();
3588 ],
3589 AC_MSG_RESULT(yes);
3590 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3591 AC_MSG_RESULT(no);
3592 LIBS=$olibs))
3593elif test x${DLL} = xdl.h; then
3594 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3595 AC_MSG_CHECKING([for shl_load()])
3596 AC_TRY_LINK(,[
3597 extern void* shl_load();
3598 shl_load();
3599 ],
3600 AC_MSG_RESULT(yes);
3601 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3602 AC_MSG_RESULT(no);
3603 AC_MSG_CHECKING([for shl_load() in -ldld])
3604 olibs=$LIBS
3605 LIBS="$LIBS -ldld"
3606 AC_TRY_LINK(,[
3607 extern void* shl_load();
3608 shl_load();
3609 ],
3610 AC_MSG_RESULT(yes);
3611 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3612 AC_MSG_RESULT(no);
3613 LIBS=$olibs))
3614fi
3615AC_CHECK_HEADERS(setjmp.h)
3616
3617if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3618 dnl -ldl must come after DynaLoader.a
3619 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3620 LIBS=`echo $LIBS | sed s/-ldl//`
3621 PERL_LIBS="$PERL_LIBS -ldl"
3622 fi
3623fi
3624
Bram Moolenaar164fca32010-07-14 13:58:07 +02003625if test "x$MACOSX" = "xyes"; then
3626 AC_MSG_CHECKING(whether we need -framework Cocoa)
3627 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3628 dnl disabled during tiny build)
3629 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3630 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003631 AC_MSG_RESULT(yes)
3632 else
3633 AC_MSG_RESULT(no)
3634 fi
3635fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003636if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003637 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003638fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003639
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003640dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3641dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3642dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003643dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3644dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003645DEPEND_CFLAGS_FILTER=
3646if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003647 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003648 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003649 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003650 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003651 AC_MSG_RESULT(yes)
3652 else
3653 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003654 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003655 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3656 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003657 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003658 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003659 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3660 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003661 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 +00003662 AC_MSG_RESULT(yes)
3663 else
3664 AC_MSG_RESULT(no)
3665 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003666fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003667AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003668
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003669dnl link.sh tries to avoid overlinking in a hackish way.
3670dnl At least GNU ld supports --as-needed which provides the same functionality
3671dnl at linker level. Let's use it.
3672AC_MSG_CHECKING(linker --as-needed support)
3673LINK_AS_NEEDED=
3674# Check if linker supports --as-needed and --no-as-needed options
3675if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3676 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3677 LINK_AS_NEEDED=yes
3678fi
3679if test "$LINK_AS_NEEDED" = yes; then
3680 AC_MSG_RESULT(yes)
3681else
3682 AC_MSG_RESULT(no)
3683fi
3684AC_SUBST(LINK_AS_NEEDED)
3685
Bram Moolenaar77c19352012-06-13 19:19:41 +02003686# IBM z/OS reset CFLAGS for config.mk
3687if test "$zOSUnix" = "yes"; then
3688 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3689fi
3690
Bram Moolenaar071d4272004-06-13 20:20:40 +00003691dnl write output files
3692AC_OUTPUT(auto/config.mk:config.mk.in)
3693
3694dnl vim: set sw=2 tw=78 fo+=l: