blob: 2ede332adaea36d57e389766dd208cfde76abed9 [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 Moolenaar071d4272004-06-13 20:20:40 +0000332 echo " __CC_${ccn}MODE must be set to \"1\"!"
333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
340 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341 AC_MSG_RESULT(yes)
342 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200343 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(no)
345 ;;
346esac
347fi
348
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200349dnl Set QUOTESED. Needs additional backslashes on zOS
350if test "$zOSUnix" = "yes"; then
351 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
352else
353 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
354fi
355AC_SUBST(QUOTESED)
356
357
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000358dnl Link with -lselinux for SELinux stuff; if not found
359AC_MSG_CHECKING(--disable-selinux argument)
360AC_ARG_ENABLE(selinux,
361 [ --disable-selinux Don't check for SELinux support.],
362 , enable_selinux="yes")
363if test "$enable_selinux" = "yes"; then
364 AC_MSG_RESULT(no)
365 AC_CHECK_LIB(selinux, is_selinux_enabled,
366 [LIBS="$LIBS -lselinux"
367 AC_DEFINE(HAVE_SELINUX)])
368else
369 AC_MSG_RESULT(yes)
370fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000371
372dnl Check user requested features.
373
374AC_MSG_CHECKING(--with-features argument)
375AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
376 features="$withval"; AC_MSG_RESULT($features),
377 features="normal"; AC_MSG_RESULT(Defaulting to normal))
378
379dovimdiff=""
380dogvimdiff=""
381case "$features" in
382 tiny) AC_DEFINE(FEAT_TINY) ;;
383 small) AC_DEFINE(FEAT_SMALL) ;;
384 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
385 dogvimdiff="installgvimdiff" ;;
386 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
387 dogvimdiff="installgvimdiff" ;;
388 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
389 dogvimdiff="installgvimdiff" ;;
390 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
391esac
392
393AC_SUBST(dovimdiff)
394AC_SUBST(dogvimdiff)
395
396AC_MSG_CHECKING(--with-compiledby argument)
397AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
398 compiledby="$withval"; AC_MSG_RESULT($withval),
399 compiledby=""; AC_MSG_RESULT(no))
400AC_SUBST(compiledby)
401
402AC_MSG_CHECKING(--disable-xsmp argument)
403AC_ARG_ENABLE(xsmp,
404 [ --disable-xsmp Disable XSMP session management],
405 , enable_xsmp="yes")
406
407if test "$enable_xsmp" = "yes"; then
408 AC_MSG_RESULT(no)
409 AC_MSG_CHECKING(--disable-xsmp-interact argument)
410 AC_ARG_ENABLE(xsmp-interact,
411 [ --disable-xsmp-interact Disable XSMP interaction],
412 , enable_xsmp_interact="yes")
413 if test "$enable_xsmp_interact" = "yes"; then
414 AC_MSG_RESULT(no)
415 AC_DEFINE(USE_XSMP_INTERACT)
416 else
417 AC_MSG_RESULT(yes)
418 fi
419else
420 AC_MSG_RESULT(yes)
421fi
422
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200423dnl Check for Lua feature.
424AC_MSG_CHECKING(--enable-luainterp argument)
425AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200426 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200427 [enable_luainterp="no"])
428AC_MSG_RESULT($enable_luainterp)
429
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200430if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200431 dnl -- find the lua executable
432 AC_SUBST(vi_cv_path_lua)
433
434 AC_MSG_CHECKING(--with-lua-prefix argument)
435 AC_ARG_WITH(lua_prefix,
436 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
437 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200438 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200439
440 if test "X$with_lua_prefix" != "X"; then
441 vi_cv_path_lua_pfx="$with_lua_prefix"
442 else
443 AC_MSG_CHECKING(LUA_PREFIX environment var)
444 if test "X$LUA_PREFIX" != "X"; then
445 AC_MSG_RESULT("$LUA_PREFIX")
446 vi_cv_path_lua_pfx="$LUA_PREFIX"
447 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200448 AC_MSG_RESULT([not set, default to /usr])
449 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200450 fi
451 fi
452
453 LUA_INC=
454 if test "X$vi_cv_path_lua_pfx" != "X"; then
455 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
456 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200457 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200458 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200459 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200460 dnl -- try to find Lua executable
461 AC_PATH_PROG(vi_cv_path_lua, lua)
462 if test "X$vi_cv_path_lua" != "X"; then
463 dnl -- find Lua version
464 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200465 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200466 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
467 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200468 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200469 LUA_INC=/lua$vi_cv_version_lua
470 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200471 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200472 vi_cv_path_lua_pfx=
473 fi
474 fi
475 fi
476 fi
477
478 if test "X$vi_cv_path_lua_pfx" != "X"; then
479 if test "X$vi_cv_version_lua" != "X"; then
480 dnl Test alternate location using version
481 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
482 else
483 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
484 fi
485 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
486 LUA_SRC="if_lua.c"
487 LUA_OBJ="objects/if_lua.o"
488 LUA_PRO="if_lua.pro"
489 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200490 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar8220a682010-07-25 13:12:49 +0200491 dnl Determine the SONAME for the current version, but fallback to
492 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
493 for i in 0 1 2 3 4 5 6 7 8 9; do
494 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
495 LUA_SONAME=".$i"
496 break
497 fi
498 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200499 AC_DEFINE(DYNAMIC_LUA)
500 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200501 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200502 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200503 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100504 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
505 AC_MSG_ERROR([could not configure lua])
506 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200507 AC_SUBST(LUA_SRC)
508 AC_SUBST(LUA_OBJ)
509 AC_SUBST(LUA_PRO)
510 AC_SUBST(LUA_LIBS)
511 AC_SUBST(LUA_CFLAGS)
512fi
513
514
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000515dnl Check for MzScheme feature.
516AC_MSG_CHECKING(--enable-mzschemeinterp argument)
517AC_ARG_ENABLE(mzschemeinterp,
518 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
519 [enable_mzschemeinterp="no"])
520AC_MSG_RESULT($enable_mzschemeinterp)
521
522if test "$enable_mzschemeinterp" = "yes"; then
523 dnl -- find the mzscheme executable
524 AC_SUBST(vi_cv_path_mzscheme)
525
526 AC_MSG_CHECKING(--with-plthome argument)
527 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000528 [ --with-plthome=PLTHOME Use PLTHOME.],
529 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000530 with_plthome="";AC_MSG_RESULT("no"))
531
532 if test "X$with_plthome" != "X"; then
533 vi_cv_path_mzscheme_pfx="$with_plthome"
534 else
535 AC_MSG_CHECKING(PLTHOME environment var)
536 if test "X$PLTHOME" != "X"; then
537 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000538 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000539 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000540 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000541 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000542 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000543
544 dnl resolve symbolic link, the executable is often elsewhere and there
545 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000547 lsout=`ls -l $vi_cv_path_mzscheme`
548 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
549 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
550 fi
551 fi
552
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000553 if test "X$vi_cv_path_mzscheme" != "X"; then
554 dnl -- find where MzScheme thinks it was installed
555 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000556 dnl different versions of MzScheme differ in command line processing
557 dnl use universal approach
558 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000559 (build-path (call-with-values \
560 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000561 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
562 dnl Remove a trailing slash
563 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
564 sed -e 's+/$++'` ])
565 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000566 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000567 fi
568 fi
569
Bram Moolenaard7afed32007-05-06 13:26:41 +0000570 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000571 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
572 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
573 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000574 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
575 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000576 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000577 AC_MSG_RESULT(no)
578 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000579 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 AC_MSG_RESULT(yes)
581 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000582 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000583 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100584 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
585 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000586 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100587 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000588 else
589 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100590 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
591 if test -f /usr/include/plt/scheme.h; then
592 AC_MSG_RESULT(yes)
593 SCHEME_INC=/usr/include/plt
594 else
595 AC_MSG_RESULT(no)
596 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
597 if test -f /usr/include/racket/scheme.h; then
598 AC_MSG_RESULT(yes)
599 SCHEME_INC=/usr/include/racket
600 else
601 AC_MSG_RESULT(no)
602 vi_cv_path_mzscheme_pfx=
603 fi
604 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000606 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000607 fi
608 fi
609
610 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000611 if test "x$MACOSX" = "xyes"; then
612 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000613 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
614 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
615 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100616 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
617 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
618 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
619 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
620 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
621 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000622 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 +0000623 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 dnl Using shared objects
625 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
626 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
627 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100628 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
629 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
630 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
631 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
632 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 else
634 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
635 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000636 if test "$GCC" = yes; then
637 dnl Make Vim remember the path to the library. For when it's not in
638 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000639 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000640 elif test "`(uname) 2>/dev/null`" = SunOS &&
641 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000642 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000643 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000644 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000645 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
646 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100647 else
648 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
649 SCHEME_COLLECTS=lib/racket/
650 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000651 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000652 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100654 else
655 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
656 MZSCHEME_EXTRA="mzscheme_base.c"
657 fi
658 fi
659 if test "X$MZSCHEME_EXTRA" != "X" ; then
660 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000661 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
662 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
663 fi
664 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000665 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000666 MZSCHEME_SRC="if_mzsch.c"
667 MZSCHEME_OBJ="objects/if_mzsch.o"
668 MZSCHEME_PRO="if_mzsch.pro"
669 AC_DEFINE(FEAT_MZSCHEME)
670 fi
671 AC_SUBST(MZSCHEME_SRC)
672 AC_SUBST(MZSCHEME_OBJ)
673 AC_SUBST(MZSCHEME_PRO)
674 AC_SUBST(MZSCHEME_LIBS)
675 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000676 AC_SUBST(MZSCHEME_EXTRA)
677 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000678fi
679
680
Bram Moolenaar071d4272004-06-13 20:20:40 +0000681AC_MSG_CHECKING(--enable-perlinterp argument)
682AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200683 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684 [enable_perlinterp="no"])
685AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200686if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000687 AC_SUBST(vi_cv_path_perl)
688 AC_PATH_PROG(vi_cv_path_perl, perl)
689 if test "X$vi_cv_path_perl" != "X"; then
690 AC_MSG_CHECKING(Perl version)
691 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
692 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200693 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000694 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
695 badthreads=no
696 else
697 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
698 eval `$vi_cv_path_perl -V:use5005threads`
699 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
700 badthreads=no
701 else
702 badthreads=yes
703 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
704 fi
705 else
706 badthreads=yes
707 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
708 fi
709 fi
710 if test $badthreads = no; then
711 AC_MSG_RESULT(OK)
712 eval `$vi_cv_path_perl -V:shrpenv`
713 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
714 shrpenv=""
715 fi
716 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
717 AC_SUBST(vi_cv_perllib)
718 dnl Remove "-fno-something", it breaks using cproto.
719 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
720 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
721 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
722 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
723 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
724 -e 's/-bE:perl.exp//' -e 's/-lc //'`
725 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
726 dnl a test in configure may fail because of that.
727 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
728 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
729
730 dnl check that compiling a simple program still works with the flags
731 dnl added for Perl.
732 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
733 cflags_save=$CFLAGS
734 libs_save=$LIBS
735 ldflags_save=$LDFLAGS
736 CFLAGS="$CFLAGS $perlcppflags"
737 LIBS="$LIBS $perllibs"
738 LDFLAGS="$perlldflags $LDFLAGS"
739 AC_TRY_LINK(,[ ],
740 AC_MSG_RESULT(yes); perl_ok=yes,
741 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
742 CFLAGS=$cflags_save
743 LIBS=$libs_save
744 LDFLAGS=$ldflags_save
745 if test $perl_ok = yes; then
746 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000747 dnl remove -pipe and -Wxxx, it confuses cproto
748 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000749 fi
750 if test "X$perlldflags" != "X"; then
751 LDFLAGS="$perlldflags $LDFLAGS"
752 fi
753 PERL_LIBS=$perllibs
754 PERL_SRC="auto/if_perl.c if_perlsfio.c"
755 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
756 PERL_PRO="if_perl.pro if_perlsfio.pro"
757 AC_DEFINE(FEAT_PERL)
758 fi
759 fi
760 else
761 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
762 fi
763 fi
764
765 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000766 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000767 dir=/System/Library/Perl
768 darwindir=$dir/darwin
769 if test -d $darwindir; then
770 PERL=/usr/bin/perl
771 else
772 dnl Mac OS X 10.3
773 dir=/System/Library/Perl/5.8.1
774 darwindir=$dir/darwin-thread-multi-2level
775 if test -d $darwindir; then
776 PERL=/usr/bin/perl
777 fi
778 fi
779 if test -n "$PERL"; then
780 PERL_DIR="$dir"
781 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
782 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
783 PERL_LIBS="-L$darwindir/CORE -lperl"
784 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200785 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
786 dnl be included if requested by passing --with-mac-arch to
787 dnl configure, so strip these flags first (if present)
788 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
789 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 +0000790 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200791 if test "$enable_perlinterp" = "dynamic"; then
792 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
793 AC_DEFINE(DYNAMIC_PERL)
794 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
795 fi
796 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100797
798 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
799 AC_MSG_ERROR([could not configure perl])
800 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000801fi
802AC_SUBST(shrpenv)
803AC_SUBST(PERL_SRC)
804AC_SUBST(PERL_OBJ)
805AC_SUBST(PERL_PRO)
806AC_SUBST(PERL_CFLAGS)
807AC_SUBST(PERL_LIBS)
808
809AC_MSG_CHECKING(--enable-pythoninterp argument)
810AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200811 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000812 [enable_pythoninterp="no"])
813AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200814if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 dnl -- find the python executable
816 AC_PATH_PROG(vi_cv_path_python, python)
817 if test "X$vi_cv_path_python" != "X"; then
818
819 dnl -- get its version number
820 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
821 [[vi_cv_var_python_version=`
822 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
823 ]])
824
825 dnl -- it must be at least version 1.4
826 AC_MSG_CHECKING(Python is 1.4 or better)
827 if ${vi_cv_path_python} -c \
828 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
829 then
830 AC_MSG_RESULT(yep)
831
832 dnl -- find where python thinks it was installed
833 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
834 [ vi_cv_path_python_pfx=`
835 ${vi_cv_path_python} -c \
836 "import sys; print sys.prefix"` ])
837
838 dnl -- and where it thinks it runs
839 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
840 [ vi_cv_path_python_epfx=`
841 ${vi_cv_path_python} -c \
842 "import sys; print sys.exec_prefix"` ])
843
844 dnl -- python's internal library path
845
846 AC_CACHE_VAL(vi_cv_path_pythonpath,
847 [ vi_cv_path_pythonpath=`
848 unset PYTHONPATH;
849 ${vi_cv_path_python} -c \
850 "import sys, string; print string.join(sys.path,':')"` ])
851
852 dnl -- where the Python implementation library archives are
853
854 AC_ARG_WITH(python-config-dir,
855 [ --with-python-config-dir=PATH Python's config directory],
856 [ vi_cv_path_python_conf="${withval}" ] )
857
858 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
859 [
860 vi_cv_path_python_conf=
861 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000862 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000863 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
864 if test -d "$d" && test -f "$d/config.c"; then
865 vi_cv_path_python_conf="$d"
866 fi
867 done
868 done
869 ])
870
871 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
872
873 if test "X$PYTHON_CONFDIR" = "X"; then
874 AC_MSG_RESULT([can't find it!])
875 else
876
877 dnl -- we need to examine Python's config/Makefile too
878 dnl see what the interpreter is built from
879 AC_CACHE_VAL(vi_cv_path_python_plibs,
880 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000881 pwd=`pwd`
882 tmp_mkf="$pwd/config-PyMake$$"
883 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000884__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200885 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000886 @echo "python_LIBS='$(LIBS)'"
887 @echo "python_SYSLIBS='$(SYSLIBS)'"
888 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200889 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000890eof
891 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000892 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
893 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000894 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
895 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
896 vi_cv_path_python_plibs="-framework Python"
897 else
898 if test "${vi_cv_var_python_version}" = "1.4"; then
899 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
900 else
901 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
902 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200903 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 +0000904 dnl remove -ltermcap, it can conflict with an earlier -lncurses
905 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
906 fi
907 ])
908
909 PYTHON_LIBS="${vi_cv_path_python_plibs}"
910 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100911 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 +0000912 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100913 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 +0000914 fi
915 PYTHON_SRC="if_python.c"
916 dnl For Mac OSX 10.2 config.o is included in the Python library.
917 if test "x$MACOSX" = "xyes"; then
918 PYTHON_OBJ="objects/if_python.o"
919 else
920 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
921 fi
922 if test "${vi_cv_var_python_version}" = "1.4"; then
923 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
924 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100925 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 +0000926
927 dnl On FreeBSD linking with "-pthread" is required to use threads.
928 dnl _THREAD_SAFE must be used for compiling then.
929 dnl The "-pthread" is added to $LIBS, so that the following check for
930 dnl sigaltstack() will look in libc_r (it's there in libc!).
931 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
932 dnl will then define target-specific defines, e.g., -D_REENTRANT.
933 dnl Don't do this for Mac OSX, -pthread will generate a warning.
934 AC_MSG_CHECKING([if -pthread should be used])
935 threadsafe_flag=
936 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000937 dnl if test "x$MACOSX" != "xyes"; then
938 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000939 test "$GCC" = yes && threadsafe_flag="-pthread"
940 if test "`(uname) 2>/dev/null`" = FreeBSD; then
941 threadsafe_flag="-D_THREAD_SAFE"
942 thread_lib="-pthread"
943 fi
944 fi
945 libs_save_old=$LIBS
946 if test -n "$threadsafe_flag"; then
947 cflags_save=$CFLAGS
948 CFLAGS="$CFLAGS $threadsafe_flag"
949 LIBS="$LIBS $thread_lib"
950 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200951 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000952 AC_MSG_RESULT(no); LIBS=$libs_save_old
953 )
954 CFLAGS=$cflags_save
955 else
956 AC_MSG_RESULT(no)
957 fi
958
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200959 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000960 dnl added for Python.
961 AC_MSG_CHECKING([if compile and link flags for Python are sane])
962 cflags_save=$CFLAGS
963 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200964 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000965 LIBS="$LIBS $PYTHON_LIBS"
966 AC_TRY_LINK(,[ ],
967 AC_MSG_RESULT(yes); python_ok=yes,
968 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
969 CFLAGS=$cflags_save
970 LIBS=$libs_save
971 if test $python_ok = yes; then
972 AC_DEFINE(FEAT_PYTHON)
973 else
974 LIBS=$libs_save_old
975 PYTHON_SRC=
976 PYTHON_OBJ=
977 PYTHON_LIBS=
978 PYTHON_CFLAGS=
979 fi
980
981 fi
982 else
983 AC_MSG_RESULT(too old)
984 fi
985 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100986
987 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
988 AC_MSG_ERROR([could not configure python])
989 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000990fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200991
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992AC_SUBST(PYTHON_CONFDIR)
993AC_SUBST(PYTHON_LIBS)
994AC_SUBST(PYTHON_GETPATH_CFLAGS)
995AC_SUBST(PYTHON_CFLAGS)
996AC_SUBST(PYTHON_SRC)
997AC_SUBST(PYTHON_OBJ)
998
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200999
1000AC_MSG_CHECKING(--enable-python3interp argument)
1001AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001002 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001003 [enable_python3interp="no"])
1004AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001005if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001006 dnl -- find the python3 executable
1007 AC_PATH_PROG(vi_cv_path_python3, python3)
1008 if test "X$vi_cv_path_python3" != "X"; then
1009
1010 dnl -- get its version number
1011 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1012 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001013 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001014 ]])
1015
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001016 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1017 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1018 [
1019 vi_cv_var_python3_abiflags=
1020 if ${vi_cv_path_python3} -c \
1021 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1022 then
1023 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1024 "import sys; print(sys.abiflags)"`
1025 fi ])
1026
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001027 dnl -- find where python3 thinks it was installed
1028 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1029 [ vi_cv_path_python3_pfx=`
1030 ${vi_cv_path_python3} -c \
1031 "import sys; print(sys.prefix)"` ])
1032
1033 dnl -- and where it thinks it runs
1034 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1035 [ vi_cv_path_python3_epfx=`
1036 ${vi_cv_path_python3} -c \
1037 "import sys; print(sys.exec_prefix)"` ])
1038
1039 dnl -- python3's internal library path
1040
1041 AC_CACHE_VAL(vi_cv_path_python3path,
1042 [ vi_cv_path_python3path=`
1043 unset PYTHONPATH;
1044 ${vi_cv_path_python3} -c \
1045 "import sys, string; print(':'.join(sys.path))"` ])
1046
1047 dnl -- where the Python implementation library archives are
1048
1049 AC_ARG_WITH(python3-config-dir,
1050 [ --with-python3-config-dir=PATH Python's config directory],
1051 [ vi_cv_path_python3_conf="${withval}" ] )
1052
1053 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1054 [
1055 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001056 config_dir="config"
1057 if test "${vi_cv_var_python3_abiflags}" != ""; then
1058 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1059 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001060 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001061 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001062 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001063 if test -d "$d" && test -f "$d/config.c"; then
1064 vi_cv_path_python3_conf="$d"
1065 fi
1066 done
1067 done
1068 ])
1069
1070 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1071
1072 if test "X$PYTHON3_CONFDIR" = "X"; then
1073 AC_MSG_RESULT([can't find it!])
1074 else
1075
1076 dnl -- we need to examine Python's config/Makefile too
1077 dnl see what the interpreter is built from
1078 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1079 [
1080 pwd=`pwd`
1081 tmp_mkf="$pwd/config-PyMake$$"
1082 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1083__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001084 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001085 @echo "python3_LIBS='$(LIBS)'"
1086 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001087 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001088eof
1089 dnl -- delete the lines from make about Entering/Leaving directory
1090 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1091 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001092 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 +02001093 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001094 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1095 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1096 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1097 ])
1098
1099 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1100 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001101 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 +02001102 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001103 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 +02001104 fi
1105 PYTHON3_SRC="if_python3.c"
1106 dnl For Mac OSX 10.2 config.o is included in the Python library.
1107 if test "x$MACOSX" = "xyes"; then
1108 PYTHON3_OBJ="objects/if_python3.o"
1109 else
1110 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1111 fi
1112
1113 dnl On FreeBSD linking with "-pthread" is required to use threads.
1114 dnl _THREAD_SAFE must be used for compiling then.
1115 dnl The "-pthread" is added to $LIBS, so that the following check for
1116 dnl sigaltstack() will look in libc_r (it's there in libc!).
1117 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1118 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1119 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1120 AC_MSG_CHECKING([if -pthread should be used])
1121 threadsafe_flag=
1122 thread_lib=
1123 dnl if test "x$MACOSX" != "xyes"; then
1124 if test "`(uname) 2>/dev/null`" != Darwin; then
1125 test "$GCC" = yes && threadsafe_flag="-pthread"
1126 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1127 threadsafe_flag="-D_THREAD_SAFE"
1128 thread_lib="-pthread"
1129 fi
1130 fi
1131 libs_save_old=$LIBS
1132 if test -n "$threadsafe_flag"; then
1133 cflags_save=$CFLAGS
1134 CFLAGS="$CFLAGS $threadsafe_flag"
1135 LIBS="$LIBS $thread_lib"
1136 AC_TRY_LINK(,[ ],
1137 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1138 AC_MSG_RESULT(no); LIBS=$libs_save_old
1139 )
1140 CFLAGS=$cflags_save
1141 else
1142 AC_MSG_RESULT(no)
1143 fi
1144
1145 dnl check that compiling a simple program still works with the flags
1146 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001147 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001148 cflags_save=$CFLAGS
1149 libs_save=$LIBS
1150 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1151 LIBS="$LIBS $PYTHON3_LIBS"
1152 AC_TRY_LINK(,[ ],
1153 AC_MSG_RESULT(yes); python3_ok=yes,
1154 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1155 CFLAGS=$cflags_save
1156 LIBS=$libs_save
1157 if test "$python3_ok" = yes; then
1158 AC_DEFINE(FEAT_PYTHON3)
1159 else
1160 LIBS=$libs_save_old
1161 PYTHON3_SRC=
1162 PYTHON3_OBJ=
1163 PYTHON3_LIBS=
1164 PYTHON3_CFLAGS=
1165 fi
1166 fi
1167 fi
1168fi
1169
1170AC_SUBST(PYTHON3_CONFDIR)
1171AC_SUBST(PYTHON3_LIBS)
1172AC_SUBST(PYTHON3_CFLAGS)
1173AC_SUBST(PYTHON3_SRC)
1174AC_SUBST(PYTHON3_OBJ)
1175
1176dnl if python2.x and python3.x are enabled one can only link in code
1177dnl with dlopen(), dlsym(), dlclose()
1178if test "$python_ok" = yes && test "$python3_ok" = yes; then
1179 AC_DEFINE(DYNAMIC_PYTHON)
1180 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001181 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001182 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001183 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001184 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001185 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1186 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001187 AC_RUN_IFELSE([
1188 #include <dlfcn.h>
1189 /* If this program fails, then RTLD_GLOBAL is needed.
1190 * RTLD_GLOBAL will be used and then it is not possible to
1191 * have both python versions enabled in the same vim instance.
1192 * Only the first pyhton version used will be switched on.
1193 */
1194
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001195 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001196 {
1197 int needed = 0;
1198 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1199 if (pylib != 0)
1200 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001201 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001202 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1203 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1204 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001205 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001206 (*init)();
1207 needed = (*simple)("import termios") == -1;
1208 (*final)();
1209 dlclose(pylib);
1210 }
1211 return !needed;
1212 }
1213
1214 int main(int argc, char** argv)
1215 {
1216 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001217 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001218 not_needed = 1;
1219 return !not_needed;
1220 }],
1221 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001222
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001223 CFLAGS=$cflags_save
1224 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001225
1226 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1227 cflags_save=$CFLAGS
1228 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1229 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001230 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1231 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001232 AC_RUN_IFELSE([
1233 #include <dlfcn.h>
1234 #include <wchar.h>
1235 /* If this program fails, then RTLD_GLOBAL is needed.
1236 * RTLD_GLOBAL will be used and then it is not possible to
1237 * have both python versions enabled in the same vim instance.
1238 * Only the first pyhton version used will be switched on.
1239 */
1240
1241 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1242 {
1243 int needed = 0;
1244 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1245 if (pylib != 0)
1246 {
1247 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1248 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1249 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1250 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1251 (*pfx)(prefix);
1252 (*init)();
1253 needed = (*simple)("import termios") == -1;
1254 (*final)();
1255 dlclose(pylib);
1256 }
1257 return !needed;
1258 }
1259
1260 int main(int argc, char** argv)
1261 {
1262 int not_needed = 0;
1263 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1264 not_needed = 1;
1265 return !not_needed;
1266 }],
1267 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1268
1269 CFLAGS=$cflags_save
1270 LDFLAGS=$ldflags_save
1271
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001272 PYTHON_SRC="if_python.c"
1273 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001274 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001275 PYTHON_LIBS=
1276 PYTHON3_SRC="if_python3.c"
1277 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001278 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001279 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001280elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1281 AC_DEFINE(DYNAMIC_PYTHON)
1282 PYTHON_SRC="if_python.c"
1283 PYTHON_OBJ="objects/if_python.o"
1284 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1285 PYTHON_LIBS=
1286elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1287 AC_DEFINE(DYNAMIC_PYTHON3)
1288 PYTHON3_SRC="if_python3.c"
1289 PYTHON3_OBJ="objects/if_python3.o"
1290 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1291 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001292fi
1293
Bram Moolenaar071d4272004-06-13 20:20:40 +00001294AC_MSG_CHECKING(--enable-tclinterp argument)
1295AC_ARG_ENABLE(tclinterp,
1296 [ --enable-tclinterp Include Tcl interpreter.], ,
1297 [enable_tclinterp="no"])
1298AC_MSG_RESULT($enable_tclinterp)
1299
1300if test "$enable_tclinterp" = "yes"; then
1301
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001302 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001303 AC_MSG_CHECKING(--with-tclsh argument)
1304 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1305 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001306 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001307 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1308 AC_SUBST(vi_cv_path_tcl)
1309
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001310 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1311 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1312 tclsh_name="tclsh8.4"
1313 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1314 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001315 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001316 tclsh_name="tclsh8.2"
1317 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1318 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001319 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1320 tclsh_name="tclsh8.0"
1321 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1322 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001323 dnl still didn't find it, try without version number
1324 if test "X$vi_cv_path_tcl" = "X"; then
1325 tclsh_name="tclsh"
1326 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1327 fi
1328 if test "X$vi_cv_path_tcl" != "X"; then
1329 AC_MSG_CHECKING(Tcl version)
1330 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1331 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1332 AC_MSG_RESULT($tclver - OK);
1333 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 -`
1334
1335 AC_MSG_CHECKING(for location of Tcl include)
1336 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001337 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 +00001338 else
1339 dnl For Mac OS X 10.3, use the OS-provided framework location
1340 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1341 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001342 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001343 for try in $tclinc; do
1344 if test -f "$try/tcl.h"; then
1345 AC_MSG_RESULT($try/tcl.h)
1346 TCL_INC=$try
1347 break
1348 fi
1349 done
1350 if test -z "$TCL_INC"; then
1351 AC_MSG_RESULT(<not found>)
1352 SKIP_TCL=YES
1353 fi
1354 if test -z "$SKIP_TCL"; then
1355 AC_MSG_CHECKING(for location of tclConfig.sh script)
1356 if test "x$MACOSX" != "xyes"; then
1357 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001358 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001359 else
1360 dnl For Mac OS X 10.3, use the OS-provided framework location
1361 tclcnf="/System/Library/Frameworks/Tcl.framework"
1362 fi
1363 for try in $tclcnf; do
1364 if test -f $try/tclConfig.sh; then
1365 AC_MSG_RESULT($try/tclConfig.sh)
1366 . $try/tclConfig.sh
1367 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1368 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1369 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001370 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001371 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 +00001372 break
1373 fi
1374 done
1375 if test -z "$TCL_LIBS"; then
1376 AC_MSG_RESULT(<not found>)
1377 AC_MSG_CHECKING(for Tcl library by myself)
1378 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001379 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001380 for ext in .so .a ; do
1381 for ver in "" $tclver ; do
1382 for try in $tcllib ; do
1383 trylib=tcl$ver$ext
1384 if test -f $try/lib$trylib ; then
1385 AC_MSG_RESULT($try/lib$trylib)
1386 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1387 if test "`(uname) 2>/dev/null`" = SunOS &&
1388 uname -r | grep '^5' >/dev/null; then
1389 TCL_LIBS="$TCL_LIBS -R $try"
1390 fi
1391 break 3
1392 fi
1393 done
1394 done
1395 done
1396 if test -z "$TCL_LIBS"; then
1397 AC_MSG_RESULT(<not found>)
1398 SKIP_TCL=YES
1399 fi
1400 fi
1401 if test -z "$SKIP_TCL"; then
1402 AC_DEFINE(FEAT_TCL)
1403 TCL_SRC=if_tcl.c
1404 TCL_OBJ=objects/if_tcl.o
1405 TCL_PRO=if_tcl.pro
1406 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1407 fi
1408 fi
1409 else
1410 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1411 fi
1412 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001413 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1414 AC_MSG_ERROR([could not configure Tcl])
1415 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001416fi
1417AC_SUBST(TCL_SRC)
1418AC_SUBST(TCL_OBJ)
1419AC_SUBST(TCL_PRO)
1420AC_SUBST(TCL_CFLAGS)
1421AC_SUBST(TCL_LIBS)
1422
1423AC_MSG_CHECKING(--enable-rubyinterp argument)
1424AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001425 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001426 [enable_rubyinterp="no"])
1427AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001428if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001429 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001430 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001431 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1432 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1433 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001434 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001435 if test "X$vi_cv_path_ruby" != "X"; then
1436 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001437 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 +00001438 AC_MSG_RESULT(OK)
1439 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001440 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 +00001441 if test "X$rubyhdrdir" != "X"; then
1442 AC_MSG_RESULT($rubyhdrdir)
1443 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001444 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1445 if test -d "$rubyhdrdir/$rubyarch"; then
1446 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1447 fi
1448 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1449 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001450 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1451 if test "X$rubylibs" != "X"; then
1452 RUBY_LIBS="$rubylibs"
1453 fi
1454 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001455 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1456 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1457 if test -f "$rubylibdir/$librubya"; then
1458 librubyarg="$librubyarg"
1459 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1460 elif test "$librubyarg" = "libruby.a"; then
1461 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1462 librubyarg="-lruby"
1463 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001464 fi
1465
1466 if test "X$librubyarg" != "X"; then
1467 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1468 fi
1469 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1470 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001471 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1472 dnl be included if requested by passing --with-mac-arch to
1473 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001474 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001475 if test "X$rubyldflags" != "X"; then
1476 LDFLAGS="$rubyldflags $LDFLAGS"
1477 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001478 fi
1479 RUBY_SRC="if_ruby.c"
1480 RUBY_OBJ="objects/if_ruby.o"
1481 RUBY_PRO="if_ruby.pro"
1482 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001483 if test "$enable_rubyinterp" = "dynamic"; then
1484 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1485 AC_DEFINE(DYNAMIC_RUBY)
1486 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1487 RUBY_LIBS=
1488 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001489 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001490 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001491 fi
1492 else
1493 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1494 fi
1495 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001496
1497 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1498 AC_MSG_ERROR([could not configure Ruby])
1499 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001500fi
1501AC_SUBST(RUBY_SRC)
1502AC_SUBST(RUBY_OBJ)
1503AC_SUBST(RUBY_PRO)
1504AC_SUBST(RUBY_CFLAGS)
1505AC_SUBST(RUBY_LIBS)
1506
1507AC_MSG_CHECKING(--enable-cscope argument)
1508AC_ARG_ENABLE(cscope,
1509 [ --enable-cscope Include cscope interface.], ,
1510 [enable_cscope="no"])
1511AC_MSG_RESULT($enable_cscope)
1512if test "$enable_cscope" = "yes"; then
1513 AC_DEFINE(FEAT_CSCOPE)
1514fi
1515
1516AC_MSG_CHECKING(--enable-workshop argument)
1517AC_ARG_ENABLE(workshop,
1518 [ --enable-workshop Include Sun Visual Workshop support.], ,
1519 [enable_workshop="no"])
1520AC_MSG_RESULT($enable_workshop)
1521if test "$enable_workshop" = "yes"; then
1522 AC_DEFINE(FEAT_SUN_WORKSHOP)
1523 WORKSHOP_SRC="workshop.c integration.c"
1524 AC_SUBST(WORKSHOP_SRC)
1525 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1526 AC_SUBST(WORKSHOP_OBJ)
1527 if test "${enable_gui-xxx}" = xxx; then
1528 enable_gui=motif
1529 fi
1530fi
1531
1532AC_MSG_CHECKING(--disable-netbeans argument)
1533AC_ARG_ENABLE(netbeans,
1534 [ --disable-netbeans Disable NetBeans integration support.],
1535 , [enable_netbeans="yes"])
1536if test "$enable_netbeans" = "yes"; then
1537 AC_MSG_RESULT(no)
1538 dnl On Solaris we need the socket and nsl library.
1539 AC_CHECK_LIB(socket, socket)
1540 AC_CHECK_LIB(nsl, gethostbyname)
1541 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1542 AC_TRY_LINK([
1543#include <stdio.h>
1544#include <stdlib.h>
1545#include <stdarg.h>
1546#include <fcntl.h>
1547#include <netdb.h>
1548#include <netinet/in.h>
1549#include <errno.h>
1550#include <sys/types.h>
1551#include <sys/socket.h>
1552 /* Check bitfields */
1553 struct nbbuf {
1554 unsigned int initDone:1;
1555 ushort signmaplen;
1556 };
1557 ], [
1558 /* Check creating a socket. */
1559 struct sockaddr_in server;
1560 (void)socket(AF_INET, SOCK_STREAM, 0);
1561 (void)htons(100);
1562 (void)gethostbyname("microsoft.com");
1563 if (errno == ECONNREFUSED)
1564 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1565 ],
1566 AC_MSG_RESULT(yes),
1567 AC_MSG_RESULT(no); enable_netbeans="no")
1568else
1569 AC_MSG_RESULT(yes)
1570fi
1571if test "$enable_netbeans" = "yes"; then
1572 AC_DEFINE(FEAT_NETBEANS_INTG)
1573 NETBEANS_SRC="netbeans.c"
1574 AC_SUBST(NETBEANS_SRC)
1575 NETBEANS_OBJ="objects/netbeans.o"
1576 AC_SUBST(NETBEANS_OBJ)
1577fi
1578
1579AC_MSG_CHECKING(--enable-sniff argument)
1580AC_ARG_ENABLE(sniff,
1581 [ --enable-sniff Include Sniff interface.], ,
1582 [enable_sniff="no"])
1583AC_MSG_RESULT($enable_sniff)
1584if test "$enable_sniff" = "yes"; then
1585 AC_DEFINE(FEAT_SNIFF)
1586 SNIFF_SRC="if_sniff.c"
1587 AC_SUBST(SNIFF_SRC)
1588 SNIFF_OBJ="objects/if_sniff.o"
1589 AC_SUBST(SNIFF_OBJ)
1590fi
1591
1592AC_MSG_CHECKING(--enable-multibyte argument)
1593AC_ARG_ENABLE(multibyte,
1594 [ --enable-multibyte Include multibyte editing support.], ,
1595 [enable_multibyte="no"])
1596AC_MSG_RESULT($enable_multibyte)
1597if test "$enable_multibyte" = "yes"; then
1598 AC_DEFINE(FEAT_MBYTE)
1599fi
1600
1601AC_MSG_CHECKING(--enable-hangulinput argument)
1602AC_ARG_ENABLE(hangulinput,
1603 [ --enable-hangulinput Include Hangul input support.], ,
1604 [enable_hangulinput="no"])
1605AC_MSG_RESULT($enable_hangulinput)
1606
1607AC_MSG_CHECKING(--enable-xim argument)
1608AC_ARG_ENABLE(xim,
1609 [ --enable-xim Include XIM input support.],
1610 AC_MSG_RESULT($enable_xim),
1611 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001612
1613AC_MSG_CHECKING(--enable-fontset argument)
1614AC_ARG_ENABLE(fontset,
1615 [ --enable-fontset Include X fontset output support.], ,
1616 [enable_fontset="no"])
1617AC_MSG_RESULT($enable_fontset)
1618dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1619
1620test -z "$with_x" && with_x=yes
1621test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1622if test "$with_x" = no; then
1623 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1624else
1625 dnl Do this check early, so that its failure can override user requests.
1626
1627 AC_PATH_PROG(xmkmfpath, xmkmf)
1628
1629 AC_PATH_XTRA
1630
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001631 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001632 dnl be compiled with a special option.
1633 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001634 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001635 CFLAGS="$CFLAGS -W c,dll"
1636 LDFLAGS="$LDFLAGS -W l,dll"
1637 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1638 fi
1639
1640 dnl On my HPUX system the X include dir is found, but the lib dir not.
1641 dnl This is a desparate try to fix this.
1642
1643 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1644 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1645 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1646 X_LIBS="$X_LIBS -L$x_libraries"
1647 if test "`(uname) 2>/dev/null`" = SunOS &&
1648 uname -r | grep '^5' >/dev/null; then
1649 X_LIBS="$X_LIBS -R $x_libraries"
1650 fi
1651 fi
1652
1653 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1654 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1655 AC_MSG_RESULT(Corrected X includes to $x_includes)
1656 X_CFLAGS="$X_CFLAGS -I$x_includes"
1657 fi
1658
1659 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1660 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1661 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1662 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1663 dnl Same for "-R/usr/lib ".
1664 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1665
1666
1667 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001668 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1669 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001670 AC_MSG_CHECKING(if X11 header files can be found)
1671 cflags_save=$CFLAGS
1672 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001673 AC_TRY_COMPILE([#include <X11/Xlib.h>
1674#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001675 AC_MSG_RESULT(yes),
1676 AC_MSG_RESULT(no); no_x=yes)
1677 CFLAGS=$cflags_save
1678
1679 if test "${no_x-no}" = yes; then
1680 with_x=no
1681 else
1682 AC_DEFINE(HAVE_X11)
1683 X_LIB="-lXt -lX11";
1684 AC_SUBST(X_LIB)
1685
1686 ac_save_LDFLAGS="$LDFLAGS"
1687 LDFLAGS="-L$x_libraries $LDFLAGS"
1688
1689 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1690 dnl For HP-UX 10.20 it must be before -lSM -lICE
1691 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1692 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1693
1694 dnl Some systems need -lnsl -lsocket when testing for ICE.
1695 dnl The check above doesn't do this, try here (again). Also needed to get
1696 dnl them after Xdmcp. link.sh will remove them when not needed.
1697 dnl Check for other function than above to avoid the cached value
1698 AC_CHECK_LIB(ICE, IceOpenConnection,
1699 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1700
1701 dnl Check for -lXpm (needed for some versions of Motif)
1702 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1703 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1704 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1705
1706 dnl Check that the X11 header files don't use implicit declarations
1707 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1708 cflags_save=$CFLAGS
1709 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1710 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1711 AC_MSG_RESULT(no),
1712 CFLAGS="$CFLAGS -Wno-implicit-int"
1713 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1714 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1715 AC_MSG_RESULT(test failed)
1716 )
1717 )
1718 CFLAGS=$cflags_save
1719
1720 LDFLAGS="$ac_save_LDFLAGS"
1721
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001722 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1723 AC_CACHE_VAL(ac_cv_small_wchar_t,
1724 [AC_TRY_RUN([
1725#include <X11/Xlib.h>
1726#if STDC_HEADERS
1727# include <stdlib.h>
1728# include <stddef.h>
1729#endif
1730 main()
1731 {
1732 if (sizeof(wchar_t) <= 2)
1733 exit(1);
1734 exit(0);
1735 }],
1736 ac_cv_small_wchar_t="no",
1737 ac_cv_small_wchar_t="yes",
1738 AC_MSG_ERROR(failed to compile test program))])
1739 AC_MSG_RESULT($ac_cv_small_wchar_t)
1740 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1741 AC_DEFINE(SMALL_WCHAR_T)
1742 fi
1743
Bram Moolenaar071d4272004-06-13 20:20:40 +00001744 fi
1745fi
1746
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001747test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001748
1749AC_MSG_CHECKING(--enable-gui argument)
1750AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001751 [ --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 +00001752
1753dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1754dnl Do not use character classes for portability with old tools.
1755enable_gui_canon=`echo "_$enable_gui" | \
1756 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1757
1758dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001759SKIP_GTK2=YES
1760SKIP_GNOME=YES
1761SKIP_MOTIF=YES
1762SKIP_ATHENA=YES
1763SKIP_NEXTAW=YES
1764SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765SKIP_CARBON=YES
1766GUITYPE=NONE
1767
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001768if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001769 SKIP_PHOTON=
1770 case "$enable_gui_canon" in
1771 no) AC_MSG_RESULT(no GUI support)
1772 SKIP_PHOTON=YES ;;
1773 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1774 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1775 photon) AC_MSG_RESULT(Photon GUI support) ;;
1776 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1777 SKIP_PHOTON=YES ;;
1778 esac
1779
1780elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1781 SKIP_CARBON=
1782 case "$enable_gui_canon" in
1783 no) AC_MSG_RESULT(no GUI support)
1784 SKIP_CARBON=YES ;;
1785 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001786 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1787 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1789 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1790 SKIP_CARBON=YES ;;
1791 esac
1792
1793else
1794
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795 case "$enable_gui_canon" in
1796 no|none) AC_MSG_RESULT(no GUI support) ;;
1797 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798 SKIP_GTK2=
1799 SKIP_GNOME=
1800 SKIP_MOTIF=
1801 SKIP_ATHENA=
1802 SKIP_NEXTAW=
1803 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001806 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1807 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001808 SKIP_GTK2=;;
1809 motif) AC_MSG_RESULT(Motif GUI support)
1810 SKIP_MOTIF=;;
1811 athena) AC_MSG_RESULT(Athena GUI support)
1812 SKIP_ATHENA=;;
1813 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1814 SKIP_NEXTAW=;;
1815 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1816 esac
1817
1818fi
1819
Bram Moolenaar071d4272004-06-13 20:20:40 +00001820if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1821 -a "$enable_gui_canon" != "gnome2"; then
1822 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1823 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001824 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001825 , enable_gtk2_check="yes")
1826 AC_MSG_RESULT($enable_gtk2_check)
1827 if test "x$enable_gtk2_check" = "xno"; then
1828 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001829 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001830 fi
1831fi
1832
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001833if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834 AC_MSG_CHECKING(whether or not to look for GNOME)
1835 AC_ARG_ENABLE(gnome-check,
1836 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1837 , enable_gnome_check="no")
1838 AC_MSG_RESULT($enable_gnome_check)
1839 if test "x$enable_gnome_check" = "xno"; then
1840 SKIP_GNOME=YES
1841 fi
1842fi
1843
1844if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1845 AC_MSG_CHECKING(whether or not to look for Motif)
1846 AC_ARG_ENABLE(motif-check,
1847 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1848 , enable_motif_check="yes")
1849 AC_MSG_RESULT($enable_motif_check)
1850 if test "x$enable_motif_check" = "xno"; then
1851 SKIP_MOTIF=YES
1852 fi
1853fi
1854
1855if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1856 AC_MSG_CHECKING(whether or not to look for Athena)
1857 AC_ARG_ENABLE(athena-check,
1858 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1859 , enable_athena_check="yes")
1860 AC_MSG_RESULT($enable_athena_check)
1861 if test "x$enable_athena_check" = "xno"; then
1862 SKIP_ATHENA=YES
1863 fi
1864fi
1865
1866if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1867 AC_MSG_CHECKING(whether or not to look for neXtaw)
1868 AC_ARG_ENABLE(nextaw-check,
1869 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1870 , enable_nextaw_check="yes")
1871 AC_MSG_RESULT($enable_nextaw_check);
1872 if test "x$enable_nextaw_check" = "xno"; then
1873 SKIP_NEXTAW=YES
1874 fi
1875fi
1876
1877if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1878 AC_MSG_CHECKING(whether or not to look for Carbon)
1879 AC_ARG_ENABLE(carbon-check,
1880 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1881 , enable_carbon_check="yes")
1882 AC_MSG_RESULT($enable_carbon_check);
1883 if test "x$enable_carbon_check" = "xno"; then
1884 SKIP_CARBON=YES
1885 fi
1886fi
1887
Bram Moolenaar843ee412004-06-30 16:16:41 +00001888
Bram Moolenaar071d4272004-06-13 20:20:40 +00001889if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1890 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001891 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001892 AC_MSG_RESULT(yes);
1893 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001894 if test "$VIMNAME" = "vim"; then
1895 VIMNAME=Vim
1896 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001897
Bram Moolenaar164fca32010-07-14 13:58:07 +02001898 if test "x$MACARCH" = "xboth"; then
1899 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1900 else
1901 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1902 fi
1903
Bram Moolenaar14716812006-05-04 21:54:08 +00001904 dnl Default install directory is not /usr/local
1905 if test x$prefix = xNONE; then
1906 prefix=/Applications
1907 fi
1908
1909 dnl Sorry for the hard coded default
1910 datadir='${prefix}/Vim.app/Contents/Resources'
1911
Bram Moolenaar071d4272004-06-13 20:20:40 +00001912 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913 SKIP_GTK2=YES;
1914 SKIP_GNOME=YES;
1915 SKIP_MOTIF=YES;
1916 SKIP_ATHENA=YES;
1917 SKIP_NEXTAW=YES;
1918 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001919 SKIP_CARBON=YES
1920fi
1921
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001923dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001924dnl
1925dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001926dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001927dnl
1928AC_DEFUN(AM_PATH_GTK,
1929[
1930 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1931 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001932 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001933 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1934 no_gtk=""
1935 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1936 && $PKG_CONFIG --exists gtk+-2.0; then
1937 {
1938 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1939 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1940 dnl something like that.
1941 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001942 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001943 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1944 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1945 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1946 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1947 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1948 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1949 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1950 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001951 else
1952 no_gtk=yes
1953 fi
1954
1955 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1956 {
1957 ac_save_CFLAGS="$CFLAGS"
1958 ac_save_LIBS="$LIBS"
1959 CFLAGS="$CFLAGS $GTK_CFLAGS"
1960 LIBS="$LIBS $GTK_LIBS"
1961
1962 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001963 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001964 dnl
1965 rm -f conf.gtktest
1966 AC_TRY_RUN([
1967#include <gtk/gtk.h>
1968#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001969#if STDC_HEADERS
1970# include <stdlib.h>
1971# include <stddef.h>
1972#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001973
1974int
1975main ()
1976{
1977int major, minor, micro;
1978char *tmp_version;
1979
1980system ("touch conf.gtktest");
1981
1982/* HP/UX 9 (%@#!) writes to sscanf strings */
1983tmp_version = g_strdup("$min_gtk_version");
1984if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1985 printf("%s, bad version string\n", "$min_gtk_version");
1986 exit(1);
1987 }
1988
1989if ((gtk_major_version > major) ||
1990 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1991 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1992 (gtk_micro_version >= micro)))
1993{
1994 return 0;
1995}
1996return 1;
1997}
1998],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1999 CFLAGS="$ac_save_CFLAGS"
2000 LIBS="$ac_save_LIBS"
2001 }
2002 fi
2003 if test "x$no_gtk" = x ; then
2004 if test "x$enable_gtktest" = "xyes"; then
2005 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2006 else
2007 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2008 fi
2009 ifelse([$2], , :, [$2])
2010 else
2011 {
2012 AC_MSG_RESULT(no)
2013 GTK_CFLAGS=""
2014 GTK_LIBS=""
2015 ifelse([$3], , :, [$3])
2016 }
2017 fi
2018 }
2019 else
2020 GTK_CFLAGS=""
2021 GTK_LIBS=""
2022 ifelse([$3], , :, [$3])
2023 fi
2024 AC_SUBST(GTK_CFLAGS)
2025 AC_SUBST(GTK_LIBS)
2026 rm -f conf.gtktest
2027])
2028
2029dnl ---------------------------------------------------------------------------
2030dnl gnome
2031dnl ---------------------------------------------------------------------------
2032AC_DEFUN([GNOME_INIT_HOOK],
2033[
2034 AC_SUBST(GNOME_LIBS)
2035 AC_SUBST(GNOME_LIBDIR)
2036 AC_SUBST(GNOME_INCLUDEDIR)
2037
2038 AC_ARG_WITH(gnome-includes,
2039 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2040 [CFLAGS="$CFLAGS -I$withval"]
2041 )
2042
2043 AC_ARG_WITH(gnome-libs,
2044 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2045 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2046 )
2047
2048 AC_ARG_WITH(gnome,
2049 [ --with-gnome Specify prefix for GNOME files],
2050 if test x$withval = xyes; then
2051 want_gnome=yes
2052 ifelse([$1], [], :, [$1])
2053 else
2054 if test "x$withval" = xno; then
2055 want_gnome=no
2056 else
2057 want_gnome=yes
2058 LDFLAGS="$LDFLAGS -L$withval/lib"
2059 CFLAGS="$CFLAGS -I$withval/include"
2060 gnome_prefix=$withval/lib
2061 fi
2062 fi,
2063 want_gnome=yes)
2064
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002065 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002066 {
2067 AC_MSG_CHECKING(for libgnomeui-2.0)
2068 if $PKG_CONFIG --exists libgnomeui-2.0; then
2069 AC_MSG_RESULT(yes)
2070 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2071 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2072 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002073
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002074 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2075 dnl This might not be the right way but it works for me...
2076 AC_MSG_CHECKING(for FreeBSD)
2077 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2078 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002079 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002080 GNOME_LIBS="$GNOME_LIBS -pthread"
2081 else
2082 AC_MSG_RESULT(no)
2083 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002084 $1
2085 else
2086 AC_MSG_RESULT(not found)
2087 if test "x$2" = xfail; then
2088 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2089 fi
2090 fi
2091 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002092 fi
2093])
2094
2095AC_DEFUN([GNOME_INIT],[
2096 GNOME_INIT_HOOK([],fail)
2097])
2098
2099
2100dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002101dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002102dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002103if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002104
2105 AC_MSG_CHECKING(--disable-gtktest argument)
2106 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2107 , enable_gtktest=yes)
2108 if test "x$enable_gtktest" = "xyes" ; then
2109 AC_MSG_RESULT(gtk test enabled)
2110 else
2111 AC_MSG_RESULT(gtk test disabled)
2112 fi
2113
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114 if test "X$PKG_CONFIG" = "X"; then
2115 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2116 fi
2117
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002118 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002119 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2120 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002121 AM_PATH_GTK(2.2.0,
2122 [GUI_LIB_LOC="$GTK_LIBDIR"
2123 GTK_LIBNAME="$GTK_LIBS"
2124 GUI_INC_LOC="$GTK_CFLAGS"], )
2125 if test "x$GTK_CFLAGS" != "x"; then
2126 SKIP_ATHENA=YES
2127 SKIP_NEXTAW=YES
2128 SKIP_MOTIF=YES
2129 GUITYPE=GTK
2130 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002131 fi
2132 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002133 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002134 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2135 || test "0$gtk_minor_version" -ge 2; then
2136 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2137 fi
2138 dnl
2139 dnl if GTK exists, then check for GNOME.
2140 dnl
2141 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002143 GNOME_INIT_HOOK([have_gnome=yes])
2144 if test "x$have_gnome" = xyes ; then
2145 AC_DEFINE(FEAT_GUI_GNOME)
2146 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2147 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002148 fi
2149 }
2150 fi
2151 fi
2152fi
2153
2154dnl Check for Motif include files location.
2155dnl The LAST one found is used, this makes the highest version to be used,
2156dnl e.g. when Motif1.2 and Motif2.0 are both present.
2157
2158if test -z "$SKIP_MOTIF"; then
2159 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"
2160 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2161 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2162
2163 AC_MSG_CHECKING(for location of Motif GUI includes)
2164 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2165 GUI_INC_LOC=
2166 for try in $gui_includes; do
2167 if test -f "$try/Xm/Xm.h"; then
2168 GUI_INC_LOC=$try
2169 fi
2170 done
2171 if test -n "$GUI_INC_LOC"; then
2172 if test "$GUI_INC_LOC" = /usr/include; then
2173 GUI_INC_LOC=
2174 AC_MSG_RESULT(in default path)
2175 else
2176 AC_MSG_RESULT($GUI_INC_LOC)
2177 fi
2178 else
2179 AC_MSG_RESULT(<not found>)
2180 SKIP_MOTIF=YES
2181 fi
2182fi
2183
2184dnl Check for Motif library files location. In the same order as the include
2185dnl files, to avoid a mixup if several versions are present
2186
2187if test -z "$SKIP_MOTIF"; then
2188 AC_MSG_CHECKING(--with-motif-lib argument)
2189 AC_ARG_WITH(motif-lib,
2190 [ --with-motif-lib=STRING Library for Motif ],
2191 [ MOTIF_LIBNAME="${withval}" ] )
2192
2193 if test -n "$MOTIF_LIBNAME"; then
2194 AC_MSG_RESULT($MOTIF_LIBNAME)
2195 GUI_LIB_LOC=
2196 else
2197 AC_MSG_RESULT(no)
2198
2199 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2200 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2201
2202 AC_MSG_CHECKING(for location of Motif GUI libs)
2203 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"
2204 GUI_LIB_LOC=
2205 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002206 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002207 if test -f "$libtry"; then
2208 GUI_LIB_LOC=$try
2209 fi
2210 done
2211 done
2212 if test -n "$GUI_LIB_LOC"; then
2213 dnl Remove /usr/lib, it causes trouble on some systems
2214 if test "$GUI_LIB_LOC" = /usr/lib; then
2215 GUI_LIB_LOC=
2216 AC_MSG_RESULT(in default path)
2217 else
2218 if test -n "$GUI_LIB_LOC"; then
2219 AC_MSG_RESULT($GUI_LIB_LOC)
2220 if test "`(uname) 2>/dev/null`" = SunOS &&
2221 uname -r | grep '^5' >/dev/null; then
2222 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2223 fi
2224 fi
2225 fi
2226 MOTIF_LIBNAME=-lXm
2227 else
2228 AC_MSG_RESULT(<not found>)
2229 SKIP_MOTIF=YES
2230 fi
2231 fi
2232fi
2233
2234if test -z "$SKIP_MOTIF"; then
2235 SKIP_ATHENA=YES
2236 SKIP_NEXTAW=YES
2237 GUITYPE=MOTIF
2238 AC_SUBST(MOTIF_LIBNAME)
2239fi
2240
2241dnl Check if the Athena files can be found
2242
2243GUI_X_LIBS=
2244
2245if test -z "$SKIP_ATHENA"; then
2246 AC_MSG_CHECKING(if Athena header files can be found)
2247 cflags_save=$CFLAGS
2248 CFLAGS="$CFLAGS $X_CFLAGS"
2249 AC_TRY_COMPILE([
2250#include <X11/Intrinsic.h>
2251#include <X11/Xaw/Paned.h>], ,
2252 AC_MSG_RESULT(yes),
2253 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2254 CFLAGS=$cflags_save
2255fi
2256
2257if test -z "$SKIP_ATHENA"; then
2258 GUITYPE=ATHENA
2259fi
2260
2261if test -z "$SKIP_NEXTAW"; then
2262 AC_MSG_CHECKING(if neXtaw header files can be found)
2263 cflags_save=$CFLAGS
2264 CFLAGS="$CFLAGS $X_CFLAGS"
2265 AC_TRY_COMPILE([
2266#include <X11/Intrinsic.h>
2267#include <X11/neXtaw/Paned.h>], ,
2268 AC_MSG_RESULT(yes),
2269 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2270 CFLAGS=$cflags_save
2271fi
2272
2273if test -z "$SKIP_NEXTAW"; then
2274 GUITYPE=NEXTAW
2275fi
2276
2277if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2278 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2279 dnl Avoid adding it when it twice
2280 if test -n "$GUI_INC_LOC"; then
2281 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2282 fi
2283 if test -n "$GUI_LIB_LOC"; then
2284 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2285 fi
2286
2287 dnl Check for -lXext and then for -lXmu
2288 ldflags_save=$LDFLAGS
2289 LDFLAGS="$X_LIBS $LDFLAGS"
2290 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2291 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2292 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2293 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2294 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2295 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2296 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2297 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2298 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2299 if test -z "$SKIP_MOTIF"; then
2300 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2301 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2302 fi
2303 LDFLAGS=$ldflags_save
2304
2305 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2306 AC_MSG_CHECKING(for extra X11 defines)
2307 NARROW_PROTO=
2308 rm -fr conftestdir
2309 if mkdir conftestdir; then
2310 cd conftestdir
2311 cat > Imakefile <<'EOF'
2312acfindx:
2313 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2314EOF
2315 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2316 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2317 fi
2318 cd ..
2319 rm -fr conftestdir
2320 fi
2321 if test -z "$NARROW_PROTO"; then
2322 AC_MSG_RESULT(no)
2323 else
2324 AC_MSG_RESULT($NARROW_PROTO)
2325 fi
2326 AC_SUBST(NARROW_PROTO)
2327fi
2328
2329dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2330dnl use the X11 include path
2331if test "$enable_xsmp" = "yes"; then
2332 cppflags_save=$CPPFLAGS
2333 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2334 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2335 CPPFLAGS=$cppflags_save
2336fi
2337
2338
Bram Moolenaare667c952010-07-05 22:57:59 +02002339if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002340 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2341 cppflags_save=$CPPFLAGS
2342 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2343 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2344
2345 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2346 if test ! "$enable_xim" = "no"; then
2347 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2348 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2349 AC_MSG_RESULT(yes),
2350 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2351 fi
2352 CPPFLAGS=$cppflags_save
2353
2354 dnl automatically enable XIM when hangul input isn't enabled
2355 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2356 -a "x$GUITYPE" != "xNONE" ; then
2357 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2358 enable_xim="yes"
2359 fi
2360fi
2361
2362if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2363 cppflags_save=$CPPFLAGS
2364 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002365dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2366 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2367 AC_TRY_COMPILE([
2368#include <X11/Intrinsic.h>
2369#include <X11/Xmu/Editres.h>],
2370 [int i; i = 0;],
2371 AC_MSG_RESULT(yes)
2372 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2373 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002374 CPPFLAGS=$cppflags_save
2375fi
2376
2377dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2378if test -z "$SKIP_MOTIF"; then
2379 cppflags_save=$CPPFLAGS
2380 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002381 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
Bram Moolenaarfc1421e2006-04-20 22:17:20 +00002382 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002383
2384 if test $ac_cv_header_Xm_XpmP_h = yes; then
2385 dnl Solaris uses XpmAttributes_21, very annoying.
2386 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2387 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2388 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2389 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2390 )
2391 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002392 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002393 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002394 CPPFLAGS=$cppflags_save
2395fi
2396
2397if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2398 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2399 enable_xim="no"
2400fi
2401if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2402 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2403 enable_fontset="no"
2404fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002405if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002406 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2407 enable_fontset="no"
2408fi
2409
Bram Moolenaar071d4272004-06-13 20:20:40 +00002410if test -z "$SKIP_PHOTON"; then
2411 GUITYPE=PHOTONGUI
2412fi
2413
2414AC_SUBST(GUI_INC_LOC)
2415AC_SUBST(GUI_LIB_LOC)
2416AC_SUBST(GUITYPE)
2417AC_SUBST(GUI_X_LIBS)
2418
2419if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2420 AC_MSG_ERROR([cannot use workshop without Motif])
2421fi
2422
2423dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2424if test "$enable_xim" = "yes"; then
2425 AC_DEFINE(FEAT_XIM)
2426fi
2427if test "$enable_fontset" = "yes"; then
2428 AC_DEFINE(FEAT_XFONTSET)
2429fi
2430
2431
2432dnl ---------------------------------------------------------------------------
2433dnl end of GUI-checking
2434dnl ---------------------------------------------------------------------------
2435
2436
2437dnl Only really enable hangul input when GUI and XFONTSET are available
2438if test "$enable_hangulinput" = "yes"; then
2439 if test "x$GUITYPE" = "xNONE"; then
2440 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2441 enable_hangulinput=no
2442 else
2443 AC_DEFINE(FEAT_HANGULIN)
2444 HANGULIN_SRC=hangulin.c
2445 AC_SUBST(HANGULIN_SRC)
2446 HANGULIN_OBJ=objects/hangulin.o
2447 AC_SUBST(HANGULIN_OBJ)
2448 fi
2449fi
2450
2451dnl Checks for libraries and include files.
2452
Bram Moolenaar446cb832008-06-24 21:56:24 +00002453AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2454 [
2455 AC_RUN_IFELSE([[
2456#include "confdefs.h"
2457#include <ctype.h>
2458#if STDC_HEADERS
2459# include <stdlib.h>
2460# include <stddef.h>
2461#endif
2462main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2463 ]],[
2464 vim_cv_toupper_broken=yes
2465 ],[
2466 vim_cv_toupper_broken=no
2467 ],[
2468 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2469 ])])
2470
2471if test "x$vim_cv_toupper_broken" = "xyes" ; then
2472 AC_DEFINE(BROKEN_TOUPPER)
2473fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002474
2475AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002476AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002477 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2478 AC_MSG_RESULT(no))
2479
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002480AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2481AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2482 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2483 AC_MSG_RESULT(no))
2484
Bram Moolenaar071d4272004-06-13 20:20:40 +00002485dnl Checks for header files.
2486AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2487dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2488if test "$HAS_ELF" = 1; then
2489 AC_CHECK_LIB(elf, main)
2490fi
2491
2492AC_HEADER_DIRENT
2493
Bram Moolenaar071d4272004-06-13 20:20:40 +00002494dnl If sys/wait.h is not found it might still exist but not be POSIX
2495dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2496if test $ac_cv_header_sys_wait_h = no; then
2497 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2498 AC_TRY_COMPILE([#include <sys/wait.h>],
2499 [union wait xx, yy; xx = yy],
2500 AC_MSG_RESULT(yes)
2501 AC_DEFINE(HAVE_SYS_WAIT_H)
2502 AC_DEFINE(HAVE_UNION_WAIT),
2503 AC_MSG_RESULT(no))
2504fi
2505
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002506AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2507 sys/select.h sys/utsname.h termcap.h fcntl.h \
2508 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2509 termio.h iconv.h inttypes.h langinfo.h math.h \
2510 unistd.h stropts.h errno.h sys/resource.h \
2511 sys/systeminfo.h locale.h sys/stream.h termios.h \
2512 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2513 utime.h sys/param.h libintl.h libgen.h \
2514 util/debug.h util/msg18n.h frame.h sys/acl.h \
2515 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002516
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002517dnl sys/ptem.h depends on sys/stream.h on Solaris
2518AC_CHECK_HEADERS(sys/ptem.h, [], [],
2519[#if defined HAVE_SYS_STREAM_H
2520# include <sys/stream.h>
2521#endif])
2522
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002523dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2524AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2525[#if defined HAVE_SYS_PARAM_H
2526# include <sys/param.h>
2527#endif])
2528
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002529
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002530dnl pthread_np.h may exist but can only be used after including pthread.h
2531AC_MSG_CHECKING([for pthread_np.h])
2532AC_TRY_COMPILE([
2533#include <pthread.h>
2534#include <pthread_np.h>],
2535 [int i; i = 0;],
2536 AC_MSG_RESULT(yes)
2537 AC_DEFINE(HAVE_PTHREAD_NP_H),
2538 AC_MSG_RESULT(no))
2539
Bram Moolenaare344bea2005-09-01 20:46:49 +00002540AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002541if test "x$MACOSX" = "xyes"; then
2542 dnl The strings.h file on OS/X contains a warning and nothing useful.
2543 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2544else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002545
2546dnl Check if strings.h and string.h can both be included when defined.
2547AC_MSG_CHECKING([if strings.h can be included after string.h])
2548cppflags_save=$CPPFLAGS
2549CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2550AC_TRY_COMPILE([
2551#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2552# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2553 /* but don't do it on AIX 5.1 (Uribarri) */
2554#endif
2555#ifdef HAVE_XM_XM_H
2556# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2557#endif
2558#ifdef HAVE_STRING_H
2559# include <string.h>
2560#endif
2561#if defined(HAVE_STRINGS_H)
2562# include <strings.h>
2563#endif
2564 ], [int i; i = 0;],
2565 AC_MSG_RESULT(yes),
2566 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2567 AC_MSG_RESULT(no))
2568CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002569fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002570
2571dnl Checks for typedefs, structures, and compiler characteristics.
2572AC_PROG_GCC_TRADITIONAL
2573AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002574AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002575AC_TYPE_MODE_T
2576AC_TYPE_OFF_T
2577AC_TYPE_PID_T
2578AC_TYPE_SIZE_T
2579AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002580AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002581
Bram Moolenaar071d4272004-06-13 20:20:40 +00002582AC_HEADER_TIME
2583AC_CHECK_TYPE(ino_t, long)
2584AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002585AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002586
2587AC_MSG_CHECKING(for rlim_t)
2588if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2589 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2590else
2591 AC_EGREP_CPP(dnl
2592changequote(<<,>>)dnl
2593<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2594changequote([,]),
2595 [
2596#include <sys/types.h>
2597#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002598# include <stdlib.h>
2599# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002600#endif
2601#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002602# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002603#endif
2604 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2605 AC_MSG_RESULT($ac_cv_type_rlim_t)
2606fi
2607if test $ac_cv_type_rlim_t = no; then
2608 cat >> confdefs.h <<\EOF
2609#define rlim_t unsigned long
2610EOF
2611fi
2612
2613AC_MSG_CHECKING(for stack_t)
2614if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2615 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2616else
2617 AC_EGREP_CPP(stack_t,
2618 [
2619#include <sys/types.h>
2620#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002621# include <stdlib.h>
2622# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623#endif
2624#include <signal.h>
2625 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2626 AC_MSG_RESULT($ac_cv_type_stack_t)
2627fi
2628if test $ac_cv_type_stack_t = no; then
2629 cat >> confdefs.h <<\EOF
2630#define stack_t struct sigaltstack
2631EOF
2632fi
2633
2634dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2635AC_MSG_CHECKING(whether stack_t has an ss_base field)
2636AC_TRY_COMPILE([
2637#include <sys/types.h>
2638#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002639# include <stdlib.h>
2640# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002641#endif
2642#include <signal.h>
2643#include "confdefs.h"
2644 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2645 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2646 AC_MSG_RESULT(no))
2647
2648olibs="$LIBS"
2649AC_MSG_CHECKING(--with-tlib argument)
2650AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2651if test -n "$with_tlib"; then
2652 AC_MSG_RESULT($with_tlib)
2653 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002654 AC_MSG_CHECKING(for linking with $with_tlib library)
2655 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2656 dnl Need to check for tgetent() below.
2657 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002658else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002659 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002660 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2661 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002662 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002663 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002664 dnl Older versions of ncurses have bugs, get a new one!
2665 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002666 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002667 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002668 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2669 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670 esac
2671 for libname in $tlibs; do
2672 AC_CHECK_LIB(${libname}, tgetent,,)
2673 if test "x$olibs" != "x$LIBS"; then
2674 dnl It's possible that a library is found but it doesn't work
2675 dnl e.g., shared library that cannot be found
2676 dnl compile and run a test program to be sure
2677 AC_TRY_RUN([
2678#ifdef HAVE_TERMCAP_H
2679# include <termcap.h>
2680#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002681#if STDC_HEADERS
2682# include <stdlib.h>
2683# include <stddef.h>
2684#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002685main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2686 res="OK", res="FAIL", res="FAIL")
2687 if test "$res" = "OK"; then
2688 break
2689 fi
2690 AC_MSG_RESULT($libname library is not usable)
2691 LIBS="$olibs"
2692 fi
2693 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002694 if test "x$olibs" = "x$LIBS"; then
2695 AC_MSG_RESULT(no terminal library found)
2696 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002697fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002698
2699if test "x$olibs" = "x$LIBS"; then
2700 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002701 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002702 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2703 AC_MSG_RESULT(yes),
2704 AC_MSG_ERROR([NOT FOUND!
2705 You need to install a terminal library; for example ncurses.
2706 Or specify the name of the library with --with-tlib.]))
2707fi
2708
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2710 [
2711 AC_RUN_IFELSE([[
2712#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002713#ifdef HAVE_TERMCAP_H
2714# include <termcap.h>
2715#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002716#ifdef HAVE_STRING_H
2717# include <string.h>
2718#endif
2719#if STDC_HEADERS
2720# include <stdlib.h>
2721# include <stddef.h>
2722#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002723main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002724{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2725 ]],[
2726 vim_cv_terminfo=no
2727 ],[
2728 vim_cv_terminfo=yes
2729 ],[
2730 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2731 ])
2732 ])
2733
2734if test "x$vim_cv_terminfo" = "xyes" ; then
2735 AC_DEFINE(TERMINFO)
2736fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002737
2738if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002739 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2740 [
2741 AC_RUN_IFELSE([[
2742#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002743#ifdef HAVE_TERMCAP_H
2744# include <termcap.h>
2745#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002746#if STDC_HEADERS
2747# include <stdlib.h>
2748# include <stddef.h>
2749#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002750main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002751{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2752 ]],[
2753 vim_cv_tgent=zero
2754 ],[
2755 vim_cv_tgent=non-zero
2756 ],[
2757 AC_MSG_ERROR(failed to compile test program.)
2758 ])
2759 ])
2760
2761 if test "x$vim_cv_tgent" = "xzero" ; then
2762 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2763 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002764fi
2765
2766AC_MSG_CHECKING(whether termcap.h contains ospeed)
2767AC_TRY_LINK([
2768#ifdef HAVE_TERMCAP_H
2769# include <termcap.h>
2770#endif
2771 ], [ospeed = 20000],
2772 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2773 [AC_MSG_RESULT(no)
2774 AC_MSG_CHECKING(whether ospeed can be extern)
2775 AC_TRY_LINK([
2776#ifdef HAVE_TERMCAP_H
2777# include <termcap.h>
2778#endif
2779extern short ospeed;
2780 ], [ospeed = 20000],
2781 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2782 AC_MSG_RESULT(no))]
2783 )
2784
2785AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2786AC_TRY_LINK([
2787#ifdef HAVE_TERMCAP_H
2788# include <termcap.h>
2789#endif
2790 ], [if (UP == 0 && BC == 0) PC = 1],
2791 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2792 [AC_MSG_RESULT(no)
2793 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2794 AC_TRY_LINK([
2795#ifdef HAVE_TERMCAP_H
2796# include <termcap.h>
2797#endif
2798extern char *UP, *BC, PC;
2799 ], [if (UP == 0 && BC == 0) PC = 1],
2800 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2801 AC_MSG_RESULT(no))]
2802 )
2803
2804AC_MSG_CHECKING(whether tputs() uses outfuntype)
2805AC_TRY_COMPILE([
2806#ifdef HAVE_TERMCAP_H
2807# include <termcap.h>
2808#endif
2809 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2810 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2811 AC_MSG_RESULT(no))
2812
2813dnl On some SCO machines sys/select redefines struct timeval
2814AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2815AC_TRY_COMPILE([
2816#include <sys/types.h>
2817#include <sys/time.h>
2818#include <sys/select.h>], ,
2819 AC_MSG_RESULT(yes)
2820 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2821 AC_MSG_RESULT(no))
2822
2823dnl AC_DECL_SYS_SIGLIST
2824
2825dnl Checks for pty.c (copied from screen) ==========================
2826AC_MSG_CHECKING(for /dev/ptc)
2827if test -r /dev/ptc; then
2828 AC_DEFINE(HAVE_DEV_PTC)
2829 AC_MSG_RESULT(yes)
2830else
2831 AC_MSG_RESULT(no)
2832fi
2833
2834AC_MSG_CHECKING(for SVR4 ptys)
2835if test -c /dev/ptmx ; then
2836 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2837 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2838 AC_MSG_RESULT(no))
2839else
2840 AC_MSG_RESULT(no)
2841fi
2842
2843AC_MSG_CHECKING(for ptyranges)
2844if test -d /dev/ptym ; then
2845 pdir='/dev/ptym'
2846else
2847 pdir='/dev'
2848fi
2849dnl SCO uses ptyp%d
2850AC_EGREP_CPP(yes,
2851[#ifdef M_UNIX
2852 yes;
2853#endif
2854 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2855dnl if test -c /dev/ptyp19; then
2856dnl ptys=`echo /dev/ptyp??`
2857dnl else
2858dnl ptys=`echo $pdir/pty??`
2859dnl fi
2860if test "$ptys" != "$pdir/pty??" ; then
2861 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2862 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2863 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2864 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2865 AC_MSG_RESULT([$p0 / $p1])
2866else
2867 AC_MSG_RESULT([don't know])
2868fi
2869
2870dnl **** pty mode/group handling ****
2871dnl
2872dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002873rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002874AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2875 [
2876 AC_RUN_IFELSE([[
2877#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002878#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002879#if STDC_HEADERS
2880# include <stdlib.h>
2881# include <stddef.h>
2882#endif
2883#ifdef HAVE_UNISTD_H
2884#include <unistd.h>
2885#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886#include <sys/stat.h>
2887#include <stdio.h>
2888main()
2889{
2890 struct stat sb;
2891 char *x,*ttyname();
2892 int om, m;
2893 FILE *fp;
2894
2895 if (!(x = ttyname(0))) exit(1);
2896 if (stat(x, &sb)) exit(1);
2897 om = sb.st_mode;
2898 if (om & 002) exit(0);
2899 m = system("mesg y");
2900 if (m == -1 || m == 127) exit(1);
2901 if (stat(x, &sb)) exit(1);
2902 m = sb.st_mode;
2903 if (chmod(x, om)) exit(1);
2904 if (m & 002) exit(0);
2905 if (sb.st_gid == getgid()) exit(1);
2906 if (!(fp=fopen("conftest_grp", "w")))
2907 exit(1);
2908 fprintf(fp, "%d\n", sb.st_gid);
2909 fclose(fp);
2910 exit(0);
2911}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002912 ]],[
2913 if test -f conftest_grp; then
2914 vim_cv_tty_group=`cat conftest_grp`
2915 if test "x$vim_cv_tty_mode" = "x" ; then
2916 vim_cv_tty_mode=0620
2917 fi
2918 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2919 else
2920 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002921 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002922 fi
2923 ],[
2924 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002925 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002926 ],[
2927 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2928 ])
2929 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002930rm -f conftest_grp
2931
Bram Moolenaar446cb832008-06-24 21:56:24 +00002932if test "x$vim_cv_tty_group" != "xworld" ; then
2933 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2934 if test "x$vim_cv_tty_mode" = "x" ; then
2935 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)])
2936 else
2937 AC_DEFINE(PTYMODE, 0620)
2938 fi
2939fi
2940
Bram Moolenaar071d4272004-06-13 20:20:40 +00002941dnl Checks for library functions. ===================================
2942
2943AC_TYPE_SIGNAL
2944
2945dnl find out what to use at the end of a signal function
2946if test $ac_cv_type_signal = void; then
2947 AC_DEFINE(SIGRETURN, [return])
2948else
2949 AC_DEFINE(SIGRETURN, [return 0])
2950fi
2951
2952dnl check if struct sigcontext is defined (used for SGI only)
2953AC_MSG_CHECKING(for struct sigcontext)
2954AC_TRY_COMPILE([
2955#include <signal.h>
2956test_sig()
2957{
2958 struct sigcontext *scont;
2959 scont = (struct sigcontext *)0;
2960 return 1;
2961} ], ,
2962 AC_MSG_RESULT(yes)
2963 AC_DEFINE(HAVE_SIGCONTEXT),
2964 AC_MSG_RESULT(no))
2965
2966dnl tricky stuff: try to find out if getcwd() is implemented with
2967dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002968AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2969 [
2970 AC_RUN_IFELSE([[
2971#include "confdefs.h"
2972#ifdef HAVE_UNISTD_H
2973#include <unistd.h>
2974#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975char *dagger[] = { "IFS=pwd", 0 };
2976main()
2977{
2978 char buffer[500];
2979 extern char **environ;
2980 environ = dagger;
2981 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002982}
2983 ]],[
2984 vim_cv_getcwd_broken=no
2985 ],[
2986 vim_cv_getcwd_broken=yes
2987 ],[
2988 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2989 ])
2990 ])
2991
2992if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2993 AC_DEFINE(BAD_GETCWD)
2994fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002995
Bram Moolenaar25153e12010-02-24 14:47:08 +01002996dnl Check for functions in one big call, to reduce the size of configure.
2997dnl Can only be used for functions that do not require any include.
2998AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002999 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003000 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003001 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003002 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003003 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3004 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003005AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003006
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003007dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3008dnl appropriate, so that off_t is 64 bits when needed.
3009AC_SYS_LARGEFILE
3010
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3012AC_MSG_CHECKING(for st_blksize)
3013AC_TRY_COMPILE(
3014[#include <sys/types.h>
3015#include <sys/stat.h>],
3016[ struct stat st;
3017 int n;
3018
3019 stat("/", &st);
3020 n = (int)st.st_blksize;],
3021 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3022 AC_MSG_RESULT(no))
3023
Bram Moolenaar446cb832008-06-24 21:56:24 +00003024AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3025 [
3026 AC_RUN_IFELSE([[
3027#include "confdefs.h"
3028#if STDC_HEADERS
3029# include <stdlib.h>
3030# include <stddef.h>
3031#endif
3032#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003033#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003034main() {struct stat st; exit(stat("configure/", &st) != 0); }
3035 ]],[
3036 vim_cv_stat_ignores_slash=yes
3037 ],[
3038 vim_cv_stat_ignores_slash=no
3039 ],[
3040 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3041 ])
3042 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043
Bram Moolenaar446cb832008-06-24 21:56:24 +00003044if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3045 AC_DEFINE(STAT_IGNORES_SLASH)
3046fi
3047
Bram Moolenaar071d4272004-06-13 20:20:40 +00003048dnl Link with iconv for charset translation, if not found without library.
3049dnl check for iconv() requires including iconv.h
3050dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3051dnl has been installed.
3052AC_MSG_CHECKING(for iconv_open())
3053save_LIBS="$LIBS"
3054LIBS="$LIBS -liconv"
3055AC_TRY_LINK([
3056#ifdef HAVE_ICONV_H
3057# include <iconv.h>
3058#endif
3059 ], [iconv_open("fr", "to");],
3060 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3061 LIBS="$save_LIBS"
3062 AC_TRY_LINK([
3063#ifdef HAVE_ICONV_H
3064# include <iconv.h>
3065#endif
3066 ], [iconv_open("fr", "to");],
3067 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3068 AC_MSG_RESULT(no)))
3069
3070
3071AC_MSG_CHECKING(for nl_langinfo(CODESET))
3072AC_TRY_LINK([
3073#ifdef HAVE_LANGINFO_H
3074# include <langinfo.h>
3075#endif
3076], [char *cs = nl_langinfo(CODESET);],
3077 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3078 AC_MSG_RESULT(no))
3079
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080dnl Need various functions for floating point support. Only enable
3081dnl floating point when they are all present.
3082AC_CHECK_LIB(m, strtod)
3083AC_MSG_CHECKING([for strtod() and other floating point functions])
3084AC_TRY_LINK([
3085#ifdef HAVE_MATH_H
3086# include <math.h>
3087#endif
3088#if STDC_HEADERS
3089# include <stdlib.h>
3090# include <stddef.h>
3091#endif
3092], [char *s; double d;
3093 d = strtod("1.1", &s);
3094 d = fabs(1.11);
3095 d = ceil(1.11);
3096 d = floor(1.11);
3097 d = log10(1.11);
3098 d = pow(1.11, 2.22);
3099 d = sqrt(1.11);
3100 d = sin(1.11);
3101 d = cos(1.11);
3102 d = atan(1.11);
3103 ],
3104 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3105 AC_MSG_RESULT(no))
3106
Bram Moolenaar071d4272004-06-13 20:20:40 +00003107dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3108dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003109dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003110AC_MSG_CHECKING(--disable-acl argument)
3111AC_ARG_ENABLE(acl,
3112 [ --disable-acl Don't check for ACL support.],
3113 , [enable_acl="yes"])
3114if test "$enable_acl" = "yes"; then
3115AC_MSG_RESULT(no)
3116AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3117 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3118 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3119
3120AC_MSG_CHECKING(for POSIX ACL support)
3121AC_TRY_LINK([
3122#include <sys/types.h>
3123#ifdef HAVE_SYS_ACL_H
3124# include <sys/acl.h>
3125#endif
3126acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3127 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3128 acl_free(acl);],
3129 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3130 AC_MSG_RESULT(no))
3131
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003132AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133AC_MSG_CHECKING(for Solaris ACL support)
3134AC_TRY_LINK([
3135#ifdef HAVE_SYS_ACL_H
3136# include <sys/acl.h>
3137#endif], [acl("foo", GETACLCNT, 0, NULL);
3138 ],
3139 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003140 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003141
3142AC_MSG_CHECKING(for AIX ACL support)
3143AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003144#if STDC_HEADERS
3145# include <stdlib.h>
3146# include <stddef.h>
3147#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003148#ifdef HAVE_SYS_ACL_H
3149# include <sys/acl.h>
3150#endif
3151#ifdef HAVE_SYS_ACCESS_H
3152# include <sys/access.h>
3153#endif
3154#define _ALL_SOURCE
3155
3156#include <sys/stat.h>
3157
3158int aclsize;
3159struct acl *aclent;], [aclsize = sizeof(struct acl);
3160 aclent = (void *)malloc(aclsize);
3161 statacl("foo", STX_NORMAL, aclent, aclsize);
3162 ],
3163 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3164 AC_MSG_RESULT(no))
3165else
3166 AC_MSG_RESULT(yes)
3167fi
3168
3169AC_MSG_CHECKING(--disable-gpm argument)
3170AC_ARG_ENABLE(gpm,
3171 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3172 [enable_gpm="yes"])
3173
3174if test "$enable_gpm" = "yes"; then
3175 AC_MSG_RESULT(no)
3176 dnl Checking if gpm support can be compiled
3177 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3178 [olibs="$LIBS" ; LIBS="-lgpm"]
3179 AC_TRY_LINK(
3180 [#include <gpm.h>
3181 #include <linux/keyboard.h>],
3182 [Gpm_GetLibVersion(NULL);],
3183 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3184 dnl FEAT_MOUSE_GPM if mouse support is included
3185 [vi_cv_have_gpm=yes],
3186 [vi_cv_have_gpm=no])
3187 [LIBS="$olibs"]
3188 )
3189 if test $vi_cv_have_gpm = yes; then
3190 LIBS="$LIBS -lgpm"
3191 AC_DEFINE(HAVE_GPM)
3192 fi
3193else
3194 AC_MSG_RESULT(yes)
3195fi
3196
Bram Moolenaar446cb832008-06-24 21:56:24 +00003197AC_MSG_CHECKING(--disable-sysmouse argument)
3198AC_ARG_ENABLE(sysmouse,
3199 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3200 [enable_sysmouse="yes"])
3201
3202if test "$enable_sysmouse" = "yes"; then
3203 AC_MSG_RESULT(no)
3204 dnl Checking if sysmouse support can be compiled
3205 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3206 dnl defines FEAT_SYSMOUSE if mouse support is included
3207 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3208 AC_TRY_LINK(
3209 [#include <sys/consio.h>
3210 #include <signal.h>
3211 #include <sys/fbio.h>],
3212 [struct mouse_info mouse;
3213 mouse.operation = MOUSE_MODE;
3214 mouse.operation = MOUSE_SHOW;
3215 mouse.u.mode.mode = 0;
3216 mouse.u.mode.signal = SIGUSR2;],
3217 [vi_cv_have_sysmouse=yes],
3218 [vi_cv_have_sysmouse=no])
3219 )
3220 if test $vi_cv_have_sysmouse = yes; then
3221 AC_DEFINE(HAVE_SYSMOUSE)
3222 fi
3223else
3224 AC_MSG_RESULT(yes)
3225fi
3226
Bram Moolenaarf05da212009-11-17 16:13:15 +00003227dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3228AC_MSG_CHECKING(for FD_CLOEXEC)
3229AC_TRY_COMPILE(
3230[#if HAVE_FCNTL_H
3231# include <fcntl.h>
3232#endif],
3233[ int flag = FD_CLOEXEC;],
3234 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3235 AC_MSG_RESULT(not usable))
3236
Bram Moolenaar071d4272004-06-13 20:20:40 +00003237dnl rename needs to be checked separately to work on Nextstep with cc
3238AC_MSG_CHECKING(for rename)
3239AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3240 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3241 AC_MSG_RESULT(no))
3242
3243dnl sysctl() may exist but not the arguments we use
3244AC_MSG_CHECKING(for sysctl)
3245AC_TRY_COMPILE(
3246[#include <sys/types.h>
3247#include <sys/sysctl.h>],
3248[ int mib[2], r;
3249 size_t len;
3250
3251 mib[0] = CTL_HW;
3252 mib[1] = HW_USERMEM;
3253 len = sizeof(r);
3254 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3255 ],
3256 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3257 AC_MSG_RESULT(not usable))
3258
3259dnl sysinfo() may exist but not be Linux compatible
3260AC_MSG_CHECKING(for sysinfo)
3261AC_TRY_COMPILE(
3262[#include <sys/types.h>
3263#include <sys/sysinfo.h>],
3264[ struct sysinfo sinfo;
3265 int t;
3266
3267 (void)sysinfo(&sinfo);
3268 t = sinfo.totalram;
3269 ],
3270 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3271 AC_MSG_RESULT(not usable))
3272
Bram Moolenaar914572a2007-05-01 11:37:47 +00003273dnl struct sysinfo may have the mem_unit field or not
3274AC_MSG_CHECKING(for sysinfo.mem_unit)
3275AC_TRY_COMPILE(
3276[#include <sys/types.h>
3277#include <sys/sysinfo.h>],
3278[ struct sysinfo sinfo;
3279 sinfo.mem_unit = 1;
3280 ],
3281 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3282 AC_MSG_RESULT(no))
3283
Bram Moolenaar071d4272004-06-13 20:20:40 +00003284dnl sysconf() may exist but not support what we want to use
3285AC_MSG_CHECKING(for sysconf)
3286AC_TRY_COMPILE(
3287[#include <unistd.h>],
3288[ (void)sysconf(_SC_PAGESIZE);
3289 (void)sysconf(_SC_PHYS_PAGES);
3290 ],
3291 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3292 AC_MSG_RESULT(not usable))
3293
Bram Moolenaar914703b2010-05-31 21:59:46 +02003294AC_CHECK_SIZEOF([int])
3295AC_CHECK_SIZEOF([long])
3296AC_CHECK_SIZEOF([time_t])
3297AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003298
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003299dnl Make sure that uint32_t is really 32 bits unsigned.
3300AC_MSG_CHECKING([uint32_t is 32 bits])
3301AC_TRY_RUN([
3302#ifdef HAVE_STDINT_H
3303# include <stdint.h>
3304#endif
3305#ifdef HAVE_INTTYPES_H
3306# include <inttypes.h>
3307#endif
3308main() {
3309 uint32_t nr1 = (uint32_t)-1;
3310 uint32_t nr2 = (uint32_t)0xffffffffUL;
3311 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3312 exit(0);
3313}],
3314AC_MSG_RESULT(ok),
3315AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003316AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003317
Bram Moolenaar446cb832008-06-24 21:56:24 +00003318dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3319dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3320
Bram Moolenaar071d4272004-06-13 20:20:40 +00003321[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003322#include "confdefs.h"
3323#ifdef HAVE_STRING_H
3324# include <string.h>
3325#endif
3326#if STDC_HEADERS
3327# include <stdlib.h>
3328# include <stddef.h>
3329#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003330main() {
3331 char buf[10];
3332 strcpy(buf, "abcdefghi");
3333 mch_memmove(buf, buf + 2, 3);
3334 if (strncmp(buf, "ababcf", 6))
3335 exit(1);
3336 strcpy(buf, "abcdefghi");
3337 mch_memmove(buf + 2, buf, 3);
3338 if (strncmp(buf, "cdedef", 6))
3339 exit(1);
3340 exit(0); /* libc version works properly. */
3341}']
3342
Bram Moolenaar446cb832008-06-24 21:56:24 +00003343AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3344 [
3345 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3346 [
3347 vim_cv_memmove_handles_overlap=yes
3348 ],[
3349 vim_cv_memmove_handles_overlap=no
3350 ],[
3351 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3352 ])
3353 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003354
Bram Moolenaar446cb832008-06-24 21:56:24 +00003355if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3356 AC_DEFINE(USEMEMMOVE)
3357else
3358 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3359 [
3360 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3361 [
3362 vim_cv_bcopy_handles_overlap=yes
3363 ],[
3364 vim_cv_bcopy_handles_overlap=no
3365 ],[
3366 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3367 ])
3368 ])
3369
3370 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3371 AC_DEFINE(USEBCOPY)
3372 else
3373 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3374 [
3375 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3376 [
3377 vim_cv_memcpy_handles_overlap=yes
3378 ],[
3379 vim_cv_memcpy_handles_overlap=no
3380 ],[
3381 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3382 ])
3383 ])
3384
3385 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3386 AC_DEFINE(USEMEMCPY)
3387 fi
3388 fi
3389fi
3390
Bram Moolenaar071d4272004-06-13 20:20:40 +00003391
3392dnl Check for multibyte locale functions
3393dnl Find out if _Xsetlocale() is supported by libX11.
3394dnl Check if X_LOCALE should be defined.
3395
3396if test "$enable_multibyte" = "yes"; then
3397 cflags_save=$CFLAGS
3398 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003399 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003400 CFLAGS="$CFLAGS -I$x_includes"
3401 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3402 AC_MSG_CHECKING(whether X_LOCALE needed)
3403 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3404 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3405 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3406 AC_MSG_RESULT(no))
3407 fi
3408 CFLAGS=$cflags_save
3409 LDFLAGS=$ldflags_save
3410fi
3411
3412dnl Link with xpg4, it is said to make Korean locale working
3413AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3414
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003415dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003416dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003417dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003418dnl -t for typedefs (many ctags have this)
3419dnl -s for static functions (Elvis ctags only?)
3420dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3421dnl -i+m to test for older Exuberant ctags
3422AC_MSG_CHECKING(how to create tags)
3423test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003424if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003425 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003426elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3427 TAGPRG="exctags -I INIT+ --fields=+S"
3428elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3429 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003430else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003431 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003432 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3433 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3434 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3435 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3436 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3437 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3438 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3439fi
3440test -f tags.save && mv tags.save tags
3441AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3442
3443dnl Check how we can run man with a section number
3444AC_MSG_CHECKING(how to run man with a section nr)
3445MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003446(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 +00003447AC_MSG_RESULT($MANDEF)
3448if test "$MANDEF" = "man -s"; then
3449 AC_DEFINE(USEMAN_S)
3450fi
3451
3452dnl Check if gettext() is working and if it needs -lintl
3453AC_MSG_CHECKING(--disable-nls argument)
3454AC_ARG_ENABLE(nls,
3455 [ --disable-nls Don't support NLS (gettext()).], ,
3456 [enable_nls="yes"])
3457
3458if test "$enable_nls" = "yes"; then
3459 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003460
3461 INSTALL_LANGS=install-languages
3462 AC_SUBST(INSTALL_LANGS)
3463 INSTALL_TOOL_LANGS=install-tool-languages
3464 AC_SUBST(INSTALL_TOOL_LANGS)
3465
Bram Moolenaar071d4272004-06-13 20:20:40 +00003466 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3467 AC_MSG_CHECKING([for NLS])
3468 if test -f po/Makefile; then
3469 have_gettext="no"
3470 if test -n "$MSGFMT"; then
3471 AC_TRY_LINK(
3472 [#include <libintl.h>],
3473 [gettext("Test");],
3474 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3475 olibs=$LIBS
3476 LIBS="$LIBS -lintl"
3477 AC_TRY_LINK(
3478 [#include <libintl.h>],
3479 [gettext("Test");],
3480 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3481 AC_MSG_RESULT([gettext() doesn't work]);
3482 LIBS=$olibs))
3483 else
3484 AC_MSG_RESULT([msgfmt not found - disabled]);
3485 fi
3486 if test $have_gettext = "yes"; then
3487 AC_DEFINE(HAVE_GETTEXT)
3488 MAKEMO=yes
3489 AC_SUBST(MAKEMO)
3490 dnl this was added in GNU gettext 0.10.36
3491 AC_CHECK_FUNCS(bind_textdomain_codeset)
3492 dnl _nl_msg_cat_cntr is required for GNU gettext
3493 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3494 AC_TRY_LINK(
3495 [#include <libintl.h>
3496 extern int _nl_msg_cat_cntr;],
3497 [++_nl_msg_cat_cntr;],
3498 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3499 AC_MSG_RESULT([no]))
3500 fi
3501 else
3502 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3503 fi
3504else
3505 AC_MSG_RESULT(yes)
3506fi
3507
3508dnl Check for dynamic linking loader
3509AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3510if test x${DLL} = xdlfcn.h; then
3511 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3512 AC_MSG_CHECKING([for dlopen()])
3513 AC_TRY_LINK(,[
3514 extern void* dlopen();
3515 dlopen();
3516 ],
3517 AC_MSG_RESULT(yes);
3518 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3519 AC_MSG_RESULT(no);
3520 AC_MSG_CHECKING([for dlopen() in -ldl])
3521 olibs=$LIBS
3522 LIBS="$LIBS -ldl"
3523 AC_TRY_LINK(,[
3524 extern void* dlopen();
3525 dlopen();
3526 ],
3527 AC_MSG_RESULT(yes);
3528 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3529 AC_MSG_RESULT(no);
3530 LIBS=$olibs))
3531 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3532 dnl ick :-)
3533 AC_MSG_CHECKING([for dlsym()])
3534 AC_TRY_LINK(,[
3535 extern void* dlsym();
3536 dlsym();
3537 ],
3538 AC_MSG_RESULT(yes);
3539 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3540 AC_MSG_RESULT(no);
3541 AC_MSG_CHECKING([for dlsym() in -ldl])
3542 olibs=$LIBS
3543 LIBS="$LIBS -ldl"
3544 AC_TRY_LINK(,[
3545 extern void* dlsym();
3546 dlsym();
3547 ],
3548 AC_MSG_RESULT(yes);
3549 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3550 AC_MSG_RESULT(no);
3551 LIBS=$olibs))
3552elif test x${DLL} = xdl.h; then
3553 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3554 AC_MSG_CHECKING([for shl_load()])
3555 AC_TRY_LINK(,[
3556 extern void* shl_load();
3557 shl_load();
3558 ],
3559 AC_MSG_RESULT(yes);
3560 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3561 AC_MSG_RESULT(no);
3562 AC_MSG_CHECKING([for shl_load() in -ldld])
3563 olibs=$LIBS
3564 LIBS="$LIBS -ldld"
3565 AC_TRY_LINK(,[
3566 extern void* shl_load();
3567 shl_load();
3568 ],
3569 AC_MSG_RESULT(yes);
3570 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3571 AC_MSG_RESULT(no);
3572 LIBS=$olibs))
3573fi
3574AC_CHECK_HEADERS(setjmp.h)
3575
3576if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3577 dnl -ldl must come after DynaLoader.a
3578 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3579 LIBS=`echo $LIBS | sed s/-ldl//`
3580 PERL_LIBS="$PERL_LIBS -ldl"
3581 fi
3582fi
3583
Bram Moolenaar164fca32010-07-14 13:58:07 +02003584if test "x$MACOSX" = "xyes"; then
3585 AC_MSG_CHECKING(whether we need -framework Cocoa)
3586 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3587 dnl disabled during tiny build)
3588 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3589 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003590 AC_MSG_RESULT(yes)
3591 else
3592 AC_MSG_RESULT(no)
3593 fi
3594fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003595if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003596 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003597fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003598
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003599dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3600dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3601dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003602dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3603dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003604DEPEND_CFLAGS_FILTER=
3605if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003606 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003607 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003608 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003609 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003610 AC_MSG_RESULT(yes)
3611 else
3612 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003613 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003614 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3615 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003616 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003617 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003618 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3619 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003620 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 +00003621 AC_MSG_RESULT(yes)
3622 else
3623 AC_MSG_RESULT(no)
3624 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003625fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003626AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003627
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003628dnl link.sh tries to avoid overlinking in a hackish way.
3629dnl At least GNU ld supports --as-needed which provides the same functionality
3630dnl at linker level. Let's use it.
3631AC_MSG_CHECKING(linker --as-needed support)
3632LINK_AS_NEEDED=
3633# Check if linker supports --as-needed and --no-as-needed options
3634if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3635 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3636 LINK_AS_NEEDED=yes
3637fi
3638if test "$LINK_AS_NEEDED" = yes; then
3639 AC_MSG_RESULT(yes)
3640else
3641 AC_MSG_RESULT(no)
3642fi
3643AC_SUBST(LINK_AS_NEEDED)
3644
Bram Moolenaar071d4272004-06-13 20:20:40 +00003645dnl write output files
3646AC_OUTPUT(auto/config.mk:config.mk.in)
3647
3648dnl vim: set sw=2 tw=78 fo+=l: