blob: 5c14fc0c5c7bcaf27c4aee7dfc33b732421cb354 [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
458 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
459 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200460 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200461 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200462 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200463 dnl -- try to find Lua executable
464 AC_PATH_PROG(vi_cv_path_lua, lua)
465 if test "X$vi_cv_path_lua" != "X"; then
466 dnl -- find Lua version
467 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200468 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200469 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
470 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200471 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200472 LUA_INC=/lua$vi_cv_version_lua
473 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200474 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200475 vi_cv_path_lua_pfx=
476 fi
477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
482 if test "X$vi_cv_version_lua" != "X"; then
483 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 Moolenaar8220a682010-07-25 13:12:49 +0200494 dnl Determine the SONAME for the current version, but fallback to
495 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
496 for i in 0 1 2 3 4 5 6 7 8 9; do
497 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
498 LUA_SONAME=".$i"
499 break
500 fi
501 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200502 AC_DEFINE(DYNAMIC_LUA)
503 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200504 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200505 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200506 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100507 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
508 AC_MSG_ERROR([could not configure lua])
509 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200510 AC_SUBST(LUA_SRC)
511 AC_SUBST(LUA_OBJ)
512 AC_SUBST(LUA_PRO)
513 AC_SUBST(LUA_LIBS)
514 AC_SUBST(LUA_CFLAGS)
515fi
516
517
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000518dnl Check for MzScheme feature.
519AC_MSG_CHECKING(--enable-mzschemeinterp argument)
520AC_ARG_ENABLE(mzschemeinterp,
521 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
522 [enable_mzschemeinterp="no"])
523AC_MSG_RESULT($enable_mzschemeinterp)
524
525if test "$enable_mzschemeinterp" = "yes"; then
526 dnl -- find the mzscheme executable
527 AC_SUBST(vi_cv_path_mzscheme)
528
529 AC_MSG_CHECKING(--with-plthome argument)
530 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000531 [ --with-plthome=PLTHOME Use PLTHOME.],
532 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000533 with_plthome="";AC_MSG_RESULT("no"))
534
535 if test "X$with_plthome" != "X"; then
536 vi_cv_path_mzscheme_pfx="$with_plthome"
537 else
538 AC_MSG_CHECKING(PLTHOME environment var)
539 if test "X$PLTHOME" != "X"; then
540 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000541 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000542 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000544 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000545 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000546
547 dnl resolve symbolic link, the executable is often elsewhere and there
548 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000549 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000550 lsout=`ls -l $vi_cv_path_mzscheme`
551 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
552 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
553 fi
554 fi
555
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000556 if test "X$vi_cv_path_mzscheme" != "X"; then
557 dnl -- find where MzScheme thinks it was installed
558 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 dnl different versions of MzScheme differ in command line processing
560 dnl use universal approach
561 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000562 (build-path (call-with-values \
563 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
565 dnl Remove a trailing slash
566 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
567 sed -e 's+/$++'` ])
568 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000569 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000570 fi
571 fi
572
Bram Moolenaard7afed32007-05-06 13:26:41 +0000573 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000574 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
575 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
576 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000577 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
578 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000579 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 AC_MSG_RESULT(no)
581 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000582 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000583 AC_MSG_RESULT(yes)
584 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000585 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000586 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100587 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
588 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000589 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100590 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000591 else
592 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100593 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
594 if test -f /usr/include/plt/scheme.h; then
595 AC_MSG_RESULT(yes)
596 SCHEME_INC=/usr/include/plt
597 else
598 AC_MSG_RESULT(no)
599 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
600 if test -f /usr/include/racket/scheme.h; then
601 AC_MSG_RESULT(yes)
602 SCHEME_INC=/usr/include/racket
603 else
604 AC_MSG_RESULT(no)
605 vi_cv_path_mzscheme_pfx=
606 fi
607 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000608 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000609 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000610 fi
611 fi
612
613 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000614 if test "x$MACOSX" = "xyes"; then
615 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000616 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
617 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
618 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100619 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
620 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
621 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
622 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
623 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000625 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 +0000626 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000627 dnl Using shared objects
628 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
629 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
630 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100631 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
632 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
633 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
634 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
635 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000636 else
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
638 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000639 if test "$GCC" = yes; then
640 dnl Make Vim remember the path to the library. For when it's not in
641 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000642 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000643 elif test "`(uname) 2>/dev/null`" = SunOS &&
644 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000645 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000646 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000647 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000648 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
649 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100650 else
651 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
652 SCHEME_COLLECTS=lib/racket/
653 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000654 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000655 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000656 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100657 else
658 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
659 MZSCHEME_EXTRA="mzscheme_base.c"
660 fi
661 fi
662 if test "X$MZSCHEME_EXTRA" != "X" ; then
663 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000664 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
665 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
666 fi
667 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000668 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000669 MZSCHEME_SRC="if_mzsch.c"
670 MZSCHEME_OBJ="objects/if_mzsch.o"
671 MZSCHEME_PRO="if_mzsch.pro"
672 AC_DEFINE(FEAT_MZSCHEME)
673 fi
674 AC_SUBST(MZSCHEME_SRC)
675 AC_SUBST(MZSCHEME_OBJ)
676 AC_SUBST(MZSCHEME_PRO)
677 AC_SUBST(MZSCHEME_LIBS)
678 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000679 AC_SUBST(MZSCHEME_EXTRA)
680 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000681fi
682
683
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684AC_MSG_CHECKING(--enable-perlinterp argument)
685AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200686 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000687 [enable_perlinterp="no"])
688AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200689if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000690 AC_SUBST(vi_cv_path_perl)
691 AC_PATH_PROG(vi_cv_path_perl, perl)
692 if test "X$vi_cv_path_perl" != "X"; then
693 AC_MSG_CHECKING(Perl version)
694 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
695 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200696 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000697 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
698 badthreads=no
699 else
700 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
701 eval `$vi_cv_path_perl -V:use5005threads`
702 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
703 badthreads=no
704 else
705 badthreads=yes
706 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
707 fi
708 else
709 badthreads=yes
710 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
711 fi
712 fi
713 if test $badthreads = no; then
714 AC_MSG_RESULT(OK)
715 eval `$vi_cv_path_perl -V:shrpenv`
716 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
717 shrpenv=""
718 fi
719 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
720 AC_SUBST(vi_cv_perllib)
721 dnl Remove "-fno-something", it breaks using cproto.
722 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
723 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
724 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
725 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
726 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
727 -e 's/-bE:perl.exp//' -e 's/-lc //'`
728 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
729 dnl a test in configure may fail because of that.
730 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
731 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
732
733 dnl check that compiling a simple program still works with the flags
734 dnl added for Perl.
735 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
736 cflags_save=$CFLAGS
737 libs_save=$LIBS
738 ldflags_save=$LDFLAGS
739 CFLAGS="$CFLAGS $perlcppflags"
740 LIBS="$LIBS $perllibs"
741 LDFLAGS="$perlldflags $LDFLAGS"
742 AC_TRY_LINK(,[ ],
743 AC_MSG_RESULT(yes); perl_ok=yes,
744 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
745 CFLAGS=$cflags_save
746 LIBS=$libs_save
747 LDFLAGS=$ldflags_save
748 if test $perl_ok = yes; then
749 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000750 dnl remove -pipe and -Wxxx, it confuses cproto
751 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000752 fi
753 if test "X$perlldflags" != "X"; then
754 LDFLAGS="$perlldflags $LDFLAGS"
755 fi
756 PERL_LIBS=$perllibs
757 PERL_SRC="auto/if_perl.c if_perlsfio.c"
758 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
759 PERL_PRO="if_perl.pro if_perlsfio.pro"
760 AC_DEFINE(FEAT_PERL)
761 fi
762 fi
763 else
764 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
765 fi
766 fi
767
768 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000769 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000770 dir=/System/Library/Perl
771 darwindir=$dir/darwin
772 if test -d $darwindir; then
773 PERL=/usr/bin/perl
774 else
775 dnl Mac OS X 10.3
776 dir=/System/Library/Perl/5.8.1
777 darwindir=$dir/darwin-thread-multi-2level
778 if test -d $darwindir; then
779 PERL=/usr/bin/perl
780 fi
781 fi
782 if test -n "$PERL"; then
783 PERL_DIR="$dir"
784 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
785 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
786 PERL_LIBS="-L$darwindir/CORE -lperl"
787 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200788 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
789 dnl be included if requested by passing --with-mac-arch to
790 dnl configure, so strip these flags first (if present)
791 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
792 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 +0000793 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200794 if test "$enable_perlinterp" = "dynamic"; then
795 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
796 AC_DEFINE(DYNAMIC_PERL)
797 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
798 fi
799 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100800
801 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
802 AC_MSG_ERROR([could not configure perl])
803 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000804fi
805AC_SUBST(shrpenv)
806AC_SUBST(PERL_SRC)
807AC_SUBST(PERL_OBJ)
808AC_SUBST(PERL_PRO)
809AC_SUBST(PERL_CFLAGS)
810AC_SUBST(PERL_LIBS)
811
812AC_MSG_CHECKING(--enable-pythoninterp argument)
813AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200814 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 [enable_pythoninterp="no"])
816AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200817if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000818 dnl -- find the python executable
819 AC_PATH_PROG(vi_cv_path_python, python)
820 if test "X$vi_cv_path_python" != "X"; then
821
822 dnl -- get its version number
823 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
824 [[vi_cv_var_python_version=`
825 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
826 ]])
827
828 dnl -- it must be at least version 1.4
829 AC_MSG_CHECKING(Python is 1.4 or better)
830 if ${vi_cv_path_python} -c \
831 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
832 then
833 AC_MSG_RESULT(yep)
834
835 dnl -- find where python thinks it was installed
836 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
837 [ vi_cv_path_python_pfx=`
838 ${vi_cv_path_python} -c \
839 "import sys; print sys.prefix"` ])
840
841 dnl -- and where it thinks it runs
842 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
843 [ vi_cv_path_python_epfx=`
844 ${vi_cv_path_python} -c \
845 "import sys; print sys.exec_prefix"` ])
846
847 dnl -- python's internal library path
848
849 AC_CACHE_VAL(vi_cv_path_pythonpath,
850 [ vi_cv_path_pythonpath=`
851 unset PYTHONPATH;
852 ${vi_cv_path_python} -c \
853 "import sys, string; print string.join(sys.path,':')"` ])
854
855 dnl -- where the Python implementation library archives are
856
857 AC_ARG_WITH(python-config-dir,
858 [ --with-python-config-dir=PATH Python's config directory],
859 [ vi_cv_path_python_conf="${withval}" ] )
860
861 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
862 [
863 vi_cv_path_python_conf=
864 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000865 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000866 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
867 if test -d "$d" && test -f "$d/config.c"; then
868 vi_cv_path_python_conf="$d"
869 fi
870 done
871 done
872 ])
873
874 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
875
876 if test "X$PYTHON_CONFDIR" = "X"; then
877 AC_MSG_RESULT([can't find it!])
878 else
879
880 dnl -- we need to examine Python's config/Makefile too
881 dnl see what the interpreter is built from
882 AC_CACHE_VAL(vi_cv_path_python_plibs,
883 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000884 pwd=`pwd`
885 tmp_mkf="$pwd/config-PyMake$$"
886 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000887__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200888 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000889 @echo "python_LIBS='$(LIBS)'"
890 @echo "python_SYSLIBS='$(SYSLIBS)'"
891 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200892 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200893 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000894eof
895 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000896 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
897 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000898 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
899 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
900 vi_cv_path_python_plibs="-framework Python"
901 else
902 if test "${vi_cv_var_python_version}" = "1.4"; then
903 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
904 else
905 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
906 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200907 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 +0000908 dnl remove -ltermcap, it can conflict with an earlier -lncurses
909 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
910 fi
911 ])
912
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200913 if test "X$python_DLLLIBRARY" != "X"; then
914 python_INSTSONAME="$python_DLLLIBRARY"
915 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916 PYTHON_LIBS="${vi_cv_path_python_plibs}"
917 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100918 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 +0000919 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100920 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 +0000921 fi
922 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200923 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000924 if test "${vi_cv_var_python_version}" = "1.4"; then
925 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
926 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100927 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 +0000928
929 dnl On FreeBSD linking with "-pthread" is required to use threads.
930 dnl _THREAD_SAFE must be used for compiling then.
931 dnl The "-pthread" is added to $LIBS, so that the following check for
932 dnl sigaltstack() will look in libc_r (it's there in libc!).
933 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
934 dnl will then define target-specific defines, e.g., -D_REENTRANT.
935 dnl Don't do this for Mac OSX, -pthread will generate a warning.
936 AC_MSG_CHECKING([if -pthread should be used])
937 threadsafe_flag=
938 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000939 dnl if test "x$MACOSX" != "xyes"; then
940 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000941 test "$GCC" = yes && threadsafe_flag="-pthread"
942 if test "`(uname) 2>/dev/null`" = FreeBSD; then
943 threadsafe_flag="-D_THREAD_SAFE"
944 thread_lib="-pthread"
945 fi
946 fi
947 libs_save_old=$LIBS
948 if test -n "$threadsafe_flag"; then
949 cflags_save=$CFLAGS
950 CFLAGS="$CFLAGS $threadsafe_flag"
951 LIBS="$LIBS $thread_lib"
952 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200953 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000954 AC_MSG_RESULT(no); LIBS=$libs_save_old
955 )
956 CFLAGS=$cflags_save
957 else
958 AC_MSG_RESULT(no)
959 fi
960
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200961 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000962 dnl added for Python.
963 AC_MSG_CHECKING([if compile and link flags for Python are sane])
964 cflags_save=$CFLAGS
965 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200966 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 LIBS="$LIBS $PYTHON_LIBS"
968 AC_TRY_LINK(,[ ],
969 AC_MSG_RESULT(yes); python_ok=yes,
970 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
971 CFLAGS=$cflags_save
972 LIBS=$libs_save
973 if test $python_ok = yes; then
974 AC_DEFINE(FEAT_PYTHON)
975 else
976 LIBS=$libs_save_old
977 PYTHON_SRC=
978 PYTHON_OBJ=
979 PYTHON_LIBS=
980 PYTHON_CFLAGS=
981 fi
982
983 fi
984 else
985 AC_MSG_RESULT(too old)
986 fi
987 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100988
989 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
990 AC_MSG_ERROR([could not configure python])
991 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200993
Bram Moolenaar071d4272004-06-13 20:20:40 +0000994AC_SUBST(PYTHON_CONFDIR)
995AC_SUBST(PYTHON_LIBS)
996AC_SUBST(PYTHON_GETPATH_CFLAGS)
997AC_SUBST(PYTHON_CFLAGS)
998AC_SUBST(PYTHON_SRC)
999AC_SUBST(PYTHON_OBJ)
1000
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001001
1002AC_MSG_CHECKING(--enable-python3interp argument)
1003AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001004 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001005 [enable_python3interp="no"])
1006AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001007if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001008 dnl -- find the python3 executable
1009 AC_PATH_PROG(vi_cv_path_python3, python3)
1010 if test "X$vi_cv_path_python3" != "X"; then
1011
1012 dnl -- get its version number
1013 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1014 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001015 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001016 ]])
1017
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001018 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1019 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1020 [
1021 vi_cv_var_python3_abiflags=
1022 if ${vi_cv_path_python3} -c \
1023 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1024 then
1025 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1026 "import sys; print(sys.abiflags)"`
1027 fi ])
1028
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001029 dnl -- find where python3 thinks it was installed
1030 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1031 [ vi_cv_path_python3_pfx=`
1032 ${vi_cv_path_python3} -c \
1033 "import sys; print(sys.prefix)"` ])
1034
1035 dnl -- and where it thinks it runs
1036 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1037 [ vi_cv_path_python3_epfx=`
1038 ${vi_cv_path_python3} -c \
1039 "import sys; print(sys.exec_prefix)"` ])
1040
1041 dnl -- python3's internal library path
1042
1043 AC_CACHE_VAL(vi_cv_path_python3path,
1044 [ vi_cv_path_python3path=`
1045 unset PYTHONPATH;
1046 ${vi_cv_path_python3} -c \
1047 "import sys, string; print(':'.join(sys.path))"` ])
1048
1049 dnl -- where the Python implementation library archives are
1050
1051 AC_ARG_WITH(python3-config-dir,
1052 [ --with-python3-config-dir=PATH Python's config directory],
1053 [ vi_cv_path_python3_conf="${withval}" ] )
1054
1055 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1056 [
1057 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001058 config_dir="config"
1059 if test "${vi_cv_var_python3_abiflags}" != ""; then
1060 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1061 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001062 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001063 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001064 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001065 if test -d "$d" && test -f "$d/config.c"; then
1066 vi_cv_path_python3_conf="$d"
1067 fi
1068 done
1069 done
1070 ])
1071
1072 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1073
1074 if test "X$PYTHON3_CONFDIR" = "X"; then
1075 AC_MSG_RESULT([can't find it!])
1076 else
1077
1078 dnl -- we need to examine Python's config/Makefile too
1079 dnl see what the interpreter is built from
1080 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1081 [
1082 pwd=`pwd`
1083 tmp_mkf="$pwd/config-PyMake$$"
1084 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1085__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001086 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001087 @echo "python3_LIBS='$(LIBS)'"
1088 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001089 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001090 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001091eof
1092 dnl -- delete the lines from make about Entering/Leaving directory
1093 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1094 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001095 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 +02001096 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001097 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1098 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1099 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1100 ])
1101
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001102 if test "X$python3_DLLLIBRARY" != "X"; then
1103 python3_INSTSONAME="$python3_DLLLIBRARY"
1104 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001105 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1106 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001107 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 +02001108 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001109 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 +02001110 fi
1111 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001112 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001113
1114 dnl On FreeBSD linking with "-pthread" is required to use threads.
1115 dnl _THREAD_SAFE must be used for compiling then.
1116 dnl The "-pthread" is added to $LIBS, so that the following check for
1117 dnl sigaltstack() will look in libc_r (it's there in libc!).
1118 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1119 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1120 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1121 AC_MSG_CHECKING([if -pthread should be used])
1122 threadsafe_flag=
1123 thread_lib=
1124 dnl if test "x$MACOSX" != "xyes"; then
1125 if test "`(uname) 2>/dev/null`" != Darwin; then
1126 test "$GCC" = yes && threadsafe_flag="-pthread"
1127 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1128 threadsafe_flag="-D_THREAD_SAFE"
1129 thread_lib="-pthread"
1130 fi
1131 fi
1132 libs_save_old=$LIBS
1133 if test -n "$threadsafe_flag"; then
1134 cflags_save=$CFLAGS
1135 CFLAGS="$CFLAGS $threadsafe_flag"
1136 LIBS="$LIBS $thread_lib"
1137 AC_TRY_LINK(,[ ],
1138 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1139 AC_MSG_RESULT(no); LIBS=$libs_save_old
1140 )
1141 CFLAGS=$cflags_save
1142 else
1143 AC_MSG_RESULT(no)
1144 fi
1145
1146 dnl check that compiling a simple program still works with the flags
1147 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001148 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001149 cflags_save=$CFLAGS
1150 libs_save=$LIBS
1151 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1152 LIBS="$LIBS $PYTHON3_LIBS"
1153 AC_TRY_LINK(,[ ],
1154 AC_MSG_RESULT(yes); python3_ok=yes,
1155 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1156 CFLAGS=$cflags_save
1157 LIBS=$libs_save
1158 if test "$python3_ok" = yes; then
1159 AC_DEFINE(FEAT_PYTHON3)
1160 else
1161 LIBS=$libs_save_old
1162 PYTHON3_SRC=
1163 PYTHON3_OBJ=
1164 PYTHON3_LIBS=
1165 PYTHON3_CFLAGS=
1166 fi
1167 fi
1168 fi
1169fi
1170
1171AC_SUBST(PYTHON3_CONFDIR)
1172AC_SUBST(PYTHON3_LIBS)
1173AC_SUBST(PYTHON3_CFLAGS)
1174AC_SUBST(PYTHON3_SRC)
1175AC_SUBST(PYTHON3_OBJ)
1176
1177dnl if python2.x and python3.x are enabled one can only link in code
1178dnl with dlopen(), dlsym(), dlclose()
1179if test "$python_ok" = yes && test "$python3_ok" = yes; then
1180 AC_DEFINE(DYNAMIC_PYTHON)
1181 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001182 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001183 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001184 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001185 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001186 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1187 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001188 AC_RUN_IFELSE([
1189 #include <dlfcn.h>
1190 /* If this program fails, then RTLD_GLOBAL is needed.
1191 * RTLD_GLOBAL will be used and then it is not possible to
1192 * have both python versions enabled in the same vim instance.
1193 * Only the first pyhton version used will be switched on.
1194 */
1195
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001196 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001197 {
1198 int needed = 0;
1199 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1200 if (pylib != 0)
1201 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001202 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001203 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1204 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1205 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001206 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001207 (*init)();
1208 needed = (*simple)("import termios") == -1;
1209 (*final)();
1210 dlclose(pylib);
1211 }
1212 return !needed;
1213 }
1214
1215 int main(int argc, char** argv)
1216 {
1217 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001218 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001219 not_needed = 1;
1220 return !not_needed;
1221 }],
1222 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001223
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001224 CFLAGS=$cflags_save
1225 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001226
1227 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1228 cflags_save=$CFLAGS
1229 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1230 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001231 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1232 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001233 AC_RUN_IFELSE([
1234 #include <dlfcn.h>
1235 #include <wchar.h>
1236 /* If this program fails, then RTLD_GLOBAL is needed.
1237 * RTLD_GLOBAL will be used and then it is not possible to
1238 * have both python versions enabled in the same vim instance.
1239 * Only the first pyhton version used will be switched on.
1240 */
1241
1242 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1243 {
1244 int needed = 0;
1245 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1246 if (pylib != 0)
1247 {
1248 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1249 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1250 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1251 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1252 (*pfx)(prefix);
1253 (*init)();
1254 needed = (*simple)("import termios") == -1;
1255 (*final)();
1256 dlclose(pylib);
1257 }
1258 return !needed;
1259 }
1260
1261 int main(int argc, char** argv)
1262 {
1263 int not_needed = 0;
1264 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1265 not_needed = 1;
1266 return !not_needed;
1267 }],
1268 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1269
1270 CFLAGS=$cflags_save
1271 LDFLAGS=$ldflags_save
1272
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001273 PYTHON_SRC="if_python.c"
1274 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001275 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001276 PYTHON_LIBS=
1277 PYTHON3_SRC="if_python3.c"
1278 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001279 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001280 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001281elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1282 AC_DEFINE(DYNAMIC_PYTHON)
1283 PYTHON_SRC="if_python.c"
1284 PYTHON_OBJ="objects/if_python.o"
1285 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1286 PYTHON_LIBS=
1287elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1288 AC_DEFINE(DYNAMIC_PYTHON3)
1289 PYTHON3_SRC="if_python3.c"
1290 PYTHON3_OBJ="objects/if_python3.o"
1291 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1292 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001293fi
1294
Bram Moolenaar071d4272004-06-13 20:20:40 +00001295AC_MSG_CHECKING(--enable-tclinterp argument)
1296AC_ARG_ENABLE(tclinterp,
1297 [ --enable-tclinterp Include Tcl interpreter.], ,
1298 [enable_tclinterp="no"])
1299AC_MSG_RESULT($enable_tclinterp)
1300
1301if test "$enable_tclinterp" = "yes"; then
1302
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001303 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001304 AC_MSG_CHECKING(--with-tclsh argument)
1305 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1306 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001307 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001308 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1309 AC_SUBST(vi_cv_path_tcl)
1310
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001311 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1312 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1313 tclsh_name="tclsh8.4"
1314 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1315 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001316 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001317 tclsh_name="tclsh8.2"
1318 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1319 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001320 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1321 tclsh_name="tclsh8.0"
1322 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1323 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001324 dnl still didn't find it, try without version number
1325 if test "X$vi_cv_path_tcl" = "X"; then
1326 tclsh_name="tclsh"
1327 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1328 fi
1329 if test "X$vi_cv_path_tcl" != "X"; then
1330 AC_MSG_CHECKING(Tcl version)
1331 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1332 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1333 AC_MSG_RESULT($tclver - OK);
1334 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 -`
1335
1336 AC_MSG_CHECKING(for location of Tcl include)
1337 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001338 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 +00001339 else
1340 dnl For Mac OS X 10.3, use the OS-provided framework location
1341 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1342 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001343 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001344 for try in $tclinc; do
1345 if test -f "$try/tcl.h"; then
1346 AC_MSG_RESULT($try/tcl.h)
1347 TCL_INC=$try
1348 break
1349 fi
1350 done
1351 if test -z "$TCL_INC"; then
1352 AC_MSG_RESULT(<not found>)
1353 SKIP_TCL=YES
1354 fi
1355 if test -z "$SKIP_TCL"; then
1356 AC_MSG_CHECKING(for location of tclConfig.sh script)
1357 if test "x$MACOSX" != "xyes"; then
1358 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001359 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001360 else
1361 dnl For Mac OS X 10.3, use the OS-provided framework location
1362 tclcnf="/System/Library/Frameworks/Tcl.framework"
1363 fi
1364 for try in $tclcnf; do
1365 if test -f $try/tclConfig.sh; then
1366 AC_MSG_RESULT($try/tclConfig.sh)
1367 . $try/tclConfig.sh
1368 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1369 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1370 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001371 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001372 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 +00001373 break
1374 fi
1375 done
1376 if test -z "$TCL_LIBS"; then
1377 AC_MSG_RESULT(<not found>)
1378 AC_MSG_CHECKING(for Tcl library by myself)
1379 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001380 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001381 for ext in .so .a ; do
1382 for ver in "" $tclver ; do
1383 for try in $tcllib ; do
1384 trylib=tcl$ver$ext
1385 if test -f $try/lib$trylib ; then
1386 AC_MSG_RESULT($try/lib$trylib)
1387 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1388 if test "`(uname) 2>/dev/null`" = SunOS &&
1389 uname -r | grep '^5' >/dev/null; then
1390 TCL_LIBS="$TCL_LIBS -R $try"
1391 fi
1392 break 3
1393 fi
1394 done
1395 done
1396 done
1397 if test -z "$TCL_LIBS"; then
1398 AC_MSG_RESULT(<not found>)
1399 SKIP_TCL=YES
1400 fi
1401 fi
1402 if test -z "$SKIP_TCL"; then
1403 AC_DEFINE(FEAT_TCL)
1404 TCL_SRC=if_tcl.c
1405 TCL_OBJ=objects/if_tcl.o
1406 TCL_PRO=if_tcl.pro
1407 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1408 fi
1409 fi
1410 else
1411 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1412 fi
1413 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001414 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1415 AC_MSG_ERROR([could not configure Tcl])
1416 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001417fi
1418AC_SUBST(TCL_SRC)
1419AC_SUBST(TCL_OBJ)
1420AC_SUBST(TCL_PRO)
1421AC_SUBST(TCL_CFLAGS)
1422AC_SUBST(TCL_LIBS)
1423
1424AC_MSG_CHECKING(--enable-rubyinterp argument)
1425AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001426 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001427 [enable_rubyinterp="no"])
1428AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001429if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001430 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001431 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001432 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1433 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1434 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001435 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001436 if test "X$vi_cv_path_ruby" != "X"; then
1437 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001438 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 +00001439 AC_MSG_RESULT(OK)
1440 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001441 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001442 if test "X$rubyhdrdir" != "X"; then
1443 AC_MSG_RESULT($rubyhdrdir)
1444 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001445 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1446 if test -d "$rubyhdrdir/$rubyarch"; then
1447 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1448 fi
1449 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1450 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001451 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1452 if test "X$rubylibs" != "X"; then
1453 RUBY_LIBS="$rubylibs"
1454 fi
1455 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001456 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1457 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1458 if test -f "$rubylibdir/$librubya"; then
1459 librubyarg="$librubyarg"
1460 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1461 elif test "$librubyarg" = "libruby.a"; then
1462 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1463 librubyarg="-lruby"
1464 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 fi
1466
1467 if test "X$librubyarg" != "X"; then
1468 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1469 fi
1470 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1471 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001472 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1473 dnl be included if requested by passing --with-mac-arch to
1474 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001475 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001476 if test "X$rubyldflags" != "X"; then
1477 LDFLAGS="$rubyldflags $LDFLAGS"
1478 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479 fi
1480 RUBY_SRC="if_ruby.c"
1481 RUBY_OBJ="objects/if_ruby.o"
1482 RUBY_PRO="if_ruby.pro"
1483 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001484 if test "$enable_rubyinterp" = "dynamic"; then
1485 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1486 AC_DEFINE(DYNAMIC_RUBY)
1487 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1488 RUBY_LIBS=
1489 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001490 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001491 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001492 fi
1493 else
1494 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1495 fi
1496 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001497
1498 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1499 AC_MSG_ERROR([could not configure Ruby])
1500 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001501fi
1502AC_SUBST(RUBY_SRC)
1503AC_SUBST(RUBY_OBJ)
1504AC_SUBST(RUBY_PRO)
1505AC_SUBST(RUBY_CFLAGS)
1506AC_SUBST(RUBY_LIBS)
1507
1508AC_MSG_CHECKING(--enable-cscope argument)
1509AC_ARG_ENABLE(cscope,
1510 [ --enable-cscope Include cscope interface.], ,
1511 [enable_cscope="no"])
1512AC_MSG_RESULT($enable_cscope)
1513if test "$enable_cscope" = "yes"; then
1514 AC_DEFINE(FEAT_CSCOPE)
1515fi
1516
1517AC_MSG_CHECKING(--enable-workshop argument)
1518AC_ARG_ENABLE(workshop,
1519 [ --enable-workshop Include Sun Visual Workshop support.], ,
1520 [enable_workshop="no"])
1521AC_MSG_RESULT($enable_workshop)
1522if test "$enable_workshop" = "yes"; then
1523 AC_DEFINE(FEAT_SUN_WORKSHOP)
1524 WORKSHOP_SRC="workshop.c integration.c"
1525 AC_SUBST(WORKSHOP_SRC)
1526 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1527 AC_SUBST(WORKSHOP_OBJ)
1528 if test "${enable_gui-xxx}" = xxx; then
1529 enable_gui=motif
1530 fi
1531fi
1532
1533AC_MSG_CHECKING(--disable-netbeans argument)
1534AC_ARG_ENABLE(netbeans,
1535 [ --disable-netbeans Disable NetBeans integration support.],
1536 , [enable_netbeans="yes"])
1537if test "$enable_netbeans" = "yes"; then
1538 AC_MSG_RESULT(no)
1539 dnl On Solaris we need the socket and nsl library.
1540 AC_CHECK_LIB(socket, socket)
1541 AC_CHECK_LIB(nsl, gethostbyname)
1542 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1543 AC_TRY_LINK([
1544#include <stdio.h>
1545#include <stdlib.h>
1546#include <stdarg.h>
1547#include <fcntl.h>
1548#include <netdb.h>
1549#include <netinet/in.h>
1550#include <errno.h>
1551#include <sys/types.h>
1552#include <sys/socket.h>
1553 /* Check bitfields */
1554 struct nbbuf {
1555 unsigned int initDone:1;
1556 ushort signmaplen;
1557 };
1558 ], [
1559 /* Check creating a socket. */
1560 struct sockaddr_in server;
1561 (void)socket(AF_INET, SOCK_STREAM, 0);
1562 (void)htons(100);
1563 (void)gethostbyname("microsoft.com");
1564 if (errno == ECONNREFUSED)
1565 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1566 ],
1567 AC_MSG_RESULT(yes),
1568 AC_MSG_RESULT(no); enable_netbeans="no")
1569else
1570 AC_MSG_RESULT(yes)
1571fi
1572if test "$enable_netbeans" = "yes"; then
1573 AC_DEFINE(FEAT_NETBEANS_INTG)
1574 NETBEANS_SRC="netbeans.c"
1575 AC_SUBST(NETBEANS_SRC)
1576 NETBEANS_OBJ="objects/netbeans.o"
1577 AC_SUBST(NETBEANS_OBJ)
1578fi
1579
1580AC_MSG_CHECKING(--enable-sniff argument)
1581AC_ARG_ENABLE(sniff,
1582 [ --enable-sniff Include Sniff interface.], ,
1583 [enable_sniff="no"])
1584AC_MSG_RESULT($enable_sniff)
1585if test "$enable_sniff" = "yes"; then
1586 AC_DEFINE(FEAT_SNIFF)
1587 SNIFF_SRC="if_sniff.c"
1588 AC_SUBST(SNIFF_SRC)
1589 SNIFF_OBJ="objects/if_sniff.o"
1590 AC_SUBST(SNIFF_OBJ)
1591fi
1592
1593AC_MSG_CHECKING(--enable-multibyte argument)
1594AC_ARG_ENABLE(multibyte,
1595 [ --enable-multibyte Include multibyte editing support.], ,
1596 [enable_multibyte="no"])
1597AC_MSG_RESULT($enable_multibyte)
1598if test "$enable_multibyte" = "yes"; then
1599 AC_DEFINE(FEAT_MBYTE)
1600fi
1601
1602AC_MSG_CHECKING(--enable-hangulinput argument)
1603AC_ARG_ENABLE(hangulinput,
1604 [ --enable-hangulinput Include Hangul input support.], ,
1605 [enable_hangulinput="no"])
1606AC_MSG_RESULT($enable_hangulinput)
1607
1608AC_MSG_CHECKING(--enable-xim argument)
1609AC_ARG_ENABLE(xim,
1610 [ --enable-xim Include XIM input support.],
1611 AC_MSG_RESULT($enable_xim),
1612 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001613
1614AC_MSG_CHECKING(--enable-fontset argument)
1615AC_ARG_ENABLE(fontset,
1616 [ --enable-fontset Include X fontset output support.], ,
1617 [enable_fontset="no"])
1618AC_MSG_RESULT($enable_fontset)
1619dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1620
1621test -z "$with_x" && with_x=yes
1622test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1623if test "$with_x" = no; then
1624 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1625else
1626 dnl Do this check early, so that its failure can override user requests.
1627
1628 AC_PATH_PROG(xmkmfpath, xmkmf)
1629
1630 AC_PATH_XTRA
1631
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001632 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001633 dnl be compiled with a special option.
1634 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001635 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001636 CFLAGS="$CFLAGS -W c,dll"
1637 LDFLAGS="$LDFLAGS -W l,dll"
1638 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1639 fi
1640
1641 dnl On my HPUX system the X include dir is found, but the lib dir not.
1642 dnl This is a desparate try to fix this.
1643
1644 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1645 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1646 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1647 X_LIBS="$X_LIBS -L$x_libraries"
1648 if test "`(uname) 2>/dev/null`" = SunOS &&
1649 uname -r | grep '^5' >/dev/null; then
1650 X_LIBS="$X_LIBS -R $x_libraries"
1651 fi
1652 fi
1653
1654 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1655 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1656 AC_MSG_RESULT(Corrected X includes to $x_includes)
1657 X_CFLAGS="$X_CFLAGS -I$x_includes"
1658 fi
1659
1660 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1661 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1662 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1663 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1664 dnl Same for "-R/usr/lib ".
1665 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1666
1667
1668 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001669 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1670 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671 AC_MSG_CHECKING(if X11 header files can be found)
1672 cflags_save=$CFLAGS
1673 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001674 AC_TRY_COMPILE([#include <X11/Xlib.h>
1675#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001676 AC_MSG_RESULT(yes),
1677 AC_MSG_RESULT(no); no_x=yes)
1678 CFLAGS=$cflags_save
1679
1680 if test "${no_x-no}" = yes; then
1681 with_x=no
1682 else
1683 AC_DEFINE(HAVE_X11)
1684 X_LIB="-lXt -lX11";
1685 AC_SUBST(X_LIB)
1686
1687 ac_save_LDFLAGS="$LDFLAGS"
1688 LDFLAGS="-L$x_libraries $LDFLAGS"
1689
1690 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1691 dnl For HP-UX 10.20 it must be before -lSM -lICE
1692 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1693 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1694
1695 dnl Some systems need -lnsl -lsocket when testing for ICE.
1696 dnl The check above doesn't do this, try here (again). Also needed to get
1697 dnl them after Xdmcp. link.sh will remove them when not needed.
1698 dnl Check for other function than above to avoid the cached value
1699 AC_CHECK_LIB(ICE, IceOpenConnection,
1700 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1701
1702 dnl Check for -lXpm (needed for some versions of Motif)
1703 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1704 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1705 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1706
1707 dnl Check that the X11 header files don't use implicit declarations
1708 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1709 cflags_save=$CFLAGS
1710 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1711 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1712 AC_MSG_RESULT(no),
1713 CFLAGS="$CFLAGS -Wno-implicit-int"
1714 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1715 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1716 AC_MSG_RESULT(test failed)
1717 )
1718 )
1719 CFLAGS=$cflags_save
1720
1721 LDFLAGS="$ac_save_LDFLAGS"
1722
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001723 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1724 AC_CACHE_VAL(ac_cv_small_wchar_t,
1725 [AC_TRY_RUN([
1726#include <X11/Xlib.h>
1727#if STDC_HEADERS
1728# include <stdlib.h>
1729# include <stddef.h>
1730#endif
1731 main()
1732 {
1733 if (sizeof(wchar_t) <= 2)
1734 exit(1);
1735 exit(0);
1736 }],
1737 ac_cv_small_wchar_t="no",
1738 ac_cv_small_wchar_t="yes",
1739 AC_MSG_ERROR(failed to compile test program))])
1740 AC_MSG_RESULT($ac_cv_small_wchar_t)
1741 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1742 AC_DEFINE(SMALL_WCHAR_T)
1743 fi
1744
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745 fi
1746fi
1747
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001748test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001749
1750AC_MSG_CHECKING(--enable-gui argument)
1751AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001752 [ --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 +00001753
1754dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1755dnl Do not use character classes for portability with old tools.
1756enable_gui_canon=`echo "_$enable_gui" | \
1757 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1758
1759dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001760SKIP_GTK2=YES
1761SKIP_GNOME=YES
1762SKIP_MOTIF=YES
1763SKIP_ATHENA=YES
1764SKIP_NEXTAW=YES
1765SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001766SKIP_CARBON=YES
1767GUITYPE=NONE
1768
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001769if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001770 SKIP_PHOTON=
1771 case "$enable_gui_canon" in
1772 no) AC_MSG_RESULT(no GUI support)
1773 SKIP_PHOTON=YES ;;
1774 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1775 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1776 photon) AC_MSG_RESULT(Photon GUI support) ;;
1777 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1778 SKIP_PHOTON=YES ;;
1779 esac
1780
1781elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1782 SKIP_CARBON=
1783 case "$enable_gui_canon" in
1784 no) AC_MSG_RESULT(no GUI support)
1785 SKIP_CARBON=YES ;;
1786 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001787 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1788 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001789 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1790 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1791 SKIP_CARBON=YES ;;
1792 esac
1793
1794else
1795
Bram Moolenaar071d4272004-06-13 20:20:40 +00001796 case "$enable_gui_canon" in
1797 no|none) AC_MSG_RESULT(no GUI support) ;;
1798 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001799 SKIP_GTK2=
1800 SKIP_GNOME=
1801 SKIP_MOTIF=
1802 SKIP_ATHENA=
1803 SKIP_NEXTAW=
1804 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001806 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001807 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1808 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001809 SKIP_GTK2=;;
1810 motif) AC_MSG_RESULT(Motif GUI support)
1811 SKIP_MOTIF=;;
1812 athena) AC_MSG_RESULT(Athena GUI support)
1813 SKIP_ATHENA=;;
1814 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1815 SKIP_NEXTAW=;;
1816 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1817 esac
1818
1819fi
1820
Bram Moolenaar071d4272004-06-13 20:20:40 +00001821if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1822 -a "$enable_gui_canon" != "gnome2"; then
1823 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1824 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001825 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001826 , enable_gtk2_check="yes")
1827 AC_MSG_RESULT($enable_gtk2_check)
1828 if test "x$enable_gtk2_check" = "xno"; then
1829 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001830 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001831 fi
1832fi
1833
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001834if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001835 AC_MSG_CHECKING(whether or not to look for GNOME)
1836 AC_ARG_ENABLE(gnome-check,
1837 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1838 , enable_gnome_check="no")
1839 AC_MSG_RESULT($enable_gnome_check)
1840 if test "x$enable_gnome_check" = "xno"; then
1841 SKIP_GNOME=YES
1842 fi
1843fi
1844
1845if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1846 AC_MSG_CHECKING(whether or not to look for Motif)
1847 AC_ARG_ENABLE(motif-check,
1848 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1849 , enable_motif_check="yes")
1850 AC_MSG_RESULT($enable_motif_check)
1851 if test "x$enable_motif_check" = "xno"; then
1852 SKIP_MOTIF=YES
1853 fi
1854fi
1855
1856if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1857 AC_MSG_CHECKING(whether or not to look for Athena)
1858 AC_ARG_ENABLE(athena-check,
1859 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1860 , enable_athena_check="yes")
1861 AC_MSG_RESULT($enable_athena_check)
1862 if test "x$enable_athena_check" = "xno"; then
1863 SKIP_ATHENA=YES
1864 fi
1865fi
1866
1867if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1868 AC_MSG_CHECKING(whether or not to look for neXtaw)
1869 AC_ARG_ENABLE(nextaw-check,
1870 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1871 , enable_nextaw_check="yes")
1872 AC_MSG_RESULT($enable_nextaw_check);
1873 if test "x$enable_nextaw_check" = "xno"; then
1874 SKIP_NEXTAW=YES
1875 fi
1876fi
1877
1878if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1879 AC_MSG_CHECKING(whether or not to look for Carbon)
1880 AC_ARG_ENABLE(carbon-check,
1881 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1882 , enable_carbon_check="yes")
1883 AC_MSG_RESULT($enable_carbon_check);
1884 if test "x$enable_carbon_check" = "xno"; then
1885 SKIP_CARBON=YES
1886 fi
1887fi
1888
Bram Moolenaar843ee412004-06-30 16:16:41 +00001889
Bram Moolenaar071d4272004-06-13 20:20:40 +00001890if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1891 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001892 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001893 AC_MSG_RESULT(yes);
1894 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001895 if test "$VIMNAME" = "vim"; then
1896 VIMNAME=Vim
1897 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001898
Bram Moolenaar164fca32010-07-14 13:58:07 +02001899 if test "x$MACARCH" = "xboth"; then
1900 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1901 else
1902 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1903 fi
1904
Bram Moolenaar14716812006-05-04 21:54:08 +00001905 dnl Default install directory is not /usr/local
1906 if test x$prefix = xNONE; then
1907 prefix=/Applications
1908 fi
1909
1910 dnl Sorry for the hard coded default
1911 datadir='${prefix}/Vim.app/Contents/Resources'
1912
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001914 SKIP_GTK2=YES;
1915 SKIP_GNOME=YES;
1916 SKIP_MOTIF=YES;
1917 SKIP_ATHENA=YES;
1918 SKIP_NEXTAW=YES;
1919 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001920 SKIP_CARBON=YES
1921fi
1922
Bram Moolenaar071d4272004-06-13 20:20:40 +00001923dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001924dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001925dnl
1926dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001927dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001928dnl
1929AC_DEFUN(AM_PATH_GTK,
1930[
1931 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1932 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001933 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001934 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1935 no_gtk=""
1936 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1937 && $PKG_CONFIG --exists gtk+-2.0; then
1938 {
1939 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1940 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1941 dnl something like that.
1942 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001943 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001944 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1945 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1946 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1947 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1948 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1949 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1950 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1951 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001952 else
1953 no_gtk=yes
1954 fi
1955
1956 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1957 {
1958 ac_save_CFLAGS="$CFLAGS"
1959 ac_save_LIBS="$LIBS"
1960 CFLAGS="$CFLAGS $GTK_CFLAGS"
1961 LIBS="$LIBS $GTK_LIBS"
1962
1963 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001964 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001965 dnl
1966 rm -f conf.gtktest
1967 AC_TRY_RUN([
1968#include <gtk/gtk.h>
1969#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001970#if STDC_HEADERS
1971# include <stdlib.h>
1972# include <stddef.h>
1973#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001974
1975int
1976main ()
1977{
1978int major, minor, micro;
1979char *tmp_version;
1980
1981system ("touch conf.gtktest");
1982
1983/* HP/UX 9 (%@#!) writes to sscanf strings */
1984tmp_version = g_strdup("$min_gtk_version");
1985if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1986 printf("%s, bad version string\n", "$min_gtk_version");
1987 exit(1);
1988 }
1989
1990if ((gtk_major_version > major) ||
1991 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1992 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1993 (gtk_micro_version >= micro)))
1994{
1995 return 0;
1996}
1997return 1;
1998}
1999],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2000 CFLAGS="$ac_save_CFLAGS"
2001 LIBS="$ac_save_LIBS"
2002 }
2003 fi
2004 if test "x$no_gtk" = x ; then
2005 if test "x$enable_gtktest" = "xyes"; then
2006 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2007 else
2008 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2009 fi
2010 ifelse([$2], , :, [$2])
2011 else
2012 {
2013 AC_MSG_RESULT(no)
2014 GTK_CFLAGS=""
2015 GTK_LIBS=""
2016 ifelse([$3], , :, [$3])
2017 }
2018 fi
2019 }
2020 else
2021 GTK_CFLAGS=""
2022 GTK_LIBS=""
2023 ifelse([$3], , :, [$3])
2024 fi
2025 AC_SUBST(GTK_CFLAGS)
2026 AC_SUBST(GTK_LIBS)
2027 rm -f conf.gtktest
2028])
2029
2030dnl ---------------------------------------------------------------------------
2031dnl gnome
2032dnl ---------------------------------------------------------------------------
2033AC_DEFUN([GNOME_INIT_HOOK],
2034[
2035 AC_SUBST(GNOME_LIBS)
2036 AC_SUBST(GNOME_LIBDIR)
2037 AC_SUBST(GNOME_INCLUDEDIR)
2038
2039 AC_ARG_WITH(gnome-includes,
2040 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2041 [CFLAGS="$CFLAGS -I$withval"]
2042 )
2043
2044 AC_ARG_WITH(gnome-libs,
2045 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2046 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2047 )
2048
2049 AC_ARG_WITH(gnome,
2050 [ --with-gnome Specify prefix for GNOME files],
2051 if test x$withval = xyes; then
2052 want_gnome=yes
2053 ifelse([$1], [], :, [$1])
2054 else
2055 if test "x$withval" = xno; then
2056 want_gnome=no
2057 else
2058 want_gnome=yes
2059 LDFLAGS="$LDFLAGS -L$withval/lib"
2060 CFLAGS="$CFLAGS -I$withval/include"
2061 gnome_prefix=$withval/lib
2062 fi
2063 fi,
2064 want_gnome=yes)
2065
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002066 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067 {
2068 AC_MSG_CHECKING(for libgnomeui-2.0)
2069 if $PKG_CONFIG --exists libgnomeui-2.0; then
2070 AC_MSG_RESULT(yes)
2071 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2072 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2073 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002074
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002075 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2076 dnl This might not be the right way but it works for me...
2077 AC_MSG_CHECKING(for FreeBSD)
2078 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2079 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002080 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002081 GNOME_LIBS="$GNOME_LIBS -pthread"
2082 else
2083 AC_MSG_RESULT(no)
2084 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085 $1
2086 else
2087 AC_MSG_RESULT(not found)
2088 if test "x$2" = xfail; then
2089 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2090 fi
2091 fi
2092 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002093 fi
2094])
2095
2096AC_DEFUN([GNOME_INIT],[
2097 GNOME_INIT_HOOK([],fail)
2098])
2099
2100
2101dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002102dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002103dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002104if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105
2106 AC_MSG_CHECKING(--disable-gtktest argument)
2107 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2108 , enable_gtktest=yes)
2109 if test "x$enable_gtktest" = "xyes" ; then
2110 AC_MSG_RESULT(gtk test enabled)
2111 else
2112 AC_MSG_RESULT(gtk test disabled)
2113 fi
2114
Bram Moolenaar071d4272004-06-13 20:20:40 +00002115 if test "X$PKG_CONFIG" = "X"; then
2116 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2117 fi
2118
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002119 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2121 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002122 AM_PATH_GTK(2.2.0,
2123 [GUI_LIB_LOC="$GTK_LIBDIR"
2124 GTK_LIBNAME="$GTK_LIBS"
2125 GUI_INC_LOC="$GTK_CFLAGS"], )
2126 if test "x$GTK_CFLAGS" != "x"; then
2127 SKIP_ATHENA=YES
2128 SKIP_NEXTAW=YES
2129 SKIP_MOTIF=YES
2130 GUITYPE=GTK
2131 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002132 fi
2133 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002134 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002135 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2136 || test "0$gtk_minor_version" -ge 2; then
2137 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2138 fi
2139 dnl
2140 dnl if GTK exists, then check for GNOME.
2141 dnl
2142 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002143 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002144 GNOME_INIT_HOOK([have_gnome=yes])
2145 if test "x$have_gnome" = xyes ; then
2146 AC_DEFINE(FEAT_GUI_GNOME)
2147 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2148 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002149 fi
2150 }
2151 fi
2152 fi
2153fi
2154
2155dnl Check for Motif include files location.
2156dnl The LAST one found is used, this makes the highest version to be used,
2157dnl e.g. when Motif1.2 and Motif2.0 are both present.
2158
2159if test -z "$SKIP_MOTIF"; then
2160 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"
2161 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2162 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2163
2164 AC_MSG_CHECKING(for location of Motif GUI includes)
2165 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2166 GUI_INC_LOC=
2167 for try in $gui_includes; do
2168 if test -f "$try/Xm/Xm.h"; then
2169 GUI_INC_LOC=$try
2170 fi
2171 done
2172 if test -n "$GUI_INC_LOC"; then
2173 if test "$GUI_INC_LOC" = /usr/include; then
2174 GUI_INC_LOC=
2175 AC_MSG_RESULT(in default path)
2176 else
2177 AC_MSG_RESULT($GUI_INC_LOC)
2178 fi
2179 else
2180 AC_MSG_RESULT(<not found>)
2181 SKIP_MOTIF=YES
2182 fi
2183fi
2184
2185dnl Check for Motif library files location. In the same order as the include
2186dnl files, to avoid a mixup if several versions are present
2187
2188if test -z "$SKIP_MOTIF"; then
2189 AC_MSG_CHECKING(--with-motif-lib argument)
2190 AC_ARG_WITH(motif-lib,
2191 [ --with-motif-lib=STRING Library for Motif ],
2192 [ MOTIF_LIBNAME="${withval}" ] )
2193
2194 if test -n "$MOTIF_LIBNAME"; then
2195 AC_MSG_RESULT($MOTIF_LIBNAME)
2196 GUI_LIB_LOC=
2197 else
2198 AC_MSG_RESULT(no)
2199
2200 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2201 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2202
2203 AC_MSG_CHECKING(for location of Motif GUI libs)
2204 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"
2205 GUI_LIB_LOC=
2206 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002207 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002208 if test -f "$libtry"; then
2209 GUI_LIB_LOC=$try
2210 fi
2211 done
2212 done
2213 if test -n "$GUI_LIB_LOC"; then
2214 dnl Remove /usr/lib, it causes trouble on some systems
2215 if test "$GUI_LIB_LOC" = /usr/lib; then
2216 GUI_LIB_LOC=
2217 AC_MSG_RESULT(in default path)
2218 else
2219 if test -n "$GUI_LIB_LOC"; then
2220 AC_MSG_RESULT($GUI_LIB_LOC)
2221 if test "`(uname) 2>/dev/null`" = SunOS &&
2222 uname -r | grep '^5' >/dev/null; then
2223 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2224 fi
2225 fi
2226 fi
2227 MOTIF_LIBNAME=-lXm
2228 else
2229 AC_MSG_RESULT(<not found>)
2230 SKIP_MOTIF=YES
2231 fi
2232 fi
2233fi
2234
2235if test -z "$SKIP_MOTIF"; then
2236 SKIP_ATHENA=YES
2237 SKIP_NEXTAW=YES
2238 GUITYPE=MOTIF
2239 AC_SUBST(MOTIF_LIBNAME)
2240fi
2241
2242dnl Check if the Athena files can be found
2243
2244GUI_X_LIBS=
2245
2246if test -z "$SKIP_ATHENA"; then
2247 AC_MSG_CHECKING(if Athena header files can be found)
2248 cflags_save=$CFLAGS
2249 CFLAGS="$CFLAGS $X_CFLAGS"
2250 AC_TRY_COMPILE([
2251#include <X11/Intrinsic.h>
2252#include <X11/Xaw/Paned.h>], ,
2253 AC_MSG_RESULT(yes),
2254 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2255 CFLAGS=$cflags_save
2256fi
2257
2258if test -z "$SKIP_ATHENA"; then
2259 GUITYPE=ATHENA
2260fi
2261
2262if test -z "$SKIP_NEXTAW"; then
2263 AC_MSG_CHECKING(if neXtaw header files can be found)
2264 cflags_save=$CFLAGS
2265 CFLAGS="$CFLAGS $X_CFLAGS"
2266 AC_TRY_COMPILE([
2267#include <X11/Intrinsic.h>
2268#include <X11/neXtaw/Paned.h>], ,
2269 AC_MSG_RESULT(yes),
2270 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2271 CFLAGS=$cflags_save
2272fi
2273
2274if test -z "$SKIP_NEXTAW"; then
2275 GUITYPE=NEXTAW
2276fi
2277
2278if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2279 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2280 dnl Avoid adding it when it twice
2281 if test -n "$GUI_INC_LOC"; then
2282 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2283 fi
2284 if test -n "$GUI_LIB_LOC"; then
2285 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2286 fi
2287
2288 dnl Check for -lXext and then for -lXmu
2289 ldflags_save=$LDFLAGS
2290 LDFLAGS="$X_LIBS $LDFLAGS"
2291 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2292 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2293 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2294 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2295 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2296 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2297 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2298 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2299 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2300 if test -z "$SKIP_MOTIF"; then
2301 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2302 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2303 fi
2304 LDFLAGS=$ldflags_save
2305
2306 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2307 AC_MSG_CHECKING(for extra X11 defines)
2308 NARROW_PROTO=
2309 rm -fr conftestdir
2310 if mkdir conftestdir; then
2311 cd conftestdir
2312 cat > Imakefile <<'EOF'
2313acfindx:
2314 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2315EOF
2316 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2317 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2318 fi
2319 cd ..
2320 rm -fr conftestdir
2321 fi
2322 if test -z "$NARROW_PROTO"; then
2323 AC_MSG_RESULT(no)
2324 else
2325 AC_MSG_RESULT($NARROW_PROTO)
2326 fi
2327 AC_SUBST(NARROW_PROTO)
2328fi
2329
2330dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2331dnl use the X11 include path
2332if test "$enable_xsmp" = "yes"; then
2333 cppflags_save=$CPPFLAGS
2334 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2335 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2336 CPPFLAGS=$cppflags_save
2337fi
2338
2339
Bram Moolenaare667c952010-07-05 22:57:59 +02002340if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002341 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2342 cppflags_save=$CPPFLAGS
2343 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2344 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2345
2346 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2347 if test ! "$enable_xim" = "no"; then
2348 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2349 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2350 AC_MSG_RESULT(yes),
2351 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2352 fi
2353 CPPFLAGS=$cppflags_save
2354
2355 dnl automatically enable XIM when hangul input isn't enabled
2356 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2357 -a "x$GUITYPE" != "xNONE" ; then
2358 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2359 enable_xim="yes"
2360 fi
2361fi
2362
2363if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2364 cppflags_save=$CPPFLAGS
2365 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002366dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2367 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2368 AC_TRY_COMPILE([
2369#include <X11/Intrinsic.h>
2370#include <X11/Xmu/Editres.h>],
2371 [int i; i = 0;],
2372 AC_MSG_RESULT(yes)
2373 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2374 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002375 CPPFLAGS=$cppflags_save
2376fi
2377
2378dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2379if test -z "$SKIP_MOTIF"; then
2380 cppflags_save=$CPPFLAGS
2381 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002382 if test "$zOSUnix" = "yes"; then
2383 xmheader="Xm/Xm.h"
2384 else
2385 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2386 Xm/UnhighlightT.h Xm/Notebook.h"
2387 fi
2388 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002389
Bram Moolenaar77c19352012-06-13 19:19:41 +02002390 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002391 dnl Solaris uses XpmAttributes_21, very annoying.
2392 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2393 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2394 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2395 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2396 )
2397 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002398 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002399 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002400 CPPFLAGS=$cppflags_save
2401fi
2402
2403if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2404 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2405 enable_xim="no"
2406fi
2407if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2408 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2409 enable_fontset="no"
2410fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002411if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002412 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2413 enable_fontset="no"
2414fi
2415
Bram Moolenaar071d4272004-06-13 20:20:40 +00002416if test -z "$SKIP_PHOTON"; then
2417 GUITYPE=PHOTONGUI
2418fi
2419
2420AC_SUBST(GUI_INC_LOC)
2421AC_SUBST(GUI_LIB_LOC)
2422AC_SUBST(GUITYPE)
2423AC_SUBST(GUI_X_LIBS)
2424
2425if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2426 AC_MSG_ERROR([cannot use workshop without Motif])
2427fi
2428
2429dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2430if test "$enable_xim" = "yes"; then
2431 AC_DEFINE(FEAT_XIM)
2432fi
2433if test "$enable_fontset" = "yes"; then
2434 AC_DEFINE(FEAT_XFONTSET)
2435fi
2436
2437
2438dnl ---------------------------------------------------------------------------
2439dnl end of GUI-checking
2440dnl ---------------------------------------------------------------------------
2441
2442
2443dnl Only really enable hangul input when GUI and XFONTSET are available
2444if test "$enable_hangulinput" = "yes"; then
2445 if test "x$GUITYPE" = "xNONE"; then
2446 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2447 enable_hangulinput=no
2448 else
2449 AC_DEFINE(FEAT_HANGULIN)
2450 HANGULIN_SRC=hangulin.c
2451 AC_SUBST(HANGULIN_SRC)
2452 HANGULIN_OBJ=objects/hangulin.o
2453 AC_SUBST(HANGULIN_OBJ)
2454 fi
2455fi
2456
2457dnl Checks for libraries and include files.
2458
Bram Moolenaar446cb832008-06-24 21:56:24 +00002459AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2460 [
2461 AC_RUN_IFELSE([[
2462#include "confdefs.h"
2463#include <ctype.h>
2464#if STDC_HEADERS
2465# include <stdlib.h>
2466# include <stddef.h>
2467#endif
2468main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2469 ]],[
2470 vim_cv_toupper_broken=yes
2471 ],[
2472 vim_cv_toupper_broken=no
2473 ],[
2474 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2475 ])])
2476
2477if test "x$vim_cv_toupper_broken" = "xyes" ; then
2478 AC_DEFINE(BROKEN_TOUPPER)
2479fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480
2481AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002482AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002483 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2484 AC_MSG_RESULT(no))
2485
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002486AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2487AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2488 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2489 AC_MSG_RESULT(no))
2490
Bram Moolenaar071d4272004-06-13 20:20:40 +00002491dnl Checks for header files.
2492AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2493dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2494if test "$HAS_ELF" = 1; then
2495 AC_CHECK_LIB(elf, main)
2496fi
2497
2498AC_HEADER_DIRENT
2499
Bram Moolenaar071d4272004-06-13 20:20:40 +00002500dnl If sys/wait.h is not found it might still exist but not be POSIX
2501dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2502if test $ac_cv_header_sys_wait_h = no; then
2503 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2504 AC_TRY_COMPILE([#include <sys/wait.h>],
2505 [union wait xx, yy; xx = yy],
2506 AC_MSG_RESULT(yes)
2507 AC_DEFINE(HAVE_SYS_WAIT_H)
2508 AC_DEFINE(HAVE_UNION_WAIT),
2509 AC_MSG_RESULT(no))
2510fi
2511
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002512AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2513 sys/select.h sys/utsname.h termcap.h fcntl.h \
2514 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2515 termio.h iconv.h inttypes.h langinfo.h math.h \
2516 unistd.h stropts.h errno.h sys/resource.h \
2517 sys/systeminfo.h locale.h sys/stream.h termios.h \
2518 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2519 utime.h sys/param.h libintl.h libgen.h \
2520 util/debug.h util/msg18n.h frame.h sys/acl.h \
2521 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002522
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002523dnl sys/ptem.h depends on sys/stream.h on Solaris
2524AC_CHECK_HEADERS(sys/ptem.h, [], [],
2525[#if defined HAVE_SYS_STREAM_H
2526# include <sys/stream.h>
2527#endif])
2528
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002529dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2530AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2531[#if defined HAVE_SYS_PARAM_H
2532# include <sys/param.h>
2533#endif])
2534
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002535
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002536dnl pthread_np.h may exist but can only be used after including pthread.h
2537AC_MSG_CHECKING([for pthread_np.h])
2538AC_TRY_COMPILE([
2539#include <pthread.h>
2540#include <pthread_np.h>],
2541 [int i; i = 0;],
2542 AC_MSG_RESULT(yes)
2543 AC_DEFINE(HAVE_PTHREAD_NP_H),
2544 AC_MSG_RESULT(no))
2545
Bram Moolenaare344bea2005-09-01 20:46:49 +00002546AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002547if test "x$MACOSX" = "xyes"; then
2548 dnl The strings.h file on OS/X contains a warning and nothing useful.
2549 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2550else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002551
2552dnl Check if strings.h and string.h can both be included when defined.
2553AC_MSG_CHECKING([if strings.h can be included after string.h])
2554cppflags_save=$CPPFLAGS
2555CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2556AC_TRY_COMPILE([
2557#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2558# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2559 /* but don't do it on AIX 5.1 (Uribarri) */
2560#endif
2561#ifdef HAVE_XM_XM_H
2562# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2563#endif
2564#ifdef HAVE_STRING_H
2565# include <string.h>
2566#endif
2567#if defined(HAVE_STRINGS_H)
2568# include <strings.h>
2569#endif
2570 ], [int i; i = 0;],
2571 AC_MSG_RESULT(yes),
2572 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2573 AC_MSG_RESULT(no))
2574CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002575fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002576
2577dnl Checks for typedefs, structures, and compiler characteristics.
2578AC_PROG_GCC_TRADITIONAL
2579AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002580AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002581AC_TYPE_MODE_T
2582AC_TYPE_OFF_T
2583AC_TYPE_PID_T
2584AC_TYPE_SIZE_T
2585AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002586AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002587
Bram Moolenaar071d4272004-06-13 20:20:40 +00002588AC_HEADER_TIME
2589AC_CHECK_TYPE(ino_t, long)
2590AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002591AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592
2593AC_MSG_CHECKING(for rlim_t)
2594if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2595 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2596else
2597 AC_EGREP_CPP(dnl
2598changequote(<<,>>)dnl
2599<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2600changequote([,]),
2601 [
2602#include <sys/types.h>
2603#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002604# include <stdlib.h>
2605# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002606#endif
2607#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002608# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002609#endif
2610 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2611 AC_MSG_RESULT($ac_cv_type_rlim_t)
2612fi
2613if test $ac_cv_type_rlim_t = no; then
2614 cat >> confdefs.h <<\EOF
2615#define rlim_t unsigned long
2616EOF
2617fi
2618
2619AC_MSG_CHECKING(for stack_t)
2620if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2621 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2622else
2623 AC_EGREP_CPP(stack_t,
2624 [
2625#include <sys/types.h>
2626#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002627# include <stdlib.h>
2628# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002629#endif
2630#include <signal.h>
2631 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2632 AC_MSG_RESULT($ac_cv_type_stack_t)
2633fi
2634if test $ac_cv_type_stack_t = no; then
2635 cat >> confdefs.h <<\EOF
2636#define stack_t struct sigaltstack
2637EOF
2638fi
2639
2640dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2641AC_MSG_CHECKING(whether stack_t has an ss_base field)
2642AC_TRY_COMPILE([
2643#include <sys/types.h>
2644#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002645# include <stdlib.h>
2646# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002647#endif
2648#include <signal.h>
2649#include "confdefs.h"
2650 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2651 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2652 AC_MSG_RESULT(no))
2653
2654olibs="$LIBS"
2655AC_MSG_CHECKING(--with-tlib argument)
2656AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2657if test -n "$with_tlib"; then
2658 AC_MSG_RESULT($with_tlib)
2659 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002660 AC_MSG_CHECKING(for linking with $with_tlib library)
2661 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2662 dnl Need to check for tgetent() below.
2663 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002664else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002665 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2667 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002668 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002669 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670 dnl Older versions of ncurses have bugs, get a new one!
2671 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002672 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002673 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002674 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2675 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002676 esac
2677 for libname in $tlibs; do
2678 AC_CHECK_LIB(${libname}, tgetent,,)
2679 if test "x$olibs" != "x$LIBS"; then
2680 dnl It's possible that a library is found but it doesn't work
2681 dnl e.g., shared library that cannot be found
2682 dnl compile and run a test program to be sure
2683 AC_TRY_RUN([
2684#ifdef HAVE_TERMCAP_H
2685# include <termcap.h>
2686#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002687#if STDC_HEADERS
2688# include <stdlib.h>
2689# include <stddef.h>
2690#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002691main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2692 res="OK", res="FAIL", res="FAIL")
2693 if test "$res" = "OK"; then
2694 break
2695 fi
2696 AC_MSG_RESULT($libname library is not usable)
2697 LIBS="$olibs"
2698 fi
2699 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002700 if test "x$olibs" = "x$LIBS"; then
2701 AC_MSG_RESULT(no terminal library found)
2702 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002703fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002704
2705if test "x$olibs" = "x$LIBS"; then
2706 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002707 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002708 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2709 AC_MSG_RESULT(yes),
2710 AC_MSG_ERROR([NOT FOUND!
2711 You need to install a terminal library; for example ncurses.
2712 Or specify the name of the library with --with-tlib.]))
2713fi
2714
Bram Moolenaar446cb832008-06-24 21:56:24 +00002715AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2716 [
2717 AC_RUN_IFELSE([[
2718#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002719#ifdef HAVE_TERMCAP_H
2720# include <termcap.h>
2721#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002722#ifdef HAVE_STRING_H
2723# include <string.h>
2724#endif
2725#if STDC_HEADERS
2726# include <stdlib.h>
2727# include <stddef.h>
2728#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002729main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002730{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2731 ]],[
2732 vim_cv_terminfo=no
2733 ],[
2734 vim_cv_terminfo=yes
2735 ],[
2736 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2737 ])
2738 ])
2739
2740if test "x$vim_cv_terminfo" = "xyes" ; then
2741 AC_DEFINE(TERMINFO)
2742fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002743
2744if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002745 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2746 [
2747 AC_RUN_IFELSE([[
2748#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002749#ifdef HAVE_TERMCAP_H
2750# include <termcap.h>
2751#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002752#if STDC_HEADERS
2753# include <stdlib.h>
2754# include <stddef.h>
2755#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002756main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002757{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2758 ]],[
2759 vim_cv_tgent=zero
2760 ],[
2761 vim_cv_tgent=non-zero
2762 ],[
2763 AC_MSG_ERROR(failed to compile test program.)
2764 ])
2765 ])
2766
2767 if test "x$vim_cv_tgent" = "xzero" ; then
2768 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2769 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002770fi
2771
2772AC_MSG_CHECKING(whether termcap.h contains ospeed)
2773AC_TRY_LINK([
2774#ifdef HAVE_TERMCAP_H
2775# include <termcap.h>
2776#endif
2777 ], [ospeed = 20000],
2778 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2779 [AC_MSG_RESULT(no)
2780 AC_MSG_CHECKING(whether ospeed can be extern)
2781 AC_TRY_LINK([
2782#ifdef HAVE_TERMCAP_H
2783# include <termcap.h>
2784#endif
2785extern short ospeed;
2786 ], [ospeed = 20000],
2787 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2788 AC_MSG_RESULT(no))]
2789 )
2790
2791AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2792AC_TRY_LINK([
2793#ifdef HAVE_TERMCAP_H
2794# include <termcap.h>
2795#endif
2796 ], [if (UP == 0 && BC == 0) PC = 1],
2797 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2798 [AC_MSG_RESULT(no)
2799 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2800 AC_TRY_LINK([
2801#ifdef HAVE_TERMCAP_H
2802# include <termcap.h>
2803#endif
2804extern char *UP, *BC, PC;
2805 ], [if (UP == 0 && BC == 0) PC = 1],
2806 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2807 AC_MSG_RESULT(no))]
2808 )
2809
2810AC_MSG_CHECKING(whether tputs() uses outfuntype)
2811AC_TRY_COMPILE([
2812#ifdef HAVE_TERMCAP_H
2813# include <termcap.h>
2814#endif
2815 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2816 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2817 AC_MSG_RESULT(no))
2818
2819dnl On some SCO machines sys/select redefines struct timeval
2820AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2821AC_TRY_COMPILE([
2822#include <sys/types.h>
2823#include <sys/time.h>
2824#include <sys/select.h>], ,
2825 AC_MSG_RESULT(yes)
2826 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2827 AC_MSG_RESULT(no))
2828
2829dnl AC_DECL_SYS_SIGLIST
2830
2831dnl Checks for pty.c (copied from screen) ==========================
2832AC_MSG_CHECKING(for /dev/ptc)
2833if test -r /dev/ptc; then
2834 AC_DEFINE(HAVE_DEV_PTC)
2835 AC_MSG_RESULT(yes)
2836else
2837 AC_MSG_RESULT(no)
2838fi
2839
2840AC_MSG_CHECKING(for SVR4 ptys)
2841if test -c /dev/ptmx ; then
2842 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2843 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2844 AC_MSG_RESULT(no))
2845else
2846 AC_MSG_RESULT(no)
2847fi
2848
2849AC_MSG_CHECKING(for ptyranges)
2850if test -d /dev/ptym ; then
2851 pdir='/dev/ptym'
2852else
2853 pdir='/dev'
2854fi
2855dnl SCO uses ptyp%d
2856AC_EGREP_CPP(yes,
2857[#ifdef M_UNIX
2858 yes;
2859#endif
2860 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2861dnl if test -c /dev/ptyp19; then
2862dnl ptys=`echo /dev/ptyp??`
2863dnl else
2864dnl ptys=`echo $pdir/pty??`
2865dnl fi
2866if test "$ptys" != "$pdir/pty??" ; then
2867 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2868 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2869 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2870 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2871 AC_MSG_RESULT([$p0 / $p1])
2872else
2873 AC_MSG_RESULT([don't know])
2874fi
2875
2876dnl **** pty mode/group handling ****
2877dnl
2878dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002879rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002880AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2881 [
2882 AC_RUN_IFELSE([[
2883#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002884#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002885#if STDC_HEADERS
2886# include <stdlib.h>
2887# include <stddef.h>
2888#endif
2889#ifdef HAVE_UNISTD_H
2890#include <unistd.h>
2891#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002892#include <sys/stat.h>
2893#include <stdio.h>
2894main()
2895{
2896 struct stat sb;
2897 char *x,*ttyname();
2898 int om, m;
2899 FILE *fp;
2900
2901 if (!(x = ttyname(0))) exit(1);
2902 if (stat(x, &sb)) exit(1);
2903 om = sb.st_mode;
2904 if (om & 002) exit(0);
2905 m = system("mesg y");
2906 if (m == -1 || m == 127) exit(1);
2907 if (stat(x, &sb)) exit(1);
2908 m = sb.st_mode;
2909 if (chmod(x, om)) exit(1);
2910 if (m & 002) exit(0);
2911 if (sb.st_gid == getgid()) exit(1);
2912 if (!(fp=fopen("conftest_grp", "w")))
2913 exit(1);
2914 fprintf(fp, "%d\n", sb.st_gid);
2915 fclose(fp);
2916 exit(0);
2917}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002918 ]],[
2919 if test -f conftest_grp; then
2920 vim_cv_tty_group=`cat conftest_grp`
2921 if test "x$vim_cv_tty_mode" = "x" ; then
2922 vim_cv_tty_mode=0620
2923 fi
2924 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2925 else
2926 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002927 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002928 fi
2929 ],[
2930 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002931 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002932 ],[
2933 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2934 ])
2935 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002936rm -f conftest_grp
2937
Bram Moolenaar446cb832008-06-24 21:56:24 +00002938if test "x$vim_cv_tty_group" != "xworld" ; then
2939 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2940 if test "x$vim_cv_tty_mode" = "x" ; then
2941 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)])
2942 else
2943 AC_DEFINE(PTYMODE, 0620)
2944 fi
2945fi
2946
Bram Moolenaar071d4272004-06-13 20:20:40 +00002947dnl Checks for library functions. ===================================
2948
2949AC_TYPE_SIGNAL
2950
2951dnl find out what to use at the end of a signal function
2952if test $ac_cv_type_signal = void; then
2953 AC_DEFINE(SIGRETURN, [return])
2954else
2955 AC_DEFINE(SIGRETURN, [return 0])
2956fi
2957
2958dnl check if struct sigcontext is defined (used for SGI only)
2959AC_MSG_CHECKING(for struct sigcontext)
2960AC_TRY_COMPILE([
2961#include <signal.h>
2962test_sig()
2963{
2964 struct sigcontext *scont;
2965 scont = (struct sigcontext *)0;
2966 return 1;
2967} ], ,
2968 AC_MSG_RESULT(yes)
2969 AC_DEFINE(HAVE_SIGCONTEXT),
2970 AC_MSG_RESULT(no))
2971
2972dnl tricky stuff: try to find out if getcwd() is implemented with
2973dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002974AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2975 [
2976 AC_RUN_IFELSE([[
2977#include "confdefs.h"
2978#ifdef HAVE_UNISTD_H
2979#include <unistd.h>
2980#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002981char *dagger[] = { "IFS=pwd", 0 };
2982main()
2983{
2984 char buffer[500];
2985 extern char **environ;
2986 environ = dagger;
2987 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002988}
2989 ]],[
2990 vim_cv_getcwd_broken=no
2991 ],[
2992 vim_cv_getcwd_broken=yes
2993 ],[
2994 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2995 ])
2996 ])
2997
2998if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2999 AC_DEFINE(BAD_GETCWD)
3000fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003001
Bram Moolenaar25153e12010-02-24 14:47:08 +01003002dnl Check for functions in one big call, to reduce the size of configure.
3003dnl Can only be used for functions that do not require any include.
3004AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003005 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003006 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003007 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003008 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003009 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3010 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003011AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003013dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3014dnl appropriate, so that off_t is 64 bits when needed.
3015AC_SYS_LARGEFILE
3016
Bram Moolenaar071d4272004-06-13 20:20:40 +00003017dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3018AC_MSG_CHECKING(for st_blksize)
3019AC_TRY_COMPILE(
3020[#include <sys/types.h>
3021#include <sys/stat.h>],
3022[ struct stat st;
3023 int n;
3024
3025 stat("/", &st);
3026 n = (int)st.st_blksize;],
3027 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3028 AC_MSG_RESULT(no))
3029
Bram Moolenaar446cb832008-06-24 21:56:24 +00003030AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3031 [
3032 AC_RUN_IFELSE([[
3033#include "confdefs.h"
3034#if STDC_HEADERS
3035# include <stdlib.h>
3036# include <stddef.h>
3037#endif
3038#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003039#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003040main() {struct stat st; exit(stat("configure/", &st) != 0); }
3041 ]],[
3042 vim_cv_stat_ignores_slash=yes
3043 ],[
3044 vim_cv_stat_ignores_slash=no
3045 ],[
3046 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3047 ])
3048 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003049
Bram Moolenaar446cb832008-06-24 21:56:24 +00003050if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3051 AC_DEFINE(STAT_IGNORES_SLASH)
3052fi
3053
Bram Moolenaar071d4272004-06-13 20:20:40 +00003054dnl Link with iconv for charset translation, if not found without library.
3055dnl check for iconv() requires including iconv.h
3056dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3057dnl has been installed.
3058AC_MSG_CHECKING(for iconv_open())
3059save_LIBS="$LIBS"
3060LIBS="$LIBS -liconv"
3061AC_TRY_LINK([
3062#ifdef HAVE_ICONV_H
3063# include <iconv.h>
3064#endif
3065 ], [iconv_open("fr", "to");],
3066 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3067 LIBS="$save_LIBS"
3068 AC_TRY_LINK([
3069#ifdef HAVE_ICONV_H
3070# include <iconv.h>
3071#endif
3072 ], [iconv_open("fr", "to");],
3073 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3074 AC_MSG_RESULT(no)))
3075
3076
3077AC_MSG_CHECKING(for nl_langinfo(CODESET))
3078AC_TRY_LINK([
3079#ifdef HAVE_LANGINFO_H
3080# include <langinfo.h>
3081#endif
3082], [char *cs = nl_langinfo(CODESET);],
3083 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3084 AC_MSG_RESULT(no))
3085
Bram Moolenaar446cb832008-06-24 21:56:24 +00003086dnl Need various functions for floating point support. Only enable
3087dnl floating point when they are all present.
3088AC_CHECK_LIB(m, strtod)
3089AC_MSG_CHECKING([for strtod() and other floating point functions])
3090AC_TRY_LINK([
3091#ifdef HAVE_MATH_H
3092# include <math.h>
3093#endif
3094#if STDC_HEADERS
3095# include <stdlib.h>
3096# include <stddef.h>
3097#endif
3098], [char *s; double d;
3099 d = strtod("1.1", &s);
3100 d = fabs(1.11);
3101 d = ceil(1.11);
3102 d = floor(1.11);
3103 d = log10(1.11);
3104 d = pow(1.11, 2.22);
3105 d = sqrt(1.11);
3106 d = sin(1.11);
3107 d = cos(1.11);
3108 d = atan(1.11);
3109 ],
3110 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3111 AC_MSG_RESULT(no))
3112
Bram Moolenaar071d4272004-06-13 20:20:40 +00003113dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3114dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003115dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003116AC_MSG_CHECKING(--disable-acl argument)
3117AC_ARG_ENABLE(acl,
3118 [ --disable-acl Don't check for ACL support.],
3119 , [enable_acl="yes"])
3120if test "$enable_acl" = "yes"; then
3121AC_MSG_RESULT(no)
3122AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3123 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3124 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3125
3126AC_MSG_CHECKING(for POSIX ACL support)
3127AC_TRY_LINK([
3128#include <sys/types.h>
3129#ifdef HAVE_SYS_ACL_H
3130# include <sys/acl.h>
3131#endif
3132acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3133 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3134 acl_free(acl);],
3135 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3136 AC_MSG_RESULT(no))
3137
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003138AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003139AC_MSG_CHECKING(for Solaris ACL support)
3140AC_TRY_LINK([
3141#ifdef HAVE_SYS_ACL_H
3142# include <sys/acl.h>
3143#endif], [acl("foo", GETACLCNT, 0, NULL);
3144 ],
3145 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003146 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003147
3148AC_MSG_CHECKING(for AIX ACL support)
3149AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003150#if STDC_HEADERS
3151# include <stdlib.h>
3152# include <stddef.h>
3153#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003154#ifdef HAVE_SYS_ACL_H
3155# include <sys/acl.h>
3156#endif
3157#ifdef HAVE_SYS_ACCESS_H
3158# include <sys/access.h>
3159#endif
3160#define _ALL_SOURCE
3161
3162#include <sys/stat.h>
3163
3164int aclsize;
3165struct acl *aclent;], [aclsize = sizeof(struct acl);
3166 aclent = (void *)malloc(aclsize);
3167 statacl("foo", STX_NORMAL, aclent, aclsize);
3168 ],
3169 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3170 AC_MSG_RESULT(no))
3171else
3172 AC_MSG_RESULT(yes)
3173fi
3174
3175AC_MSG_CHECKING(--disable-gpm argument)
3176AC_ARG_ENABLE(gpm,
3177 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3178 [enable_gpm="yes"])
3179
3180if test "$enable_gpm" = "yes"; then
3181 AC_MSG_RESULT(no)
3182 dnl Checking if gpm support can be compiled
3183 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3184 [olibs="$LIBS" ; LIBS="-lgpm"]
3185 AC_TRY_LINK(
3186 [#include <gpm.h>
3187 #include <linux/keyboard.h>],
3188 [Gpm_GetLibVersion(NULL);],
3189 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3190 dnl FEAT_MOUSE_GPM if mouse support is included
3191 [vi_cv_have_gpm=yes],
3192 [vi_cv_have_gpm=no])
3193 [LIBS="$olibs"]
3194 )
3195 if test $vi_cv_have_gpm = yes; then
3196 LIBS="$LIBS -lgpm"
3197 AC_DEFINE(HAVE_GPM)
3198 fi
3199else
3200 AC_MSG_RESULT(yes)
3201fi
3202
Bram Moolenaar446cb832008-06-24 21:56:24 +00003203AC_MSG_CHECKING(--disable-sysmouse argument)
3204AC_ARG_ENABLE(sysmouse,
3205 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3206 [enable_sysmouse="yes"])
3207
3208if test "$enable_sysmouse" = "yes"; then
3209 AC_MSG_RESULT(no)
3210 dnl Checking if sysmouse support can be compiled
3211 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3212 dnl defines FEAT_SYSMOUSE if mouse support is included
3213 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3214 AC_TRY_LINK(
3215 [#include <sys/consio.h>
3216 #include <signal.h>
3217 #include <sys/fbio.h>],
3218 [struct mouse_info mouse;
3219 mouse.operation = MOUSE_MODE;
3220 mouse.operation = MOUSE_SHOW;
3221 mouse.u.mode.mode = 0;
3222 mouse.u.mode.signal = SIGUSR2;],
3223 [vi_cv_have_sysmouse=yes],
3224 [vi_cv_have_sysmouse=no])
3225 )
3226 if test $vi_cv_have_sysmouse = yes; then
3227 AC_DEFINE(HAVE_SYSMOUSE)
3228 fi
3229else
3230 AC_MSG_RESULT(yes)
3231fi
3232
Bram Moolenaarf05da212009-11-17 16:13:15 +00003233dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3234AC_MSG_CHECKING(for FD_CLOEXEC)
3235AC_TRY_COMPILE(
3236[#if HAVE_FCNTL_H
3237# include <fcntl.h>
3238#endif],
3239[ int flag = FD_CLOEXEC;],
3240 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3241 AC_MSG_RESULT(not usable))
3242
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243dnl rename needs to be checked separately to work on Nextstep with cc
3244AC_MSG_CHECKING(for rename)
3245AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3246 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3247 AC_MSG_RESULT(no))
3248
3249dnl sysctl() may exist but not the arguments we use
3250AC_MSG_CHECKING(for sysctl)
3251AC_TRY_COMPILE(
3252[#include <sys/types.h>
3253#include <sys/sysctl.h>],
3254[ int mib[2], r;
3255 size_t len;
3256
3257 mib[0] = CTL_HW;
3258 mib[1] = HW_USERMEM;
3259 len = sizeof(r);
3260 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3261 ],
3262 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3263 AC_MSG_RESULT(not usable))
3264
3265dnl sysinfo() may exist but not be Linux compatible
3266AC_MSG_CHECKING(for sysinfo)
3267AC_TRY_COMPILE(
3268[#include <sys/types.h>
3269#include <sys/sysinfo.h>],
3270[ struct sysinfo sinfo;
3271 int t;
3272
3273 (void)sysinfo(&sinfo);
3274 t = sinfo.totalram;
3275 ],
3276 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3277 AC_MSG_RESULT(not usable))
3278
Bram Moolenaar914572a2007-05-01 11:37:47 +00003279dnl struct sysinfo may have the mem_unit field or not
3280AC_MSG_CHECKING(for sysinfo.mem_unit)
3281AC_TRY_COMPILE(
3282[#include <sys/types.h>
3283#include <sys/sysinfo.h>],
3284[ struct sysinfo sinfo;
3285 sinfo.mem_unit = 1;
3286 ],
3287 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3288 AC_MSG_RESULT(no))
3289
Bram Moolenaar071d4272004-06-13 20:20:40 +00003290dnl sysconf() may exist but not support what we want to use
3291AC_MSG_CHECKING(for sysconf)
3292AC_TRY_COMPILE(
3293[#include <unistd.h>],
3294[ (void)sysconf(_SC_PAGESIZE);
3295 (void)sysconf(_SC_PHYS_PAGES);
3296 ],
3297 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3298 AC_MSG_RESULT(not usable))
3299
Bram Moolenaar914703b2010-05-31 21:59:46 +02003300AC_CHECK_SIZEOF([int])
3301AC_CHECK_SIZEOF([long])
3302AC_CHECK_SIZEOF([time_t])
3303AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003304
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003305dnl Make sure that uint32_t is really 32 bits unsigned.
3306AC_MSG_CHECKING([uint32_t is 32 bits])
3307AC_TRY_RUN([
3308#ifdef HAVE_STDINT_H
3309# include <stdint.h>
3310#endif
3311#ifdef HAVE_INTTYPES_H
3312# include <inttypes.h>
3313#endif
3314main() {
3315 uint32_t nr1 = (uint32_t)-1;
3316 uint32_t nr2 = (uint32_t)0xffffffffUL;
3317 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3318 exit(0);
3319}],
3320AC_MSG_RESULT(ok),
3321AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003322AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003323
Bram Moolenaar446cb832008-06-24 21:56:24 +00003324dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3325dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3326
Bram Moolenaar071d4272004-06-13 20:20:40 +00003327[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003328#include "confdefs.h"
3329#ifdef HAVE_STRING_H
3330# include <string.h>
3331#endif
3332#if STDC_HEADERS
3333# include <stdlib.h>
3334# include <stddef.h>
3335#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003336main() {
3337 char buf[10];
3338 strcpy(buf, "abcdefghi");
3339 mch_memmove(buf, buf + 2, 3);
3340 if (strncmp(buf, "ababcf", 6))
3341 exit(1);
3342 strcpy(buf, "abcdefghi");
3343 mch_memmove(buf + 2, buf, 3);
3344 if (strncmp(buf, "cdedef", 6))
3345 exit(1);
3346 exit(0); /* libc version works properly. */
3347}']
3348
Bram Moolenaar446cb832008-06-24 21:56:24 +00003349AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3350 [
3351 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3352 [
3353 vim_cv_memmove_handles_overlap=yes
3354 ],[
3355 vim_cv_memmove_handles_overlap=no
3356 ],[
3357 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3358 ])
3359 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003360
Bram Moolenaar446cb832008-06-24 21:56:24 +00003361if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3362 AC_DEFINE(USEMEMMOVE)
3363else
3364 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3365 [
3366 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3367 [
3368 vim_cv_bcopy_handles_overlap=yes
3369 ],[
3370 vim_cv_bcopy_handles_overlap=no
3371 ],[
3372 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3373 ])
3374 ])
3375
3376 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3377 AC_DEFINE(USEBCOPY)
3378 else
3379 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3380 [
3381 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3382 [
3383 vim_cv_memcpy_handles_overlap=yes
3384 ],[
3385 vim_cv_memcpy_handles_overlap=no
3386 ],[
3387 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3388 ])
3389 ])
3390
3391 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3392 AC_DEFINE(USEMEMCPY)
3393 fi
3394 fi
3395fi
3396
Bram Moolenaar071d4272004-06-13 20:20:40 +00003397
3398dnl Check for multibyte locale functions
3399dnl Find out if _Xsetlocale() is supported by libX11.
3400dnl Check if X_LOCALE should be defined.
3401
3402if test "$enable_multibyte" = "yes"; then
3403 cflags_save=$CFLAGS
3404 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003405 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003406 CFLAGS="$CFLAGS -I$x_includes"
3407 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3408 AC_MSG_CHECKING(whether X_LOCALE needed)
3409 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3410 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3411 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3412 AC_MSG_RESULT(no))
3413 fi
3414 CFLAGS=$cflags_save
3415 LDFLAGS=$ldflags_save
3416fi
3417
3418dnl Link with xpg4, it is said to make Korean locale working
3419AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3420
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003421dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003422dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003423dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003424dnl -t for typedefs (many ctags have this)
3425dnl -s for static functions (Elvis ctags only?)
3426dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3427dnl -i+m to test for older Exuberant ctags
3428AC_MSG_CHECKING(how to create tags)
3429test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003430if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003431 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003432elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3433 TAGPRG="exctags -I INIT+ --fields=+S"
3434elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3435 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003436else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003437 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003438 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3439 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3440 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3441 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3442 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3443 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3444 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3445fi
3446test -f tags.save && mv tags.save tags
3447AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3448
3449dnl Check how we can run man with a section number
3450AC_MSG_CHECKING(how to run man with a section nr)
3451MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003452(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 +00003453AC_MSG_RESULT($MANDEF)
3454if test "$MANDEF" = "man -s"; then
3455 AC_DEFINE(USEMAN_S)
3456fi
3457
3458dnl Check if gettext() is working and if it needs -lintl
3459AC_MSG_CHECKING(--disable-nls argument)
3460AC_ARG_ENABLE(nls,
3461 [ --disable-nls Don't support NLS (gettext()).], ,
3462 [enable_nls="yes"])
3463
3464if test "$enable_nls" = "yes"; then
3465 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003466
3467 INSTALL_LANGS=install-languages
3468 AC_SUBST(INSTALL_LANGS)
3469 INSTALL_TOOL_LANGS=install-tool-languages
3470 AC_SUBST(INSTALL_TOOL_LANGS)
3471
Bram Moolenaar071d4272004-06-13 20:20:40 +00003472 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3473 AC_MSG_CHECKING([for NLS])
3474 if test -f po/Makefile; then
3475 have_gettext="no"
3476 if test -n "$MSGFMT"; then
3477 AC_TRY_LINK(
3478 [#include <libintl.h>],
3479 [gettext("Test");],
3480 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3481 olibs=$LIBS
3482 LIBS="$LIBS -lintl"
3483 AC_TRY_LINK(
3484 [#include <libintl.h>],
3485 [gettext("Test");],
3486 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3487 AC_MSG_RESULT([gettext() doesn't work]);
3488 LIBS=$olibs))
3489 else
3490 AC_MSG_RESULT([msgfmt not found - disabled]);
3491 fi
3492 if test $have_gettext = "yes"; then
3493 AC_DEFINE(HAVE_GETTEXT)
3494 MAKEMO=yes
3495 AC_SUBST(MAKEMO)
3496 dnl this was added in GNU gettext 0.10.36
3497 AC_CHECK_FUNCS(bind_textdomain_codeset)
3498 dnl _nl_msg_cat_cntr is required for GNU gettext
3499 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3500 AC_TRY_LINK(
3501 [#include <libintl.h>
3502 extern int _nl_msg_cat_cntr;],
3503 [++_nl_msg_cat_cntr;],
3504 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3505 AC_MSG_RESULT([no]))
3506 fi
3507 else
3508 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3509 fi
3510else
3511 AC_MSG_RESULT(yes)
3512fi
3513
3514dnl Check for dynamic linking loader
3515AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3516if test x${DLL} = xdlfcn.h; then
3517 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3518 AC_MSG_CHECKING([for dlopen()])
3519 AC_TRY_LINK(,[
3520 extern void* dlopen();
3521 dlopen();
3522 ],
3523 AC_MSG_RESULT(yes);
3524 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3525 AC_MSG_RESULT(no);
3526 AC_MSG_CHECKING([for dlopen() in -ldl])
3527 olibs=$LIBS
3528 LIBS="$LIBS -ldl"
3529 AC_TRY_LINK(,[
3530 extern void* dlopen();
3531 dlopen();
3532 ],
3533 AC_MSG_RESULT(yes);
3534 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3535 AC_MSG_RESULT(no);
3536 LIBS=$olibs))
3537 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3538 dnl ick :-)
3539 AC_MSG_CHECKING([for dlsym()])
3540 AC_TRY_LINK(,[
3541 extern void* dlsym();
3542 dlsym();
3543 ],
3544 AC_MSG_RESULT(yes);
3545 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3546 AC_MSG_RESULT(no);
3547 AC_MSG_CHECKING([for dlsym() in -ldl])
3548 olibs=$LIBS
3549 LIBS="$LIBS -ldl"
3550 AC_TRY_LINK(,[
3551 extern void* dlsym();
3552 dlsym();
3553 ],
3554 AC_MSG_RESULT(yes);
3555 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3556 AC_MSG_RESULT(no);
3557 LIBS=$olibs))
3558elif test x${DLL} = xdl.h; then
3559 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3560 AC_MSG_CHECKING([for shl_load()])
3561 AC_TRY_LINK(,[
3562 extern void* shl_load();
3563 shl_load();
3564 ],
3565 AC_MSG_RESULT(yes);
3566 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3567 AC_MSG_RESULT(no);
3568 AC_MSG_CHECKING([for shl_load() in -ldld])
3569 olibs=$LIBS
3570 LIBS="$LIBS -ldld"
3571 AC_TRY_LINK(,[
3572 extern void* shl_load();
3573 shl_load();
3574 ],
3575 AC_MSG_RESULT(yes);
3576 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3577 AC_MSG_RESULT(no);
3578 LIBS=$olibs))
3579fi
3580AC_CHECK_HEADERS(setjmp.h)
3581
3582if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3583 dnl -ldl must come after DynaLoader.a
3584 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3585 LIBS=`echo $LIBS | sed s/-ldl//`
3586 PERL_LIBS="$PERL_LIBS -ldl"
3587 fi
3588fi
3589
Bram Moolenaar164fca32010-07-14 13:58:07 +02003590if test "x$MACOSX" = "xyes"; then
3591 AC_MSG_CHECKING(whether we need -framework Cocoa)
3592 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3593 dnl disabled during tiny build)
3594 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3595 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003596 AC_MSG_RESULT(yes)
3597 else
3598 AC_MSG_RESULT(no)
3599 fi
3600fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003601if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003602 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003603fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003604
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003605dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3606dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3607dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003608dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3609dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003610DEPEND_CFLAGS_FILTER=
3611if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003612 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003613 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003614 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003615 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003616 AC_MSG_RESULT(yes)
3617 else
3618 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003619 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003620 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3621 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003622 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003623 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003624 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3625 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003626 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 +00003627 AC_MSG_RESULT(yes)
3628 else
3629 AC_MSG_RESULT(no)
3630 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003631fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003632AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003633
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003634dnl link.sh tries to avoid overlinking in a hackish way.
3635dnl At least GNU ld supports --as-needed which provides the same functionality
3636dnl at linker level. Let's use it.
3637AC_MSG_CHECKING(linker --as-needed support)
3638LINK_AS_NEEDED=
3639# Check if linker supports --as-needed and --no-as-needed options
3640if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3641 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3642 LINK_AS_NEEDED=yes
3643fi
3644if test "$LINK_AS_NEEDED" = yes; then
3645 AC_MSG_RESULT(yes)
3646else
3647 AC_MSG_RESULT(no)
3648fi
3649AC_SUBST(LINK_AS_NEEDED)
3650
Bram Moolenaar77c19352012-06-13 19:19:41 +02003651# IBM z/OS reset CFLAGS for config.mk
3652if test "$zOSUnix" = "yes"; then
3653 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3654fi
3655
Bram Moolenaar071d4272004-06-13 20:20:40 +00003656dnl write output files
3657AC_OUTPUT(auto/config.mk:config.mk.in)
3658
3659dnl vim: set sw=2 tw=78 fo+=l: