blob: 1eac2e821a1453887a7b85af655d7bf1dee1f3b6 [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 Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
Bram Moolenaar768baac2013-04-15 14:44:57 +0200497 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
498 if test "X$multiarch" != "X"; then
499 lib_multiarch="lib/${multiarch}"
500 fi
501 dnl Determine the sover for the current version, but fallback to
502 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
503 for subdir in "${lib_multiarch}" lib64 lib; do
504 if test -z "$subdir"; then
505 continue
506 fi
507 for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
508 for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
509 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
510 sover2="$i"
511 break 3
512 fi
513 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100514 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200515 done
Bram Moolenaar768baac2013-04-15 14:44:57 +0200516 vi_cv_dll_name_lua="liblua${sover}$sover2"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200517 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200518 AC_DEFINE(DYNAMIC_LUA)
519 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200520 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200521 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100523 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
524 AC_MSG_ERROR([could not configure lua])
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 AC_SUBST(LUA_SRC)
527 AC_SUBST(LUA_OBJ)
528 AC_SUBST(LUA_PRO)
529 AC_SUBST(LUA_LIBS)
530 AC_SUBST(LUA_CFLAGS)
531fi
532
533
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534dnl Check for MzScheme feature.
535AC_MSG_CHECKING(--enable-mzschemeinterp argument)
536AC_ARG_ENABLE(mzschemeinterp,
537 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
538 [enable_mzschemeinterp="no"])
539AC_MSG_RESULT($enable_mzschemeinterp)
540
541if test "$enable_mzschemeinterp" = "yes"; then
542 dnl -- find the mzscheme executable
543 AC_SUBST(vi_cv_path_mzscheme)
544
545 AC_MSG_CHECKING(--with-plthome argument)
546 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000547 [ --with-plthome=PLTHOME Use PLTHOME.],
548 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 with_plthome="";AC_MSG_RESULT("no"))
550
551 if test "X$with_plthome" != "X"; then
552 vi_cv_path_mzscheme_pfx="$with_plthome"
553 else
554 AC_MSG_CHECKING(PLTHOME environment var)
555 if test "X$PLTHOME" != "X"; then
556 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000557 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000560 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000561 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000562
563 dnl resolve symbolic link, the executable is often elsewhere and there
564 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000565 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000566 lsout=`ls -l $vi_cv_path_mzscheme`
567 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
568 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
569 fi
570 fi
571
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000572 if test "X$vi_cv_path_mzscheme" != "X"; then
573 dnl -- find where MzScheme thinks it was installed
574 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 dnl different versions of MzScheme differ in command line processing
576 dnl use universal approach
577 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000578 (build-path (call-with-values \
579 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
581 dnl Remove a trailing slash
582 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
583 sed -e 's+/$++'` ])
584 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000585 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 fi
587 fi
588
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000590 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
591 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
592 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
594 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000595 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(no)
597 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000598 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000599 AC_MSG_RESULT(yes)
600 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000601 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
604 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100606 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000607 else
608 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100609 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
610 if test -f /usr/include/plt/scheme.h; then
611 AC_MSG_RESULT(yes)
612 SCHEME_INC=/usr/include/plt
613 else
614 AC_MSG_RESULT(no)
615 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
616 if test -f /usr/include/racket/scheme.h; then
617 AC_MSG_RESULT(yes)
618 SCHEME_INC=/usr/include/racket
619 else
620 AC_MSG_RESULT(no)
621 vi_cv_path_mzscheme_pfx=
622 fi
623 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000625 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000626 fi
627 fi
628
629 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000630 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100631 MZSCHEME_LIBS="-framework Racket"
632 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000633 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
634 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
635 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100636 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
637 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
640 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
641 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000642 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 +0000643 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 dnl Using shared objects
645 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
646 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
647 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100648 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
649 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
650 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
651 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
652 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 else
654 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
655 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000656 if test "$GCC" = yes; then
657 dnl Make Vim remember the path to the library. For when it's not in
658 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000659 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000660 elif test "`(uname) 2>/dev/null`" = SunOS &&
661 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000662 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000663 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100665
666 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000667 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100669 else
670 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100671 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
672 else
673 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
674 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100675 else
676 if test -d $vi_cv_path_mzscheme_pfx/collects; then
677 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
678 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100679 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100680 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000681 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100682 if test "X$SCHEME_COLLECTS" != "X" ; then
683 AC_MSG_RESULT(${SCHEME_COLLECTS})
684 else
685 AC_MSG_RESULT(not found)
686 fi
687
688 AC_MSG_CHECKING(for mzscheme_base.c)
689 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100691 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100692 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100693 MZSCHEME_EXTRA="mzscheme_base.c"
694 fi
695 fi
696 if test "X$MZSCHEME_EXTRA" != "X" ; then
697 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000698 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
699 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100700 AC_MSG_RESULT(needed)
701 else
702 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000703 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100704
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000705 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100706 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 MZSCHEME_SRC="if_mzsch.c"
708 MZSCHEME_OBJ="objects/if_mzsch.o"
709 MZSCHEME_PRO="if_mzsch.pro"
710 AC_DEFINE(FEAT_MZSCHEME)
711 fi
712 AC_SUBST(MZSCHEME_SRC)
713 AC_SUBST(MZSCHEME_OBJ)
714 AC_SUBST(MZSCHEME_PRO)
715 AC_SUBST(MZSCHEME_LIBS)
716 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_SUBST(MZSCHEME_EXTRA)
718 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000719fi
720
721
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722AC_MSG_CHECKING(--enable-perlinterp argument)
723AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200724 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 [enable_perlinterp="no"])
726AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200727if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000728 AC_SUBST(vi_cv_path_perl)
729 AC_PATH_PROG(vi_cv_path_perl, perl)
730 if test "X$vi_cv_path_perl" != "X"; then
731 AC_MSG_CHECKING(Perl version)
732 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
733 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200734 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000735 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
736 badthreads=no
737 else
738 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
739 eval `$vi_cv_path_perl -V:use5005threads`
740 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
741 badthreads=no
742 else
743 badthreads=yes
744 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
745 fi
746 else
747 badthreads=yes
748 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
749 fi
750 fi
751 if test $badthreads = no; then
752 AC_MSG_RESULT(OK)
753 eval `$vi_cv_path_perl -V:shrpenv`
754 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
755 shrpenv=""
756 fi
757 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
758 AC_SUBST(vi_cv_perllib)
759 dnl Remove "-fno-something", it breaks using cproto.
760 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
761 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
762 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
763 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
764 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
765 -e 's/-bE:perl.exp//' -e 's/-lc //'`
766 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
767 dnl a test in configure may fail because of that.
768 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
769 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
770
771 dnl check that compiling a simple program still works with the flags
772 dnl added for Perl.
773 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
774 cflags_save=$CFLAGS
775 libs_save=$LIBS
776 ldflags_save=$LDFLAGS
777 CFLAGS="$CFLAGS $perlcppflags"
778 LIBS="$LIBS $perllibs"
779 LDFLAGS="$perlldflags $LDFLAGS"
780 AC_TRY_LINK(,[ ],
781 AC_MSG_RESULT(yes); perl_ok=yes,
782 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
783 CFLAGS=$cflags_save
784 LIBS=$libs_save
785 LDFLAGS=$ldflags_save
786 if test $perl_ok = yes; then
787 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000788 dnl remove -pipe and -Wxxx, it confuses cproto
789 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000790 fi
791 if test "X$perlldflags" != "X"; then
792 LDFLAGS="$perlldflags $LDFLAGS"
793 fi
794 PERL_LIBS=$perllibs
795 PERL_SRC="auto/if_perl.c if_perlsfio.c"
796 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
797 PERL_PRO="if_perl.pro if_perlsfio.pro"
798 AC_DEFINE(FEAT_PERL)
799 fi
800 fi
801 else
802 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
803 fi
804 fi
805
806 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000807 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000808 dir=/System/Library/Perl
809 darwindir=$dir/darwin
810 if test -d $darwindir; then
811 PERL=/usr/bin/perl
812 else
813 dnl Mac OS X 10.3
814 dir=/System/Library/Perl/5.8.1
815 darwindir=$dir/darwin-thread-multi-2level
816 if test -d $darwindir; then
817 PERL=/usr/bin/perl
818 fi
819 fi
820 if test -n "$PERL"; then
821 PERL_DIR="$dir"
822 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
823 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
824 PERL_LIBS="-L$darwindir/CORE -lperl"
825 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200826 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
827 dnl be included if requested by passing --with-mac-arch to
828 dnl configure, so strip these flags first (if present)
829 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
830 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 +0000831 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200832 if test "$enable_perlinterp" = "dynamic"; then
833 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
834 AC_DEFINE(DYNAMIC_PERL)
835 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
836 fi
837 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100838
839 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
840 AC_MSG_ERROR([could not configure perl])
841 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842fi
843AC_SUBST(shrpenv)
844AC_SUBST(PERL_SRC)
845AC_SUBST(PERL_OBJ)
846AC_SUBST(PERL_PRO)
847AC_SUBST(PERL_CFLAGS)
848AC_SUBST(PERL_LIBS)
849
850AC_MSG_CHECKING(--enable-pythoninterp argument)
851AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200852 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000853 [enable_pythoninterp="no"])
854AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100857 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 if test "X$vi_cv_path_python" != "X"; then
859
860 dnl -- get its version number
861 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
862 [[vi_cv_var_python_version=`
863 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
864 ]])
865
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200866 dnl -- it must be at least version 2.3
867 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200869 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000870 then
871 AC_MSG_RESULT(yep)
872
873 dnl -- find where python thinks it was installed
874 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
875 [ vi_cv_path_python_pfx=`
876 ${vi_cv_path_python} -c \
877 "import sys; print sys.prefix"` ])
878
879 dnl -- and where it thinks it runs
880 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
881 [ vi_cv_path_python_epfx=`
882 ${vi_cv_path_python} -c \
883 "import sys; print sys.exec_prefix"` ])
884
885 dnl -- python's internal library path
886
887 AC_CACHE_VAL(vi_cv_path_pythonpath,
888 [ vi_cv_path_pythonpath=`
889 unset PYTHONPATH;
890 ${vi_cv_path_python} -c \
891 "import sys, string; print string.join(sys.path,':')"` ])
892
893 dnl -- where the Python implementation library archives are
894
895 AC_ARG_WITH(python-config-dir,
896 [ --with-python-config-dir=PATH Python's config directory],
897 [ vi_cv_path_python_conf="${withval}" ] )
898
899 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
900 [
901 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200902 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
903 if test -d "$d" && test -f "$d/config.c"; then
904 vi_cv_path_python_conf="$d"
905 else
906 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
907 for subdir in lib64 lib share; do
908 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
909 if test -d "$d" && test -f "$d/config.c"; then
910 vi_cv_path_python_conf="$d"
911 fi
912 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000913 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200914 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000915 ])
916
917 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
918
919 if test "X$PYTHON_CONFDIR" = "X"; then
920 AC_MSG_RESULT([can't find it!])
921 else
922
923 dnl -- we need to examine Python's config/Makefile too
924 dnl see what the interpreter is built from
925 AC_CACHE_VAL(vi_cv_path_python_plibs,
926 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000927 pwd=`pwd`
928 tmp_mkf="$pwd/config-PyMake$$"
929 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000930__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200931 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000932 @echo "python_LIBS='$(LIBS)'"
933 @echo "python_SYSLIBS='$(SYSLIBS)'"
934 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200935 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200936 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937eof
938 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000939 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
940 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000941 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
942 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
943 vi_cv_path_python_plibs="-framework Python"
944 else
945 if test "${vi_cv_var_python_version}" = "1.4"; then
946 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
947 else
948 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
949 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200950 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 +0000951 dnl remove -ltermcap, it can conflict with an earlier -lncurses
952 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
953 fi
954 ])
955
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200956 if test "X$python_DLLLIBRARY" != "X"; then
957 python_INSTSONAME="$python_DLLLIBRARY"
958 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000959 PYTHON_LIBS="${vi_cv_path_python_plibs}"
960 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100961 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 +0000962 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100963 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 +0000964 fi
965 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200966 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 if test "${vi_cv_var_python_version}" = "1.4"; then
968 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
969 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100970 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 +0000971
972 dnl On FreeBSD linking with "-pthread" is required to use threads.
973 dnl _THREAD_SAFE must be used for compiling then.
974 dnl The "-pthread" is added to $LIBS, so that the following check for
975 dnl sigaltstack() will look in libc_r (it's there in libc!).
976 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
977 dnl will then define target-specific defines, e.g., -D_REENTRANT.
978 dnl Don't do this for Mac OSX, -pthread will generate a warning.
979 AC_MSG_CHECKING([if -pthread should be used])
980 threadsafe_flag=
981 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000982 dnl if test "x$MACOSX" != "xyes"; then
983 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000984 test "$GCC" = yes && threadsafe_flag="-pthread"
985 if test "`(uname) 2>/dev/null`" = FreeBSD; then
986 threadsafe_flag="-D_THREAD_SAFE"
987 thread_lib="-pthread"
988 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +0200989 if test "`(uname) 2>/dev/null`" = SunOS; then
990 threadsafe_flag="-pthreads"
991 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992 fi
993 libs_save_old=$LIBS
994 if test -n "$threadsafe_flag"; then
995 cflags_save=$CFLAGS
996 CFLAGS="$CFLAGS $threadsafe_flag"
997 LIBS="$LIBS $thread_lib"
998 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200999 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001000 AC_MSG_RESULT(no); LIBS=$libs_save_old
1001 )
1002 CFLAGS=$cflags_save
1003 else
1004 AC_MSG_RESULT(no)
1005 fi
1006
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001007 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001008 dnl added for Python.
1009 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1010 cflags_save=$CFLAGS
1011 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001012 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001013 LIBS="$LIBS $PYTHON_LIBS"
1014 AC_TRY_LINK(,[ ],
1015 AC_MSG_RESULT(yes); python_ok=yes,
1016 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1017 CFLAGS=$cflags_save
1018 LIBS=$libs_save
1019 if test $python_ok = yes; then
1020 AC_DEFINE(FEAT_PYTHON)
1021 else
1022 LIBS=$libs_save_old
1023 PYTHON_SRC=
1024 PYTHON_OBJ=
1025 PYTHON_LIBS=
1026 PYTHON_CFLAGS=
1027 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001028 fi
1029 else
1030 AC_MSG_RESULT(too old)
1031 fi
1032 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001033
1034 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1035 AC_MSG_ERROR([could not configure python])
1036 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001037fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001038
Bram Moolenaar071d4272004-06-13 20:20:40 +00001039AC_SUBST(PYTHON_CONFDIR)
1040AC_SUBST(PYTHON_LIBS)
1041AC_SUBST(PYTHON_GETPATH_CFLAGS)
1042AC_SUBST(PYTHON_CFLAGS)
1043AC_SUBST(PYTHON_SRC)
1044AC_SUBST(PYTHON_OBJ)
1045
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001046
1047AC_MSG_CHECKING(--enable-python3interp argument)
1048AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001049 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001050 [enable_python3interp="no"])
1051AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001052if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001054 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001055 if test "X$vi_cv_path_python3" != "X"; then
1056
1057 dnl -- get its version number
1058 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1059 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001060 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001061 ]])
1062
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001063 dnl -- it must be at least version 3
1064 AC_MSG_CHECKING(Python is 3.0 or better)
1065 if ${vi_cv_path_python3} -c \
1066 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1067 then
1068 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001069
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001070 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1071 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001072 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001073 vi_cv_var_python3_abiflags=
1074 if ${vi_cv_path_python3} -c \
1075 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1076 then
1077 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1078 "import sys; print(sys.abiflags)"`
1079 fi ])
1080
1081 dnl -- find where python3 thinks it was installed
1082 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1083 [ vi_cv_path_python3_pfx=`
1084 ${vi_cv_path_python3} -c \
1085 "import sys; print(sys.prefix)"` ])
1086
1087 dnl -- and where it thinks it runs
1088 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1089 [ vi_cv_path_python3_epfx=`
1090 ${vi_cv_path_python3} -c \
1091 "import sys; print(sys.exec_prefix)"` ])
1092
1093 dnl -- python3's internal library path
1094
1095 AC_CACHE_VAL(vi_cv_path_python3path,
1096 [ vi_cv_path_python3path=`
1097 unset PYTHONPATH;
1098 ${vi_cv_path_python3} -c \
1099 "import sys, string; print(':'.join(sys.path))"` ])
1100
1101 dnl -- where the Python implementation library archives are
1102
1103 AC_ARG_WITH(python3-config-dir,
1104 [ --with-python3-config-dir=PATH Python's config directory],
1105 [ vi_cv_path_python3_conf="${withval}" ] )
1106
1107 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1108 [
1109 vi_cv_path_python3_conf=
1110 config_dir="config"
1111 if test "${vi_cv_var_python3_abiflags}" != ""; then
1112 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1113 fi
1114 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1115 if test -d "$d" && test -f "$d/config.c"; then
1116 vi_cv_path_python3_conf="$d"
1117 else
1118 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1119 for subdir in lib64 lib share; do
1120 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1121 if test -d "$d" && test -f "$d/config.c"; then
1122 vi_cv_path_python3_conf="$d"
1123 fi
1124 done
1125 done
1126 fi
1127 ])
1128
1129 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1130
1131 if test "X$PYTHON3_CONFDIR" = "X"; then
1132 AC_MSG_RESULT([can't find it!])
1133 else
1134
1135 dnl -- we need to examine Python's config/Makefile too
1136 dnl see what the interpreter is built from
1137 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1138 [
1139 pwd=`pwd`
1140 tmp_mkf="$pwd/config-PyMake$$"
1141 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001142__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001143 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001144 @echo "python3_LIBS='$(LIBS)'"
1145 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001146 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001147 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001148eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001149 dnl -- delete the lines from make about Entering/Leaving directory
1150 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1151 rm -f -- "${tmp_mkf}"
1152 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1153 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1154 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1155 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1156 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1157 ])
1158
1159 if test "X$python3_DLLLIBRARY" != "X"; then
1160 python3_INSTSONAME="$python3_DLLLIBRARY"
1161 fi
1162 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1163 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
1164 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}\\\""
1165 else
1166 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}\\\""
1167 fi
1168 PYTHON3_SRC="if_python3.c"
1169 PYTHON3_OBJ="objects/if_python3.o"
1170
1171 dnl On FreeBSD linking with "-pthread" is required to use threads.
1172 dnl _THREAD_SAFE must be used for compiling then.
1173 dnl The "-pthread" is added to $LIBS, so that the following check for
1174 dnl sigaltstack() will look in libc_r (it's there in libc!).
1175 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1176 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1177 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1178 AC_MSG_CHECKING([if -pthread should be used])
1179 threadsafe_flag=
1180 thread_lib=
1181 dnl if test "x$MACOSX" != "xyes"; then
1182 if test "`(uname) 2>/dev/null`" != Darwin; then
1183 test "$GCC" = yes && threadsafe_flag="-pthread"
1184 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1185 threadsafe_flag="-D_THREAD_SAFE"
1186 thread_lib="-pthread"
1187 fi
1188 if test "`(uname) 2>/dev/null`" = SunOS; then
1189 threadsafe_flag="-pthreads"
1190 fi
1191 fi
1192 libs_save_old=$LIBS
1193 if test -n "$threadsafe_flag"; then
1194 cflags_save=$CFLAGS
1195 CFLAGS="$CFLAGS $threadsafe_flag"
1196 LIBS="$LIBS $thread_lib"
1197 AC_TRY_LINK(,[ ],
1198 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1199 AC_MSG_RESULT(no); LIBS=$libs_save_old
1200 )
1201 CFLAGS=$cflags_save
1202 else
1203 AC_MSG_RESULT(no)
1204 fi
1205
1206 dnl check that compiling a simple program still works with the flags
1207 dnl added for Python.
1208 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1209 cflags_save=$CFLAGS
1210 libs_save=$LIBS
1211 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1212 LIBS="$LIBS $PYTHON3_LIBS"
1213 AC_TRY_LINK(,[ ],
1214 AC_MSG_RESULT(yes); python3_ok=yes,
1215 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1216 CFLAGS=$cflags_save
1217 LIBS=$libs_save
1218 if test "$python3_ok" = yes; then
1219 AC_DEFINE(FEAT_PYTHON3)
1220 else
1221 LIBS=$libs_save_old
1222 PYTHON3_SRC=
1223 PYTHON3_OBJ=
1224 PYTHON3_LIBS=
1225 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001226 fi
1227 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001228 else
1229 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001230 fi
1231 fi
1232fi
1233
1234AC_SUBST(PYTHON3_CONFDIR)
1235AC_SUBST(PYTHON3_LIBS)
1236AC_SUBST(PYTHON3_CFLAGS)
1237AC_SUBST(PYTHON3_SRC)
1238AC_SUBST(PYTHON3_OBJ)
1239
1240dnl if python2.x and python3.x are enabled one can only link in code
1241dnl with dlopen(), dlsym(), dlclose()
1242if test "$python_ok" = yes && test "$python3_ok" = yes; then
1243 AC_DEFINE(DYNAMIC_PYTHON)
1244 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001245 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001246 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001247 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001248 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001249 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1250 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001251 AC_RUN_IFELSE([
1252 #include <dlfcn.h>
1253 /* If this program fails, then RTLD_GLOBAL is needed.
1254 * RTLD_GLOBAL will be used and then it is not possible to
1255 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001256 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001257 */
1258
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001259 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001260 {
1261 int needed = 0;
1262 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1263 if (pylib != 0)
1264 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001265 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001266 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1267 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1268 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001269 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001270 (*init)();
1271 needed = (*simple)("import termios") == -1;
1272 (*final)();
1273 dlclose(pylib);
1274 }
1275 return !needed;
1276 }
1277
1278 int main(int argc, char** argv)
1279 {
1280 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001281 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001282 not_needed = 1;
1283 return !not_needed;
1284 }],
1285 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001286
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001287 CFLAGS=$cflags_save
1288 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001289
1290 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1291 cflags_save=$CFLAGS
1292 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1293 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001294 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1295 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001296 AC_RUN_IFELSE([
1297 #include <dlfcn.h>
1298 #include <wchar.h>
1299 /* If this program fails, then RTLD_GLOBAL is needed.
1300 * RTLD_GLOBAL will be used and then it is not possible to
1301 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001302 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001303 */
1304
1305 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1306 {
1307 int needed = 0;
1308 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1309 if (pylib != 0)
1310 {
1311 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1312 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1313 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1314 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1315 (*pfx)(prefix);
1316 (*init)();
1317 needed = (*simple)("import termios") == -1;
1318 (*final)();
1319 dlclose(pylib);
1320 }
1321 return !needed;
1322 }
1323
1324 int main(int argc, char** argv)
1325 {
1326 int not_needed = 0;
1327 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1328 not_needed = 1;
1329 return !not_needed;
1330 }],
1331 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1332
1333 CFLAGS=$cflags_save
1334 LDFLAGS=$ldflags_save
1335
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001336 PYTHON_SRC="if_python.c"
1337 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001338 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001339 PYTHON_LIBS=
1340 PYTHON3_SRC="if_python3.c"
1341 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001342 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001343 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001344elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1345 AC_DEFINE(DYNAMIC_PYTHON)
1346 PYTHON_SRC="if_python.c"
1347 PYTHON_OBJ="objects/if_python.o"
1348 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1349 PYTHON_LIBS=
1350elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1351 AC_DEFINE(DYNAMIC_PYTHON3)
1352 PYTHON3_SRC="if_python3.c"
1353 PYTHON3_OBJ="objects/if_python3.o"
1354 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1355 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001356fi
1357
Bram Moolenaar071d4272004-06-13 20:20:40 +00001358AC_MSG_CHECKING(--enable-tclinterp argument)
1359AC_ARG_ENABLE(tclinterp,
1360 [ --enable-tclinterp Include Tcl interpreter.], ,
1361 [enable_tclinterp="no"])
1362AC_MSG_RESULT($enable_tclinterp)
1363
1364if test "$enable_tclinterp" = "yes"; then
1365
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001366 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001367 AC_MSG_CHECKING(--with-tclsh argument)
1368 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1369 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001370 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001371 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1372 AC_SUBST(vi_cv_path_tcl)
1373
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001374 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1375 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1376 tclsh_name="tclsh8.4"
1377 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1378 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001379 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001380 tclsh_name="tclsh8.2"
1381 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1382 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001383 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1384 tclsh_name="tclsh8.0"
1385 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1386 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001387 dnl still didn't find it, try without version number
1388 if test "X$vi_cv_path_tcl" = "X"; then
1389 tclsh_name="tclsh"
1390 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1391 fi
1392 if test "X$vi_cv_path_tcl" != "X"; then
1393 AC_MSG_CHECKING(Tcl version)
1394 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1395 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1396 AC_MSG_RESULT($tclver - OK);
1397 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 -`
1398
1399 AC_MSG_CHECKING(for location of Tcl include)
1400 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001401 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 +00001402 else
1403 dnl For Mac OS X 10.3, use the OS-provided framework location
1404 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1405 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001406 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001407 for try in $tclinc; do
1408 if test -f "$try/tcl.h"; then
1409 AC_MSG_RESULT($try/tcl.h)
1410 TCL_INC=$try
1411 break
1412 fi
1413 done
1414 if test -z "$TCL_INC"; then
1415 AC_MSG_RESULT(<not found>)
1416 SKIP_TCL=YES
1417 fi
1418 if test -z "$SKIP_TCL"; then
1419 AC_MSG_CHECKING(for location of tclConfig.sh script)
1420 if test "x$MACOSX" != "xyes"; then
1421 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001422 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001423 else
1424 dnl For Mac OS X 10.3, use the OS-provided framework location
1425 tclcnf="/System/Library/Frameworks/Tcl.framework"
1426 fi
1427 for try in $tclcnf; do
1428 if test -f $try/tclConfig.sh; then
1429 AC_MSG_RESULT($try/tclConfig.sh)
1430 . $try/tclConfig.sh
1431 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1432 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1433 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001434 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001435 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 +00001436 break
1437 fi
1438 done
1439 if test -z "$TCL_LIBS"; then
1440 AC_MSG_RESULT(<not found>)
1441 AC_MSG_CHECKING(for Tcl library by myself)
1442 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001443 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001444 for ext in .so .a ; do
1445 for ver in "" $tclver ; do
1446 for try in $tcllib ; do
1447 trylib=tcl$ver$ext
1448 if test -f $try/lib$trylib ; then
1449 AC_MSG_RESULT($try/lib$trylib)
1450 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1451 if test "`(uname) 2>/dev/null`" = SunOS &&
1452 uname -r | grep '^5' >/dev/null; then
1453 TCL_LIBS="$TCL_LIBS -R $try"
1454 fi
1455 break 3
1456 fi
1457 done
1458 done
1459 done
1460 if test -z "$TCL_LIBS"; then
1461 AC_MSG_RESULT(<not found>)
1462 SKIP_TCL=YES
1463 fi
1464 fi
1465 if test -z "$SKIP_TCL"; then
1466 AC_DEFINE(FEAT_TCL)
1467 TCL_SRC=if_tcl.c
1468 TCL_OBJ=objects/if_tcl.o
1469 TCL_PRO=if_tcl.pro
1470 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1471 fi
1472 fi
1473 else
1474 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1475 fi
1476 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001477 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1478 AC_MSG_ERROR([could not configure Tcl])
1479 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001480fi
1481AC_SUBST(TCL_SRC)
1482AC_SUBST(TCL_OBJ)
1483AC_SUBST(TCL_PRO)
1484AC_SUBST(TCL_CFLAGS)
1485AC_SUBST(TCL_LIBS)
1486
1487AC_MSG_CHECKING(--enable-rubyinterp argument)
1488AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001489 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001490 [enable_rubyinterp="no"])
1491AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001492if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001493 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001494 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001495 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1496 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1497 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001498 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001499 if test "X$vi_cv_path_ruby" != "X"; then
1500 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001501 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 +00001502 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001503 AC_MSG_CHECKING(Ruby rbconfig)
1504 ruby_rbconfig="RbConfig"
1505 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1506 ruby_rbconfig="Config"
1507 fi
1508 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001509 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001510 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001511 if test "X$rubyhdrdir" != "X"; then
1512 AC_MSG_RESULT($rubyhdrdir)
1513 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001514 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001515 if test -d "$rubyhdrdir/$rubyarch"; then
1516 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1517 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001518 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001519 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001520 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001521 if test "X$rubylibs" != "X"; then
1522 RUBY_LIBS="$rubylibs"
1523 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001524 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1525 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001526 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001527 if test -f "$rubylibdir/$librubya"; then
1528 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001529 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1530 elif test "$librubyarg" = "libruby.a"; then
1531 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1532 librubyarg="-lruby"
1533 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001534 fi
1535
1536 if test "X$librubyarg" != "X"; then
1537 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1538 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001539 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001540 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001541 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1542 dnl be included if requested by passing --with-mac-arch to
1543 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001544 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001545 if test "X$rubyldflags" != "X"; then
1546 LDFLAGS="$rubyldflags $LDFLAGS"
1547 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001548 fi
1549 RUBY_SRC="if_ruby.c"
1550 RUBY_OBJ="objects/if_ruby.o"
1551 RUBY_PRO="if_ruby.pro"
1552 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001553 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001554 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001555 AC_DEFINE(DYNAMIC_RUBY)
1556 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1557 RUBY_LIBS=
1558 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001559 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001560 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001561 fi
1562 else
1563 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1564 fi
1565 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001566
1567 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1568 AC_MSG_ERROR([could not configure Ruby])
1569 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001570fi
1571AC_SUBST(RUBY_SRC)
1572AC_SUBST(RUBY_OBJ)
1573AC_SUBST(RUBY_PRO)
1574AC_SUBST(RUBY_CFLAGS)
1575AC_SUBST(RUBY_LIBS)
1576
1577AC_MSG_CHECKING(--enable-cscope argument)
1578AC_ARG_ENABLE(cscope,
1579 [ --enable-cscope Include cscope interface.], ,
1580 [enable_cscope="no"])
1581AC_MSG_RESULT($enable_cscope)
1582if test "$enable_cscope" = "yes"; then
1583 AC_DEFINE(FEAT_CSCOPE)
1584fi
1585
1586AC_MSG_CHECKING(--enable-workshop argument)
1587AC_ARG_ENABLE(workshop,
1588 [ --enable-workshop Include Sun Visual Workshop support.], ,
1589 [enable_workshop="no"])
1590AC_MSG_RESULT($enable_workshop)
1591if test "$enable_workshop" = "yes"; then
1592 AC_DEFINE(FEAT_SUN_WORKSHOP)
1593 WORKSHOP_SRC="workshop.c integration.c"
1594 AC_SUBST(WORKSHOP_SRC)
1595 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1596 AC_SUBST(WORKSHOP_OBJ)
1597 if test "${enable_gui-xxx}" = xxx; then
1598 enable_gui=motif
1599 fi
1600fi
1601
1602AC_MSG_CHECKING(--disable-netbeans argument)
1603AC_ARG_ENABLE(netbeans,
1604 [ --disable-netbeans Disable NetBeans integration support.],
1605 , [enable_netbeans="yes"])
1606if test "$enable_netbeans" = "yes"; then
1607 AC_MSG_RESULT(no)
1608 dnl On Solaris we need the socket and nsl library.
1609 AC_CHECK_LIB(socket, socket)
1610 AC_CHECK_LIB(nsl, gethostbyname)
1611 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1612 AC_TRY_LINK([
1613#include <stdio.h>
1614#include <stdlib.h>
1615#include <stdarg.h>
1616#include <fcntl.h>
1617#include <netdb.h>
1618#include <netinet/in.h>
1619#include <errno.h>
1620#include <sys/types.h>
1621#include <sys/socket.h>
1622 /* Check bitfields */
1623 struct nbbuf {
1624 unsigned int initDone:1;
1625 ushort signmaplen;
1626 };
1627 ], [
1628 /* Check creating a socket. */
1629 struct sockaddr_in server;
1630 (void)socket(AF_INET, SOCK_STREAM, 0);
1631 (void)htons(100);
1632 (void)gethostbyname("microsoft.com");
1633 if (errno == ECONNREFUSED)
1634 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1635 ],
1636 AC_MSG_RESULT(yes),
1637 AC_MSG_RESULT(no); enable_netbeans="no")
1638else
1639 AC_MSG_RESULT(yes)
1640fi
1641if test "$enable_netbeans" = "yes"; then
1642 AC_DEFINE(FEAT_NETBEANS_INTG)
1643 NETBEANS_SRC="netbeans.c"
1644 AC_SUBST(NETBEANS_SRC)
1645 NETBEANS_OBJ="objects/netbeans.o"
1646 AC_SUBST(NETBEANS_OBJ)
1647fi
1648
1649AC_MSG_CHECKING(--enable-sniff argument)
1650AC_ARG_ENABLE(sniff,
1651 [ --enable-sniff Include Sniff interface.], ,
1652 [enable_sniff="no"])
1653AC_MSG_RESULT($enable_sniff)
1654if test "$enable_sniff" = "yes"; then
1655 AC_DEFINE(FEAT_SNIFF)
1656 SNIFF_SRC="if_sniff.c"
1657 AC_SUBST(SNIFF_SRC)
1658 SNIFF_OBJ="objects/if_sniff.o"
1659 AC_SUBST(SNIFF_OBJ)
1660fi
1661
1662AC_MSG_CHECKING(--enable-multibyte argument)
1663AC_ARG_ENABLE(multibyte,
1664 [ --enable-multibyte Include multibyte editing support.], ,
1665 [enable_multibyte="no"])
1666AC_MSG_RESULT($enable_multibyte)
1667if test "$enable_multibyte" = "yes"; then
1668 AC_DEFINE(FEAT_MBYTE)
1669fi
1670
1671AC_MSG_CHECKING(--enable-hangulinput argument)
1672AC_ARG_ENABLE(hangulinput,
1673 [ --enable-hangulinput Include Hangul input support.], ,
1674 [enable_hangulinput="no"])
1675AC_MSG_RESULT($enable_hangulinput)
1676
1677AC_MSG_CHECKING(--enable-xim argument)
1678AC_ARG_ENABLE(xim,
1679 [ --enable-xim Include XIM input support.],
1680 AC_MSG_RESULT($enable_xim),
1681 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001682
1683AC_MSG_CHECKING(--enable-fontset argument)
1684AC_ARG_ENABLE(fontset,
1685 [ --enable-fontset Include X fontset output support.], ,
1686 [enable_fontset="no"])
1687AC_MSG_RESULT($enable_fontset)
1688dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1689
1690test -z "$with_x" && with_x=yes
1691test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1692if test "$with_x" = no; then
1693 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1694else
1695 dnl Do this check early, so that its failure can override user requests.
1696
1697 AC_PATH_PROG(xmkmfpath, xmkmf)
1698
1699 AC_PATH_XTRA
1700
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001701 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001702 dnl be compiled with a special option.
1703 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001704 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001705 CFLAGS="$CFLAGS -W c,dll"
1706 LDFLAGS="$LDFLAGS -W l,dll"
1707 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1708 fi
1709
1710 dnl On my HPUX system the X include dir is found, but the lib dir not.
1711 dnl This is a desparate try to fix this.
1712
1713 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1714 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1715 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1716 X_LIBS="$X_LIBS -L$x_libraries"
1717 if test "`(uname) 2>/dev/null`" = SunOS &&
1718 uname -r | grep '^5' >/dev/null; then
1719 X_LIBS="$X_LIBS -R $x_libraries"
1720 fi
1721 fi
1722
1723 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1724 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1725 AC_MSG_RESULT(Corrected X includes to $x_includes)
1726 X_CFLAGS="$X_CFLAGS -I$x_includes"
1727 fi
1728
1729 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1730 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1731 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1732 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1733 dnl Same for "-R/usr/lib ".
1734 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1735
1736
1737 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001738 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1739 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001740 AC_MSG_CHECKING(if X11 header files can be found)
1741 cflags_save=$CFLAGS
1742 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001743 AC_TRY_COMPILE([#include <X11/Xlib.h>
1744#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745 AC_MSG_RESULT(yes),
1746 AC_MSG_RESULT(no); no_x=yes)
1747 CFLAGS=$cflags_save
1748
1749 if test "${no_x-no}" = yes; then
1750 with_x=no
1751 else
1752 AC_DEFINE(HAVE_X11)
1753 X_LIB="-lXt -lX11";
1754 AC_SUBST(X_LIB)
1755
1756 ac_save_LDFLAGS="$LDFLAGS"
1757 LDFLAGS="-L$x_libraries $LDFLAGS"
1758
1759 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1760 dnl For HP-UX 10.20 it must be before -lSM -lICE
1761 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1762 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1763
1764 dnl Some systems need -lnsl -lsocket when testing for ICE.
1765 dnl The check above doesn't do this, try here (again). Also needed to get
1766 dnl them after Xdmcp. link.sh will remove them when not needed.
1767 dnl Check for other function than above to avoid the cached value
1768 AC_CHECK_LIB(ICE, IceOpenConnection,
1769 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1770
1771 dnl Check for -lXpm (needed for some versions of Motif)
1772 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1773 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1774 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1775
1776 dnl Check that the X11 header files don't use implicit declarations
1777 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1778 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001779 dnl -Werror is GCC only, others like Solaris Studio might not like it
1780 if test "$GCC" = yes; then
1781 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1782 else
1783 CFLAGS="$CFLAGS $X_CFLAGS"
1784 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001785 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1786 AC_MSG_RESULT(no),
1787 CFLAGS="$CFLAGS -Wno-implicit-int"
1788 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1789 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1790 AC_MSG_RESULT(test failed)
1791 )
1792 )
1793 CFLAGS=$cflags_save
1794
1795 LDFLAGS="$ac_save_LDFLAGS"
1796
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001797 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1798 AC_CACHE_VAL(ac_cv_small_wchar_t,
1799 [AC_TRY_RUN([
1800#include <X11/Xlib.h>
1801#if STDC_HEADERS
1802# include <stdlib.h>
1803# include <stddef.h>
1804#endif
1805 main()
1806 {
1807 if (sizeof(wchar_t) <= 2)
1808 exit(1);
1809 exit(0);
1810 }],
1811 ac_cv_small_wchar_t="no",
1812 ac_cv_small_wchar_t="yes",
1813 AC_MSG_ERROR(failed to compile test program))])
1814 AC_MSG_RESULT($ac_cv_small_wchar_t)
1815 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1816 AC_DEFINE(SMALL_WCHAR_T)
1817 fi
1818
Bram Moolenaar071d4272004-06-13 20:20:40 +00001819 fi
1820fi
1821
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001822test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001823
1824AC_MSG_CHECKING(--enable-gui argument)
1825AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001826 [ --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 +00001827
1828dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1829dnl Do not use character classes for portability with old tools.
1830enable_gui_canon=`echo "_$enable_gui" | \
1831 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1832
1833dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834SKIP_GTK2=YES
1835SKIP_GNOME=YES
1836SKIP_MOTIF=YES
1837SKIP_ATHENA=YES
1838SKIP_NEXTAW=YES
1839SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840SKIP_CARBON=YES
1841GUITYPE=NONE
1842
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001843if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844 SKIP_PHOTON=
1845 case "$enable_gui_canon" in
1846 no) AC_MSG_RESULT(no GUI support)
1847 SKIP_PHOTON=YES ;;
1848 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1849 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1850 photon) AC_MSG_RESULT(Photon GUI support) ;;
1851 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1852 SKIP_PHOTON=YES ;;
1853 esac
1854
1855elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1856 SKIP_CARBON=
1857 case "$enable_gui_canon" in
1858 no) AC_MSG_RESULT(no GUI support)
1859 SKIP_CARBON=YES ;;
1860 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001861 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1862 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001863 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1864 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1865 SKIP_CARBON=YES ;;
1866 esac
1867
1868else
1869
Bram Moolenaar071d4272004-06-13 20:20:40 +00001870 case "$enable_gui_canon" in
1871 no|none) AC_MSG_RESULT(no GUI support) ;;
1872 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001873 SKIP_GTK2=
1874 SKIP_GNOME=
1875 SKIP_MOTIF=
1876 SKIP_ATHENA=
1877 SKIP_NEXTAW=
1878 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001879 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1882 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883 SKIP_GTK2=;;
1884 motif) AC_MSG_RESULT(Motif GUI support)
1885 SKIP_MOTIF=;;
1886 athena) AC_MSG_RESULT(Athena GUI support)
1887 SKIP_ATHENA=;;
1888 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1889 SKIP_NEXTAW=;;
1890 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1891 esac
1892
1893fi
1894
Bram Moolenaar071d4272004-06-13 20:20:40 +00001895if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1896 -a "$enable_gui_canon" != "gnome2"; then
1897 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1898 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001899 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001900 , enable_gtk2_check="yes")
1901 AC_MSG_RESULT($enable_gtk2_check)
1902 if test "x$enable_gtk2_check" = "xno"; then
1903 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001904 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001905 fi
1906fi
1907
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001908if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001909 AC_MSG_CHECKING(whether or not to look for GNOME)
1910 AC_ARG_ENABLE(gnome-check,
1911 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1912 , enable_gnome_check="no")
1913 AC_MSG_RESULT($enable_gnome_check)
1914 if test "x$enable_gnome_check" = "xno"; then
1915 SKIP_GNOME=YES
1916 fi
1917fi
1918
1919if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1920 AC_MSG_CHECKING(whether or not to look for Motif)
1921 AC_ARG_ENABLE(motif-check,
1922 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1923 , enable_motif_check="yes")
1924 AC_MSG_RESULT($enable_motif_check)
1925 if test "x$enable_motif_check" = "xno"; then
1926 SKIP_MOTIF=YES
1927 fi
1928fi
1929
1930if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1931 AC_MSG_CHECKING(whether or not to look for Athena)
1932 AC_ARG_ENABLE(athena-check,
1933 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1934 , enable_athena_check="yes")
1935 AC_MSG_RESULT($enable_athena_check)
1936 if test "x$enable_athena_check" = "xno"; then
1937 SKIP_ATHENA=YES
1938 fi
1939fi
1940
1941if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1942 AC_MSG_CHECKING(whether or not to look for neXtaw)
1943 AC_ARG_ENABLE(nextaw-check,
1944 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1945 , enable_nextaw_check="yes")
1946 AC_MSG_RESULT($enable_nextaw_check);
1947 if test "x$enable_nextaw_check" = "xno"; then
1948 SKIP_NEXTAW=YES
1949 fi
1950fi
1951
1952if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1953 AC_MSG_CHECKING(whether or not to look for Carbon)
1954 AC_ARG_ENABLE(carbon-check,
1955 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1956 , enable_carbon_check="yes")
1957 AC_MSG_RESULT($enable_carbon_check);
1958 if test "x$enable_carbon_check" = "xno"; then
1959 SKIP_CARBON=YES
1960 fi
1961fi
1962
Bram Moolenaar843ee412004-06-30 16:16:41 +00001963
Bram Moolenaar071d4272004-06-13 20:20:40 +00001964if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1965 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001966 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967 AC_MSG_RESULT(yes);
1968 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001969 if test "$VIMNAME" = "vim"; then
1970 VIMNAME=Vim
1971 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001972
Bram Moolenaar164fca32010-07-14 13:58:07 +02001973 if test "x$MACARCH" = "xboth"; then
1974 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1975 else
1976 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1977 fi
1978
Bram Moolenaar14716812006-05-04 21:54:08 +00001979 dnl Default install directory is not /usr/local
1980 if test x$prefix = xNONE; then
1981 prefix=/Applications
1982 fi
1983
1984 dnl Sorry for the hard coded default
1985 datadir='${prefix}/Vim.app/Contents/Resources'
1986
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001988 SKIP_GTK2=YES;
1989 SKIP_GNOME=YES;
1990 SKIP_MOTIF=YES;
1991 SKIP_ATHENA=YES;
1992 SKIP_NEXTAW=YES;
1993 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001994 SKIP_CARBON=YES
1995fi
1996
Bram Moolenaar071d4272004-06-13 20:20:40 +00001997dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001998dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001999dnl
2000dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002001dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002dnl
2003AC_DEFUN(AM_PATH_GTK,
2004[
2005 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2006 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002007 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002008 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2009 no_gtk=""
2010 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2011 && $PKG_CONFIG --exists gtk+-2.0; then
2012 {
2013 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2014 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2015 dnl something like that.
2016 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002017 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002018 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2019 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2020 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2021 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2022 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2023 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2024 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2025 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026 else
2027 no_gtk=yes
2028 fi
2029
2030 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2031 {
2032 ac_save_CFLAGS="$CFLAGS"
2033 ac_save_LIBS="$LIBS"
2034 CFLAGS="$CFLAGS $GTK_CFLAGS"
2035 LIBS="$LIBS $GTK_LIBS"
2036
2037 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002038 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002039 dnl
2040 rm -f conf.gtktest
2041 AC_TRY_RUN([
2042#include <gtk/gtk.h>
2043#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002044#if STDC_HEADERS
2045# include <stdlib.h>
2046# include <stddef.h>
2047#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002048
2049int
2050main ()
2051{
2052int major, minor, micro;
2053char *tmp_version;
2054
2055system ("touch conf.gtktest");
2056
2057/* HP/UX 9 (%@#!) writes to sscanf strings */
2058tmp_version = g_strdup("$min_gtk_version");
2059if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2060 printf("%s, bad version string\n", "$min_gtk_version");
2061 exit(1);
2062 }
2063
2064if ((gtk_major_version > major) ||
2065 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2066 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2067 (gtk_micro_version >= micro)))
2068{
2069 return 0;
2070}
2071return 1;
2072}
2073],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2074 CFLAGS="$ac_save_CFLAGS"
2075 LIBS="$ac_save_LIBS"
2076 }
2077 fi
2078 if test "x$no_gtk" = x ; then
2079 if test "x$enable_gtktest" = "xyes"; then
2080 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2081 else
2082 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2083 fi
2084 ifelse([$2], , :, [$2])
2085 else
2086 {
2087 AC_MSG_RESULT(no)
2088 GTK_CFLAGS=""
2089 GTK_LIBS=""
2090 ifelse([$3], , :, [$3])
2091 }
2092 fi
2093 }
2094 else
2095 GTK_CFLAGS=""
2096 GTK_LIBS=""
2097 ifelse([$3], , :, [$3])
2098 fi
2099 AC_SUBST(GTK_CFLAGS)
2100 AC_SUBST(GTK_LIBS)
2101 rm -f conf.gtktest
2102])
2103
2104dnl ---------------------------------------------------------------------------
2105dnl gnome
2106dnl ---------------------------------------------------------------------------
2107AC_DEFUN([GNOME_INIT_HOOK],
2108[
2109 AC_SUBST(GNOME_LIBS)
2110 AC_SUBST(GNOME_LIBDIR)
2111 AC_SUBST(GNOME_INCLUDEDIR)
2112
2113 AC_ARG_WITH(gnome-includes,
2114 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2115 [CFLAGS="$CFLAGS -I$withval"]
2116 )
2117
2118 AC_ARG_WITH(gnome-libs,
2119 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2120 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2121 )
2122
2123 AC_ARG_WITH(gnome,
2124 [ --with-gnome Specify prefix for GNOME files],
2125 if test x$withval = xyes; then
2126 want_gnome=yes
2127 ifelse([$1], [], :, [$1])
2128 else
2129 if test "x$withval" = xno; then
2130 want_gnome=no
2131 else
2132 want_gnome=yes
2133 LDFLAGS="$LDFLAGS -L$withval/lib"
2134 CFLAGS="$CFLAGS -I$withval/include"
2135 gnome_prefix=$withval/lib
2136 fi
2137 fi,
2138 want_gnome=yes)
2139
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002140 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002141 {
2142 AC_MSG_CHECKING(for libgnomeui-2.0)
2143 if $PKG_CONFIG --exists libgnomeui-2.0; then
2144 AC_MSG_RESULT(yes)
2145 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2146 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2147 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002148
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002149 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2150 dnl This might not be the right way but it works for me...
2151 AC_MSG_CHECKING(for FreeBSD)
2152 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2153 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002154 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002155 GNOME_LIBS="$GNOME_LIBS -pthread"
2156 else
2157 AC_MSG_RESULT(no)
2158 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002159 $1
2160 else
2161 AC_MSG_RESULT(not found)
2162 if test "x$2" = xfail; then
2163 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2164 fi
2165 fi
2166 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167 fi
2168])
2169
2170AC_DEFUN([GNOME_INIT],[
2171 GNOME_INIT_HOOK([],fail)
2172])
2173
2174
2175dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002176dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002177dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002178if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002179
2180 AC_MSG_CHECKING(--disable-gtktest argument)
2181 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2182 , enable_gtktest=yes)
2183 if test "x$enable_gtktest" = "xyes" ; then
2184 AC_MSG_RESULT(gtk test enabled)
2185 else
2186 AC_MSG_RESULT(gtk test disabled)
2187 fi
2188
Bram Moolenaar071d4272004-06-13 20:20:40 +00002189 if test "X$PKG_CONFIG" = "X"; then
2190 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2191 fi
2192
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002193 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002194 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2195 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002196 AM_PATH_GTK(2.2.0,
2197 [GUI_LIB_LOC="$GTK_LIBDIR"
2198 GTK_LIBNAME="$GTK_LIBS"
2199 GUI_INC_LOC="$GTK_CFLAGS"], )
2200 if test "x$GTK_CFLAGS" != "x"; then
2201 SKIP_ATHENA=YES
2202 SKIP_NEXTAW=YES
2203 SKIP_MOTIF=YES
2204 GUITYPE=GTK
2205 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002206 fi
2207 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002208 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002209 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2210 || test "0$gtk_minor_version" -ge 2; then
2211 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2212 fi
2213 dnl
2214 dnl if GTK exists, then check for GNOME.
2215 dnl
2216 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002217 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002218 GNOME_INIT_HOOK([have_gnome=yes])
2219 if test "x$have_gnome" = xyes ; then
2220 AC_DEFINE(FEAT_GUI_GNOME)
2221 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2222 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002223 fi
2224 }
2225 fi
2226 fi
2227fi
2228
2229dnl Check for Motif include files location.
2230dnl The LAST one found is used, this makes the highest version to be used,
2231dnl e.g. when Motif1.2 and Motif2.0 are both present.
2232
2233if test -z "$SKIP_MOTIF"; then
2234 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"
2235 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2236 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2237
2238 AC_MSG_CHECKING(for location of Motif GUI includes)
2239 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2240 GUI_INC_LOC=
2241 for try in $gui_includes; do
2242 if test -f "$try/Xm/Xm.h"; then
2243 GUI_INC_LOC=$try
2244 fi
2245 done
2246 if test -n "$GUI_INC_LOC"; then
2247 if test "$GUI_INC_LOC" = /usr/include; then
2248 GUI_INC_LOC=
2249 AC_MSG_RESULT(in default path)
2250 else
2251 AC_MSG_RESULT($GUI_INC_LOC)
2252 fi
2253 else
2254 AC_MSG_RESULT(<not found>)
2255 SKIP_MOTIF=YES
2256 fi
2257fi
2258
2259dnl Check for Motif library files location. In the same order as the include
2260dnl files, to avoid a mixup if several versions are present
2261
2262if test -z "$SKIP_MOTIF"; then
2263 AC_MSG_CHECKING(--with-motif-lib argument)
2264 AC_ARG_WITH(motif-lib,
2265 [ --with-motif-lib=STRING Library for Motif ],
2266 [ MOTIF_LIBNAME="${withval}" ] )
2267
2268 if test -n "$MOTIF_LIBNAME"; then
2269 AC_MSG_RESULT($MOTIF_LIBNAME)
2270 GUI_LIB_LOC=
2271 else
2272 AC_MSG_RESULT(no)
2273
2274 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2275 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2276
2277 AC_MSG_CHECKING(for location of Motif GUI libs)
2278 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"
2279 GUI_LIB_LOC=
2280 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002281 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 if test -f "$libtry"; then
2283 GUI_LIB_LOC=$try
2284 fi
2285 done
2286 done
2287 if test -n "$GUI_LIB_LOC"; then
2288 dnl Remove /usr/lib, it causes trouble on some systems
2289 if test "$GUI_LIB_LOC" = /usr/lib; then
2290 GUI_LIB_LOC=
2291 AC_MSG_RESULT(in default path)
2292 else
2293 if test -n "$GUI_LIB_LOC"; then
2294 AC_MSG_RESULT($GUI_LIB_LOC)
2295 if test "`(uname) 2>/dev/null`" = SunOS &&
2296 uname -r | grep '^5' >/dev/null; then
2297 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2298 fi
2299 fi
2300 fi
2301 MOTIF_LIBNAME=-lXm
2302 else
2303 AC_MSG_RESULT(<not found>)
2304 SKIP_MOTIF=YES
2305 fi
2306 fi
2307fi
2308
2309if test -z "$SKIP_MOTIF"; then
2310 SKIP_ATHENA=YES
2311 SKIP_NEXTAW=YES
2312 GUITYPE=MOTIF
2313 AC_SUBST(MOTIF_LIBNAME)
2314fi
2315
2316dnl Check if the Athena files can be found
2317
2318GUI_X_LIBS=
2319
2320if test -z "$SKIP_ATHENA"; then
2321 AC_MSG_CHECKING(if Athena header files can be found)
2322 cflags_save=$CFLAGS
2323 CFLAGS="$CFLAGS $X_CFLAGS"
2324 AC_TRY_COMPILE([
2325#include <X11/Intrinsic.h>
2326#include <X11/Xaw/Paned.h>], ,
2327 AC_MSG_RESULT(yes),
2328 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2329 CFLAGS=$cflags_save
2330fi
2331
2332if test -z "$SKIP_ATHENA"; then
2333 GUITYPE=ATHENA
2334fi
2335
2336if test -z "$SKIP_NEXTAW"; then
2337 AC_MSG_CHECKING(if neXtaw header files can be found)
2338 cflags_save=$CFLAGS
2339 CFLAGS="$CFLAGS $X_CFLAGS"
2340 AC_TRY_COMPILE([
2341#include <X11/Intrinsic.h>
2342#include <X11/neXtaw/Paned.h>], ,
2343 AC_MSG_RESULT(yes),
2344 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2345 CFLAGS=$cflags_save
2346fi
2347
2348if test -z "$SKIP_NEXTAW"; then
2349 GUITYPE=NEXTAW
2350fi
2351
2352if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2353 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2354 dnl Avoid adding it when it twice
2355 if test -n "$GUI_INC_LOC"; then
2356 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2357 fi
2358 if test -n "$GUI_LIB_LOC"; then
2359 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2360 fi
2361
2362 dnl Check for -lXext and then for -lXmu
2363 ldflags_save=$LDFLAGS
2364 LDFLAGS="$X_LIBS $LDFLAGS"
2365 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2366 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2367 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2368 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2369 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2370 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2371 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2372 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2373 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2374 if test -z "$SKIP_MOTIF"; then
2375 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2376 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2377 fi
2378 LDFLAGS=$ldflags_save
2379
2380 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2381 AC_MSG_CHECKING(for extra X11 defines)
2382 NARROW_PROTO=
2383 rm -fr conftestdir
2384 if mkdir conftestdir; then
2385 cd conftestdir
2386 cat > Imakefile <<'EOF'
2387acfindx:
2388 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2389EOF
2390 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2391 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2392 fi
2393 cd ..
2394 rm -fr conftestdir
2395 fi
2396 if test -z "$NARROW_PROTO"; then
2397 AC_MSG_RESULT(no)
2398 else
2399 AC_MSG_RESULT($NARROW_PROTO)
2400 fi
2401 AC_SUBST(NARROW_PROTO)
2402fi
2403
2404dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2405dnl use the X11 include path
2406if test "$enable_xsmp" = "yes"; then
2407 cppflags_save=$CPPFLAGS
2408 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2409 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2410 CPPFLAGS=$cppflags_save
2411fi
2412
2413
Bram Moolenaare667c952010-07-05 22:57:59 +02002414if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002415 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2416 cppflags_save=$CPPFLAGS
2417 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2418 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2419
2420 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2421 if test ! "$enable_xim" = "no"; then
2422 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2423 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2424 AC_MSG_RESULT(yes),
2425 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2426 fi
2427 CPPFLAGS=$cppflags_save
2428
2429 dnl automatically enable XIM when hangul input isn't enabled
2430 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2431 -a "x$GUITYPE" != "xNONE" ; then
2432 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2433 enable_xim="yes"
2434 fi
2435fi
2436
2437if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2438 cppflags_save=$CPPFLAGS
2439 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002440dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2441 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2442 AC_TRY_COMPILE([
2443#include <X11/Intrinsic.h>
2444#include <X11/Xmu/Editres.h>],
2445 [int i; i = 0;],
2446 AC_MSG_RESULT(yes)
2447 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2448 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002449 CPPFLAGS=$cppflags_save
2450fi
2451
2452dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2453if test -z "$SKIP_MOTIF"; then
2454 cppflags_save=$CPPFLAGS
2455 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002456 if test "$zOSUnix" = "yes"; then
2457 xmheader="Xm/Xm.h"
2458 else
2459 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002460 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002461 fi
2462 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002463
Bram Moolenaar77c19352012-06-13 19:19:41 +02002464 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002465 dnl Solaris uses XpmAttributes_21, very annoying.
2466 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2467 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2468 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2469 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2470 )
2471 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002472 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002473 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002474 CPPFLAGS=$cppflags_save
2475fi
2476
2477if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2478 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2479 enable_xim="no"
2480fi
2481if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2482 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2483 enable_fontset="no"
2484fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002485if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002486 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2487 enable_fontset="no"
2488fi
2489
Bram Moolenaar071d4272004-06-13 20:20:40 +00002490if test -z "$SKIP_PHOTON"; then
2491 GUITYPE=PHOTONGUI
2492fi
2493
2494AC_SUBST(GUI_INC_LOC)
2495AC_SUBST(GUI_LIB_LOC)
2496AC_SUBST(GUITYPE)
2497AC_SUBST(GUI_X_LIBS)
2498
2499if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2500 AC_MSG_ERROR([cannot use workshop without Motif])
2501fi
2502
2503dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2504if test "$enable_xim" = "yes"; then
2505 AC_DEFINE(FEAT_XIM)
2506fi
2507if test "$enable_fontset" = "yes"; then
2508 AC_DEFINE(FEAT_XFONTSET)
2509fi
2510
2511
2512dnl ---------------------------------------------------------------------------
2513dnl end of GUI-checking
2514dnl ---------------------------------------------------------------------------
2515
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002516dnl Check for Cygwin, which needs an extra source file if not using X11
2517AC_MSG_CHECKING(for CYGWIN environment)
2518case `uname` in
2519 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2520 AC_MSG_CHECKING(for CYGWIN clipboard support)
2521 if test "x$with_x" = "xno" ; then
2522 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2523 AC_MSG_RESULT(yes)
2524 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2525 else
2526 AC_MSG_RESULT(no - using X11)
2527 fi ;;
2528
2529 *) CYGWIN=no; AC_MSG_RESULT(no);;
2530esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531
2532dnl Only really enable hangul input when GUI and XFONTSET are available
2533if test "$enable_hangulinput" = "yes"; then
2534 if test "x$GUITYPE" = "xNONE"; then
2535 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2536 enable_hangulinput=no
2537 else
2538 AC_DEFINE(FEAT_HANGULIN)
2539 HANGULIN_SRC=hangulin.c
2540 AC_SUBST(HANGULIN_SRC)
2541 HANGULIN_OBJ=objects/hangulin.o
2542 AC_SUBST(HANGULIN_OBJ)
2543 fi
2544fi
2545
2546dnl Checks for libraries and include files.
2547
Bram Moolenaar446cb832008-06-24 21:56:24 +00002548AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2549 [
2550 AC_RUN_IFELSE([[
2551#include "confdefs.h"
2552#include <ctype.h>
2553#if STDC_HEADERS
2554# include <stdlib.h>
2555# include <stddef.h>
2556#endif
2557main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2558 ]],[
2559 vim_cv_toupper_broken=yes
2560 ],[
2561 vim_cv_toupper_broken=no
2562 ],[
2563 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2564 ])])
2565
2566if test "x$vim_cv_toupper_broken" = "xyes" ; then
2567 AC_DEFINE(BROKEN_TOUPPER)
2568fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002569
2570AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002571AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2573 AC_MSG_RESULT(no))
2574
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002575AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2576AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2577 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2578 AC_MSG_RESULT(no))
2579
Bram Moolenaar071d4272004-06-13 20:20:40 +00002580dnl Checks for header files.
2581AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2582dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2583if test "$HAS_ELF" = 1; then
2584 AC_CHECK_LIB(elf, main)
2585fi
2586
2587AC_HEADER_DIRENT
2588
Bram Moolenaar071d4272004-06-13 20:20:40 +00002589dnl If sys/wait.h is not found it might still exist but not be POSIX
2590dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2591if test $ac_cv_header_sys_wait_h = no; then
2592 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2593 AC_TRY_COMPILE([#include <sys/wait.h>],
2594 [union wait xx, yy; xx = yy],
2595 AC_MSG_RESULT(yes)
2596 AC_DEFINE(HAVE_SYS_WAIT_H)
2597 AC_DEFINE(HAVE_UNION_WAIT),
2598 AC_MSG_RESULT(no))
2599fi
2600
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002601AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2602 sys/select.h sys/utsname.h termcap.h fcntl.h \
2603 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2604 termio.h iconv.h inttypes.h langinfo.h math.h \
2605 unistd.h stropts.h errno.h sys/resource.h \
2606 sys/systeminfo.h locale.h sys/stream.h termios.h \
2607 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2608 utime.h sys/param.h libintl.h libgen.h \
2609 util/debug.h util/msg18n.h frame.h sys/acl.h \
2610 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002611
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002612dnl sys/ptem.h depends on sys/stream.h on Solaris
2613AC_CHECK_HEADERS(sys/ptem.h, [], [],
2614[#if defined HAVE_SYS_STREAM_H
2615# include <sys/stream.h>
2616#endif])
2617
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002618dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2619AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2620[#if defined HAVE_SYS_PARAM_H
2621# include <sys/param.h>
2622#endif])
2623
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002624
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002625dnl pthread_np.h may exist but can only be used after including pthread.h
2626AC_MSG_CHECKING([for pthread_np.h])
2627AC_TRY_COMPILE([
2628#include <pthread.h>
2629#include <pthread_np.h>],
2630 [int i; i = 0;],
2631 AC_MSG_RESULT(yes)
2632 AC_DEFINE(HAVE_PTHREAD_NP_H),
2633 AC_MSG_RESULT(no))
2634
Bram Moolenaare344bea2005-09-01 20:46:49 +00002635AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002636if test "x$MACOSX" = "xyes"; then
2637 dnl The strings.h file on OS/X contains a warning and nothing useful.
2638 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2639else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640
2641dnl Check if strings.h and string.h can both be included when defined.
2642AC_MSG_CHECKING([if strings.h can be included after string.h])
2643cppflags_save=$CPPFLAGS
2644CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2645AC_TRY_COMPILE([
2646#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2647# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2648 /* but don't do it on AIX 5.1 (Uribarri) */
2649#endif
2650#ifdef HAVE_XM_XM_H
2651# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2652#endif
2653#ifdef HAVE_STRING_H
2654# include <string.h>
2655#endif
2656#if defined(HAVE_STRINGS_H)
2657# include <strings.h>
2658#endif
2659 ], [int i; i = 0;],
2660 AC_MSG_RESULT(yes),
2661 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2662 AC_MSG_RESULT(no))
2663CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002664fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002665
2666dnl Checks for typedefs, structures, and compiler characteristics.
2667AC_PROG_GCC_TRADITIONAL
2668AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002669AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670AC_TYPE_MODE_T
2671AC_TYPE_OFF_T
2672AC_TYPE_PID_T
2673AC_TYPE_SIZE_T
2674AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002675AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002676
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677AC_HEADER_TIME
2678AC_CHECK_TYPE(ino_t, long)
2679AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002680AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681
2682AC_MSG_CHECKING(for rlim_t)
2683if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2684 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2685else
2686 AC_EGREP_CPP(dnl
2687changequote(<<,>>)dnl
2688<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2689changequote([,]),
2690 [
2691#include <sys/types.h>
2692#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002693# include <stdlib.h>
2694# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002695#endif
2696#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002697# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002698#endif
2699 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2700 AC_MSG_RESULT($ac_cv_type_rlim_t)
2701fi
2702if test $ac_cv_type_rlim_t = no; then
2703 cat >> confdefs.h <<\EOF
2704#define rlim_t unsigned long
2705EOF
2706fi
2707
2708AC_MSG_CHECKING(for stack_t)
2709if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2710 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2711else
2712 AC_EGREP_CPP(stack_t,
2713 [
2714#include <sys/types.h>
2715#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002716# include <stdlib.h>
2717# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002718#endif
2719#include <signal.h>
2720 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2721 AC_MSG_RESULT($ac_cv_type_stack_t)
2722fi
2723if test $ac_cv_type_stack_t = no; then
2724 cat >> confdefs.h <<\EOF
2725#define stack_t struct sigaltstack
2726EOF
2727fi
2728
2729dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2730AC_MSG_CHECKING(whether stack_t has an ss_base field)
2731AC_TRY_COMPILE([
2732#include <sys/types.h>
2733#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002734# include <stdlib.h>
2735# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002736#endif
2737#include <signal.h>
2738#include "confdefs.h"
2739 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2740 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2741 AC_MSG_RESULT(no))
2742
2743olibs="$LIBS"
2744AC_MSG_CHECKING(--with-tlib argument)
2745AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2746if test -n "$with_tlib"; then
2747 AC_MSG_RESULT($with_tlib)
2748 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002749 AC_MSG_CHECKING(for linking with $with_tlib library)
2750 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2751 dnl Need to check for tgetent() below.
2752 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002753else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002754 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002755 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2756 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002757 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002758 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002759 dnl Older versions of ncurses have bugs, get a new one!
2760 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002761 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002763 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2764 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002765 esac
2766 for libname in $tlibs; do
2767 AC_CHECK_LIB(${libname}, tgetent,,)
2768 if test "x$olibs" != "x$LIBS"; then
2769 dnl It's possible that a library is found but it doesn't work
2770 dnl e.g., shared library that cannot be found
2771 dnl compile and run a test program to be sure
2772 AC_TRY_RUN([
2773#ifdef HAVE_TERMCAP_H
2774# include <termcap.h>
2775#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002776#if STDC_HEADERS
2777# include <stdlib.h>
2778# include <stddef.h>
2779#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002780main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2781 res="OK", res="FAIL", res="FAIL")
2782 if test "$res" = "OK"; then
2783 break
2784 fi
2785 AC_MSG_RESULT($libname library is not usable)
2786 LIBS="$olibs"
2787 fi
2788 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002789 if test "x$olibs" = "x$LIBS"; then
2790 AC_MSG_RESULT(no terminal library found)
2791 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002792fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002793
2794if test "x$olibs" = "x$LIBS"; then
2795 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002796 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002797 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2798 AC_MSG_RESULT(yes),
2799 AC_MSG_ERROR([NOT FOUND!
2800 You need to install a terminal library; for example ncurses.
2801 Or specify the name of the library with --with-tlib.]))
2802fi
2803
Bram Moolenaar446cb832008-06-24 21:56:24 +00002804AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2805 [
2806 AC_RUN_IFELSE([[
2807#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002808#ifdef HAVE_TERMCAP_H
2809# include <termcap.h>
2810#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002811#ifdef HAVE_STRING_H
2812# include <string.h>
2813#endif
2814#if STDC_HEADERS
2815# include <stdlib.h>
2816# include <stddef.h>
2817#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002818main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002819{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2820 ]],[
2821 vim_cv_terminfo=no
2822 ],[
2823 vim_cv_terminfo=yes
2824 ],[
2825 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2826 ])
2827 ])
2828
2829if test "x$vim_cv_terminfo" = "xyes" ; then
2830 AC_DEFINE(TERMINFO)
2831fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002832
2833if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002834 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2835 [
2836 AC_RUN_IFELSE([[
2837#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002838#ifdef HAVE_TERMCAP_H
2839# include <termcap.h>
2840#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002841#if STDC_HEADERS
2842# include <stdlib.h>
2843# include <stddef.h>
2844#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002845main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002846{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2847 ]],[
2848 vim_cv_tgent=zero
2849 ],[
2850 vim_cv_tgent=non-zero
2851 ],[
2852 AC_MSG_ERROR(failed to compile test program.)
2853 ])
2854 ])
2855
2856 if test "x$vim_cv_tgent" = "xzero" ; then
2857 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2858 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002859fi
2860
2861AC_MSG_CHECKING(whether termcap.h contains ospeed)
2862AC_TRY_LINK([
2863#ifdef HAVE_TERMCAP_H
2864# include <termcap.h>
2865#endif
2866 ], [ospeed = 20000],
2867 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2868 [AC_MSG_RESULT(no)
2869 AC_MSG_CHECKING(whether ospeed can be extern)
2870 AC_TRY_LINK([
2871#ifdef HAVE_TERMCAP_H
2872# include <termcap.h>
2873#endif
2874extern short ospeed;
2875 ], [ospeed = 20000],
2876 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2877 AC_MSG_RESULT(no))]
2878 )
2879
2880AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2881AC_TRY_LINK([
2882#ifdef HAVE_TERMCAP_H
2883# include <termcap.h>
2884#endif
2885 ], [if (UP == 0 && BC == 0) PC = 1],
2886 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2887 [AC_MSG_RESULT(no)
2888 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2889 AC_TRY_LINK([
2890#ifdef HAVE_TERMCAP_H
2891# include <termcap.h>
2892#endif
2893extern char *UP, *BC, PC;
2894 ], [if (UP == 0 && BC == 0) PC = 1],
2895 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2896 AC_MSG_RESULT(no))]
2897 )
2898
2899AC_MSG_CHECKING(whether tputs() uses outfuntype)
2900AC_TRY_COMPILE([
2901#ifdef HAVE_TERMCAP_H
2902# include <termcap.h>
2903#endif
2904 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2905 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2906 AC_MSG_RESULT(no))
2907
2908dnl On some SCO machines sys/select redefines struct timeval
2909AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2910AC_TRY_COMPILE([
2911#include <sys/types.h>
2912#include <sys/time.h>
2913#include <sys/select.h>], ,
2914 AC_MSG_RESULT(yes)
2915 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2916 AC_MSG_RESULT(no))
2917
2918dnl AC_DECL_SYS_SIGLIST
2919
2920dnl Checks for pty.c (copied from screen) ==========================
2921AC_MSG_CHECKING(for /dev/ptc)
2922if test -r /dev/ptc; then
2923 AC_DEFINE(HAVE_DEV_PTC)
2924 AC_MSG_RESULT(yes)
2925else
2926 AC_MSG_RESULT(no)
2927fi
2928
2929AC_MSG_CHECKING(for SVR4 ptys)
2930if test -c /dev/ptmx ; then
2931 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2932 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2933 AC_MSG_RESULT(no))
2934else
2935 AC_MSG_RESULT(no)
2936fi
2937
2938AC_MSG_CHECKING(for ptyranges)
2939if test -d /dev/ptym ; then
2940 pdir='/dev/ptym'
2941else
2942 pdir='/dev'
2943fi
2944dnl SCO uses ptyp%d
2945AC_EGREP_CPP(yes,
2946[#ifdef M_UNIX
2947 yes;
2948#endif
2949 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2950dnl if test -c /dev/ptyp19; then
2951dnl ptys=`echo /dev/ptyp??`
2952dnl else
2953dnl ptys=`echo $pdir/pty??`
2954dnl fi
2955if test "$ptys" != "$pdir/pty??" ; then
2956 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2957 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2958 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2959 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2960 AC_MSG_RESULT([$p0 / $p1])
2961else
2962 AC_MSG_RESULT([don't know])
2963fi
2964
2965dnl **** pty mode/group handling ****
2966dnl
2967dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002968rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002969AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2970 [
2971 AC_RUN_IFELSE([[
2972#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002973#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002974#if STDC_HEADERS
2975# include <stdlib.h>
2976# include <stddef.h>
2977#endif
2978#ifdef HAVE_UNISTD_H
2979#include <unistd.h>
2980#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002981#include <sys/stat.h>
2982#include <stdio.h>
2983main()
2984{
2985 struct stat sb;
2986 char *x,*ttyname();
2987 int om, m;
2988 FILE *fp;
2989
2990 if (!(x = ttyname(0))) exit(1);
2991 if (stat(x, &sb)) exit(1);
2992 om = sb.st_mode;
2993 if (om & 002) exit(0);
2994 m = system("mesg y");
2995 if (m == -1 || m == 127) exit(1);
2996 if (stat(x, &sb)) exit(1);
2997 m = sb.st_mode;
2998 if (chmod(x, om)) exit(1);
2999 if (m & 002) exit(0);
3000 if (sb.st_gid == getgid()) exit(1);
3001 if (!(fp=fopen("conftest_grp", "w")))
3002 exit(1);
3003 fprintf(fp, "%d\n", sb.st_gid);
3004 fclose(fp);
3005 exit(0);
3006}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003007 ]],[
3008 if test -f conftest_grp; then
3009 vim_cv_tty_group=`cat conftest_grp`
3010 if test "x$vim_cv_tty_mode" = "x" ; then
3011 vim_cv_tty_mode=0620
3012 fi
3013 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3014 else
3015 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003016 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003017 fi
3018 ],[
3019 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003020 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003021 ],[
3022 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3023 ])
3024 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003025rm -f conftest_grp
3026
Bram Moolenaar446cb832008-06-24 21:56:24 +00003027if test "x$vim_cv_tty_group" != "xworld" ; then
3028 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3029 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003030 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 (probably 0620)])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003031 else
3032 AC_DEFINE(PTYMODE, 0620)
3033 fi
3034fi
3035
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036dnl Checks for library functions. ===================================
3037
3038AC_TYPE_SIGNAL
3039
3040dnl find out what to use at the end of a signal function
3041if test $ac_cv_type_signal = void; then
3042 AC_DEFINE(SIGRETURN, [return])
3043else
3044 AC_DEFINE(SIGRETURN, [return 0])
3045fi
3046
3047dnl check if struct sigcontext is defined (used for SGI only)
3048AC_MSG_CHECKING(for struct sigcontext)
3049AC_TRY_COMPILE([
3050#include <signal.h>
3051test_sig()
3052{
3053 struct sigcontext *scont;
3054 scont = (struct sigcontext *)0;
3055 return 1;
3056} ], ,
3057 AC_MSG_RESULT(yes)
3058 AC_DEFINE(HAVE_SIGCONTEXT),
3059 AC_MSG_RESULT(no))
3060
3061dnl tricky stuff: try to find out if getcwd() is implemented with
3062dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003063AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3064 [
3065 AC_RUN_IFELSE([[
3066#include "confdefs.h"
3067#ifdef HAVE_UNISTD_H
3068#include <unistd.h>
3069#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003070char *dagger[] = { "IFS=pwd", 0 };
3071main()
3072{
3073 char buffer[500];
3074 extern char **environ;
3075 environ = dagger;
3076 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003077}
3078 ]],[
3079 vim_cv_getcwd_broken=no
3080 ],[
3081 vim_cv_getcwd_broken=yes
3082 ],[
3083 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3084 ])
3085 ])
3086
3087if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3088 AC_DEFINE(BAD_GETCWD)
3089fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003090
Bram Moolenaar25153e12010-02-24 14:47:08 +01003091dnl Check for functions in one big call, to reduce the size of configure.
3092dnl Can only be used for functions that do not require any include.
3093AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003094 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003095 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003096 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003097 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003098 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3099 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003100AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003101
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003102dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3103dnl appropriate, so that off_t is 64 bits when needed.
3104AC_SYS_LARGEFILE
3105
Bram Moolenaar071d4272004-06-13 20:20:40 +00003106dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3107AC_MSG_CHECKING(for st_blksize)
3108AC_TRY_COMPILE(
3109[#include <sys/types.h>
3110#include <sys/stat.h>],
3111[ struct stat st;
3112 int n;
3113
3114 stat("/", &st);
3115 n = (int)st.st_blksize;],
3116 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3117 AC_MSG_RESULT(no))
3118
Bram Moolenaar446cb832008-06-24 21:56:24 +00003119AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3120 [
3121 AC_RUN_IFELSE([[
3122#include "confdefs.h"
3123#if STDC_HEADERS
3124# include <stdlib.h>
3125# include <stddef.h>
3126#endif
3127#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003128#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003129main() {struct stat st; exit(stat("configure/", &st) != 0); }
3130 ]],[
3131 vim_cv_stat_ignores_slash=yes
3132 ],[
3133 vim_cv_stat_ignores_slash=no
3134 ],[
3135 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3136 ])
3137 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003138
Bram Moolenaar446cb832008-06-24 21:56:24 +00003139if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3140 AC_DEFINE(STAT_IGNORES_SLASH)
3141fi
3142
Bram Moolenaar071d4272004-06-13 20:20:40 +00003143dnl Link with iconv for charset translation, if not found without library.
3144dnl check for iconv() requires including iconv.h
3145dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3146dnl has been installed.
3147AC_MSG_CHECKING(for iconv_open())
3148save_LIBS="$LIBS"
3149LIBS="$LIBS -liconv"
3150AC_TRY_LINK([
3151#ifdef HAVE_ICONV_H
3152# include <iconv.h>
3153#endif
3154 ], [iconv_open("fr", "to");],
3155 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3156 LIBS="$save_LIBS"
3157 AC_TRY_LINK([
3158#ifdef HAVE_ICONV_H
3159# include <iconv.h>
3160#endif
3161 ], [iconv_open("fr", "to");],
3162 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3163 AC_MSG_RESULT(no)))
3164
3165
3166AC_MSG_CHECKING(for nl_langinfo(CODESET))
3167AC_TRY_LINK([
3168#ifdef HAVE_LANGINFO_H
3169# include <langinfo.h>
3170#endif
3171], [char *cs = nl_langinfo(CODESET);],
3172 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3173 AC_MSG_RESULT(no))
3174
Bram Moolenaar446cb832008-06-24 21:56:24 +00003175dnl Need various functions for floating point support. Only enable
3176dnl floating point when they are all present.
3177AC_CHECK_LIB(m, strtod)
3178AC_MSG_CHECKING([for strtod() and other floating point functions])
3179AC_TRY_LINK([
3180#ifdef HAVE_MATH_H
3181# include <math.h>
3182#endif
3183#if STDC_HEADERS
3184# include <stdlib.h>
3185# include <stddef.h>
3186#endif
3187], [char *s; double d;
3188 d = strtod("1.1", &s);
3189 d = fabs(1.11);
3190 d = ceil(1.11);
3191 d = floor(1.11);
3192 d = log10(1.11);
3193 d = pow(1.11, 2.22);
3194 d = sqrt(1.11);
3195 d = sin(1.11);
3196 d = cos(1.11);
3197 d = atan(1.11);
3198 ],
3199 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3200 AC_MSG_RESULT(no))
3201
Bram Moolenaar071d4272004-06-13 20:20:40 +00003202dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3203dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003204dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003205AC_MSG_CHECKING(--disable-acl argument)
3206AC_ARG_ENABLE(acl,
3207 [ --disable-acl Don't check for ACL support.],
3208 , [enable_acl="yes"])
3209if test "$enable_acl" = "yes"; then
3210AC_MSG_RESULT(no)
3211AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3212 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3213 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3214
3215AC_MSG_CHECKING(for POSIX ACL support)
3216AC_TRY_LINK([
3217#include <sys/types.h>
3218#ifdef HAVE_SYS_ACL_H
3219# include <sys/acl.h>
3220#endif
3221acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3222 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3223 acl_free(acl);],
3224 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3225 AC_MSG_RESULT(no))
3226
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003227AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003228AC_MSG_CHECKING(for Solaris ACL support)
3229AC_TRY_LINK([
3230#ifdef HAVE_SYS_ACL_H
3231# include <sys/acl.h>
3232#endif], [acl("foo", GETACLCNT, 0, NULL);
3233 ],
3234 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003235 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003236
3237AC_MSG_CHECKING(for AIX ACL support)
3238AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003239#if STDC_HEADERS
3240# include <stdlib.h>
3241# include <stddef.h>
3242#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243#ifdef HAVE_SYS_ACL_H
3244# include <sys/acl.h>
3245#endif
3246#ifdef HAVE_SYS_ACCESS_H
3247# include <sys/access.h>
3248#endif
3249#define _ALL_SOURCE
3250
3251#include <sys/stat.h>
3252
3253int aclsize;
3254struct acl *aclent;], [aclsize = sizeof(struct acl);
3255 aclent = (void *)malloc(aclsize);
3256 statacl("foo", STX_NORMAL, aclent, aclsize);
3257 ],
3258 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3259 AC_MSG_RESULT(no))
3260else
3261 AC_MSG_RESULT(yes)
3262fi
3263
3264AC_MSG_CHECKING(--disable-gpm argument)
3265AC_ARG_ENABLE(gpm,
3266 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3267 [enable_gpm="yes"])
3268
3269if test "$enable_gpm" = "yes"; then
3270 AC_MSG_RESULT(no)
3271 dnl Checking if gpm support can be compiled
3272 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3273 [olibs="$LIBS" ; LIBS="-lgpm"]
3274 AC_TRY_LINK(
3275 [#include <gpm.h>
3276 #include <linux/keyboard.h>],
3277 [Gpm_GetLibVersion(NULL);],
3278 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3279 dnl FEAT_MOUSE_GPM if mouse support is included
3280 [vi_cv_have_gpm=yes],
3281 [vi_cv_have_gpm=no])
3282 [LIBS="$olibs"]
3283 )
3284 if test $vi_cv_have_gpm = yes; then
3285 LIBS="$LIBS -lgpm"
3286 AC_DEFINE(HAVE_GPM)
3287 fi
3288else
3289 AC_MSG_RESULT(yes)
3290fi
3291
Bram Moolenaar446cb832008-06-24 21:56:24 +00003292AC_MSG_CHECKING(--disable-sysmouse argument)
3293AC_ARG_ENABLE(sysmouse,
3294 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3295 [enable_sysmouse="yes"])
3296
3297if test "$enable_sysmouse" = "yes"; then
3298 AC_MSG_RESULT(no)
3299 dnl Checking if sysmouse support can be compiled
3300 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3301 dnl defines FEAT_SYSMOUSE if mouse support is included
3302 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3303 AC_TRY_LINK(
3304 [#include <sys/consio.h>
3305 #include <signal.h>
3306 #include <sys/fbio.h>],
3307 [struct mouse_info mouse;
3308 mouse.operation = MOUSE_MODE;
3309 mouse.operation = MOUSE_SHOW;
3310 mouse.u.mode.mode = 0;
3311 mouse.u.mode.signal = SIGUSR2;],
3312 [vi_cv_have_sysmouse=yes],
3313 [vi_cv_have_sysmouse=no])
3314 )
3315 if test $vi_cv_have_sysmouse = yes; then
3316 AC_DEFINE(HAVE_SYSMOUSE)
3317 fi
3318else
3319 AC_MSG_RESULT(yes)
3320fi
3321
Bram Moolenaarf05da212009-11-17 16:13:15 +00003322dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3323AC_MSG_CHECKING(for FD_CLOEXEC)
3324AC_TRY_COMPILE(
3325[#if HAVE_FCNTL_H
3326# include <fcntl.h>
3327#endif],
3328[ int flag = FD_CLOEXEC;],
3329 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3330 AC_MSG_RESULT(not usable))
3331
Bram Moolenaar071d4272004-06-13 20:20:40 +00003332dnl rename needs to be checked separately to work on Nextstep with cc
3333AC_MSG_CHECKING(for rename)
3334AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3335 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3336 AC_MSG_RESULT(no))
3337
3338dnl sysctl() may exist but not the arguments we use
3339AC_MSG_CHECKING(for sysctl)
3340AC_TRY_COMPILE(
3341[#include <sys/types.h>
3342#include <sys/sysctl.h>],
3343[ int mib[2], r;
3344 size_t len;
3345
3346 mib[0] = CTL_HW;
3347 mib[1] = HW_USERMEM;
3348 len = sizeof(r);
3349 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3350 ],
3351 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3352 AC_MSG_RESULT(not usable))
3353
3354dnl sysinfo() may exist but not be Linux compatible
3355AC_MSG_CHECKING(for sysinfo)
3356AC_TRY_COMPILE(
3357[#include <sys/types.h>
3358#include <sys/sysinfo.h>],
3359[ struct sysinfo sinfo;
3360 int t;
3361
3362 (void)sysinfo(&sinfo);
3363 t = sinfo.totalram;
3364 ],
3365 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3366 AC_MSG_RESULT(not usable))
3367
Bram Moolenaar914572a2007-05-01 11:37:47 +00003368dnl struct sysinfo may have the mem_unit field or not
3369AC_MSG_CHECKING(for sysinfo.mem_unit)
3370AC_TRY_COMPILE(
3371[#include <sys/types.h>
3372#include <sys/sysinfo.h>],
3373[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003374 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003375 ],
3376 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3377 AC_MSG_RESULT(no))
3378
Bram Moolenaar071d4272004-06-13 20:20:40 +00003379dnl sysconf() may exist but not support what we want to use
3380AC_MSG_CHECKING(for sysconf)
3381AC_TRY_COMPILE(
3382[#include <unistd.h>],
3383[ (void)sysconf(_SC_PAGESIZE);
3384 (void)sysconf(_SC_PHYS_PAGES);
3385 ],
3386 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3387 AC_MSG_RESULT(not usable))
3388
Bram Moolenaar914703b2010-05-31 21:59:46 +02003389AC_CHECK_SIZEOF([int])
3390AC_CHECK_SIZEOF([long])
3391AC_CHECK_SIZEOF([time_t])
3392AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003393
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003394dnl Make sure that uint32_t is really 32 bits unsigned.
3395AC_MSG_CHECKING([uint32_t is 32 bits])
3396AC_TRY_RUN([
3397#ifdef HAVE_STDINT_H
3398# include <stdint.h>
3399#endif
3400#ifdef HAVE_INTTYPES_H
3401# include <inttypes.h>
3402#endif
3403main() {
3404 uint32_t nr1 = (uint32_t)-1;
3405 uint32_t nr2 = (uint32_t)0xffffffffUL;
3406 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3407 exit(0);
3408}],
3409AC_MSG_RESULT(ok),
3410AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003411AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003412
Bram Moolenaar446cb832008-06-24 21:56:24 +00003413dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3414dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3415
Bram Moolenaar071d4272004-06-13 20:20:40 +00003416[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003417#include "confdefs.h"
3418#ifdef HAVE_STRING_H
3419# include <string.h>
3420#endif
3421#if STDC_HEADERS
3422# include <stdlib.h>
3423# include <stddef.h>
3424#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003425main() {
3426 char buf[10];
3427 strcpy(buf, "abcdefghi");
3428 mch_memmove(buf, buf + 2, 3);
3429 if (strncmp(buf, "ababcf", 6))
3430 exit(1);
3431 strcpy(buf, "abcdefghi");
3432 mch_memmove(buf + 2, buf, 3);
3433 if (strncmp(buf, "cdedef", 6))
3434 exit(1);
3435 exit(0); /* libc version works properly. */
3436}']
3437
Bram Moolenaar446cb832008-06-24 21:56:24 +00003438AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3439 [
3440 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3441 [
3442 vim_cv_memmove_handles_overlap=yes
3443 ],[
3444 vim_cv_memmove_handles_overlap=no
3445 ],[
3446 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3447 ])
3448 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003449
Bram Moolenaar446cb832008-06-24 21:56:24 +00003450if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3451 AC_DEFINE(USEMEMMOVE)
3452else
3453 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3454 [
3455 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3456 [
3457 vim_cv_bcopy_handles_overlap=yes
3458 ],[
3459 vim_cv_bcopy_handles_overlap=no
3460 ],[
3461 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3462 ])
3463 ])
3464
3465 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3466 AC_DEFINE(USEBCOPY)
3467 else
3468 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3469 [
3470 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3471 [
3472 vim_cv_memcpy_handles_overlap=yes
3473 ],[
3474 vim_cv_memcpy_handles_overlap=no
3475 ],[
3476 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3477 ])
3478 ])
3479
3480 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3481 AC_DEFINE(USEMEMCPY)
3482 fi
3483 fi
3484fi
3485
Bram Moolenaar071d4272004-06-13 20:20:40 +00003486
3487dnl Check for multibyte locale functions
3488dnl Find out if _Xsetlocale() is supported by libX11.
3489dnl Check if X_LOCALE should be defined.
3490
3491if test "$enable_multibyte" = "yes"; then
3492 cflags_save=$CFLAGS
3493 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003494 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003495 CFLAGS="$CFLAGS -I$x_includes"
3496 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3497 AC_MSG_CHECKING(whether X_LOCALE needed)
3498 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3499 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3500 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3501 AC_MSG_RESULT(no))
3502 fi
3503 CFLAGS=$cflags_save
3504 LDFLAGS=$ldflags_save
3505fi
3506
3507dnl Link with xpg4, it is said to make Korean locale working
3508AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3509
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003510dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003511dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003512dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003513dnl -t for typedefs (many ctags have this)
3514dnl -s for static functions (Elvis ctags only?)
3515dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3516dnl -i+m to test for older Exuberant ctags
3517AC_MSG_CHECKING(how to create tags)
3518test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003519if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003520 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003521elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3522 TAGPRG="exctags -I INIT+ --fields=+S"
3523elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3524 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003525else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003526 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003527 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3528 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3529 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3530 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3531 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3532 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3533 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3534fi
3535test -f tags.save && mv tags.save tags
3536AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3537
3538dnl Check how we can run man with a section number
3539AC_MSG_CHECKING(how to run man with a section nr)
3540MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003541(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 +00003542AC_MSG_RESULT($MANDEF)
3543if test "$MANDEF" = "man -s"; then
3544 AC_DEFINE(USEMAN_S)
3545fi
3546
3547dnl Check if gettext() is working and if it needs -lintl
3548AC_MSG_CHECKING(--disable-nls argument)
3549AC_ARG_ENABLE(nls,
3550 [ --disable-nls Don't support NLS (gettext()).], ,
3551 [enable_nls="yes"])
3552
3553if test "$enable_nls" = "yes"; then
3554 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003555
3556 INSTALL_LANGS=install-languages
3557 AC_SUBST(INSTALL_LANGS)
3558 INSTALL_TOOL_LANGS=install-tool-languages
3559 AC_SUBST(INSTALL_TOOL_LANGS)
3560
Bram Moolenaar071d4272004-06-13 20:20:40 +00003561 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3562 AC_MSG_CHECKING([for NLS])
3563 if test -f po/Makefile; then
3564 have_gettext="no"
3565 if test -n "$MSGFMT"; then
3566 AC_TRY_LINK(
3567 [#include <libintl.h>],
3568 [gettext("Test");],
3569 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3570 olibs=$LIBS
3571 LIBS="$LIBS -lintl"
3572 AC_TRY_LINK(
3573 [#include <libintl.h>],
3574 [gettext("Test");],
3575 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3576 AC_MSG_RESULT([gettext() doesn't work]);
3577 LIBS=$olibs))
3578 else
3579 AC_MSG_RESULT([msgfmt not found - disabled]);
3580 fi
3581 if test $have_gettext = "yes"; then
3582 AC_DEFINE(HAVE_GETTEXT)
3583 MAKEMO=yes
3584 AC_SUBST(MAKEMO)
3585 dnl this was added in GNU gettext 0.10.36
3586 AC_CHECK_FUNCS(bind_textdomain_codeset)
3587 dnl _nl_msg_cat_cntr is required for GNU gettext
3588 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3589 AC_TRY_LINK(
3590 [#include <libintl.h>
3591 extern int _nl_msg_cat_cntr;],
3592 [++_nl_msg_cat_cntr;],
3593 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3594 AC_MSG_RESULT([no]))
3595 fi
3596 else
3597 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3598 fi
3599else
3600 AC_MSG_RESULT(yes)
3601fi
3602
3603dnl Check for dynamic linking loader
3604AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3605if test x${DLL} = xdlfcn.h; then
3606 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3607 AC_MSG_CHECKING([for dlopen()])
3608 AC_TRY_LINK(,[
3609 extern void* dlopen();
3610 dlopen();
3611 ],
3612 AC_MSG_RESULT(yes);
3613 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3614 AC_MSG_RESULT(no);
3615 AC_MSG_CHECKING([for dlopen() in -ldl])
3616 olibs=$LIBS
3617 LIBS="$LIBS -ldl"
3618 AC_TRY_LINK(,[
3619 extern void* dlopen();
3620 dlopen();
3621 ],
3622 AC_MSG_RESULT(yes);
3623 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3624 AC_MSG_RESULT(no);
3625 LIBS=$olibs))
3626 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3627 dnl ick :-)
3628 AC_MSG_CHECKING([for dlsym()])
3629 AC_TRY_LINK(,[
3630 extern void* dlsym();
3631 dlsym();
3632 ],
3633 AC_MSG_RESULT(yes);
3634 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3635 AC_MSG_RESULT(no);
3636 AC_MSG_CHECKING([for dlsym() in -ldl])
3637 olibs=$LIBS
3638 LIBS="$LIBS -ldl"
3639 AC_TRY_LINK(,[
3640 extern void* dlsym();
3641 dlsym();
3642 ],
3643 AC_MSG_RESULT(yes);
3644 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3645 AC_MSG_RESULT(no);
3646 LIBS=$olibs))
3647elif test x${DLL} = xdl.h; then
3648 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3649 AC_MSG_CHECKING([for shl_load()])
3650 AC_TRY_LINK(,[
3651 extern void* shl_load();
3652 shl_load();
3653 ],
3654 AC_MSG_RESULT(yes);
3655 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3656 AC_MSG_RESULT(no);
3657 AC_MSG_CHECKING([for shl_load() in -ldld])
3658 olibs=$LIBS
3659 LIBS="$LIBS -ldld"
3660 AC_TRY_LINK(,[
3661 extern void* shl_load();
3662 shl_load();
3663 ],
3664 AC_MSG_RESULT(yes);
3665 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3666 AC_MSG_RESULT(no);
3667 LIBS=$olibs))
3668fi
3669AC_CHECK_HEADERS(setjmp.h)
3670
3671if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3672 dnl -ldl must come after DynaLoader.a
3673 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3674 LIBS=`echo $LIBS | sed s/-ldl//`
3675 PERL_LIBS="$PERL_LIBS -ldl"
3676 fi
3677fi
3678
Bram Moolenaar164fca32010-07-14 13:58:07 +02003679if test "x$MACOSX" = "xyes"; then
3680 AC_MSG_CHECKING(whether we need -framework Cocoa)
3681 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3682 dnl disabled during tiny build)
3683 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3684 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003685 AC_MSG_RESULT(yes)
3686 else
3687 AC_MSG_RESULT(no)
3688 fi
3689fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003690if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003691 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003692fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003693
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003694dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3695dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3696dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003697dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3698dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003699DEPEND_CFLAGS_FILTER=
3700if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003701 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003702 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003703 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003704 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003705 AC_MSG_RESULT(yes)
3706 else
3707 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003708 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003709 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3710 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003711 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003712 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003713 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3714 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003715 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 +00003716 AC_MSG_RESULT(yes)
3717 else
3718 AC_MSG_RESULT(no)
3719 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003720fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003721AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003722
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003723dnl link.sh tries to avoid overlinking in a hackish way.
3724dnl At least GNU ld supports --as-needed which provides the same functionality
3725dnl at linker level. Let's use it.
3726AC_MSG_CHECKING(linker --as-needed support)
3727LINK_AS_NEEDED=
3728# Check if linker supports --as-needed and --no-as-needed options
3729if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3730 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3731 LINK_AS_NEEDED=yes
3732fi
3733if test "$LINK_AS_NEEDED" = yes; then
3734 AC_MSG_RESULT(yes)
3735else
3736 AC_MSG_RESULT(no)
3737fi
3738AC_SUBST(LINK_AS_NEEDED)
3739
Bram Moolenaar77c19352012-06-13 19:19:41 +02003740# IBM z/OS reset CFLAGS for config.mk
3741if test "$zOSUnix" = "yes"; then
3742 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3743fi
3744
Bram Moolenaar071d4272004-06-13 20:20:40 +00003745dnl write output files
3746AC_OUTPUT(auto/config.mk:config.mk.in)
3747
3748dnl vim: set sw=2 tw=78 fo+=l: