blob: 2dae429613ca409b735f86287490461ee0e756fb [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
497 dnl Determine the SONAME for the current version, but fallback to
498 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
499 for i in 0 1 2 3 4 5 6 7 8 9; do
500 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
501 LUA_SONAME=".$i"
502 break
503 fi
504 done
505 vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME"
506 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200507 AC_DEFINE(DYNAMIC_LUA)
508 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200509 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200510 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200511 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100512 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
513 AC_MSG_ERROR([could not configure lua])
514 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200515 AC_SUBST(LUA_SRC)
516 AC_SUBST(LUA_OBJ)
517 AC_SUBST(LUA_PRO)
518 AC_SUBST(LUA_LIBS)
519 AC_SUBST(LUA_CFLAGS)
520fi
521
522
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000523dnl Check for MzScheme feature.
524AC_MSG_CHECKING(--enable-mzschemeinterp argument)
525AC_ARG_ENABLE(mzschemeinterp,
526 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
527 [enable_mzschemeinterp="no"])
528AC_MSG_RESULT($enable_mzschemeinterp)
529
530if test "$enable_mzschemeinterp" = "yes"; then
531 dnl -- find the mzscheme executable
532 AC_SUBST(vi_cv_path_mzscheme)
533
534 AC_MSG_CHECKING(--with-plthome argument)
535 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000536 [ --with-plthome=PLTHOME Use PLTHOME.],
537 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000538 with_plthome="";AC_MSG_RESULT("no"))
539
540 if test "X$with_plthome" != "X"; then
541 vi_cv_path_mzscheme_pfx="$with_plthome"
542 else
543 AC_MSG_CHECKING(PLTHOME environment var)
544 if test "X$PLTHOME" != "X"; then
545 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000547 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000548 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000550 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000551
552 dnl resolve symbolic link, the executable is often elsewhere and there
553 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000554 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000555 lsout=`ls -l $vi_cv_path_mzscheme`
556 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
557 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
558 fi
559 fi
560
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 if test "X$vi_cv_path_mzscheme" != "X"; then
562 dnl -- find where MzScheme thinks it was installed
563 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 dnl different versions of MzScheme differ in command line processing
565 dnl use universal approach
566 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000567 (build-path (call-with-values \
568 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000569 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
570 dnl Remove a trailing slash
571 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
572 sed -e 's+/$++'` ])
573 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000574 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000575 fi
576 fi
577
Bram Moolenaard7afed32007-05-06 13:26:41 +0000578 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000579 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
580 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
581 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000582 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
583 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000584 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000585 AC_MSG_RESULT(no)
586 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000587 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000588 AC_MSG_RESULT(yes)
589 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000590 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000591 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100592 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
593 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000594 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100595 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 else
597 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100598 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
599 if test -f /usr/include/plt/scheme.h; then
600 AC_MSG_RESULT(yes)
601 SCHEME_INC=/usr/include/plt
602 else
603 AC_MSG_RESULT(no)
604 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
605 if test -f /usr/include/racket/scheme.h; then
606 AC_MSG_RESULT(yes)
607 SCHEME_INC=/usr/include/racket
608 else
609 AC_MSG_RESULT(no)
610 vi_cv_path_mzscheme_pfx=
611 fi
612 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000613 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000614 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000615 fi
616 fi
617
618 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000619 if test "x$MACOSX" = "xyes"; then
620 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000621 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
622 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
623 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
625 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
626 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
627 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
628 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
629 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000630 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000631 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000632 dnl Using shared objects
633 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
634 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
640 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000641 else
642 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
643 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000644 if test "$GCC" = yes; then
645 dnl Make Vim remember the path to the library. For when it's not in
646 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000647 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000648 elif test "`(uname) 2>/dev/null`" = SunOS &&
649 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000650 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000651 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000652 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100653
654 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000655 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100656 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100657 else
658 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100659 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
660 else
661 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
662 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
663 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100664 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000665 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100666 if test "X$SCHEME_COLLECTS" != "X" ; then
667 AC_MSG_RESULT(${SCHEME_COLLECTS})
668 else
669 AC_MSG_RESULT(not found)
670 fi
671
672 AC_MSG_CHECKING(for mzscheme_base.c)
673 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000674 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100675 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100676 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100677 MZSCHEME_EXTRA="mzscheme_base.c"
678 fi
679 fi
680 if test "X$MZSCHEME_EXTRA" != "X" ; then
681 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000682 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
683 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100684 AC_MSG_RESULT(needed)
685 else
686 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000687 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100688
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000689 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100690 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000691 MZSCHEME_SRC="if_mzsch.c"
692 MZSCHEME_OBJ="objects/if_mzsch.o"
693 MZSCHEME_PRO="if_mzsch.pro"
694 AC_DEFINE(FEAT_MZSCHEME)
695 fi
696 AC_SUBST(MZSCHEME_SRC)
697 AC_SUBST(MZSCHEME_OBJ)
698 AC_SUBST(MZSCHEME_PRO)
699 AC_SUBST(MZSCHEME_LIBS)
700 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000701 AC_SUBST(MZSCHEME_EXTRA)
702 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000703fi
704
705
Bram Moolenaar071d4272004-06-13 20:20:40 +0000706AC_MSG_CHECKING(--enable-perlinterp argument)
707AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200708 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000709 [enable_perlinterp="no"])
710AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200711if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000712 AC_SUBST(vi_cv_path_perl)
713 AC_PATH_PROG(vi_cv_path_perl, perl)
714 if test "X$vi_cv_path_perl" != "X"; then
715 AC_MSG_CHECKING(Perl version)
716 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
717 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200718 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000719 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
720 badthreads=no
721 else
722 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
723 eval `$vi_cv_path_perl -V:use5005threads`
724 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
725 badthreads=no
726 else
727 badthreads=yes
728 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
729 fi
730 else
731 badthreads=yes
732 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
733 fi
734 fi
735 if test $badthreads = no; then
736 AC_MSG_RESULT(OK)
737 eval `$vi_cv_path_perl -V:shrpenv`
738 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
739 shrpenv=""
740 fi
741 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
742 AC_SUBST(vi_cv_perllib)
743 dnl Remove "-fno-something", it breaks using cproto.
744 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
745 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
746 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
747 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
748 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
749 -e 's/-bE:perl.exp//' -e 's/-lc //'`
750 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
751 dnl a test in configure may fail because of that.
752 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
753 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
754
755 dnl check that compiling a simple program still works with the flags
756 dnl added for Perl.
757 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
758 cflags_save=$CFLAGS
759 libs_save=$LIBS
760 ldflags_save=$LDFLAGS
761 CFLAGS="$CFLAGS $perlcppflags"
762 LIBS="$LIBS $perllibs"
763 LDFLAGS="$perlldflags $LDFLAGS"
764 AC_TRY_LINK(,[ ],
765 AC_MSG_RESULT(yes); perl_ok=yes,
766 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
767 CFLAGS=$cflags_save
768 LIBS=$libs_save
769 LDFLAGS=$ldflags_save
770 if test $perl_ok = yes; then
771 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000772 dnl remove -pipe and -Wxxx, it confuses cproto
773 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000774 fi
775 if test "X$perlldflags" != "X"; then
776 LDFLAGS="$perlldflags $LDFLAGS"
777 fi
778 PERL_LIBS=$perllibs
779 PERL_SRC="auto/if_perl.c if_perlsfio.c"
780 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
781 PERL_PRO="if_perl.pro if_perlsfio.pro"
782 AC_DEFINE(FEAT_PERL)
783 fi
784 fi
785 else
786 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
787 fi
788 fi
789
790 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000791 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000792 dir=/System/Library/Perl
793 darwindir=$dir/darwin
794 if test -d $darwindir; then
795 PERL=/usr/bin/perl
796 else
797 dnl Mac OS X 10.3
798 dir=/System/Library/Perl/5.8.1
799 darwindir=$dir/darwin-thread-multi-2level
800 if test -d $darwindir; then
801 PERL=/usr/bin/perl
802 fi
803 fi
804 if test -n "$PERL"; then
805 PERL_DIR="$dir"
806 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
807 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
808 PERL_LIBS="-L$darwindir/CORE -lperl"
809 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200810 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
811 dnl be included if requested by passing --with-mac-arch to
812 dnl configure, so strip these flags first (if present)
813 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
814 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 +0000815 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200816 if test "$enable_perlinterp" = "dynamic"; then
817 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
818 AC_DEFINE(DYNAMIC_PERL)
819 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
820 fi
821 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100822
823 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
824 AC_MSG_ERROR([could not configure perl])
825 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000826fi
827AC_SUBST(shrpenv)
828AC_SUBST(PERL_SRC)
829AC_SUBST(PERL_OBJ)
830AC_SUBST(PERL_PRO)
831AC_SUBST(PERL_CFLAGS)
832AC_SUBST(PERL_LIBS)
833
834AC_MSG_CHECKING(--enable-pythoninterp argument)
835AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200836 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000837 [enable_pythoninterp="no"])
838AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200839if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000840 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100841 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842 if test "X$vi_cv_path_python" != "X"; then
843
844 dnl -- get its version number
845 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
846 [[vi_cv_var_python_version=`
847 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
848 ]])
849
850 dnl -- it must be at least version 1.4
851 AC_MSG_CHECKING(Python is 1.4 or better)
852 if ${vi_cv_path_python} -c \
853 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
854 then
855 AC_MSG_RESULT(yep)
856
857 dnl -- find where python thinks it was installed
858 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
859 [ vi_cv_path_python_pfx=`
860 ${vi_cv_path_python} -c \
861 "import sys; print sys.prefix"` ])
862
863 dnl -- and where it thinks it runs
864 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
865 [ vi_cv_path_python_epfx=`
866 ${vi_cv_path_python} -c \
867 "import sys; print sys.exec_prefix"` ])
868
869 dnl -- python's internal library path
870
871 AC_CACHE_VAL(vi_cv_path_pythonpath,
872 [ vi_cv_path_pythonpath=`
873 unset PYTHONPATH;
874 ${vi_cv_path_python} -c \
875 "import sys, string; print string.join(sys.path,':')"` ])
876
877 dnl -- where the Python implementation library archives are
878
879 AC_ARG_WITH(python-config-dir,
880 [ --with-python-config-dir=PATH Python's config directory],
881 [ vi_cv_path_python_conf="${withval}" ] )
882
883 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
884 [
885 vi_cv_path_python_conf=
886 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000887 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000888 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
889 if test -d "$d" && test -f "$d/config.c"; then
890 vi_cv_path_python_conf="$d"
891 fi
892 done
893 done
894 ])
895
896 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
897
898 if test "X$PYTHON_CONFDIR" = "X"; then
899 AC_MSG_RESULT([can't find it!])
900 else
901
902 dnl -- we need to examine Python's config/Makefile too
903 dnl see what the interpreter is built from
904 AC_CACHE_VAL(vi_cv_path_python_plibs,
905 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000906 pwd=`pwd`
907 tmp_mkf="$pwd/config-PyMake$$"
908 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000909__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200910 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000911 @echo "python_LIBS='$(LIBS)'"
912 @echo "python_SYSLIBS='$(SYSLIBS)'"
913 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200914 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200915 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916eof
917 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000918 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
919 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000920 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
921 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
922 vi_cv_path_python_plibs="-framework Python"
923 else
924 if test "${vi_cv_var_python_version}" = "1.4"; then
925 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
926 else
927 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
928 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200929 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 +0000930 dnl remove -ltermcap, it can conflict with an earlier -lncurses
931 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
932 fi
933 ])
934
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200935 if test "X$python_DLLLIBRARY" != "X"; then
936 python_INSTSONAME="$python_DLLLIBRARY"
937 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000938 PYTHON_LIBS="${vi_cv_path_python_plibs}"
939 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100940 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 +0000941 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100942 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 +0000943 fi
944 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200945 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000946 if test "${vi_cv_var_python_version}" = "1.4"; then
947 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
948 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100949 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 +0000950
951 dnl On FreeBSD linking with "-pthread" is required to use threads.
952 dnl _THREAD_SAFE must be used for compiling then.
953 dnl The "-pthread" is added to $LIBS, so that the following check for
954 dnl sigaltstack() will look in libc_r (it's there in libc!).
955 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
956 dnl will then define target-specific defines, e.g., -D_REENTRANT.
957 dnl Don't do this for Mac OSX, -pthread will generate a warning.
958 AC_MSG_CHECKING([if -pthread should be used])
959 threadsafe_flag=
960 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000961 dnl if test "x$MACOSX" != "xyes"; then
962 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963 test "$GCC" = yes && threadsafe_flag="-pthread"
964 if test "`(uname) 2>/dev/null`" = FreeBSD; then
965 threadsafe_flag="-D_THREAD_SAFE"
966 thread_lib="-pthread"
967 fi
968 fi
969 libs_save_old=$LIBS
970 if test -n "$threadsafe_flag"; then
971 cflags_save=$CFLAGS
972 CFLAGS="$CFLAGS $threadsafe_flag"
973 LIBS="$LIBS $thread_lib"
974 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200975 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000976 AC_MSG_RESULT(no); LIBS=$libs_save_old
977 )
978 CFLAGS=$cflags_save
979 else
980 AC_MSG_RESULT(no)
981 fi
982
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200983 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000984 dnl added for Python.
985 AC_MSG_CHECKING([if compile and link flags for Python are sane])
986 cflags_save=$CFLAGS
987 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200988 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000989 LIBS="$LIBS $PYTHON_LIBS"
990 AC_TRY_LINK(,[ ],
991 AC_MSG_RESULT(yes); python_ok=yes,
992 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
993 CFLAGS=$cflags_save
994 LIBS=$libs_save
995 if test $python_ok = yes; then
996 AC_DEFINE(FEAT_PYTHON)
997 else
998 LIBS=$libs_save_old
999 PYTHON_SRC=
1000 PYTHON_OBJ=
1001 PYTHON_LIBS=
1002 PYTHON_CFLAGS=
1003 fi
1004
1005 fi
1006 else
1007 AC_MSG_RESULT(too old)
1008 fi
1009 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001010
1011 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1012 AC_MSG_ERROR([could not configure python])
1013 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001014fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001015
Bram Moolenaar071d4272004-06-13 20:20:40 +00001016AC_SUBST(PYTHON_CONFDIR)
1017AC_SUBST(PYTHON_LIBS)
1018AC_SUBST(PYTHON_GETPATH_CFLAGS)
1019AC_SUBST(PYTHON_CFLAGS)
1020AC_SUBST(PYTHON_SRC)
1021AC_SUBST(PYTHON_OBJ)
1022
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001023
1024AC_MSG_CHECKING(--enable-python3interp argument)
1025AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001026 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001027 [enable_python3interp="no"])
1028AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001029if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001030 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001031 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001032 if test "X$vi_cv_path_python3" != "X"; then
1033
1034 dnl -- get its version number
1035 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1036 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001037 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001038 ]])
1039
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001040 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1041 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1042 [
1043 vi_cv_var_python3_abiflags=
1044 if ${vi_cv_path_python3} -c \
1045 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1046 then
1047 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1048 "import sys; print(sys.abiflags)"`
1049 fi ])
1050
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001051 dnl -- find where python3 thinks it was installed
1052 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1053 [ vi_cv_path_python3_pfx=`
1054 ${vi_cv_path_python3} -c \
1055 "import sys; print(sys.prefix)"` ])
1056
1057 dnl -- and where it thinks it runs
1058 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1059 [ vi_cv_path_python3_epfx=`
1060 ${vi_cv_path_python3} -c \
1061 "import sys; print(sys.exec_prefix)"` ])
1062
1063 dnl -- python3's internal library path
1064
1065 AC_CACHE_VAL(vi_cv_path_python3path,
1066 [ vi_cv_path_python3path=`
1067 unset PYTHONPATH;
1068 ${vi_cv_path_python3} -c \
1069 "import sys, string; print(':'.join(sys.path))"` ])
1070
1071 dnl -- where the Python implementation library archives are
1072
1073 AC_ARG_WITH(python3-config-dir,
1074 [ --with-python3-config-dir=PATH Python's config directory],
1075 [ vi_cv_path_python3_conf="${withval}" ] )
1076
1077 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1078 [
1079 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001080 config_dir="config"
1081 if test "${vi_cv_var_python3_abiflags}" != ""; then
1082 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1083 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001084 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001085 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001086 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001087 if test -d "$d" && test -f "$d/config.c"; then
1088 vi_cv_path_python3_conf="$d"
1089 fi
1090 done
1091 done
1092 ])
1093
1094 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1095
1096 if test "X$PYTHON3_CONFDIR" = "X"; then
1097 AC_MSG_RESULT([can't find it!])
1098 else
1099
1100 dnl -- we need to examine Python's config/Makefile too
1101 dnl see what the interpreter is built from
1102 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1103 [
1104 pwd=`pwd`
1105 tmp_mkf="$pwd/config-PyMake$$"
1106 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1107__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001108 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001109 @echo "python3_LIBS='$(LIBS)'"
1110 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001111 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001112 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001113eof
1114 dnl -- delete the lines from make about Entering/Leaving directory
1115 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1116 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001117 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 +02001118 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001119 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1120 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1121 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1122 ])
1123
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001124 if test "X$python3_DLLLIBRARY" != "X"; then
1125 python3_INSTSONAME="$python3_DLLLIBRARY"
1126 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001127 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1128 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001129 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 +02001130 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001131 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 +02001132 fi
1133 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001134 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001135
1136 dnl On FreeBSD linking with "-pthread" is required to use threads.
1137 dnl _THREAD_SAFE must be used for compiling then.
1138 dnl The "-pthread" is added to $LIBS, so that the following check for
1139 dnl sigaltstack() will look in libc_r (it's there in libc!).
1140 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1141 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1142 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1143 AC_MSG_CHECKING([if -pthread should be used])
1144 threadsafe_flag=
1145 thread_lib=
1146 dnl if test "x$MACOSX" != "xyes"; then
1147 if test "`(uname) 2>/dev/null`" != Darwin; then
1148 test "$GCC" = yes && threadsafe_flag="-pthread"
1149 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1150 threadsafe_flag="-D_THREAD_SAFE"
1151 thread_lib="-pthread"
1152 fi
1153 fi
1154 libs_save_old=$LIBS
1155 if test -n "$threadsafe_flag"; then
1156 cflags_save=$CFLAGS
1157 CFLAGS="$CFLAGS $threadsafe_flag"
1158 LIBS="$LIBS $thread_lib"
1159 AC_TRY_LINK(,[ ],
1160 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1161 AC_MSG_RESULT(no); LIBS=$libs_save_old
1162 )
1163 CFLAGS=$cflags_save
1164 else
1165 AC_MSG_RESULT(no)
1166 fi
1167
1168 dnl check that compiling a simple program still works with the flags
1169 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001170 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001171 cflags_save=$CFLAGS
1172 libs_save=$LIBS
1173 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1174 LIBS="$LIBS $PYTHON3_LIBS"
1175 AC_TRY_LINK(,[ ],
1176 AC_MSG_RESULT(yes); python3_ok=yes,
1177 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1178 CFLAGS=$cflags_save
1179 LIBS=$libs_save
1180 if test "$python3_ok" = yes; then
1181 AC_DEFINE(FEAT_PYTHON3)
1182 else
1183 LIBS=$libs_save_old
1184 PYTHON3_SRC=
1185 PYTHON3_OBJ=
1186 PYTHON3_LIBS=
1187 PYTHON3_CFLAGS=
1188 fi
1189 fi
1190 fi
1191fi
1192
1193AC_SUBST(PYTHON3_CONFDIR)
1194AC_SUBST(PYTHON3_LIBS)
1195AC_SUBST(PYTHON3_CFLAGS)
1196AC_SUBST(PYTHON3_SRC)
1197AC_SUBST(PYTHON3_OBJ)
1198
1199dnl if python2.x and python3.x are enabled one can only link in code
1200dnl with dlopen(), dlsym(), dlclose()
1201if test "$python_ok" = yes && test "$python3_ok" = yes; then
1202 AC_DEFINE(DYNAMIC_PYTHON)
1203 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001204 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001205 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001206 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001207 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001208 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1209 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001210 AC_RUN_IFELSE([
1211 #include <dlfcn.h>
1212 /* If this program fails, then RTLD_GLOBAL is needed.
1213 * RTLD_GLOBAL will be used and then it is not possible to
1214 * have both python versions enabled in the same vim instance.
1215 * Only the first pyhton version used will be switched on.
1216 */
1217
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001218 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001219 {
1220 int needed = 0;
1221 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1222 if (pylib != 0)
1223 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001224 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001225 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1226 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1227 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001228 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001229 (*init)();
1230 needed = (*simple)("import termios") == -1;
1231 (*final)();
1232 dlclose(pylib);
1233 }
1234 return !needed;
1235 }
1236
1237 int main(int argc, char** argv)
1238 {
1239 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001240 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001241 not_needed = 1;
1242 return !not_needed;
1243 }],
1244 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001245
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001246 CFLAGS=$cflags_save
1247 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001248
1249 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1250 cflags_save=$CFLAGS
1251 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1252 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001253 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1254 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001255 AC_RUN_IFELSE([
1256 #include <dlfcn.h>
1257 #include <wchar.h>
1258 /* If this program fails, then RTLD_GLOBAL is needed.
1259 * RTLD_GLOBAL will be used and then it is not possible to
1260 * have both python versions enabled in the same vim instance.
1261 * Only the first pyhton version used will be switched on.
1262 */
1263
1264 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1265 {
1266 int needed = 0;
1267 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1268 if (pylib != 0)
1269 {
1270 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1271 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1272 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1273 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1274 (*pfx)(prefix);
1275 (*init)();
1276 needed = (*simple)("import termios") == -1;
1277 (*final)();
1278 dlclose(pylib);
1279 }
1280 return !needed;
1281 }
1282
1283 int main(int argc, char** argv)
1284 {
1285 int not_needed = 0;
1286 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1287 not_needed = 1;
1288 return !not_needed;
1289 }],
1290 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1291
1292 CFLAGS=$cflags_save
1293 LDFLAGS=$ldflags_save
1294
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001295 PYTHON_SRC="if_python.c"
1296 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001297 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001298 PYTHON_LIBS=
1299 PYTHON3_SRC="if_python3.c"
1300 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001301 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001302 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001303elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1304 AC_DEFINE(DYNAMIC_PYTHON)
1305 PYTHON_SRC="if_python.c"
1306 PYTHON_OBJ="objects/if_python.o"
1307 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1308 PYTHON_LIBS=
1309elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1310 AC_DEFINE(DYNAMIC_PYTHON3)
1311 PYTHON3_SRC="if_python3.c"
1312 PYTHON3_OBJ="objects/if_python3.o"
1313 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1314 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001315fi
1316
Bram Moolenaar071d4272004-06-13 20:20:40 +00001317AC_MSG_CHECKING(--enable-tclinterp argument)
1318AC_ARG_ENABLE(tclinterp,
1319 [ --enable-tclinterp Include Tcl interpreter.], ,
1320 [enable_tclinterp="no"])
1321AC_MSG_RESULT($enable_tclinterp)
1322
1323if test "$enable_tclinterp" = "yes"; then
1324
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001325 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001326 AC_MSG_CHECKING(--with-tclsh argument)
1327 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1328 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001329 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001330 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1331 AC_SUBST(vi_cv_path_tcl)
1332
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001333 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1334 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1335 tclsh_name="tclsh8.4"
1336 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1337 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001338 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001339 tclsh_name="tclsh8.2"
1340 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1341 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001342 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1343 tclsh_name="tclsh8.0"
1344 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1345 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 dnl still didn't find it, try without version number
1347 if test "X$vi_cv_path_tcl" = "X"; then
1348 tclsh_name="tclsh"
1349 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1350 fi
1351 if test "X$vi_cv_path_tcl" != "X"; then
1352 AC_MSG_CHECKING(Tcl version)
1353 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1354 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1355 AC_MSG_RESULT($tclver - OK);
1356 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 -`
1357
1358 AC_MSG_CHECKING(for location of Tcl include)
1359 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001360 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 +00001361 else
1362 dnl For Mac OS X 10.3, use the OS-provided framework location
1363 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1364 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001365 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001366 for try in $tclinc; do
1367 if test -f "$try/tcl.h"; then
1368 AC_MSG_RESULT($try/tcl.h)
1369 TCL_INC=$try
1370 break
1371 fi
1372 done
1373 if test -z "$TCL_INC"; then
1374 AC_MSG_RESULT(<not found>)
1375 SKIP_TCL=YES
1376 fi
1377 if test -z "$SKIP_TCL"; then
1378 AC_MSG_CHECKING(for location of tclConfig.sh script)
1379 if test "x$MACOSX" != "xyes"; then
1380 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001381 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001382 else
1383 dnl For Mac OS X 10.3, use the OS-provided framework location
1384 tclcnf="/System/Library/Frameworks/Tcl.framework"
1385 fi
1386 for try in $tclcnf; do
1387 if test -f $try/tclConfig.sh; then
1388 AC_MSG_RESULT($try/tclConfig.sh)
1389 . $try/tclConfig.sh
1390 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1391 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1392 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001393 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001394 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 +00001395 break
1396 fi
1397 done
1398 if test -z "$TCL_LIBS"; then
1399 AC_MSG_RESULT(<not found>)
1400 AC_MSG_CHECKING(for Tcl library by myself)
1401 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001402 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001403 for ext in .so .a ; do
1404 for ver in "" $tclver ; do
1405 for try in $tcllib ; do
1406 trylib=tcl$ver$ext
1407 if test -f $try/lib$trylib ; then
1408 AC_MSG_RESULT($try/lib$trylib)
1409 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1410 if test "`(uname) 2>/dev/null`" = SunOS &&
1411 uname -r | grep '^5' >/dev/null; then
1412 TCL_LIBS="$TCL_LIBS -R $try"
1413 fi
1414 break 3
1415 fi
1416 done
1417 done
1418 done
1419 if test -z "$TCL_LIBS"; then
1420 AC_MSG_RESULT(<not found>)
1421 SKIP_TCL=YES
1422 fi
1423 fi
1424 if test -z "$SKIP_TCL"; then
1425 AC_DEFINE(FEAT_TCL)
1426 TCL_SRC=if_tcl.c
1427 TCL_OBJ=objects/if_tcl.o
1428 TCL_PRO=if_tcl.pro
1429 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1430 fi
1431 fi
1432 else
1433 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1434 fi
1435 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001436 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1437 AC_MSG_ERROR([could not configure Tcl])
1438 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001439fi
1440AC_SUBST(TCL_SRC)
1441AC_SUBST(TCL_OBJ)
1442AC_SUBST(TCL_PRO)
1443AC_SUBST(TCL_CFLAGS)
1444AC_SUBST(TCL_LIBS)
1445
1446AC_MSG_CHECKING(--enable-rubyinterp argument)
1447AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001448 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001449 [enable_rubyinterp="no"])
1450AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001451if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001452 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001453 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001454 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1455 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1456 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001457 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001458 if test "X$vi_cv_path_ruby" != "X"; then
1459 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001460 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 +00001461 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001462 AC_MSG_CHECKING(Ruby rbconfig)
1463 ruby_rbconfig="RbConfig"
1464 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1465 ruby_rbconfig="Config"
1466 fi
1467 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001468 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001469 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 +00001470 if test "X$rubyhdrdir" != "X"; then
1471 AC_MSG_RESULT($rubyhdrdir)
1472 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001473 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001474 if test -d "$rubyhdrdir/$rubyarch"; then
1475 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1476 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001477 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001478 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001479 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001480 if test "X$rubylibs" != "X"; then
1481 RUBY_LIBS="$rubylibs"
1482 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001483 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1484 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1485 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001486 if test -f "$rubylibdir/$librubya"; then
1487 librubyarg="$librubyarg"
1488 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1489 elif test "$librubyarg" = "libruby.a"; then
1490 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1491 librubyarg="-lruby"
1492 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001493 fi
1494
1495 if test "X$librubyarg" != "X"; then
1496 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1497 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001498 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001499 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001500 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1501 dnl be included if requested by passing --with-mac-arch to
1502 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001503 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001504 if test "X$rubyldflags" != "X"; then
1505 LDFLAGS="$rubyldflags $LDFLAGS"
1506 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001507 fi
1508 RUBY_SRC="if_ruby.c"
1509 RUBY_OBJ="objects/if_ruby.o"
1510 RUBY_PRO="if_ruby.pro"
1511 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001512 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001513 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001514 AC_DEFINE(DYNAMIC_RUBY)
1515 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1516 RUBY_LIBS=
1517 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001518 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001519 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001520 fi
1521 else
1522 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1523 fi
1524 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001525
1526 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1527 AC_MSG_ERROR([could not configure Ruby])
1528 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001529fi
1530AC_SUBST(RUBY_SRC)
1531AC_SUBST(RUBY_OBJ)
1532AC_SUBST(RUBY_PRO)
1533AC_SUBST(RUBY_CFLAGS)
1534AC_SUBST(RUBY_LIBS)
1535
1536AC_MSG_CHECKING(--enable-cscope argument)
1537AC_ARG_ENABLE(cscope,
1538 [ --enable-cscope Include cscope interface.], ,
1539 [enable_cscope="no"])
1540AC_MSG_RESULT($enable_cscope)
1541if test "$enable_cscope" = "yes"; then
1542 AC_DEFINE(FEAT_CSCOPE)
1543fi
1544
1545AC_MSG_CHECKING(--enable-workshop argument)
1546AC_ARG_ENABLE(workshop,
1547 [ --enable-workshop Include Sun Visual Workshop support.], ,
1548 [enable_workshop="no"])
1549AC_MSG_RESULT($enable_workshop)
1550if test "$enable_workshop" = "yes"; then
1551 AC_DEFINE(FEAT_SUN_WORKSHOP)
1552 WORKSHOP_SRC="workshop.c integration.c"
1553 AC_SUBST(WORKSHOP_SRC)
1554 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1555 AC_SUBST(WORKSHOP_OBJ)
1556 if test "${enable_gui-xxx}" = xxx; then
1557 enable_gui=motif
1558 fi
1559fi
1560
1561AC_MSG_CHECKING(--disable-netbeans argument)
1562AC_ARG_ENABLE(netbeans,
1563 [ --disable-netbeans Disable NetBeans integration support.],
1564 , [enable_netbeans="yes"])
1565if test "$enable_netbeans" = "yes"; then
1566 AC_MSG_RESULT(no)
1567 dnl On Solaris we need the socket and nsl library.
1568 AC_CHECK_LIB(socket, socket)
1569 AC_CHECK_LIB(nsl, gethostbyname)
1570 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1571 AC_TRY_LINK([
1572#include <stdio.h>
1573#include <stdlib.h>
1574#include <stdarg.h>
1575#include <fcntl.h>
1576#include <netdb.h>
1577#include <netinet/in.h>
1578#include <errno.h>
1579#include <sys/types.h>
1580#include <sys/socket.h>
1581 /* Check bitfields */
1582 struct nbbuf {
1583 unsigned int initDone:1;
1584 ushort signmaplen;
1585 };
1586 ], [
1587 /* Check creating a socket. */
1588 struct sockaddr_in server;
1589 (void)socket(AF_INET, SOCK_STREAM, 0);
1590 (void)htons(100);
1591 (void)gethostbyname("microsoft.com");
1592 if (errno == ECONNREFUSED)
1593 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1594 ],
1595 AC_MSG_RESULT(yes),
1596 AC_MSG_RESULT(no); enable_netbeans="no")
1597else
1598 AC_MSG_RESULT(yes)
1599fi
1600if test "$enable_netbeans" = "yes"; then
1601 AC_DEFINE(FEAT_NETBEANS_INTG)
1602 NETBEANS_SRC="netbeans.c"
1603 AC_SUBST(NETBEANS_SRC)
1604 NETBEANS_OBJ="objects/netbeans.o"
1605 AC_SUBST(NETBEANS_OBJ)
1606fi
1607
1608AC_MSG_CHECKING(--enable-sniff argument)
1609AC_ARG_ENABLE(sniff,
1610 [ --enable-sniff Include Sniff interface.], ,
1611 [enable_sniff="no"])
1612AC_MSG_RESULT($enable_sniff)
1613if test "$enable_sniff" = "yes"; then
1614 AC_DEFINE(FEAT_SNIFF)
1615 SNIFF_SRC="if_sniff.c"
1616 AC_SUBST(SNIFF_SRC)
1617 SNIFF_OBJ="objects/if_sniff.o"
1618 AC_SUBST(SNIFF_OBJ)
1619fi
1620
1621AC_MSG_CHECKING(--enable-multibyte argument)
1622AC_ARG_ENABLE(multibyte,
1623 [ --enable-multibyte Include multibyte editing support.], ,
1624 [enable_multibyte="no"])
1625AC_MSG_RESULT($enable_multibyte)
1626if test "$enable_multibyte" = "yes"; then
1627 AC_DEFINE(FEAT_MBYTE)
1628fi
1629
1630AC_MSG_CHECKING(--enable-hangulinput argument)
1631AC_ARG_ENABLE(hangulinput,
1632 [ --enable-hangulinput Include Hangul input support.], ,
1633 [enable_hangulinput="no"])
1634AC_MSG_RESULT($enable_hangulinput)
1635
1636AC_MSG_CHECKING(--enable-xim argument)
1637AC_ARG_ENABLE(xim,
1638 [ --enable-xim Include XIM input support.],
1639 AC_MSG_RESULT($enable_xim),
1640 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001641
1642AC_MSG_CHECKING(--enable-fontset argument)
1643AC_ARG_ENABLE(fontset,
1644 [ --enable-fontset Include X fontset output support.], ,
1645 [enable_fontset="no"])
1646AC_MSG_RESULT($enable_fontset)
1647dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1648
1649test -z "$with_x" && with_x=yes
1650test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1651if test "$with_x" = no; then
1652 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1653else
1654 dnl Do this check early, so that its failure can override user requests.
1655
1656 AC_PATH_PROG(xmkmfpath, xmkmf)
1657
1658 AC_PATH_XTRA
1659
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001660 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001661 dnl be compiled with a special option.
1662 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001663 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001664 CFLAGS="$CFLAGS -W c,dll"
1665 LDFLAGS="$LDFLAGS -W l,dll"
1666 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1667 fi
1668
1669 dnl On my HPUX system the X include dir is found, but the lib dir not.
1670 dnl This is a desparate try to fix this.
1671
1672 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1673 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1674 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1675 X_LIBS="$X_LIBS -L$x_libraries"
1676 if test "`(uname) 2>/dev/null`" = SunOS &&
1677 uname -r | grep '^5' >/dev/null; then
1678 X_LIBS="$X_LIBS -R $x_libraries"
1679 fi
1680 fi
1681
1682 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1683 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1684 AC_MSG_RESULT(Corrected X includes to $x_includes)
1685 X_CFLAGS="$X_CFLAGS -I$x_includes"
1686 fi
1687
1688 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1689 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1690 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1691 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1692 dnl Same for "-R/usr/lib ".
1693 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1694
1695
1696 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001697 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1698 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001699 AC_MSG_CHECKING(if X11 header files can be found)
1700 cflags_save=$CFLAGS
1701 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001702 AC_TRY_COMPILE([#include <X11/Xlib.h>
1703#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001704 AC_MSG_RESULT(yes),
1705 AC_MSG_RESULT(no); no_x=yes)
1706 CFLAGS=$cflags_save
1707
1708 if test "${no_x-no}" = yes; then
1709 with_x=no
1710 else
1711 AC_DEFINE(HAVE_X11)
1712 X_LIB="-lXt -lX11";
1713 AC_SUBST(X_LIB)
1714
1715 ac_save_LDFLAGS="$LDFLAGS"
1716 LDFLAGS="-L$x_libraries $LDFLAGS"
1717
1718 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1719 dnl For HP-UX 10.20 it must be before -lSM -lICE
1720 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1721 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1722
1723 dnl Some systems need -lnsl -lsocket when testing for ICE.
1724 dnl The check above doesn't do this, try here (again). Also needed to get
1725 dnl them after Xdmcp. link.sh will remove them when not needed.
1726 dnl Check for other function than above to avoid the cached value
1727 AC_CHECK_LIB(ICE, IceOpenConnection,
1728 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1729
1730 dnl Check for -lXpm (needed for some versions of Motif)
1731 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1732 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1733 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1734
1735 dnl Check that the X11 header files don't use implicit declarations
1736 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1737 cflags_save=$CFLAGS
1738 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1739 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1740 AC_MSG_RESULT(no),
1741 CFLAGS="$CFLAGS -Wno-implicit-int"
1742 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1743 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1744 AC_MSG_RESULT(test failed)
1745 )
1746 )
1747 CFLAGS=$cflags_save
1748
1749 LDFLAGS="$ac_save_LDFLAGS"
1750
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001751 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1752 AC_CACHE_VAL(ac_cv_small_wchar_t,
1753 [AC_TRY_RUN([
1754#include <X11/Xlib.h>
1755#if STDC_HEADERS
1756# include <stdlib.h>
1757# include <stddef.h>
1758#endif
1759 main()
1760 {
1761 if (sizeof(wchar_t) <= 2)
1762 exit(1);
1763 exit(0);
1764 }],
1765 ac_cv_small_wchar_t="no",
1766 ac_cv_small_wchar_t="yes",
1767 AC_MSG_ERROR(failed to compile test program))])
1768 AC_MSG_RESULT($ac_cv_small_wchar_t)
1769 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1770 AC_DEFINE(SMALL_WCHAR_T)
1771 fi
1772
Bram Moolenaar071d4272004-06-13 20:20:40 +00001773 fi
1774fi
1775
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001776test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777
1778AC_MSG_CHECKING(--enable-gui argument)
1779AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001780 [ --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 +00001781
1782dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1783dnl Do not use character classes for portability with old tools.
1784enable_gui_canon=`echo "_$enable_gui" | \
1785 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1786
1787dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788SKIP_GTK2=YES
1789SKIP_GNOME=YES
1790SKIP_MOTIF=YES
1791SKIP_ATHENA=YES
1792SKIP_NEXTAW=YES
1793SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001794SKIP_CARBON=YES
1795GUITYPE=NONE
1796
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001797if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798 SKIP_PHOTON=
1799 case "$enable_gui_canon" in
1800 no) AC_MSG_RESULT(no GUI support)
1801 SKIP_PHOTON=YES ;;
1802 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1803 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1804 photon) AC_MSG_RESULT(Photon GUI support) ;;
1805 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1806 SKIP_PHOTON=YES ;;
1807 esac
1808
1809elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1810 SKIP_CARBON=
1811 case "$enable_gui_canon" in
1812 no) AC_MSG_RESULT(no GUI support)
1813 SKIP_CARBON=YES ;;
1814 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001815 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1816 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001817 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1818 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1819 SKIP_CARBON=YES ;;
1820 esac
1821
1822else
1823
Bram Moolenaar071d4272004-06-13 20:20:40 +00001824 case "$enable_gui_canon" in
1825 no|none) AC_MSG_RESULT(no GUI support) ;;
1826 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827 SKIP_GTK2=
1828 SKIP_GNOME=
1829 SKIP_MOTIF=
1830 SKIP_ATHENA=
1831 SKIP_NEXTAW=
1832 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001833 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001835 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1836 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837 SKIP_GTK2=;;
1838 motif) AC_MSG_RESULT(Motif GUI support)
1839 SKIP_MOTIF=;;
1840 athena) AC_MSG_RESULT(Athena GUI support)
1841 SKIP_ATHENA=;;
1842 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1843 SKIP_NEXTAW=;;
1844 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1845 esac
1846
1847fi
1848
Bram Moolenaar071d4272004-06-13 20:20:40 +00001849if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1850 -a "$enable_gui_canon" != "gnome2"; then
1851 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1852 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001853 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001854 , enable_gtk2_check="yes")
1855 AC_MSG_RESULT($enable_gtk2_check)
1856 if test "x$enable_gtk2_check" = "xno"; then
1857 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001858 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001859 fi
1860fi
1861
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001862if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001863 AC_MSG_CHECKING(whether or not to look for GNOME)
1864 AC_ARG_ENABLE(gnome-check,
1865 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1866 , enable_gnome_check="no")
1867 AC_MSG_RESULT($enable_gnome_check)
1868 if test "x$enable_gnome_check" = "xno"; then
1869 SKIP_GNOME=YES
1870 fi
1871fi
1872
1873if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1874 AC_MSG_CHECKING(whether or not to look for Motif)
1875 AC_ARG_ENABLE(motif-check,
1876 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1877 , enable_motif_check="yes")
1878 AC_MSG_RESULT($enable_motif_check)
1879 if test "x$enable_motif_check" = "xno"; then
1880 SKIP_MOTIF=YES
1881 fi
1882fi
1883
1884if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1885 AC_MSG_CHECKING(whether or not to look for Athena)
1886 AC_ARG_ENABLE(athena-check,
1887 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1888 , enable_athena_check="yes")
1889 AC_MSG_RESULT($enable_athena_check)
1890 if test "x$enable_athena_check" = "xno"; then
1891 SKIP_ATHENA=YES
1892 fi
1893fi
1894
1895if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1896 AC_MSG_CHECKING(whether or not to look for neXtaw)
1897 AC_ARG_ENABLE(nextaw-check,
1898 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1899 , enable_nextaw_check="yes")
1900 AC_MSG_RESULT($enable_nextaw_check);
1901 if test "x$enable_nextaw_check" = "xno"; then
1902 SKIP_NEXTAW=YES
1903 fi
1904fi
1905
1906if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1907 AC_MSG_CHECKING(whether or not to look for Carbon)
1908 AC_ARG_ENABLE(carbon-check,
1909 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1910 , enable_carbon_check="yes")
1911 AC_MSG_RESULT($enable_carbon_check);
1912 if test "x$enable_carbon_check" = "xno"; then
1913 SKIP_CARBON=YES
1914 fi
1915fi
1916
Bram Moolenaar843ee412004-06-30 16:16:41 +00001917
Bram Moolenaar071d4272004-06-13 20:20:40 +00001918if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1919 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001920 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001921 AC_MSG_RESULT(yes);
1922 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001923 if test "$VIMNAME" = "vim"; then
1924 VIMNAME=Vim
1925 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001926
Bram Moolenaar164fca32010-07-14 13:58:07 +02001927 if test "x$MACARCH" = "xboth"; then
1928 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1929 else
1930 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1931 fi
1932
Bram Moolenaar14716812006-05-04 21:54:08 +00001933 dnl Default install directory is not /usr/local
1934 if test x$prefix = xNONE; then
1935 prefix=/Applications
1936 fi
1937
1938 dnl Sorry for the hard coded default
1939 datadir='${prefix}/Vim.app/Contents/Resources'
1940
Bram Moolenaar071d4272004-06-13 20:20:40 +00001941 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001942 SKIP_GTK2=YES;
1943 SKIP_GNOME=YES;
1944 SKIP_MOTIF=YES;
1945 SKIP_ATHENA=YES;
1946 SKIP_NEXTAW=YES;
1947 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001948 SKIP_CARBON=YES
1949fi
1950
Bram Moolenaar071d4272004-06-13 20:20:40 +00001951dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001952dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001953dnl
1954dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001955dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001956dnl
1957AC_DEFUN(AM_PATH_GTK,
1958[
1959 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1960 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001961 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001962 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1963 no_gtk=""
1964 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1965 && $PKG_CONFIG --exists gtk+-2.0; then
1966 {
1967 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1968 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1969 dnl something like that.
1970 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001971 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1973 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1974 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1975 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1976 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1977 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1978 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1979 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001980 else
1981 no_gtk=yes
1982 fi
1983
1984 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1985 {
1986 ac_save_CFLAGS="$CFLAGS"
1987 ac_save_LIBS="$LIBS"
1988 CFLAGS="$CFLAGS $GTK_CFLAGS"
1989 LIBS="$LIBS $GTK_LIBS"
1990
1991 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001992 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001993 dnl
1994 rm -f conf.gtktest
1995 AC_TRY_RUN([
1996#include <gtk/gtk.h>
1997#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001998#if STDC_HEADERS
1999# include <stdlib.h>
2000# include <stddef.h>
2001#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002
2003int
2004main ()
2005{
2006int major, minor, micro;
2007char *tmp_version;
2008
2009system ("touch conf.gtktest");
2010
2011/* HP/UX 9 (%@#!) writes to sscanf strings */
2012tmp_version = g_strdup("$min_gtk_version");
2013if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2014 printf("%s, bad version string\n", "$min_gtk_version");
2015 exit(1);
2016 }
2017
2018if ((gtk_major_version > major) ||
2019 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2020 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2021 (gtk_micro_version >= micro)))
2022{
2023 return 0;
2024}
2025return 1;
2026}
2027],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2028 CFLAGS="$ac_save_CFLAGS"
2029 LIBS="$ac_save_LIBS"
2030 }
2031 fi
2032 if test "x$no_gtk" = x ; then
2033 if test "x$enable_gtktest" = "xyes"; then
2034 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2035 else
2036 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2037 fi
2038 ifelse([$2], , :, [$2])
2039 else
2040 {
2041 AC_MSG_RESULT(no)
2042 GTK_CFLAGS=""
2043 GTK_LIBS=""
2044 ifelse([$3], , :, [$3])
2045 }
2046 fi
2047 }
2048 else
2049 GTK_CFLAGS=""
2050 GTK_LIBS=""
2051 ifelse([$3], , :, [$3])
2052 fi
2053 AC_SUBST(GTK_CFLAGS)
2054 AC_SUBST(GTK_LIBS)
2055 rm -f conf.gtktest
2056])
2057
2058dnl ---------------------------------------------------------------------------
2059dnl gnome
2060dnl ---------------------------------------------------------------------------
2061AC_DEFUN([GNOME_INIT_HOOK],
2062[
2063 AC_SUBST(GNOME_LIBS)
2064 AC_SUBST(GNOME_LIBDIR)
2065 AC_SUBST(GNOME_INCLUDEDIR)
2066
2067 AC_ARG_WITH(gnome-includes,
2068 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2069 [CFLAGS="$CFLAGS -I$withval"]
2070 )
2071
2072 AC_ARG_WITH(gnome-libs,
2073 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2074 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2075 )
2076
2077 AC_ARG_WITH(gnome,
2078 [ --with-gnome Specify prefix for GNOME files],
2079 if test x$withval = xyes; then
2080 want_gnome=yes
2081 ifelse([$1], [], :, [$1])
2082 else
2083 if test "x$withval" = xno; then
2084 want_gnome=no
2085 else
2086 want_gnome=yes
2087 LDFLAGS="$LDFLAGS -L$withval/lib"
2088 CFLAGS="$CFLAGS -I$withval/include"
2089 gnome_prefix=$withval/lib
2090 fi
2091 fi,
2092 want_gnome=yes)
2093
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002094 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002095 {
2096 AC_MSG_CHECKING(for libgnomeui-2.0)
2097 if $PKG_CONFIG --exists libgnomeui-2.0; then
2098 AC_MSG_RESULT(yes)
2099 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2100 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2101 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002102
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002103 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2104 dnl This might not be the right way but it works for me...
2105 AC_MSG_CHECKING(for FreeBSD)
2106 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2107 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002108 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002109 GNOME_LIBS="$GNOME_LIBS -pthread"
2110 else
2111 AC_MSG_RESULT(no)
2112 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002113 $1
2114 else
2115 AC_MSG_RESULT(not found)
2116 if test "x$2" = xfail; then
2117 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2118 fi
2119 fi
2120 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002121 fi
2122])
2123
2124AC_DEFUN([GNOME_INIT],[
2125 GNOME_INIT_HOOK([],fail)
2126])
2127
2128
2129dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002130dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002131dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002132if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002133
2134 AC_MSG_CHECKING(--disable-gtktest argument)
2135 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2136 , enable_gtktest=yes)
2137 if test "x$enable_gtktest" = "xyes" ; then
2138 AC_MSG_RESULT(gtk test enabled)
2139 else
2140 AC_MSG_RESULT(gtk test disabled)
2141 fi
2142
Bram Moolenaar071d4272004-06-13 20:20:40 +00002143 if test "X$PKG_CONFIG" = "X"; then
2144 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2145 fi
2146
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002147 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002148 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2149 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002150 AM_PATH_GTK(2.2.0,
2151 [GUI_LIB_LOC="$GTK_LIBDIR"
2152 GTK_LIBNAME="$GTK_LIBS"
2153 GUI_INC_LOC="$GTK_CFLAGS"], )
2154 if test "x$GTK_CFLAGS" != "x"; then
2155 SKIP_ATHENA=YES
2156 SKIP_NEXTAW=YES
2157 SKIP_MOTIF=YES
2158 GUITYPE=GTK
2159 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002160 fi
2161 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002162 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002163 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2164 || test "0$gtk_minor_version" -ge 2; then
2165 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2166 fi
2167 dnl
2168 dnl if GTK exists, then check for GNOME.
2169 dnl
2170 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002171 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002172 GNOME_INIT_HOOK([have_gnome=yes])
2173 if test "x$have_gnome" = xyes ; then
2174 AC_DEFINE(FEAT_GUI_GNOME)
2175 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2176 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002177 fi
2178 }
2179 fi
2180 fi
2181fi
2182
2183dnl Check for Motif include files location.
2184dnl The LAST one found is used, this makes the highest version to be used,
2185dnl e.g. when Motif1.2 and Motif2.0 are both present.
2186
2187if test -z "$SKIP_MOTIF"; then
2188 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"
2189 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2190 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2191
2192 AC_MSG_CHECKING(for location of Motif GUI includes)
2193 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2194 GUI_INC_LOC=
2195 for try in $gui_includes; do
2196 if test -f "$try/Xm/Xm.h"; then
2197 GUI_INC_LOC=$try
2198 fi
2199 done
2200 if test -n "$GUI_INC_LOC"; then
2201 if test "$GUI_INC_LOC" = /usr/include; then
2202 GUI_INC_LOC=
2203 AC_MSG_RESULT(in default path)
2204 else
2205 AC_MSG_RESULT($GUI_INC_LOC)
2206 fi
2207 else
2208 AC_MSG_RESULT(<not found>)
2209 SKIP_MOTIF=YES
2210 fi
2211fi
2212
2213dnl Check for Motif library files location. In the same order as the include
2214dnl files, to avoid a mixup if several versions are present
2215
2216if test -z "$SKIP_MOTIF"; then
2217 AC_MSG_CHECKING(--with-motif-lib argument)
2218 AC_ARG_WITH(motif-lib,
2219 [ --with-motif-lib=STRING Library for Motif ],
2220 [ MOTIF_LIBNAME="${withval}" ] )
2221
2222 if test -n "$MOTIF_LIBNAME"; then
2223 AC_MSG_RESULT($MOTIF_LIBNAME)
2224 GUI_LIB_LOC=
2225 else
2226 AC_MSG_RESULT(no)
2227
2228 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2229 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2230
2231 AC_MSG_CHECKING(for location of Motif GUI libs)
2232 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"
2233 GUI_LIB_LOC=
2234 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002235 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002236 if test -f "$libtry"; then
2237 GUI_LIB_LOC=$try
2238 fi
2239 done
2240 done
2241 if test -n "$GUI_LIB_LOC"; then
2242 dnl Remove /usr/lib, it causes trouble on some systems
2243 if test "$GUI_LIB_LOC" = /usr/lib; then
2244 GUI_LIB_LOC=
2245 AC_MSG_RESULT(in default path)
2246 else
2247 if test -n "$GUI_LIB_LOC"; then
2248 AC_MSG_RESULT($GUI_LIB_LOC)
2249 if test "`(uname) 2>/dev/null`" = SunOS &&
2250 uname -r | grep '^5' >/dev/null; then
2251 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2252 fi
2253 fi
2254 fi
2255 MOTIF_LIBNAME=-lXm
2256 else
2257 AC_MSG_RESULT(<not found>)
2258 SKIP_MOTIF=YES
2259 fi
2260 fi
2261fi
2262
2263if test -z "$SKIP_MOTIF"; then
2264 SKIP_ATHENA=YES
2265 SKIP_NEXTAW=YES
2266 GUITYPE=MOTIF
2267 AC_SUBST(MOTIF_LIBNAME)
2268fi
2269
2270dnl Check if the Athena files can be found
2271
2272GUI_X_LIBS=
2273
2274if test -z "$SKIP_ATHENA"; then
2275 AC_MSG_CHECKING(if Athena header files can be found)
2276 cflags_save=$CFLAGS
2277 CFLAGS="$CFLAGS $X_CFLAGS"
2278 AC_TRY_COMPILE([
2279#include <X11/Intrinsic.h>
2280#include <X11/Xaw/Paned.h>], ,
2281 AC_MSG_RESULT(yes),
2282 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2283 CFLAGS=$cflags_save
2284fi
2285
2286if test -z "$SKIP_ATHENA"; then
2287 GUITYPE=ATHENA
2288fi
2289
2290if test -z "$SKIP_NEXTAW"; then
2291 AC_MSG_CHECKING(if neXtaw header files can be found)
2292 cflags_save=$CFLAGS
2293 CFLAGS="$CFLAGS $X_CFLAGS"
2294 AC_TRY_COMPILE([
2295#include <X11/Intrinsic.h>
2296#include <X11/neXtaw/Paned.h>], ,
2297 AC_MSG_RESULT(yes),
2298 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2299 CFLAGS=$cflags_save
2300fi
2301
2302if test -z "$SKIP_NEXTAW"; then
2303 GUITYPE=NEXTAW
2304fi
2305
2306if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2307 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2308 dnl Avoid adding it when it twice
2309 if test -n "$GUI_INC_LOC"; then
2310 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2311 fi
2312 if test -n "$GUI_LIB_LOC"; then
2313 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2314 fi
2315
2316 dnl Check for -lXext and then for -lXmu
2317 ldflags_save=$LDFLAGS
2318 LDFLAGS="$X_LIBS $LDFLAGS"
2319 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2320 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2321 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2322 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2323 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2324 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2325 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2326 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2327 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2328 if test -z "$SKIP_MOTIF"; then
2329 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2330 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2331 fi
2332 LDFLAGS=$ldflags_save
2333
2334 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2335 AC_MSG_CHECKING(for extra X11 defines)
2336 NARROW_PROTO=
2337 rm -fr conftestdir
2338 if mkdir conftestdir; then
2339 cd conftestdir
2340 cat > Imakefile <<'EOF'
2341acfindx:
2342 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2343EOF
2344 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2345 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2346 fi
2347 cd ..
2348 rm -fr conftestdir
2349 fi
2350 if test -z "$NARROW_PROTO"; then
2351 AC_MSG_RESULT(no)
2352 else
2353 AC_MSG_RESULT($NARROW_PROTO)
2354 fi
2355 AC_SUBST(NARROW_PROTO)
2356fi
2357
2358dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2359dnl use the X11 include path
2360if test "$enable_xsmp" = "yes"; then
2361 cppflags_save=$CPPFLAGS
2362 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2363 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2364 CPPFLAGS=$cppflags_save
2365fi
2366
2367
Bram Moolenaare667c952010-07-05 22:57:59 +02002368if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002369 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2370 cppflags_save=$CPPFLAGS
2371 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2372 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2373
2374 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2375 if test ! "$enable_xim" = "no"; then
2376 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2377 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2378 AC_MSG_RESULT(yes),
2379 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2380 fi
2381 CPPFLAGS=$cppflags_save
2382
2383 dnl automatically enable XIM when hangul input isn't enabled
2384 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2385 -a "x$GUITYPE" != "xNONE" ; then
2386 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2387 enable_xim="yes"
2388 fi
2389fi
2390
2391if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2392 cppflags_save=$CPPFLAGS
2393 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002394dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2395 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2396 AC_TRY_COMPILE([
2397#include <X11/Intrinsic.h>
2398#include <X11/Xmu/Editres.h>],
2399 [int i; i = 0;],
2400 AC_MSG_RESULT(yes)
2401 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2402 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002403 CPPFLAGS=$cppflags_save
2404fi
2405
2406dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2407if test -z "$SKIP_MOTIF"; then
2408 cppflags_save=$CPPFLAGS
2409 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002410 if test "$zOSUnix" = "yes"; then
2411 xmheader="Xm/Xm.h"
2412 else
2413 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2414 Xm/UnhighlightT.h Xm/Notebook.h"
2415 fi
2416 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002417
Bram Moolenaar77c19352012-06-13 19:19:41 +02002418 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002419 dnl Solaris uses XpmAttributes_21, very annoying.
2420 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2421 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2422 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2423 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2424 )
2425 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002426 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002427 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002428 CPPFLAGS=$cppflags_save
2429fi
2430
2431if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2432 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2433 enable_xim="no"
2434fi
2435if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2436 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2437 enable_fontset="no"
2438fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002439if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002440 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2441 enable_fontset="no"
2442fi
2443
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444if test -z "$SKIP_PHOTON"; then
2445 GUITYPE=PHOTONGUI
2446fi
2447
2448AC_SUBST(GUI_INC_LOC)
2449AC_SUBST(GUI_LIB_LOC)
2450AC_SUBST(GUITYPE)
2451AC_SUBST(GUI_X_LIBS)
2452
2453if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2454 AC_MSG_ERROR([cannot use workshop without Motif])
2455fi
2456
2457dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2458if test "$enable_xim" = "yes"; then
2459 AC_DEFINE(FEAT_XIM)
2460fi
2461if test "$enable_fontset" = "yes"; then
2462 AC_DEFINE(FEAT_XFONTSET)
2463fi
2464
2465
2466dnl ---------------------------------------------------------------------------
2467dnl end of GUI-checking
2468dnl ---------------------------------------------------------------------------
2469
2470
2471dnl Only really enable hangul input when GUI and XFONTSET are available
2472if test "$enable_hangulinput" = "yes"; then
2473 if test "x$GUITYPE" = "xNONE"; then
2474 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2475 enable_hangulinput=no
2476 else
2477 AC_DEFINE(FEAT_HANGULIN)
2478 HANGULIN_SRC=hangulin.c
2479 AC_SUBST(HANGULIN_SRC)
2480 HANGULIN_OBJ=objects/hangulin.o
2481 AC_SUBST(HANGULIN_OBJ)
2482 fi
2483fi
2484
2485dnl Checks for libraries and include files.
2486
Bram Moolenaar446cb832008-06-24 21:56:24 +00002487AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2488 [
2489 AC_RUN_IFELSE([[
2490#include "confdefs.h"
2491#include <ctype.h>
2492#if STDC_HEADERS
2493# include <stdlib.h>
2494# include <stddef.h>
2495#endif
2496main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2497 ]],[
2498 vim_cv_toupper_broken=yes
2499 ],[
2500 vim_cv_toupper_broken=no
2501 ],[
2502 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2503 ])])
2504
2505if test "x$vim_cv_toupper_broken" = "xyes" ; then
2506 AC_DEFINE(BROKEN_TOUPPER)
2507fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002508
2509AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002510AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002511 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2512 AC_MSG_RESULT(no))
2513
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002514AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2515AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2516 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2517 AC_MSG_RESULT(no))
2518
Bram Moolenaar071d4272004-06-13 20:20:40 +00002519dnl Checks for header files.
2520AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2521dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2522if test "$HAS_ELF" = 1; then
2523 AC_CHECK_LIB(elf, main)
2524fi
2525
2526AC_HEADER_DIRENT
2527
Bram Moolenaar071d4272004-06-13 20:20:40 +00002528dnl If sys/wait.h is not found it might still exist but not be POSIX
2529dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2530if test $ac_cv_header_sys_wait_h = no; then
2531 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2532 AC_TRY_COMPILE([#include <sys/wait.h>],
2533 [union wait xx, yy; xx = yy],
2534 AC_MSG_RESULT(yes)
2535 AC_DEFINE(HAVE_SYS_WAIT_H)
2536 AC_DEFINE(HAVE_UNION_WAIT),
2537 AC_MSG_RESULT(no))
2538fi
2539
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002540AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2541 sys/select.h sys/utsname.h termcap.h fcntl.h \
2542 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2543 termio.h iconv.h inttypes.h langinfo.h math.h \
2544 unistd.h stropts.h errno.h sys/resource.h \
2545 sys/systeminfo.h locale.h sys/stream.h termios.h \
2546 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2547 utime.h sys/param.h libintl.h libgen.h \
2548 util/debug.h util/msg18n.h frame.h sys/acl.h \
2549 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002550
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002551dnl sys/ptem.h depends on sys/stream.h on Solaris
2552AC_CHECK_HEADERS(sys/ptem.h, [], [],
2553[#if defined HAVE_SYS_STREAM_H
2554# include <sys/stream.h>
2555#endif])
2556
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002557dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2558AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2559[#if defined HAVE_SYS_PARAM_H
2560# include <sys/param.h>
2561#endif])
2562
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002563
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002564dnl pthread_np.h may exist but can only be used after including pthread.h
2565AC_MSG_CHECKING([for pthread_np.h])
2566AC_TRY_COMPILE([
2567#include <pthread.h>
2568#include <pthread_np.h>],
2569 [int i; i = 0;],
2570 AC_MSG_RESULT(yes)
2571 AC_DEFINE(HAVE_PTHREAD_NP_H),
2572 AC_MSG_RESULT(no))
2573
Bram Moolenaare344bea2005-09-01 20:46:49 +00002574AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002575if test "x$MACOSX" = "xyes"; then
2576 dnl The strings.h file on OS/X contains a warning and nothing useful.
2577 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2578else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002579
2580dnl Check if strings.h and string.h can both be included when defined.
2581AC_MSG_CHECKING([if strings.h can be included after string.h])
2582cppflags_save=$CPPFLAGS
2583CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2584AC_TRY_COMPILE([
2585#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2586# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2587 /* but don't do it on AIX 5.1 (Uribarri) */
2588#endif
2589#ifdef HAVE_XM_XM_H
2590# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2591#endif
2592#ifdef HAVE_STRING_H
2593# include <string.h>
2594#endif
2595#if defined(HAVE_STRINGS_H)
2596# include <strings.h>
2597#endif
2598 ], [int i; i = 0;],
2599 AC_MSG_RESULT(yes),
2600 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2601 AC_MSG_RESULT(no))
2602CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002603fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002604
2605dnl Checks for typedefs, structures, and compiler characteristics.
2606AC_PROG_GCC_TRADITIONAL
2607AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002608AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002609AC_TYPE_MODE_T
2610AC_TYPE_OFF_T
2611AC_TYPE_PID_T
2612AC_TYPE_SIZE_T
2613AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002614AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002615
Bram Moolenaar071d4272004-06-13 20:20:40 +00002616AC_HEADER_TIME
2617AC_CHECK_TYPE(ino_t, long)
2618AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002619AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002620
2621AC_MSG_CHECKING(for rlim_t)
2622if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2623 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2624else
2625 AC_EGREP_CPP(dnl
2626changequote(<<,>>)dnl
2627<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2628changequote([,]),
2629 [
2630#include <sys/types.h>
2631#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002632# include <stdlib.h>
2633# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002634#endif
2635#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002636# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002637#endif
2638 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2639 AC_MSG_RESULT($ac_cv_type_rlim_t)
2640fi
2641if test $ac_cv_type_rlim_t = no; then
2642 cat >> confdefs.h <<\EOF
2643#define rlim_t unsigned long
2644EOF
2645fi
2646
2647AC_MSG_CHECKING(for stack_t)
2648if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2649 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2650else
2651 AC_EGREP_CPP(stack_t,
2652 [
2653#include <sys/types.h>
2654#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002655# include <stdlib.h>
2656# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002657#endif
2658#include <signal.h>
2659 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2660 AC_MSG_RESULT($ac_cv_type_stack_t)
2661fi
2662if test $ac_cv_type_stack_t = no; then
2663 cat >> confdefs.h <<\EOF
2664#define stack_t struct sigaltstack
2665EOF
2666fi
2667
2668dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2669AC_MSG_CHECKING(whether stack_t has an ss_base field)
2670AC_TRY_COMPILE([
2671#include <sys/types.h>
2672#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002673# include <stdlib.h>
2674# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002675#endif
2676#include <signal.h>
2677#include "confdefs.h"
2678 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2679 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2680 AC_MSG_RESULT(no))
2681
2682olibs="$LIBS"
2683AC_MSG_CHECKING(--with-tlib argument)
2684AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2685if test -n "$with_tlib"; then
2686 AC_MSG_RESULT($with_tlib)
2687 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002688 AC_MSG_CHECKING(for linking with $with_tlib library)
2689 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2690 dnl Need to check for tgetent() below.
2691 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002692else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002693 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002694 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2695 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002696 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002697 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002698 dnl Older versions of ncurses have bugs, get a new one!
2699 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002700 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002701 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002702 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2703 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002704 esac
2705 for libname in $tlibs; do
2706 AC_CHECK_LIB(${libname}, tgetent,,)
2707 if test "x$olibs" != "x$LIBS"; then
2708 dnl It's possible that a library is found but it doesn't work
2709 dnl e.g., shared library that cannot be found
2710 dnl compile and run a test program to be sure
2711 AC_TRY_RUN([
2712#ifdef HAVE_TERMCAP_H
2713# include <termcap.h>
2714#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002715#if STDC_HEADERS
2716# include <stdlib.h>
2717# include <stddef.h>
2718#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002719main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2720 res="OK", res="FAIL", res="FAIL")
2721 if test "$res" = "OK"; then
2722 break
2723 fi
2724 AC_MSG_RESULT($libname library is not usable)
2725 LIBS="$olibs"
2726 fi
2727 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002728 if test "x$olibs" = "x$LIBS"; then
2729 AC_MSG_RESULT(no terminal library found)
2730 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002731fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002732
2733if test "x$olibs" = "x$LIBS"; then
2734 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002735 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002736 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2737 AC_MSG_RESULT(yes),
2738 AC_MSG_ERROR([NOT FOUND!
2739 You need to install a terminal library; for example ncurses.
2740 Or specify the name of the library with --with-tlib.]))
2741fi
2742
Bram Moolenaar446cb832008-06-24 21:56:24 +00002743AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2744 [
2745 AC_RUN_IFELSE([[
2746#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002747#ifdef HAVE_TERMCAP_H
2748# include <termcap.h>
2749#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002750#ifdef HAVE_STRING_H
2751# include <string.h>
2752#endif
2753#if STDC_HEADERS
2754# include <stdlib.h>
2755# include <stddef.h>
2756#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002757main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002758{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2759 ]],[
2760 vim_cv_terminfo=no
2761 ],[
2762 vim_cv_terminfo=yes
2763 ],[
2764 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2765 ])
2766 ])
2767
2768if test "x$vim_cv_terminfo" = "xyes" ; then
2769 AC_DEFINE(TERMINFO)
2770fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002771
2772if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002773 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2774 [
2775 AC_RUN_IFELSE([[
2776#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002777#ifdef HAVE_TERMCAP_H
2778# include <termcap.h>
2779#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002780#if STDC_HEADERS
2781# include <stdlib.h>
2782# include <stddef.h>
2783#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002784main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002785{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2786 ]],[
2787 vim_cv_tgent=zero
2788 ],[
2789 vim_cv_tgent=non-zero
2790 ],[
2791 AC_MSG_ERROR(failed to compile test program.)
2792 ])
2793 ])
2794
2795 if test "x$vim_cv_tgent" = "xzero" ; then
2796 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2797 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002798fi
2799
2800AC_MSG_CHECKING(whether termcap.h contains ospeed)
2801AC_TRY_LINK([
2802#ifdef HAVE_TERMCAP_H
2803# include <termcap.h>
2804#endif
2805 ], [ospeed = 20000],
2806 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2807 [AC_MSG_RESULT(no)
2808 AC_MSG_CHECKING(whether ospeed can be extern)
2809 AC_TRY_LINK([
2810#ifdef HAVE_TERMCAP_H
2811# include <termcap.h>
2812#endif
2813extern short ospeed;
2814 ], [ospeed = 20000],
2815 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2816 AC_MSG_RESULT(no))]
2817 )
2818
2819AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2820AC_TRY_LINK([
2821#ifdef HAVE_TERMCAP_H
2822# include <termcap.h>
2823#endif
2824 ], [if (UP == 0 && BC == 0) PC = 1],
2825 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2826 [AC_MSG_RESULT(no)
2827 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2828 AC_TRY_LINK([
2829#ifdef HAVE_TERMCAP_H
2830# include <termcap.h>
2831#endif
2832extern char *UP, *BC, PC;
2833 ], [if (UP == 0 && BC == 0) PC = 1],
2834 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2835 AC_MSG_RESULT(no))]
2836 )
2837
2838AC_MSG_CHECKING(whether tputs() uses outfuntype)
2839AC_TRY_COMPILE([
2840#ifdef HAVE_TERMCAP_H
2841# include <termcap.h>
2842#endif
2843 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2844 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2845 AC_MSG_RESULT(no))
2846
2847dnl On some SCO machines sys/select redefines struct timeval
2848AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2849AC_TRY_COMPILE([
2850#include <sys/types.h>
2851#include <sys/time.h>
2852#include <sys/select.h>], ,
2853 AC_MSG_RESULT(yes)
2854 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2855 AC_MSG_RESULT(no))
2856
2857dnl AC_DECL_SYS_SIGLIST
2858
2859dnl Checks for pty.c (copied from screen) ==========================
2860AC_MSG_CHECKING(for /dev/ptc)
2861if test -r /dev/ptc; then
2862 AC_DEFINE(HAVE_DEV_PTC)
2863 AC_MSG_RESULT(yes)
2864else
2865 AC_MSG_RESULT(no)
2866fi
2867
2868AC_MSG_CHECKING(for SVR4 ptys)
2869if test -c /dev/ptmx ; then
2870 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2871 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2872 AC_MSG_RESULT(no))
2873else
2874 AC_MSG_RESULT(no)
2875fi
2876
2877AC_MSG_CHECKING(for ptyranges)
2878if test -d /dev/ptym ; then
2879 pdir='/dev/ptym'
2880else
2881 pdir='/dev'
2882fi
2883dnl SCO uses ptyp%d
2884AC_EGREP_CPP(yes,
2885[#ifdef M_UNIX
2886 yes;
2887#endif
2888 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2889dnl if test -c /dev/ptyp19; then
2890dnl ptys=`echo /dev/ptyp??`
2891dnl else
2892dnl ptys=`echo $pdir/pty??`
2893dnl fi
2894if test "$ptys" != "$pdir/pty??" ; then
2895 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2896 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2897 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2898 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2899 AC_MSG_RESULT([$p0 / $p1])
2900else
2901 AC_MSG_RESULT([don't know])
2902fi
2903
2904dnl **** pty mode/group handling ****
2905dnl
2906dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002907rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002908AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2909 [
2910 AC_RUN_IFELSE([[
2911#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002912#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002913#if STDC_HEADERS
2914# include <stdlib.h>
2915# include <stddef.h>
2916#endif
2917#ifdef HAVE_UNISTD_H
2918#include <unistd.h>
2919#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002920#include <sys/stat.h>
2921#include <stdio.h>
2922main()
2923{
2924 struct stat sb;
2925 char *x,*ttyname();
2926 int om, m;
2927 FILE *fp;
2928
2929 if (!(x = ttyname(0))) exit(1);
2930 if (stat(x, &sb)) exit(1);
2931 om = sb.st_mode;
2932 if (om & 002) exit(0);
2933 m = system("mesg y");
2934 if (m == -1 || m == 127) exit(1);
2935 if (stat(x, &sb)) exit(1);
2936 m = sb.st_mode;
2937 if (chmod(x, om)) exit(1);
2938 if (m & 002) exit(0);
2939 if (sb.st_gid == getgid()) exit(1);
2940 if (!(fp=fopen("conftest_grp", "w")))
2941 exit(1);
2942 fprintf(fp, "%d\n", sb.st_gid);
2943 fclose(fp);
2944 exit(0);
2945}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002946 ]],[
2947 if test -f conftest_grp; then
2948 vim_cv_tty_group=`cat conftest_grp`
2949 if test "x$vim_cv_tty_mode" = "x" ; then
2950 vim_cv_tty_mode=0620
2951 fi
2952 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2953 else
2954 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002955 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002956 fi
2957 ],[
2958 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002959 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002960 ],[
2961 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2962 ])
2963 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002964rm -f conftest_grp
2965
Bram Moolenaar446cb832008-06-24 21:56:24 +00002966if test "x$vim_cv_tty_group" != "xworld" ; then
2967 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2968 if test "x$vim_cv_tty_mode" = "x" ; then
2969 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)])
2970 else
2971 AC_DEFINE(PTYMODE, 0620)
2972 fi
2973fi
2974
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975dnl Checks for library functions. ===================================
2976
2977AC_TYPE_SIGNAL
2978
2979dnl find out what to use at the end of a signal function
2980if test $ac_cv_type_signal = void; then
2981 AC_DEFINE(SIGRETURN, [return])
2982else
2983 AC_DEFINE(SIGRETURN, [return 0])
2984fi
2985
2986dnl check if struct sigcontext is defined (used for SGI only)
2987AC_MSG_CHECKING(for struct sigcontext)
2988AC_TRY_COMPILE([
2989#include <signal.h>
2990test_sig()
2991{
2992 struct sigcontext *scont;
2993 scont = (struct sigcontext *)0;
2994 return 1;
2995} ], ,
2996 AC_MSG_RESULT(yes)
2997 AC_DEFINE(HAVE_SIGCONTEXT),
2998 AC_MSG_RESULT(no))
2999
3000dnl tricky stuff: try to find out if getcwd() is implemented with
3001dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003002AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3003 [
3004 AC_RUN_IFELSE([[
3005#include "confdefs.h"
3006#ifdef HAVE_UNISTD_H
3007#include <unistd.h>
3008#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003009char *dagger[] = { "IFS=pwd", 0 };
3010main()
3011{
3012 char buffer[500];
3013 extern char **environ;
3014 environ = dagger;
3015 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003016}
3017 ]],[
3018 vim_cv_getcwd_broken=no
3019 ],[
3020 vim_cv_getcwd_broken=yes
3021 ],[
3022 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3023 ])
3024 ])
3025
3026if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3027 AC_DEFINE(BAD_GETCWD)
3028fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003029
Bram Moolenaar25153e12010-02-24 14:47:08 +01003030dnl Check for functions in one big call, to reduce the size of configure.
3031dnl Can only be used for functions that do not require any include.
3032AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003033 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003034 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003035 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003036 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003037 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3038 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003039AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003040
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003041dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3042dnl appropriate, so that off_t is 64 bits when needed.
3043AC_SYS_LARGEFILE
3044
Bram Moolenaar071d4272004-06-13 20:20:40 +00003045dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3046AC_MSG_CHECKING(for st_blksize)
3047AC_TRY_COMPILE(
3048[#include <sys/types.h>
3049#include <sys/stat.h>],
3050[ struct stat st;
3051 int n;
3052
3053 stat("/", &st);
3054 n = (int)st.st_blksize;],
3055 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3056 AC_MSG_RESULT(no))
3057
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3059 [
3060 AC_RUN_IFELSE([[
3061#include "confdefs.h"
3062#if STDC_HEADERS
3063# include <stdlib.h>
3064# include <stddef.h>
3065#endif
3066#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003067#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003068main() {struct stat st; exit(stat("configure/", &st) != 0); }
3069 ]],[
3070 vim_cv_stat_ignores_slash=yes
3071 ],[
3072 vim_cv_stat_ignores_slash=no
3073 ],[
3074 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3075 ])
3076 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003077
Bram Moolenaar446cb832008-06-24 21:56:24 +00003078if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3079 AC_DEFINE(STAT_IGNORES_SLASH)
3080fi
3081
Bram Moolenaar071d4272004-06-13 20:20:40 +00003082dnl Link with iconv for charset translation, if not found without library.
3083dnl check for iconv() requires including iconv.h
3084dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3085dnl has been installed.
3086AC_MSG_CHECKING(for iconv_open())
3087save_LIBS="$LIBS"
3088LIBS="$LIBS -liconv"
3089AC_TRY_LINK([
3090#ifdef HAVE_ICONV_H
3091# include <iconv.h>
3092#endif
3093 ], [iconv_open("fr", "to");],
3094 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3095 LIBS="$save_LIBS"
3096 AC_TRY_LINK([
3097#ifdef HAVE_ICONV_H
3098# include <iconv.h>
3099#endif
3100 ], [iconv_open("fr", "to");],
3101 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3102 AC_MSG_RESULT(no)))
3103
3104
3105AC_MSG_CHECKING(for nl_langinfo(CODESET))
3106AC_TRY_LINK([
3107#ifdef HAVE_LANGINFO_H
3108# include <langinfo.h>
3109#endif
3110], [char *cs = nl_langinfo(CODESET);],
3111 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3112 AC_MSG_RESULT(no))
3113
Bram Moolenaar446cb832008-06-24 21:56:24 +00003114dnl Need various functions for floating point support. Only enable
3115dnl floating point when they are all present.
3116AC_CHECK_LIB(m, strtod)
3117AC_MSG_CHECKING([for strtod() and other floating point functions])
3118AC_TRY_LINK([
3119#ifdef HAVE_MATH_H
3120# include <math.h>
3121#endif
3122#if STDC_HEADERS
3123# include <stdlib.h>
3124# include <stddef.h>
3125#endif
3126], [char *s; double d;
3127 d = strtod("1.1", &s);
3128 d = fabs(1.11);
3129 d = ceil(1.11);
3130 d = floor(1.11);
3131 d = log10(1.11);
3132 d = pow(1.11, 2.22);
3133 d = sqrt(1.11);
3134 d = sin(1.11);
3135 d = cos(1.11);
3136 d = atan(1.11);
3137 ],
3138 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3139 AC_MSG_RESULT(no))
3140
Bram Moolenaar071d4272004-06-13 20:20:40 +00003141dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3142dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003143dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003144AC_MSG_CHECKING(--disable-acl argument)
3145AC_ARG_ENABLE(acl,
3146 [ --disable-acl Don't check for ACL support.],
3147 , [enable_acl="yes"])
3148if test "$enable_acl" = "yes"; then
3149AC_MSG_RESULT(no)
3150AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3151 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3152 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3153
3154AC_MSG_CHECKING(for POSIX ACL support)
3155AC_TRY_LINK([
3156#include <sys/types.h>
3157#ifdef HAVE_SYS_ACL_H
3158# include <sys/acl.h>
3159#endif
3160acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3161 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3162 acl_free(acl);],
3163 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3164 AC_MSG_RESULT(no))
3165
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003166AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003167AC_MSG_CHECKING(for Solaris ACL support)
3168AC_TRY_LINK([
3169#ifdef HAVE_SYS_ACL_H
3170# include <sys/acl.h>
3171#endif], [acl("foo", GETACLCNT, 0, NULL);
3172 ],
3173 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003174 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003175
3176AC_MSG_CHECKING(for AIX ACL support)
3177AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003178#if STDC_HEADERS
3179# include <stdlib.h>
3180# include <stddef.h>
3181#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003182#ifdef HAVE_SYS_ACL_H
3183# include <sys/acl.h>
3184#endif
3185#ifdef HAVE_SYS_ACCESS_H
3186# include <sys/access.h>
3187#endif
3188#define _ALL_SOURCE
3189
3190#include <sys/stat.h>
3191
3192int aclsize;
3193struct acl *aclent;], [aclsize = sizeof(struct acl);
3194 aclent = (void *)malloc(aclsize);
3195 statacl("foo", STX_NORMAL, aclent, aclsize);
3196 ],
3197 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3198 AC_MSG_RESULT(no))
3199else
3200 AC_MSG_RESULT(yes)
3201fi
3202
3203AC_MSG_CHECKING(--disable-gpm argument)
3204AC_ARG_ENABLE(gpm,
3205 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3206 [enable_gpm="yes"])
3207
3208if test "$enable_gpm" = "yes"; then
3209 AC_MSG_RESULT(no)
3210 dnl Checking if gpm support can be compiled
3211 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3212 [olibs="$LIBS" ; LIBS="-lgpm"]
3213 AC_TRY_LINK(
3214 [#include <gpm.h>
3215 #include <linux/keyboard.h>],
3216 [Gpm_GetLibVersion(NULL);],
3217 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3218 dnl FEAT_MOUSE_GPM if mouse support is included
3219 [vi_cv_have_gpm=yes],
3220 [vi_cv_have_gpm=no])
3221 [LIBS="$olibs"]
3222 )
3223 if test $vi_cv_have_gpm = yes; then
3224 LIBS="$LIBS -lgpm"
3225 AC_DEFINE(HAVE_GPM)
3226 fi
3227else
3228 AC_MSG_RESULT(yes)
3229fi
3230
Bram Moolenaar446cb832008-06-24 21:56:24 +00003231AC_MSG_CHECKING(--disable-sysmouse argument)
3232AC_ARG_ENABLE(sysmouse,
3233 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3234 [enable_sysmouse="yes"])
3235
3236if test "$enable_sysmouse" = "yes"; then
3237 AC_MSG_RESULT(no)
3238 dnl Checking if sysmouse support can be compiled
3239 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3240 dnl defines FEAT_SYSMOUSE if mouse support is included
3241 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3242 AC_TRY_LINK(
3243 [#include <sys/consio.h>
3244 #include <signal.h>
3245 #include <sys/fbio.h>],
3246 [struct mouse_info mouse;
3247 mouse.operation = MOUSE_MODE;
3248 mouse.operation = MOUSE_SHOW;
3249 mouse.u.mode.mode = 0;
3250 mouse.u.mode.signal = SIGUSR2;],
3251 [vi_cv_have_sysmouse=yes],
3252 [vi_cv_have_sysmouse=no])
3253 )
3254 if test $vi_cv_have_sysmouse = yes; then
3255 AC_DEFINE(HAVE_SYSMOUSE)
3256 fi
3257else
3258 AC_MSG_RESULT(yes)
3259fi
3260
Bram Moolenaarf05da212009-11-17 16:13:15 +00003261dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3262AC_MSG_CHECKING(for FD_CLOEXEC)
3263AC_TRY_COMPILE(
3264[#if HAVE_FCNTL_H
3265# include <fcntl.h>
3266#endif],
3267[ int flag = FD_CLOEXEC;],
3268 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3269 AC_MSG_RESULT(not usable))
3270
Bram Moolenaar071d4272004-06-13 20:20:40 +00003271dnl rename needs to be checked separately to work on Nextstep with cc
3272AC_MSG_CHECKING(for rename)
3273AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3274 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3275 AC_MSG_RESULT(no))
3276
3277dnl sysctl() may exist but not the arguments we use
3278AC_MSG_CHECKING(for sysctl)
3279AC_TRY_COMPILE(
3280[#include <sys/types.h>
3281#include <sys/sysctl.h>],
3282[ int mib[2], r;
3283 size_t len;
3284
3285 mib[0] = CTL_HW;
3286 mib[1] = HW_USERMEM;
3287 len = sizeof(r);
3288 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3289 ],
3290 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3291 AC_MSG_RESULT(not usable))
3292
3293dnl sysinfo() may exist but not be Linux compatible
3294AC_MSG_CHECKING(for sysinfo)
3295AC_TRY_COMPILE(
3296[#include <sys/types.h>
3297#include <sys/sysinfo.h>],
3298[ struct sysinfo sinfo;
3299 int t;
3300
3301 (void)sysinfo(&sinfo);
3302 t = sinfo.totalram;
3303 ],
3304 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3305 AC_MSG_RESULT(not usable))
3306
Bram Moolenaar914572a2007-05-01 11:37:47 +00003307dnl struct sysinfo may have the mem_unit field or not
3308AC_MSG_CHECKING(for sysinfo.mem_unit)
3309AC_TRY_COMPILE(
3310[#include <sys/types.h>
3311#include <sys/sysinfo.h>],
3312[ struct sysinfo sinfo;
3313 sinfo.mem_unit = 1;
3314 ],
3315 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3316 AC_MSG_RESULT(no))
3317
Bram Moolenaar071d4272004-06-13 20:20:40 +00003318dnl sysconf() may exist but not support what we want to use
3319AC_MSG_CHECKING(for sysconf)
3320AC_TRY_COMPILE(
3321[#include <unistd.h>],
3322[ (void)sysconf(_SC_PAGESIZE);
3323 (void)sysconf(_SC_PHYS_PAGES);
3324 ],
3325 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3326 AC_MSG_RESULT(not usable))
3327
Bram Moolenaar914703b2010-05-31 21:59:46 +02003328AC_CHECK_SIZEOF([int])
3329AC_CHECK_SIZEOF([long])
3330AC_CHECK_SIZEOF([time_t])
3331AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003332
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003333dnl Make sure that uint32_t is really 32 bits unsigned.
3334AC_MSG_CHECKING([uint32_t is 32 bits])
3335AC_TRY_RUN([
3336#ifdef HAVE_STDINT_H
3337# include <stdint.h>
3338#endif
3339#ifdef HAVE_INTTYPES_H
3340# include <inttypes.h>
3341#endif
3342main() {
3343 uint32_t nr1 = (uint32_t)-1;
3344 uint32_t nr2 = (uint32_t)0xffffffffUL;
3345 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3346 exit(0);
3347}],
3348AC_MSG_RESULT(ok),
3349AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003350AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003351
Bram Moolenaar446cb832008-06-24 21:56:24 +00003352dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3353dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3354
Bram Moolenaar071d4272004-06-13 20:20:40 +00003355[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003356#include "confdefs.h"
3357#ifdef HAVE_STRING_H
3358# include <string.h>
3359#endif
3360#if STDC_HEADERS
3361# include <stdlib.h>
3362# include <stddef.h>
3363#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003364main() {
3365 char buf[10];
3366 strcpy(buf, "abcdefghi");
3367 mch_memmove(buf, buf + 2, 3);
3368 if (strncmp(buf, "ababcf", 6))
3369 exit(1);
3370 strcpy(buf, "abcdefghi");
3371 mch_memmove(buf + 2, buf, 3);
3372 if (strncmp(buf, "cdedef", 6))
3373 exit(1);
3374 exit(0); /* libc version works properly. */
3375}']
3376
Bram Moolenaar446cb832008-06-24 21:56:24 +00003377AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3378 [
3379 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3380 [
3381 vim_cv_memmove_handles_overlap=yes
3382 ],[
3383 vim_cv_memmove_handles_overlap=no
3384 ],[
3385 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3386 ])
3387 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003388
Bram Moolenaar446cb832008-06-24 21:56:24 +00003389if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3390 AC_DEFINE(USEMEMMOVE)
3391else
3392 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3393 [
3394 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3395 [
3396 vim_cv_bcopy_handles_overlap=yes
3397 ],[
3398 vim_cv_bcopy_handles_overlap=no
3399 ],[
3400 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3401 ])
3402 ])
3403
3404 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3405 AC_DEFINE(USEBCOPY)
3406 else
3407 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3408 [
3409 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3410 [
3411 vim_cv_memcpy_handles_overlap=yes
3412 ],[
3413 vim_cv_memcpy_handles_overlap=no
3414 ],[
3415 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3416 ])
3417 ])
3418
3419 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3420 AC_DEFINE(USEMEMCPY)
3421 fi
3422 fi
3423fi
3424
Bram Moolenaar071d4272004-06-13 20:20:40 +00003425
3426dnl Check for multibyte locale functions
3427dnl Find out if _Xsetlocale() is supported by libX11.
3428dnl Check if X_LOCALE should be defined.
3429
3430if test "$enable_multibyte" = "yes"; then
3431 cflags_save=$CFLAGS
3432 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003433 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003434 CFLAGS="$CFLAGS -I$x_includes"
3435 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3436 AC_MSG_CHECKING(whether X_LOCALE needed)
3437 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3438 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3439 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3440 AC_MSG_RESULT(no))
3441 fi
3442 CFLAGS=$cflags_save
3443 LDFLAGS=$ldflags_save
3444fi
3445
3446dnl Link with xpg4, it is said to make Korean locale working
3447AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3448
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003449dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003450dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003451dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003452dnl -t for typedefs (many ctags have this)
3453dnl -s for static functions (Elvis ctags only?)
3454dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3455dnl -i+m to test for older Exuberant ctags
3456AC_MSG_CHECKING(how to create tags)
3457test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003458if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003459 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003460elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3461 TAGPRG="exctags -I INIT+ --fields=+S"
3462elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3463 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003464else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003465 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003466 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3467 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3468 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3469 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3470 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3471 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3472 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3473fi
3474test -f tags.save && mv tags.save tags
3475AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3476
3477dnl Check how we can run man with a section number
3478AC_MSG_CHECKING(how to run man with a section nr)
3479MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003480(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 +00003481AC_MSG_RESULT($MANDEF)
3482if test "$MANDEF" = "man -s"; then
3483 AC_DEFINE(USEMAN_S)
3484fi
3485
3486dnl Check if gettext() is working and if it needs -lintl
3487AC_MSG_CHECKING(--disable-nls argument)
3488AC_ARG_ENABLE(nls,
3489 [ --disable-nls Don't support NLS (gettext()).], ,
3490 [enable_nls="yes"])
3491
3492if test "$enable_nls" = "yes"; then
3493 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003494
3495 INSTALL_LANGS=install-languages
3496 AC_SUBST(INSTALL_LANGS)
3497 INSTALL_TOOL_LANGS=install-tool-languages
3498 AC_SUBST(INSTALL_TOOL_LANGS)
3499
Bram Moolenaar071d4272004-06-13 20:20:40 +00003500 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3501 AC_MSG_CHECKING([for NLS])
3502 if test -f po/Makefile; then
3503 have_gettext="no"
3504 if test -n "$MSGFMT"; then
3505 AC_TRY_LINK(
3506 [#include <libintl.h>],
3507 [gettext("Test");],
3508 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3509 olibs=$LIBS
3510 LIBS="$LIBS -lintl"
3511 AC_TRY_LINK(
3512 [#include <libintl.h>],
3513 [gettext("Test");],
3514 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3515 AC_MSG_RESULT([gettext() doesn't work]);
3516 LIBS=$olibs))
3517 else
3518 AC_MSG_RESULT([msgfmt not found - disabled]);
3519 fi
3520 if test $have_gettext = "yes"; then
3521 AC_DEFINE(HAVE_GETTEXT)
3522 MAKEMO=yes
3523 AC_SUBST(MAKEMO)
3524 dnl this was added in GNU gettext 0.10.36
3525 AC_CHECK_FUNCS(bind_textdomain_codeset)
3526 dnl _nl_msg_cat_cntr is required for GNU gettext
3527 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3528 AC_TRY_LINK(
3529 [#include <libintl.h>
3530 extern int _nl_msg_cat_cntr;],
3531 [++_nl_msg_cat_cntr;],
3532 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3533 AC_MSG_RESULT([no]))
3534 fi
3535 else
3536 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3537 fi
3538else
3539 AC_MSG_RESULT(yes)
3540fi
3541
3542dnl Check for dynamic linking loader
3543AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3544if test x${DLL} = xdlfcn.h; then
3545 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3546 AC_MSG_CHECKING([for dlopen()])
3547 AC_TRY_LINK(,[
3548 extern void* dlopen();
3549 dlopen();
3550 ],
3551 AC_MSG_RESULT(yes);
3552 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3553 AC_MSG_RESULT(no);
3554 AC_MSG_CHECKING([for dlopen() in -ldl])
3555 olibs=$LIBS
3556 LIBS="$LIBS -ldl"
3557 AC_TRY_LINK(,[
3558 extern void* dlopen();
3559 dlopen();
3560 ],
3561 AC_MSG_RESULT(yes);
3562 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3563 AC_MSG_RESULT(no);
3564 LIBS=$olibs))
3565 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3566 dnl ick :-)
3567 AC_MSG_CHECKING([for dlsym()])
3568 AC_TRY_LINK(,[
3569 extern void* dlsym();
3570 dlsym();
3571 ],
3572 AC_MSG_RESULT(yes);
3573 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3574 AC_MSG_RESULT(no);
3575 AC_MSG_CHECKING([for dlsym() in -ldl])
3576 olibs=$LIBS
3577 LIBS="$LIBS -ldl"
3578 AC_TRY_LINK(,[
3579 extern void* dlsym();
3580 dlsym();
3581 ],
3582 AC_MSG_RESULT(yes);
3583 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3584 AC_MSG_RESULT(no);
3585 LIBS=$olibs))
3586elif test x${DLL} = xdl.h; then
3587 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3588 AC_MSG_CHECKING([for shl_load()])
3589 AC_TRY_LINK(,[
3590 extern void* shl_load();
3591 shl_load();
3592 ],
3593 AC_MSG_RESULT(yes);
3594 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3595 AC_MSG_RESULT(no);
3596 AC_MSG_CHECKING([for shl_load() in -ldld])
3597 olibs=$LIBS
3598 LIBS="$LIBS -ldld"
3599 AC_TRY_LINK(,[
3600 extern void* shl_load();
3601 shl_load();
3602 ],
3603 AC_MSG_RESULT(yes);
3604 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3605 AC_MSG_RESULT(no);
3606 LIBS=$olibs))
3607fi
3608AC_CHECK_HEADERS(setjmp.h)
3609
3610if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3611 dnl -ldl must come after DynaLoader.a
3612 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3613 LIBS=`echo $LIBS | sed s/-ldl//`
3614 PERL_LIBS="$PERL_LIBS -ldl"
3615 fi
3616fi
3617
Bram Moolenaar164fca32010-07-14 13:58:07 +02003618if test "x$MACOSX" = "xyes"; then
3619 AC_MSG_CHECKING(whether we need -framework Cocoa)
3620 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3621 dnl disabled during tiny build)
3622 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3623 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003624 AC_MSG_RESULT(yes)
3625 else
3626 AC_MSG_RESULT(no)
3627 fi
3628fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003629if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003630 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003631fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003632
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003633dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3634dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3635dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003636dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3637dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003638DEPEND_CFLAGS_FILTER=
3639if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003640 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003641 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003642 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003643 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003644 AC_MSG_RESULT(yes)
3645 else
3646 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003647 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003648 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3649 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003650 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003651 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003652 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3653 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003654 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 +00003655 AC_MSG_RESULT(yes)
3656 else
3657 AC_MSG_RESULT(no)
3658 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003659fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003660AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003661
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003662dnl link.sh tries to avoid overlinking in a hackish way.
3663dnl At least GNU ld supports --as-needed which provides the same functionality
3664dnl at linker level. Let's use it.
3665AC_MSG_CHECKING(linker --as-needed support)
3666LINK_AS_NEEDED=
3667# Check if linker supports --as-needed and --no-as-needed options
3668if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3669 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3670 LINK_AS_NEEDED=yes
3671fi
3672if test "$LINK_AS_NEEDED" = yes; then
3673 AC_MSG_RESULT(yes)
3674else
3675 AC_MSG_RESULT(no)
3676fi
3677AC_SUBST(LINK_AS_NEEDED)
3678
Bram Moolenaar77c19352012-06-13 19:19:41 +02003679# IBM z/OS reset CFLAGS for config.mk
3680if test "$zOSUnix" = "yes"; then
3681 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3682fi
3683
Bram Moolenaar071d4272004-06-13 20:20:40 +00003684dnl write output files
3685AC_OUTPUT(auto/config.mk:config.mk.in)
3686
3687dnl vim: set sw=2 tw=78 fo+=l: