blob: 65013602f373fcbbf6d25cb2b230041f6cb4549f [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"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200779 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000780 LDFLAGS="$perlldflags $LDFLAGS"
781 AC_TRY_LINK(,[ ],
782 AC_MSG_RESULT(yes); perl_ok=yes,
783 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
784 CFLAGS=$cflags_save
785 LIBS=$libs_save
786 LDFLAGS=$ldflags_save
787 if test $perl_ok = yes; then
788 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000789 dnl remove -pipe and -Wxxx, it confuses cproto
790 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000791 fi
792 if test "X$perlldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200793 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then
794 LDFLAGS="$perlldflags $LDFLAGS"
795 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000796 fi
797 PERL_LIBS=$perllibs
798 PERL_SRC="auto/if_perl.c if_perlsfio.c"
799 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
800 PERL_PRO="if_perl.pro if_perlsfio.pro"
801 AC_DEFINE(FEAT_PERL)
802 fi
803 fi
804 else
805 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
806 fi
807 fi
808
809 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000810 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000811 dir=/System/Library/Perl
812 darwindir=$dir/darwin
813 if test -d $darwindir; then
814 PERL=/usr/bin/perl
815 else
816 dnl Mac OS X 10.3
817 dir=/System/Library/Perl/5.8.1
818 darwindir=$dir/darwin-thread-multi-2level
819 if test -d $darwindir; then
820 PERL=/usr/bin/perl
821 fi
822 fi
823 if test -n "$PERL"; then
824 PERL_DIR="$dir"
825 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
826 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
827 PERL_LIBS="-L$darwindir/CORE -lperl"
828 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200829 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
830 dnl be included if requested by passing --with-mac-arch to
831 dnl configure, so strip these flags first (if present)
832 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
833 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 +0000834 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200835 if test "$enable_perlinterp" = "dynamic"; then
836 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
837 AC_DEFINE(DYNAMIC_PERL)
838 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
839 fi
840 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100841
842 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
843 AC_MSG_ERROR([could not configure perl])
844 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000845fi
846AC_SUBST(shrpenv)
847AC_SUBST(PERL_SRC)
848AC_SUBST(PERL_OBJ)
849AC_SUBST(PERL_PRO)
850AC_SUBST(PERL_CFLAGS)
851AC_SUBST(PERL_LIBS)
852
853AC_MSG_CHECKING(--enable-pythoninterp argument)
854AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200855 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000856 [enable_pythoninterp="no"])
857AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200858if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000859 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100860 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000861 if test "X$vi_cv_path_python" != "X"; then
862
863 dnl -- get its version number
864 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
865 [[vi_cv_var_python_version=`
866 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
867 ]])
868
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200869 dnl -- it must be at least version 2.3
870 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000871 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200872 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000873 then
874 AC_MSG_RESULT(yep)
875
876 dnl -- find where python thinks it was installed
877 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
878 [ vi_cv_path_python_pfx=`
879 ${vi_cv_path_python} -c \
880 "import sys; print sys.prefix"` ])
881
882 dnl -- and where it thinks it runs
883 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
884 [ vi_cv_path_python_epfx=`
885 ${vi_cv_path_python} -c \
886 "import sys; print sys.exec_prefix"` ])
887
888 dnl -- python's internal library path
889
890 AC_CACHE_VAL(vi_cv_path_pythonpath,
891 [ vi_cv_path_pythonpath=`
892 unset PYTHONPATH;
893 ${vi_cv_path_python} -c \
894 "import sys, string; print string.join(sys.path,':')"` ])
895
896 dnl -- where the Python implementation library archives are
897
898 AC_ARG_WITH(python-config-dir,
899 [ --with-python-config-dir=PATH Python's config directory],
900 [ vi_cv_path_python_conf="${withval}" ] )
901
902 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
903 [
904 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +0200905 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
906 if test -d "$d" && test -f "$d/config.c"; then
907 vi_cv_path_python_conf="$d"
908 else
909 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
910 for subdir in lib64 lib share; do
911 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
912 if test -d "$d" && test -f "$d/config.c"; then
913 vi_cv_path_python_conf="$d"
914 fi
915 done
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916 done
Bram Moolenaarac499e32013-06-02 19:14:17 +0200917 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000918 ])
919
920 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
921
922 if test "X$PYTHON_CONFDIR" = "X"; then
923 AC_MSG_RESULT([can't find it!])
924 else
925
926 dnl -- we need to examine Python's config/Makefile too
927 dnl see what the interpreter is built from
928 AC_CACHE_VAL(vi_cv_path_python_plibs,
929 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000930 pwd=`pwd`
931 tmp_mkf="$pwd/config-PyMake$$"
932 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000933__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200934 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000935 @echo "python_LIBS='$(LIBS)'"
936 @echo "python_SYSLIBS='$(SYSLIBS)'"
937 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200938 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200939 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000940eof
941 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000942 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
943 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000944 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
945 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
946 vi_cv_path_python_plibs="-framework Python"
947 else
948 if test "${vi_cv_var_python_version}" = "1.4"; then
949 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
950 else
951 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
952 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200953 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 +0000954 dnl remove -ltermcap, it can conflict with an earlier -lncurses
955 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
956 fi
957 ])
958
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200959 if test "X$python_DLLLIBRARY" != "X"; then
960 python_INSTSONAME="$python_DLLLIBRARY"
961 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000962 PYTHON_LIBS="${vi_cv_path_python_plibs}"
963 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200964 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 +0000965 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +0200966 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 +0000967 fi
968 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200969 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000970 if test "${vi_cv_var_python_version}" = "1.4"; then
971 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
972 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100973 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 +0000974
975 dnl On FreeBSD linking with "-pthread" is required to use threads.
976 dnl _THREAD_SAFE must be used for compiling then.
977 dnl The "-pthread" is added to $LIBS, so that the following check for
978 dnl sigaltstack() will look in libc_r (it's there in libc!).
979 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
980 dnl will then define target-specific defines, e.g., -D_REENTRANT.
981 dnl Don't do this for Mac OSX, -pthread will generate a warning.
982 AC_MSG_CHECKING([if -pthread should be used])
983 threadsafe_flag=
984 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000985 dnl if test "x$MACOSX" != "xyes"; then
986 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000987 test "$GCC" = yes && threadsafe_flag="-pthread"
988 if test "`(uname) 2>/dev/null`" = FreeBSD; then
989 threadsafe_flag="-D_THREAD_SAFE"
990 thread_lib="-pthread"
991 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +0200992 if test "`(uname) 2>/dev/null`" = SunOS; then
993 threadsafe_flag="-pthreads"
994 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000995 fi
996 libs_save_old=$LIBS
997 if test -n "$threadsafe_flag"; then
998 cflags_save=$CFLAGS
999 CFLAGS="$CFLAGS $threadsafe_flag"
1000 LIBS="$LIBS $thread_lib"
1001 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001002 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001003 AC_MSG_RESULT(no); LIBS=$libs_save_old
1004 )
1005 CFLAGS=$cflags_save
1006 else
1007 AC_MSG_RESULT(no)
1008 fi
1009
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001010 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001011 dnl added for Python.
1012 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1013 cflags_save=$CFLAGS
1014 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001015 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001016 LIBS="$LIBS $PYTHON_LIBS"
1017 AC_TRY_LINK(,[ ],
1018 AC_MSG_RESULT(yes); python_ok=yes,
1019 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1020 CFLAGS=$cflags_save
1021 LIBS=$libs_save
1022 if test $python_ok = yes; then
1023 AC_DEFINE(FEAT_PYTHON)
1024 else
1025 LIBS=$libs_save_old
1026 PYTHON_SRC=
1027 PYTHON_OBJ=
1028 PYTHON_LIBS=
1029 PYTHON_CFLAGS=
1030 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001031 fi
1032 else
1033 AC_MSG_RESULT(too old)
1034 fi
1035 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001036
1037 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1038 AC_MSG_ERROR([could not configure python])
1039 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001040fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001041
Bram Moolenaar071d4272004-06-13 20:20:40 +00001042AC_SUBST(PYTHON_CONFDIR)
1043AC_SUBST(PYTHON_LIBS)
1044AC_SUBST(PYTHON_GETPATH_CFLAGS)
1045AC_SUBST(PYTHON_CFLAGS)
1046AC_SUBST(PYTHON_SRC)
1047AC_SUBST(PYTHON_OBJ)
1048
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001049
1050AC_MSG_CHECKING(--enable-python3interp argument)
1051AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001052 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053 [enable_python3interp="no"])
1054AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001055if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001056 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001057 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001058 if test "X$vi_cv_path_python3" != "X"; then
1059
1060 dnl -- get its version number
1061 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1062 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001063 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001064 ]])
1065
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001066 dnl -- it must be at least version 3
1067 AC_MSG_CHECKING(Python is 3.0 or better)
1068 if ${vi_cv_path_python3} -c \
1069 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1070 then
1071 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001072
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001073 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1074 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001075 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001076 vi_cv_var_python3_abiflags=
1077 if ${vi_cv_path_python3} -c \
1078 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1079 then
1080 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1081 "import sys; print(sys.abiflags)"`
1082 fi ])
1083
1084 dnl -- find where python3 thinks it was installed
1085 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1086 [ vi_cv_path_python3_pfx=`
1087 ${vi_cv_path_python3} -c \
1088 "import sys; print(sys.prefix)"` ])
1089
1090 dnl -- and where it thinks it runs
1091 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1092 [ vi_cv_path_python3_epfx=`
1093 ${vi_cv_path_python3} -c \
1094 "import sys; print(sys.exec_prefix)"` ])
1095
1096 dnl -- python3's internal library path
1097
1098 AC_CACHE_VAL(vi_cv_path_python3path,
1099 [ vi_cv_path_python3path=`
1100 unset PYTHONPATH;
1101 ${vi_cv_path_python3} -c \
1102 "import sys, string; print(':'.join(sys.path))"` ])
1103
1104 dnl -- where the Python implementation library archives are
1105
1106 AC_ARG_WITH(python3-config-dir,
1107 [ --with-python3-config-dir=PATH Python's config directory],
1108 [ vi_cv_path_python3_conf="${withval}" ] )
1109
1110 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1111 [
1112 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001113 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001114 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
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001164 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001165 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001166 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001167 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
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001232 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1233 AC_MSG_ERROR([could not configure python3])
1234 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235fi
1236
1237AC_SUBST(PYTHON3_CONFDIR)
1238AC_SUBST(PYTHON3_LIBS)
1239AC_SUBST(PYTHON3_CFLAGS)
1240AC_SUBST(PYTHON3_SRC)
1241AC_SUBST(PYTHON3_OBJ)
1242
1243dnl if python2.x and python3.x are enabled one can only link in code
1244dnl with dlopen(), dlsym(), dlclose()
1245if test "$python_ok" = yes && test "$python3_ok" = yes; then
1246 AC_DEFINE(DYNAMIC_PYTHON)
1247 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001248 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001249 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001250 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001251 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001252 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1253 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001254 AC_RUN_IFELSE([
1255 #include <dlfcn.h>
1256 /* If this program fails, then RTLD_GLOBAL is needed.
1257 * RTLD_GLOBAL will be used and then it is not possible to
1258 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001259 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001260 */
1261
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001262 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001263 {
1264 int needed = 0;
1265 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1266 if (pylib != 0)
1267 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001268 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001269 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1270 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1271 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001272 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001273 (*init)();
1274 needed = (*simple)("import termios") == -1;
1275 (*final)();
1276 dlclose(pylib);
1277 }
1278 return !needed;
1279 }
1280
1281 int main(int argc, char** argv)
1282 {
1283 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001284 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001285 not_needed = 1;
1286 return !not_needed;
1287 }],
1288 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001289
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001290 CFLAGS=$cflags_save
1291 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001292
1293 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1294 cflags_save=$CFLAGS
1295 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1296 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001297 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1298 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001299 AC_RUN_IFELSE([
1300 #include <dlfcn.h>
1301 #include <wchar.h>
1302 /* If this program fails, then RTLD_GLOBAL is needed.
1303 * RTLD_GLOBAL will be used and then it is not possible to
1304 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001305 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001306 */
1307
1308 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1309 {
1310 int needed = 0;
1311 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1312 if (pylib != 0)
1313 {
1314 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1315 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1316 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1317 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1318 (*pfx)(prefix);
1319 (*init)();
1320 needed = (*simple)("import termios") == -1;
1321 (*final)();
1322 dlclose(pylib);
1323 }
1324 return !needed;
1325 }
1326
1327 int main(int argc, char** argv)
1328 {
1329 int not_needed = 0;
1330 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1331 not_needed = 1;
1332 return !not_needed;
1333 }],
1334 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1335
1336 CFLAGS=$cflags_save
1337 LDFLAGS=$ldflags_save
1338
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001339 PYTHON_SRC="if_python.c"
1340 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001341 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001342 PYTHON_LIBS=
1343 PYTHON3_SRC="if_python3.c"
1344 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001345 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001346 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001347elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1348 AC_DEFINE(DYNAMIC_PYTHON)
1349 PYTHON_SRC="if_python.c"
1350 PYTHON_OBJ="objects/if_python.o"
1351 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1352 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001353elif test "$python_ok" = yes; then
1354 dnl Check that adding -fPIE works. It may be needed when using a static
1355 dnl Python library.
1356 AC_MSG_CHECKING([if -fPIE can be added for Python])
1357 cflags_save=$CFLAGS
1358 libs_save=$LIBS
1359 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1360 LIBS="$LIBS $PYTHON_LIBS"
1361 AC_TRY_LINK(,[ ],
1362 AC_MSG_RESULT(yes); fpie_ok=yes,
1363 AC_MSG_RESULT(no); fpie_ok=no)
1364 CFLAGS=$cflags_save
1365 LIBS=$libs_save
1366 if test $fpie_ok = yes; then
1367 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1368 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001369elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1370 AC_DEFINE(DYNAMIC_PYTHON3)
1371 PYTHON3_SRC="if_python3.c"
1372 PYTHON3_OBJ="objects/if_python3.o"
1373 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1374 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001375elif test "$python3_ok" = yes; then
1376 dnl Check that adding -fPIE works. It may be needed when using a static
1377 dnl Python library.
1378 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1379 cflags_save=$CFLAGS
1380 libs_save=$LIBS
1381 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1382 LIBS="$LIBS $PYTHON3_LIBS"
1383 AC_TRY_LINK(,[ ],
1384 AC_MSG_RESULT(yes); fpie_ok=yes,
1385 AC_MSG_RESULT(no); fpie_ok=no)
1386 CFLAGS=$cflags_save
1387 LIBS=$libs_save
1388 if test $fpie_ok = yes; then
1389 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1390 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001391fi
1392
Bram Moolenaar071d4272004-06-13 20:20:40 +00001393AC_MSG_CHECKING(--enable-tclinterp argument)
1394AC_ARG_ENABLE(tclinterp,
1395 [ --enable-tclinterp Include Tcl interpreter.], ,
1396 [enable_tclinterp="no"])
1397AC_MSG_RESULT($enable_tclinterp)
1398
1399if test "$enable_tclinterp" = "yes"; then
1400
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001401 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001402 AC_MSG_CHECKING(--with-tclsh argument)
1403 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1404 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001405 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001406 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1407 AC_SUBST(vi_cv_path_tcl)
1408
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001409 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1410 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1411 tclsh_name="tclsh8.4"
1412 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1413 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001414 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001415 tclsh_name="tclsh8.2"
1416 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1417 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001418 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1419 tclsh_name="tclsh8.0"
1420 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1421 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001422 dnl still didn't find it, try without version number
1423 if test "X$vi_cv_path_tcl" = "X"; then
1424 tclsh_name="tclsh"
1425 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1426 fi
1427 if test "X$vi_cv_path_tcl" != "X"; then
1428 AC_MSG_CHECKING(Tcl version)
1429 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1430 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1431 AC_MSG_RESULT($tclver - OK);
1432 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 -`
1433
1434 AC_MSG_CHECKING(for location of Tcl include)
1435 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001436 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 +00001437 else
1438 dnl For Mac OS X 10.3, use the OS-provided framework location
1439 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1440 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001441 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001442 for try in $tclinc; do
1443 if test -f "$try/tcl.h"; then
1444 AC_MSG_RESULT($try/tcl.h)
1445 TCL_INC=$try
1446 break
1447 fi
1448 done
1449 if test -z "$TCL_INC"; then
1450 AC_MSG_RESULT(<not found>)
1451 SKIP_TCL=YES
1452 fi
1453 if test -z "$SKIP_TCL"; then
1454 AC_MSG_CHECKING(for location of tclConfig.sh script)
1455 if test "x$MACOSX" != "xyes"; then
1456 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001457 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001458 else
1459 dnl For Mac OS X 10.3, use the OS-provided framework location
1460 tclcnf="/System/Library/Frameworks/Tcl.framework"
1461 fi
1462 for try in $tclcnf; do
1463 if test -f $try/tclConfig.sh; then
1464 AC_MSG_RESULT($try/tclConfig.sh)
1465 . $try/tclConfig.sh
1466 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1467 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1468 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001469 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001470 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 +00001471 break
1472 fi
1473 done
1474 if test -z "$TCL_LIBS"; then
1475 AC_MSG_RESULT(<not found>)
1476 AC_MSG_CHECKING(for Tcl library by myself)
1477 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001478 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479 for ext in .so .a ; do
1480 for ver in "" $tclver ; do
1481 for try in $tcllib ; do
1482 trylib=tcl$ver$ext
1483 if test -f $try/lib$trylib ; then
1484 AC_MSG_RESULT($try/lib$trylib)
1485 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1486 if test "`(uname) 2>/dev/null`" = SunOS &&
1487 uname -r | grep '^5' >/dev/null; then
1488 TCL_LIBS="$TCL_LIBS -R $try"
1489 fi
1490 break 3
1491 fi
1492 done
1493 done
1494 done
1495 if test -z "$TCL_LIBS"; then
1496 AC_MSG_RESULT(<not found>)
1497 SKIP_TCL=YES
1498 fi
1499 fi
1500 if test -z "$SKIP_TCL"; then
1501 AC_DEFINE(FEAT_TCL)
1502 TCL_SRC=if_tcl.c
1503 TCL_OBJ=objects/if_tcl.o
1504 TCL_PRO=if_tcl.pro
1505 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1506 fi
1507 fi
1508 else
1509 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1510 fi
1511 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001512 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1513 AC_MSG_ERROR([could not configure Tcl])
1514 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001515fi
1516AC_SUBST(TCL_SRC)
1517AC_SUBST(TCL_OBJ)
1518AC_SUBST(TCL_PRO)
1519AC_SUBST(TCL_CFLAGS)
1520AC_SUBST(TCL_LIBS)
1521
1522AC_MSG_CHECKING(--enable-rubyinterp argument)
1523AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001524 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001525 [enable_rubyinterp="no"])
1526AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001527if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001528 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001529 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001530 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1531 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1532 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001533 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001534 if test "X$vi_cv_path_ruby" != "X"; then
1535 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001536 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 +00001537 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001538 AC_MSG_CHECKING(Ruby rbconfig)
1539 ruby_rbconfig="RbConfig"
1540 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1541 ruby_rbconfig="Config"
1542 fi
1543 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001544 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001545 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 +00001546 if test "X$rubyhdrdir" != "X"; then
1547 AC_MSG_RESULT($rubyhdrdir)
1548 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001549 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001550 if test -d "$rubyhdrdir/$rubyarch"; then
1551 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1552 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001553 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001554 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001555 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001556 if test "X$rubylibs" != "X"; then
1557 RUBY_LIBS="$rubylibs"
1558 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001559 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1560 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001561 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001562 if test -f "$rubylibdir/$librubya"; then
1563 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001564 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1565 elif test "$librubyarg" = "libruby.a"; then
1566 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1567 librubyarg="-lruby"
1568 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001569 fi
1570
1571 if test "X$librubyarg" != "X"; then
1572 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1573 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001574 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001575 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001576 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1577 dnl be included if requested by passing --with-mac-arch to
1578 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001579 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001580 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001581 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1582 LDFLAGS="$rubyldflags $LDFLAGS"
1583 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001584 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001585 fi
1586 RUBY_SRC="if_ruby.c"
1587 RUBY_OBJ="objects/if_ruby.o"
1588 RUBY_PRO="if_ruby.pro"
1589 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001590 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001591 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001592 AC_DEFINE(DYNAMIC_RUBY)
1593 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1594 RUBY_LIBS=
1595 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001596 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001597 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001598 fi
1599 else
1600 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1601 fi
1602 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001603
1604 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1605 AC_MSG_ERROR([could not configure Ruby])
1606 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001607fi
1608AC_SUBST(RUBY_SRC)
1609AC_SUBST(RUBY_OBJ)
1610AC_SUBST(RUBY_PRO)
1611AC_SUBST(RUBY_CFLAGS)
1612AC_SUBST(RUBY_LIBS)
1613
1614AC_MSG_CHECKING(--enable-cscope argument)
1615AC_ARG_ENABLE(cscope,
1616 [ --enable-cscope Include cscope interface.], ,
1617 [enable_cscope="no"])
1618AC_MSG_RESULT($enable_cscope)
1619if test "$enable_cscope" = "yes"; then
1620 AC_DEFINE(FEAT_CSCOPE)
1621fi
1622
1623AC_MSG_CHECKING(--enable-workshop argument)
1624AC_ARG_ENABLE(workshop,
1625 [ --enable-workshop Include Sun Visual Workshop support.], ,
1626 [enable_workshop="no"])
1627AC_MSG_RESULT($enable_workshop)
1628if test "$enable_workshop" = "yes"; then
1629 AC_DEFINE(FEAT_SUN_WORKSHOP)
1630 WORKSHOP_SRC="workshop.c integration.c"
1631 AC_SUBST(WORKSHOP_SRC)
1632 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1633 AC_SUBST(WORKSHOP_OBJ)
1634 if test "${enable_gui-xxx}" = xxx; then
1635 enable_gui=motif
1636 fi
1637fi
1638
1639AC_MSG_CHECKING(--disable-netbeans argument)
1640AC_ARG_ENABLE(netbeans,
1641 [ --disable-netbeans Disable NetBeans integration support.],
1642 , [enable_netbeans="yes"])
1643if test "$enable_netbeans" = "yes"; then
1644 AC_MSG_RESULT(no)
1645 dnl On Solaris we need the socket and nsl library.
1646 AC_CHECK_LIB(socket, socket)
1647 AC_CHECK_LIB(nsl, gethostbyname)
1648 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1649 AC_TRY_LINK([
1650#include <stdio.h>
1651#include <stdlib.h>
1652#include <stdarg.h>
1653#include <fcntl.h>
1654#include <netdb.h>
1655#include <netinet/in.h>
1656#include <errno.h>
1657#include <sys/types.h>
1658#include <sys/socket.h>
1659 /* Check bitfields */
1660 struct nbbuf {
1661 unsigned int initDone:1;
1662 ushort signmaplen;
1663 };
1664 ], [
1665 /* Check creating a socket. */
1666 struct sockaddr_in server;
1667 (void)socket(AF_INET, SOCK_STREAM, 0);
1668 (void)htons(100);
1669 (void)gethostbyname("microsoft.com");
1670 if (errno == ECONNREFUSED)
1671 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1672 ],
1673 AC_MSG_RESULT(yes),
1674 AC_MSG_RESULT(no); enable_netbeans="no")
1675else
1676 AC_MSG_RESULT(yes)
1677fi
1678if test "$enable_netbeans" = "yes"; then
1679 AC_DEFINE(FEAT_NETBEANS_INTG)
1680 NETBEANS_SRC="netbeans.c"
1681 AC_SUBST(NETBEANS_SRC)
1682 NETBEANS_OBJ="objects/netbeans.o"
1683 AC_SUBST(NETBEANS_OBJ)
1684fi
1685
1686AC_MSG_CHECKING(--enable-sniff argument)
1687AC_ARG_ENABLE(sniff,
1688 [ --enable-sniff Include Sniff interface.], ,
1689 [enable_sniff="no"])
1690AC_MSG_RESULT($enable_sniff)
1691if test "$enable_sniff" = "yes"; then
1692 AC_DEFINE(FEAT_SNIFF)
1693 SNIFF_SRC="if_sniff.c"
1694 AC_SUBST(SNIFF_SRC)
1695 SNIFF_OBJ="objects/if_sniff.o"
1696 AC_SUBST(SNIFF_OBJ)
1697fi
1698
1699AC_MSG_CHECKING(--enable-multibyte argument)
1700AC_ARG_ENABLE(multibyte,
1701 [ --enable-multibyte Include multibyte editing support.], ,
1702 [enable_multibyte="no"])
1703AC_MSG_RESULT($enable_multibyte)
1704if test "$enable_multibyte" = "yes"; then
1705 AC_DEFINE(FEAT_MBYTE)
1706fi
1707
1708AC_MSG_CHECKING(--enable-hangulinput argument)
1709AC_ARG_ENABLE(hangulinput,
1710 [ --enable-hangulinput Include Hangul input support.], ,
1711 [enable_hangulinput="no"])
1712AC_MSG_RESULT($enable_hangulinput)
1713
1714AC_MSG_CHECKING(--enable-xim argument)
1715AC_ARG_ENABLE(xim,
1716 [ --enable-xim Include XIM input support.],
1717 AC_MSG_RESULT($enable_xim),
1718 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001719
1720AC_MSG_CHECKING(--enable-fontset argument)
1721AC_ARG_ENABLE(fontset,
1722 [ --enable-fontset Include X fontset output support.], ,
1723 [enable_fontset="no"])
1724AC_MSG_RESULT($enable_fontset)
1725dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1726
1727test -z "$with_x" && with_x=yes
1728test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1729if test "$with_x" = no; then
1730 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1731else
1732 dnl Do this check early, so that its failure can override user requests.
1733
1734 AC_PATH_PROG(xmkmfpath, xmkmf)
1735
1736 AC_PATH_XTRA
1737
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001738 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001739 dnl be compiled with a special option.
1740 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001741 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001742 CFLAGS="$CFLAGS -W c,dll"
1743 LDFLAGS="$LDFLAGS -W l,dll"
1744 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1745 fi
1746
1747 dnl On my HPUX system the X include dir is found, but the lib dir not.
1748 dnl This is a desparate try to fix this.
1749
1750 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1751 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1752 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1753 X_LIBS="$X_LIBS -L$x_libraries"
1754 if test "`(uname) 2>/dev/null`" = SunOS &&
1755 uname -r | grep '^5' >/dev/null; then
1756 X_LIBS="$X_LIBS -R $x_libraries"
1757 fi
1758 fi
1759
1760 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1761 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1762 AC_MSG_RESULT(Corrected X includes to $x_includes)
1763 X_CFLAGS="$X_CFLAGS -I$x_includes"
1764 fi
1765
1766 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1767 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1768 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1769 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1770 dnl Same for "-R/usr/lib ".
1771 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1772
1773
1774 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001775 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1776 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777 AC_MSG_CHECKING(if X11 header files can be found)
1778 cflags_save=$CFLAGS
1779 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001780 AC_TRY_COMPILE([#include <X11/Xlib.h>
1781#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001782 AC_MSG_RESULT(yes),
1783 AC_MSG_RESULT(no); no_x=yes)
1784 CFLAGS=$cflags_save
1785
1786 if test "${no_x-no}" = yes; then
1787 with_x=no
1788 else
1789 AC_DEFINE(HAVE_X11)
1790 X_LIB="-lXt -lX11";
1791 AC_SUBST(X_LIB)
1792
1793 ac_save_LDFLAGS="$LDFLAGS"
1794 LDFLAGS="-L$x_libraries $LDFLAGS"
1795
1796 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1797 dnl For HP-UX 10.20 it must be before -lSM -lICE
1798 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1799 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1800
1801 dnl Some systems need -lnsl -lsocket when testing for ICE.
1802 dnl The check above doesn't do this, try here (again). Also needed to get
1803 dnl them after Xdmcp. link.sh will remove them when not needed.
1804 dnl Check for other function than above to avoid the cached value
1805 AC_CHECK_LIB(ICE, IceOpenConnection,
1806 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1807
1808 dnl Check for -lXpm (needed for some versions of Motif)
1809 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1810 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1811 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1812
1813 dnl Check that the X11 header files don't use implicit declarations
1814 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1815 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001816 dnl -Werror is GCC only, others like Solaris Studio might not like it
1817 if test "$GCC" = yes; then
1818 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1819 else
1820 CFLAGS="$CFLAGS $X_CFLAGS"
1821 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1823 AC_MSG_RESULT(no),
1824 CFLAGS="$CFLAGS -Wno-implicit-int"
1825 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1826 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1827 AC_MSG_RESULT(test failed)
1828 )
1829 )
1830 CFLAGS=$cflags_save
1831
1832 LDFLAGS="$ac_save_LDFLAGS"
1833
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001834 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1835 AC_CACHE_VAL(ac_cv_small_wchar_t,
1836 [AC_TRY_RUN([
1837#include <X11/Xlib.h>
1838#if STDC_HEADERS
1839# include <stdlib.h>
1840# include <stddef.h>
1841#endif
1842 main()
1843 {
1844 if (sizeof(wchar_t) <= 2)
1845 exit(1);
1846 exit(0);
1847 }],
1848 ac_cv_small_wchar_t="no",
1849 ac_cv_small_wchar_t="yes",
1850 AC_MSG_ERROR(failed to compile test program))])
1851 AC_MSG_RESULT($ac_cv_small_wchar_t)
1852 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1853 AC_DEFINE(SMALL_WCHAR_T)
1854 fi
1855
Bram Moolenaar071d4272004-06-13 20:20:40 +00001856 fi
1857fi
1858
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001859test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001860
1861AC_MSG_CHECKING(--enable-gui argument)
1862AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001863 [ --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 +00001864
1865dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1866dnl Do not use character classes for portability with old tools.
1867enable_gui_canon=`echo "_$enable_gui" | \
1868 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1869
1870dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001871SKIP_GTK2=YES
1872SKIP_GNOME=YES
1873SKIP_MOTIF=YES
1874SKIP_ATHENA=YES
1875SKIP_NEXTAW=YES
1876SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001877SKIP_CARBON=YES
1878GUITYPE=NONE
1879
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001880if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 SKIP_PHOTON=
1882 case "$enable_gui_canon" in
1883 no) AC_MSG_RESULT(no GUI support)
1884 SKIP_PHOTON=YES ;;
1885 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1886 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1887 photon) AC_MSG_RESULT(Photon GUI support) ;;
1888 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1889 SKIP_PHOTON=YES ;;
1890 esac
1891
1892elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1893 SKIP_CARBON=
1894 case "$enable_gui_canon" in
1895 no) AC_MSG_RESULT(no GUI support)
1896 SKIP_CARBON=YES ;;
1897 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001898 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1899 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001900 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1901 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1902 SKIP_CARBON=YES ;;
1903 esac
1904
1905else
1906
Bram Moolenaar071d4272004-06-13 20:20:40 +00001907 case "$enable_gui_canon" in
1908 no|none) AC_MSG_RESULT(no GUI support) ;;
1909 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001910 SKIP_GTK2=
1911 SKIP_GNOME=
1912 SKIP_MOTIF=
1913 SKIP_ATHENA=
1914 SKIP_NEXTAW=
1915 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001916 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001917 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001918 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1919 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001920 SKIP_GTK2=;;
1921 motif) AC_MSG_RESULT(Motif GUI support)
1922 SKIP_MOTIF=;;
1923 athena) AC_MSG_RESULT(Athena GUI support)
1924 SKIP_ATHENA=;;
1925 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1926 SKIP_NEXTAW=;;
1927 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1928 esac
1929
1930fi
1931
Bram Moolenaar071d4272004-06-13 20:20:40 +00001932if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1933 -a "$enable_gui_canon" != "gnome2"; then
1934 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1935 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001936 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001937 , enable_gtk2_check="yes")
1938 AC_MSG_RESULT($enable_gtk2_check)
1939 if test "x$enable_gtk2_check" = "xno"; then
1940 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001941 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001942 fi
1943fi
1944
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001945if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001946 AC_MSG_CHECKING(whether or not to look for GNOME)
1947 AC_ARG_ENABLE(gnome-check,
1948 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1949 , enable_gnome_check="no")
1950 AC_MSG_RESULT($enable_gnome_check)
1951 if test "x$enable_gnome_check" = "xno"; then
1952 SKIP_GNOME=YES
1953 fi
1954fi
1955
1956if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1957 AC_MSG_CHECKING(whether or not to look for Motif)
1958 AC_ARG_ENABLE(motif-check,
1959 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1960 , enable_motif_check="yes")
1961 AC_MSG_RESULT($enable_motif_check)
1962 if test "x$enable_motif_check" = "xno"; then
1963 SKIP_MOTIF=YES
1964 fi
1965fi
1966
1967if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1968 AC_MSG_CHECKING(whether or not to look for Athena)
1969 AC_ARG_ENABLE(athena-check,
1970 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1971 , enable_athena_check="yes")
1972 AC_MSG_RESULT($enable_athena_check)
1973 if test "x$enable_athena_check" = "xno"; then
1974 SKIP_ATHENA=YES
1975 fi
1976fi
1977
1978if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1979 AC_MSG_CHECKING(whether or not to look for neXtaw)
1980 AC_ARG_ENABLE(nextaw-check,
1981 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1982 , enable_nextaw_check="yes")
1983 AC_MSG_RESULT($enable_nextaw_check);
1984 if test "x$enable_nextaw_check" = "xno"; then
1985 SKIP_NEXTAW=YES
1986 fi
1987fi
1988
1989if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1990 AC_MSG_CHECKING(whether or not to look for Carbon)
1991 AC_ARG_ENABLE(carbon-check,
1992 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1993 , enable_carbon_check="yes")
1994 AC_MSG_RESULT($enable_carbon_check);
1995 if test "x$enable_carbon_check" = "xno"; then
1996 SKIP_CARBON=YES
1997 fi
1998fi
1999
Bram Moolenaar843ee412004-06-30 16:16:41 +00002000
Bram Moolenaar071d4272004-06-13 20:20:40 +00002001if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2002 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002003 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002004 AC_MSG_RESULT(yes);
2005 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002006 if test "$VIMNAME" = "vim"; then
2007 VIMNAME=Vim
2008 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002009
Bram Moolenaar164fca32010-07-14 13:58:07 +02002010 if test "x$MACARCH" = "xboth"; then
2011 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2012 else
2013 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2014 fi
2015
Bram Moolenaar14716812006-05-04 21:54:08 +00002016 dnl Default install directory is not /usr/local
2017 if test x$prefix = xNONE; then
2018 prefix=/Applications
2019 fi
2020
2021 dnl Sorry for the hard coded default
2022 datadir='${prefix}/Vim.app/Contents/Resources'
2023
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002025 SKIP_GTK2=YES;
2026 SKIP_GNOME=YES;
2027 SKIP_MOTIF=YES;
2028 SKIP_ATHENA=YES;
2029 SKIP_NEXTAW=YES;
2030 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002031 SKIP_CARBON=YES
2032fi
2033
Bram Moolenaar071d4272004-06-13 20:20:40 +00002034dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002035dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002036dnl
2037dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002038dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002039dnl
2040AC_DEFUN(AM_PATH_GTK,
2041[
2042 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2043 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002044 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002045 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2046 no_gtk=""
2047 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2048 && $PKG_CONFIG --exists gtk+-2.0; then
2049 {
2050 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2051 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2052 dnl something like that.
2053 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002054 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002055 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2056 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2057 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2058 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2059 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2060 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2061 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2062 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002063 else
2064 no_gtk=yes
2065 fi
2066
2067 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2068 {
2069 ac_save_CFLAGS="$CFLAGS"
2070 ac_save_LIBS="$LIBS"
2071 CFLAGS="$CFLAGS $GTK_CFLAGS"
2072 LIBS="$LIBS $GTK_LIBS"
2073
2074 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002075 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002076 dnl
2077 rm -f conf.gtktest
2078 AC_TRY_RUN([
2079#include <gtk/gtk.h>
2080#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002081#if STDC_HEADERS
2082# include <stdlib.h>
2083# include <stddef.h>
2084#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085
2086int
2087main ()
2088{
2089int major, minor, micro;
2090char *tmp_version;
2091
2092system ("touch conf.gtktest");
2093
2094/* HP/UX 9 (%@#!) writes to sscanf strings */
2095tmp_version = g_strdup("$min_gtk_version");
2096if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2097 printf("%s, bad version string\n", "$min_gtk_version");
2098 exit(1);
2099 }
2100
2101if ((gtk_major_version > major) ||
2102 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2103 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2104 (gtk_micro_version >= micro)))
2105{
2106 return 0;
2107}
2108return 1;
2109}
2110],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2111 CFLAGS="$ac_save_CFLAGS"
2112 LIBS="$ac_save_LIBS"
2113 }
2114 fi
2115 if test "x$no_gtk" = x ; then
2116 if test "x$enable_gtktest" = "xyes"; then
2117 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2118 else
2119 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2120 fi
2121 ifelse([$2], , :, [$2])
2122 else
2123 {
2124 AC_MSG_RESULT(no)
2125 GTK_CFLAGS=""
2126 GTK_LIBS=""
2127 ifelse([$3], , :, [$3])
2128 }
2129 fi
2130 }
2131 else
2132 GTK_CFLAGS=""
2133 GTK_LIBS=""
2134 ifelse([$3], , :, [$3])
2135 fi
2136 AC_SUBST(GTK_CFLAGS)
2137 AC_SUBST(GTK_LIBS)
2138 rm -f conf.gtktest
2139])
2140
2141dnl ---------------------------------------------------------------------------
2142dnl gnome
2143dnl ---------------------------------------------------------------------------
2144AC_DEFUN([GNOME_INIT_HOOK],
2145[
2146 AC_SUBST(GNOME_LIBS)
2147 AC_SUBST(GNOME_LIBDIR)
2148 AC_SUBST(GNOME_INCLUDEDIR)
2149
2150 AC_ARG_WITH(gnome-includes,
2151 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2152 [CFLAGS="$CFLAGS -I$withval"]
2153 )
2154
2155 AC_ARG_WITH(gnome-libs,
2156 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2157 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2158 )
2159
2160 AC_ARG_WITH(gnome,
2161 [ --with-gnome Specify prefix for GNOME files],
2162 if test x$withval = xyes; then
2163 want_gnome=yes
2164 ifelse([$1], [], :, [$1])
2165 else
2166 if test "x$withval" = xno; then
2167 want_gnome=no
2168 else
2169 want_gnome=yes
2170 LDFLAGS="$LDFLAGS -L$withval/lib"
2171 CFLAGS="$CFLAGS -I$withval/include"
2172 gnome_prefix=$withval/lib
2173 fi
2174 fi,
2175 want_gnome=yes)
2176
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002177 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002178 {
2179 AC_MSG_CHECKING(for libgnomeui-2.0)
2180 if $PKG_CONFIG --exists libgnomeui-2.0; then
2181 AC_MSG_RESULT(yes)
2182 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2183 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2184 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002185
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002186 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2187 dnl This might not be the right way but it works for me...
2188 AC_MSG_CHECKING(for FreeBSD)
2189 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2190 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002191 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002192 GNOME_LIBS="$GNOME_LIBS -pthread"
2193 else
2194 AC_MSG_RESULT(no)
2195 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002196 $1
2197 else
2198 AC_MSG_RESULT(not found)
2199 if test "x$2" = xfail; then
2200 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2201 fi
2202 fi
2203 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002204 fi
2205])
2206
2207AC_DEFUN([GNOME_INIT],[
2208 GNOME_INIT_HOOK([],fail)
2209])
2210
2211
2212dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002213dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002215if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216
2217 AC_MSG_CHECKING(--disable-gtktest argument)
2218 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2219 , enable_gtktest=yes)
2220 if test "x$enable_gtktest" = "xyes" ; then
2221 AC_MSG_RESULT(gtk test enabled)
2222 else
2223 AC_MSG_RESULT(gtk test disabled)
2224 fi
2225
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226 if test "X$PKG_CONFIG" = "X"; then
2227 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2228 fi
2229
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002230 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002231 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2232 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002233 AM_PATH_GTK(2.2.0,
2234 [GUI_LIB_LOC="$GTK_LIBDIR"
2235 GTK_LIBNAME="$GTK_LIBS"
2236 GUI_INC_LOC="$GTK_CFLAGS"], )
2237 if test "x$GTK_CFLAGS" != "x"; then
2238 SKIP_ATHENA=YES
2239 SKIP_NEXTAW=YES
2240 SKIP_MOTIF=YES
2241 GUITYPE=GTK
2242 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243 fi
2244 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002245 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002246 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2247 || test "0$gtk_minor_version" -ge 2; then
2248 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2249 fi
2250 dnl
2251 dnl if GTK exists, then check for GNOME.
2252 dnl
2253 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002254 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002255 GNOME_INIT_HOOK([have_gnome=yes])
2256 if test "x$have_gnome" = xyes ; then
2257 AC_DEFINE(FEAT_GUI_GNOME)
2258 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2259 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002260 fi
2261 }
2262 fi
2263 fi
2264fi
2265
2266dnl Check for Motif include files location.
2267dnl The LAST one found is used, this makes the highest version to be used,
2268dnl e.g. when Motif1.2 and Motif2.0 are both present.
2269
2270if test -z "$SKIP_MOTIF"; then
2271 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"
2272 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2273 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2274
2275 AC_MSG_CHECKING(for location of Motif GUI includes)
2276 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2277 GUI_INC_LOC=
2278 for try in $gui_includes; do
2279 if test -f "$try/Xm/Xm.h"; then
2280 GUI_INC_LOC=$try
2281 fi
2282 done
2283 if test -n "$GUI_INC_LOC"; then
2284 if test "$GUI_INC_LOC" = /usr/include; then
2285 GUI_INC_LOC=
2286 AC_MSG_RESULT(in default path)
2287 else
2288 AC_MSG_RESULT($GUI_INC_LOC)
2289 fi
2290 else
2291 AC_MSG_RESULT(<not found>)
2292 SKIP_MOTIF=YES
2293 fi
2294fi
2295
2296dnl Check for Motif library files location. In the same order as the include
2297dnl files, to avoid a mixup if several versions are present
2298
2299if test -z "$SKIP_MOTIF"; then
2300 AC_MSG_CHECKING(--with-motif-lib argument)
2301 AC_ARG_WITH(motif-lib,
2302 [ --with-motif-lib=STRING Library for Motif ],
2303 [ MOTIF_LIBNAME="${withval}" ] )
2304
2305 if test -n "$MOTIF_LIBNAME"; then
2306 AC_MSG_RESULT($MOTIF_LIBNAME)
2307 GUI_LIB_LOC=
2308 else
2309 AC_MSG_RESULT(no)
2310
2311 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2312 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2313
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002314 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2315 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002316 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002317 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002318 GUI_LIB_LOC=
2319 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002320 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002321 if test -f "$libtry"; then
2322 GUI_LIB_LOC=$try
2323 fi
2324 done
2325 done
2326 if test -n "$GUI_LIB_LOC"; then
2327 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002328 if test "$GUI_LIB_LOC" = /usr/lib \
2329 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2330 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002331 GUI_LIB_LOC=
2332 AC_MSG_RESULT(in default path)
2333 else
2334 if test -n "$GUI_LIB_LOC"; then
2335 AC_MSG_RESULT($GUI_LIB_LOC)
2336 if test "`(uname) 2>/dev/null`" = SunOS &&
2337 uname -r | grep '^5' >/dev/null; then
2338 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2339 fi
2340 fi
2341 fi
2342 MOTIF_LIBNAME=-lXm
2343 else
2344 AC_MSG_RESULT(<not found>)
2345 SKIP_MOTIF=YES
2346 fi
2347 fi
2348fi
2349
2350if test -z "$SKIP_MOTIF"; then
2351 SKIP_ATHENA=YES
2352 SKIP_NEXTAW=YES
2353 GUITYPE=MOTIF
2354 AC_SUBST(MOTIF_LIBNAME)
2355fi
2356
2357dnl Check if the Athena files can be found
2358
2359GUI_X_LIBS=
2360
2361if test -z "$SKIP_ATHENA"; then
2362 AC_MSG_CHECKING(if Athena header files can be found)
2363 cflags_save=$CFLAGS
2364 CFLAGS="$CFLAGS $X_CFLAGS"
2365 AC_TRY_COMPILE([
2366#include <X11/Intrinsic.h>
2367#include <X11/Xaw/Paned.h>], ,
2368 AC_MSG_RESULT(yes),
2369 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2370 CFLAGS=$cflags_save
2371fi
2372
2373if test -z "$SKIP_ATHENA"; then
2374 GUITYPE=ATHENA
2375fi
2376
2377if test -z "$SKIP_NEXTAW"; then
2378 AC_MSG_CHECKING(if neXtaw header files can be found)
2379 cflags_save=$CFLAGS
2380 CFLAGS="$CFLAGS $X_CFLAGS"
2381 AC_TRY_COMPILE([
2382#include <X11/Intrinsic.h>
2383#include <X11/neXtaw/Paned.h>], ,
2384 AC_MSG_RESULT(yes),
2385 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2386 CFLAGS=$cflags_save
2387fi
2388
2389if test -z "$SKIP_NEXTAW"; then
2390 GUITYPE=NEXTAW
2391fi
2392
2393if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2394 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2395 dnl Avoid adding it when it twice
2396 if test -n "$GUI_INC_LOC"; then
2397 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2398 fi
2399 if test -n "$GUI_LIB_LOC"; then
2400 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2401 fi
2402
2403 dnl Check for -lXext and then for -lXmu
2404 ldflags_save=$LDFLAGS
2405 LDFLAGS="$X_LIBS $LDFLAGS"
2406 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2407 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2408 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2409 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2410 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2411 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2412 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2413 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2414 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2415 if test -z "$SKIP_MOTIF"; then
2416 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2417 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2418 fi
2419 LDFLAGS=$ldflags_save
2420
2421 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2422 AC_MSG_CHECKING(for extra X11 defines)
2423 NARROW_PROTO=
2424 rm -fr conftestdir
2425 if mkdir conftestdir; then
2426 cd conftestdir
2427 cat > Imakefile <<'EOF'
2428acfindx:
2429 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2430EOF
2431 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2432 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2433 fi
2434 cd ..
2435 rm -fr conftestdir
2436 fi
2437 if test -z "$NARROW_PROTO"; then
2438 AC_MSG_RESULT(no)
2439 else
2440 AC_MSG_RESULT($NARROW_PROTO)
2441 fi
2442 AC_SUBST(NARROW_PROTO)
2443fi
2444
2445dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2446dnl use the X11 include path
2447if test "$enable_xsmp" = "yes"; then
2448 cppflags_save=$CPPFLAGS
2449 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2450 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2451 CPPFLAGS=$cppflags_save
2452fi
2453
2454
Bram Moolenaare667c952010-07-05 22:57:59 +02002455if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002456 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2457 cppflags_save=$CPPFLAGS
2458 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2459 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2460
2461 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2462 if test ! "$enable_xim" = "no"; then
2463 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2464 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2465 AC_MSG_RESULT(yes),
2466 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2467 fi
2468 CPPFLAGS=$cppflags_save
2469
2470 dnl automatically enable XIM when hangul input isn't enabled
2471 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2472 -a "x$GUITYPE" != "xNONE" ; then
2473 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2474 enable_xim="yes"
2475 fi
2476fi
2477
2478if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2479 cppflags_save=$CPPFLAGS
2480 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002481dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2482 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2483 AC_TRY_COMPILE([
2484#include <X11/Intrinsic.h>
2485#include <X11/Xmu/Editres.h>],
2486 [int i; i = 0;],
2487 AC_MSG_RESULT(yes)
2488 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2489 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002490 CPPFLAGS=$cppflags_save
2491fi
2492
2493dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2494if test -z "$SKIP_MOTIF"; then
2495 cppflags_save=$CPPFLAGS
2496 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002497 if test "$zOSUnix" = "yes"; then
2498 xmheader="Xm/Xm.h"
2499 else
2500 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002501 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002502 fi
2503 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002504
Bram Moolenaar77c19352012-06-13 19:19:41 +02002505 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002506 dnl Solaris uses XpmAttributes_21, very annoying.
2507 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2508 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2509 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2510 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2511 )
2512 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002513 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002514 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002515 CPPFLAGS=$cppflags_save
2516fi
2517
2518if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2519 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2520 enable_xim="no"
2521fi
2522if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2523 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2524 enable_fontset="no"
2525fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002526if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2528 enable_fontset="no"
2529fi
2530
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531if test -z "$SKIP_PHOTON"; then
2532 GUITYPE=PHOTONGUI
2533fi
2534
2535AC_SUBST(GUI_INC_LOC)
2536AC_SUBST(GUI_LIB_LOC)
2537AC_SUBST(GUITYPE)
2538AC_SUBST(GUI_X_LIBS)
2539
2540if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2541 AC_MSG_ERROR([cannot use workshop without Motif])
2542fi
2543
2544dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2545if test "$enable_xim" = "yes"; then
2546 AC_DEFINE(FEAT_XIM)
2547fi
2548if test "$enable_fontset" = "yes"; then
2549 AC_DEFINE(FEAT_XFONTSET)
2550fi
2551
2552
2553dnl ---------------------------------------------------------------------------
2554dnl end of GUI-checking
2555dnl ---------------------------------------------------------------------------
2556
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002557dnl Check for Cygwin, which needs an extra source file if not using X11
2558AC_MSG_CHECKING(for CYGWIN environment)
2559case `uname` in
2560 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2561 AC_MSG_CHECKING(for CYGWIN clipboard support)
2562 if test "x$with_x" = "xno" ; then
2563 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2564 AC_MSG_RESULT(yes)
2565 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2566 else
2567 AC_MSG_RESULT(no - using X11)
2568 fi ;;
2569
2570 *) CYGWIN=no; AC_MSG_RESULT(no);;
2571esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572
2573dnl Only really enable hangul input when GUI and XFONTSET are available
2574if test "$enable_hangulinput" = "yes"; then
2575 if test "x$GUITYPE" = "xNONE"; then
2576 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2577 enable_hangulinput=no
2578 else
2579 AC_DEFINE(FEAT_HANGULIN)
2580 HANGULIN_SRC=hangulin.c
2581 AC_SUBST(HANGULIN_SRC)
2582 HANGULIN_OBJ=objects/hangulin.o
2583 AC_SUBST(HANGULIN_OBJ)
2584 fi
2585fi
2586
2587dnl Checks for libraries and include files.
2588
Bram Moolenaar446cb832008-06-24 21:56:24 +00002589AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2590 [
2591 AC_RUN_IFELSE([[
2592#include "confdefs.h"
2593#include <ctype.h>
2594#if STDC_HEADERS
2595# include <stdlib.h>
2596# include <stddef.h>
2597#endif
2598main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2599 ]],[
2600 vim_cv_toupper_broken=yes
2601 ],[
2602 vim_cv_toupper_broken=no
2603 ],[
2604 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2605 ])])
2606
2607if test "x$vim_cv_toupper_broken" = "xyes" ; then
2608 AC_DEFINE(BROKEN_TOUPPER)
2609fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610
2611AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002612AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002613 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2614 AC_MSG_RESULT(no))
2615
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002616AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2617AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2618 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2619 AC_MSG_RESULT(no))
2620
Bram Moolenaar071d4272004-06-13 20:20:40 +00002621dnl Checks for header files.
2622AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2623dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2624if test "$HAS_ELF" = 1; then
2625 AC_CHECK_LIB(elf, main)
2626fi
2627
2628AC_HEADER_DIRENT
2629
Bram Moolenaar071d4272004-06-13 20:20:40 +00002630dnl If sys/wait.h is not found it might still exist but not be POSIX
2631dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2632if test $ac_cv_header_sys_wait_h = no; then
2633 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2634 AC_TRY_COMPILE([#include <sys/wait.h>],
2635 [union wait xx, yy; xx = yy],
2636 AC_MSG_RESULT(yes)
2637 AC_DEFINE(HAVE_SYS_WAIT_H)
2638 AC_DEFINE(HAVE_UNION_WAIT),
2639 AC_MSG_RESULT(no))
2640fi
2641
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002642AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2643 sys/select.h sys/utsname.h termcap.h fcntl.h \
2644 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2645 termio.h iconv.h inttypes.h langinfo.h math.h \
2646 unistd.h stropts.h errno.h sys/resource.h \
2647 sys/systeminfo.h locale.h sys/stream.h termios.h \
2648 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2649 utime.h sys/param.h libintl.h libgen.h \
2650 util/debug.h util/msg18n.h frame.h sys/acl.h \
2651 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002652
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002653dnl sys/ptem.h depends on sys/stream.h on Solaris
2654AC_CHECK_HEADERS(sys/ptem.h, [], [],
2655[#if defined HAVE_SYS_STREAM_H
2656# include <sys/stream.h>
2657#endif])
2658
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002659dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2660AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2661[#if defined HAVE_SYS_PARAM_H
2662# include <sys/param.h>
2663#endif])
2664
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002665
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002666dnl pthread_np.h may exist but can only be used after including pthread.h
2667AC_MSG_CHECKING([for pthread_np.h])
2668AC_TRY_COMPILE([
2669#include <pthread.h>
2670#include <pthread_np.h>],
2671 [int i; i = 0;],
2672 AC_MSG_RESULT(yes)
2673 AC_DEFINE(HAVE_PTHREAD_NP_H),
2674 AC_MSG_RESULT(no))
2675
Bram Moolenaare344bea2005-09-01 20:46:49 +00002676AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002677if test "x$MACOSX" = "xyes"; then
2678 dnl The strings.h file on OS/X contains a warning and nothing useful.
2679 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2680else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681
2682dnl Check if strings.h and string.h can both be included when defined.
2683AC_MSG_CHECKING([if strings.h can be included after string.h])
2684cppflags_save=$CPPFLAGS
2685CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2686AC_TRY_COMPILE([
2687#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2688# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2689 /* but don't do it on AIX 5.1 (Uribarri) */
2690#endif
2691#ifdef HAVE_XM_XM_H
2692# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2693#endif
2694#ifdef HAVE_STRING_H
2695# include <string.h>
2696#endif
2697#if defined(HAVE_STRINGS_H)
2698# include <strings.h>
2699#endif
2700 ], [int i; i = 0;],
2701 AC_MSG_RESULT(yes),
2702 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2703 AC_MSG_RESULT(no))
2704CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002705fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002706
2707dnl Checks for typedefs, structures, and compiler characteristics.
2708AC_PROG_GCC_TRADITIONAL
2709AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002710AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002711AC_TYPE_MODE_T
2712AC_TYPE_OFF_T
2713AC_TYPE_PID_T
2714AC_TYPE_SIZE_T
2715AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002716AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002717
Bram Moolenaar071d4272004-06-13 20:20:40 +00002718AC_HEADER_TIME
2719AC_CHECK_TYPE(ino_t, long)
2720AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002721AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002722
2723AC_MSG_CHECKING(for rlim_t)
2724if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2725 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2726else
2727 AC_EGREP_CPP(dnl
2728changequote(<<,>>)dnl
2729<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2730changequote([,]),
2731 [
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#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002738# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002739#endif
2740 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2741 AC_MSG_RESULT($ac_cv_type_rlim_t)
2742fi
2743if test $ac_cv_type_rlim_t = no; then
2744 cat >> confdefs.h <<\EOF
2745#define rlim_t unsigned long
2746EOF
2747fi
2748
2749AC_MSG_CHECKING(for stack_t)
2750if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2751 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2752else
2753 AC_EGREP_CPP(stack_t,
2754 [
2755#include <sys/types.h>
2756#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002757# include <stdlib.h>
2758# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002759#endif
2760#include <signal.h>
2761 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2762 AC_MSG_RESULT($ac_cv_type_stack_t)
2763fi
2764if test $ac_cv_type_stack_t = no; then
2765 cat >> confdefs.h <<\EOF
2766#define stack_t struct sigaltstack
2767EOF
2768fi
2769
2770dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2771AC_MSG_CHECKING(whether stack_t has an ss_base field)
2772AC_TRY_COMPILE([
2773#include <sys/types.h>
2774#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002775# include <stdlib.h>
2776# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002777#endif
2778#include <signal.h>
2779#include "confdefs.h"
2780 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2781 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2782 AC_MSG_RESULT(no))
2783
2784olibs="$LIBS"
2785AC_MSG_CHECKING(--with-tlib argument)
2786AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2787if test -n "$with_tlib"; then
2788 AC_MSG_RESULT($with_tlib)
2789 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002790 AC_MSG_CHECKING(for linking with $with_tlib library)
2791 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2792 dnl Need to check for tgetent() below.
2793 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002794else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002795 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002796 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2797 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002798 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002799 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002800 dnl Older versions of ncurses have bugs, get a new one!
2801 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002802 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002803 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002804 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2805 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002806 esac
2807 for libname in $tlibs; do
2808 AC_CHECK_LIB(${libname}, tgetent,,)
2809 if test "x$olibs" != "x$LIBS"; then
2810 dnl It's possible that a library is found but it doesn't work
2811 dnl e.g., shared library that cannot be found
2812 dnl compile and run a test program to be sure
2813 AC_TRY_RUN([
2814#ifdef HAVE_TERMCAP_H
2815# include <termcap.h>
2816#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002817#if STDC_HEADERS
2818# include <stdlib.h>
2819# include <stddef.h>
2820#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002821main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2822 res="OK", res="FAIL", res="FAIL")
2823 if test "$res" = "OK"; then
2824 break
2825 fi
2826 AC_MSG_RESULT($libname library is not usable)
2827 LIBS="$olibs"
2828 fi
2829 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002830 if test "x$olibs" = "x$LIBS"; then
2831 AC_MSG_RESULT(no terminal library found)
2832 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002833fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002834
2835if test "x$olibs" = "x$LIBS"; then
2836 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002837 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002838 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2839 AC_MSG_RESULT(yes),
2840 AC_MSG_ERROR([NOT FOUND!
2841 You need to install a terminal library; for example ncurses.
2842 Or specify the name of the library with --with-tlib.]))
2843fi
2844
Bram Moolenaar446cb832008-06-24 21:56:24 +00002845AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2846 [
2847 AC_RUN_IFELSE([[
2848#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002849#ifdef HAVE_TERMCAP_H
2850# include <termcap.h>
2851#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002852#ifdef HAVE_STRING_H
2853# include <string.h>
2854#endif
2855#if STDC_HEADERS
2856# include <stdlib.h>
2857# include <stddef.h>
2858#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002859main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002860{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2861 ]],[
2862 vim_cv_terminfo=no
2863 ],[
2864 vim_cv_terminfo=yes
2865 ],[
2866 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2867 ])
2868 ])
2869
2870if test "x$vim_cv_terminfo" = "xyes" ; then
2871 AC_DEFINE(TERMINFO)
2872fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002873
2874if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002875 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2876 [
2877 AC_RUN_IFELSE([[
2878#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002879#ifdef HAVE_TERMCAP_H
2880# include <termcap.h>
2881#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002882#if STDC_HEADERS
2883# include <stdlib.h>
2884# include <stddef.h>
2885#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002887{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2888 ]],[
2889 vim_cv_tgent=zero
2890 ],[
2891 vim_cv_tgent=non-zero
2892 ],[
2893 AC_MSG_ERROR(failed to compile test program.)
2894 ])
2895 ])
2896
2897 if test "x$vim_cv_tgent" = "xzero" ; then
2898 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2899 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002900fi
2901
2902AC_MSG_CHECKING(whether termcap.h contains ospeed)
2903AC_TRY_LINK([
2904#ifdef HAVE_TERMCAP_H
2905# include <termcap.h>
2906#endif
2907 ], [ospeed = 20000],
2908 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2909 [AC_MSG_RESULT(no)
2910 AC_MSG_CHECKING(whether ospeed can be extern)
2911 AC_TRY_LINK([
2912#ifdef HAVE_TERMCAP_H
2913# include <termcap.h>
2914#endif
2915extern short ospeed;
2916 ], [ospeed = 20000],
2917 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2918 AC_MSG_RESULT(no))]
2919 )
2920
2921AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2922AC_TRY_LINK([
2923#ifdef HAVE_TERMCAP_H
2924# include <termcap.h>
2925#endif
2926 ], [if (UP == 0 && BC == 0) PC = 1],
2927 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2928 [AC_MSG_RESULT(no)
2929 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2930 AC_TRY_LINK([
2931#ifdef HAVE_TERMCAP_H
2932# include <termcap.h>
2933#endif
2934extern char *UP, *BC, PC;
2935 ], [if (UP == 0 && BC == 0) PC = 1],
2936 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2937 AC_MSG_RESULT(no))]
2938 )
2939
2940AC_MSG_CHECKING(whether tputs() uses outfuntype)
2941AC_TRY_COMPILE([
2942#ifdef HAVE_TERMCAP_H
2943# include <termcap.h>
2944#endif
2945 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2946 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2947 AC_MSG_RESULT(no))
2948
2949dnl On some SCO machines sys/select redefines struct timeval
2950AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2951AC_TRY_COMPILE([
2952#include <sys/types.h>
2953#include <sys/time.h>
2954#include <sys/select.h>], ,
2955 AC_MSG_RESULT(yes)
2956 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2957 AC_MSG_RESULT(no))
2958
2959dnl AC_DECL_SYS_SIGLIST
2960
2961dnl Checks for pty.c (copied from screen) ==========================
2962AC_MSG_CHECKING(for /dev/ptc)
2963if test -r /dev/ptc; then
2964 AC_DEFINE(HAVE_DEV_PTC)
2965 AC_MSG_RESULT(yes)
2966else
2967 AC_MSG_RESULT(no)
2968fi
2969
2970AC_MSG_CHECKING(for SVR4 ptys)
2971if test -c /dev/ptmx ; then
2972 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2973 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2974 AC_MSG_RESULT(no))
2975else
2976 AC_MSG_RESULT(no)
2977fi
2978
2979AC_MSG_CHECKING(for ptyranges)
2980if test -d /dev/ptym ; then
2981 pdir='/dev/ptym'
2982else
2983 pdir='/dev'
2984fi
2985dnl SCO uses ptyp%d
2986AC_EGREP_CPP(yes,
2987[#ifdef M_UNIX
2988 yes;
2989#endif
2990 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2991dnl if test -c /dev/ptyp19; then
2992dnl ptys=`echo /dev/ptyp??`
2993dnl else
2994dnl ptys=`echo $pdir/pty??`
2995dnl fi
2996if test "$ptys" != "$pdir/pty??" ; then
2997 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2998 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2999 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3000 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3001 AC_MSG_RESULT([$p0 / $p1])
3002else
3003 AC_MSG_RESULT([don't know])
3004fi
3005
3006dnl **** pty mode/group handling ****
3007dnl
3008dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003009rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003010AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3011 [
3012 AC_RUN_IFELSE([[
3013#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003015#if STDC_HEADERS
3016# include <stdlib.h>
3017# include <stddef.h>
3018#endif
3019#ifdef HAVE_UNISTD_H
3020#include <unistd.h>
3021#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003022#include <sys/stat.h>
3023#include <stdio.h>
3024main()
3025{
3026 struct stat sb;
3027 char *x,*ttyname();
3028 int om, m;
3029 FILE *fp;
3030
3031 if (!(x = ttyname(0))) exit(1);
3032 if (stat(x, &sb)) exit(1);
3033 om = sb.st_mode;
3034 if (om & 002) exit(0);
3035 m = system("mesg y");
3036 if (m == -1 || m == 127) exit(1);
3037 if (stat(x, &sb)) exit(1);
3038 m = sb.st_mode;
3039 if (chmod(x, om)) exit(1);
3040 if (m & 002) exit(0);
3041 if (sb.st_gid == getgid()) exit(1);
3042 if (!(fp=fopen("conftest_grp", "w")))
3043 exit(1);
3044 fprintf(fp, "%d\n", sb.st_gid);
3045 fclose(fp);
3046 exit(0);
3047}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003048 ]],[
3049 if test -f conftest_grp; then
3050 vim_cv_tty_group=`cat conftest_grp`
3051 if test "x$vim_cv_tty_mode" = "x" ; then
3052 vim_cv_tty_mode=0620
3053 fi
3054 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3055 else
3056 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003057 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058 fi
3059 ],[
3060 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003061 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003062 ],[
3063 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3064 ])
3065 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003066rm -f conftest_grp
3067
Bram Moolenaar446cb832008-06-24 21:56:24 +00003068if test "x$vim_cv_tty_group" != "xworld" ; then
3069 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3070 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003071 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 +00003072 else
3073 AC_DEFINE(PTYMODE, 0620)
3074 fi
3075fi
3076
Bram Moolenaar071d4272004-06-13 20:20:40 +00003077dnl Checks for library functions. ===================================
3078
3079AC_TYPE_SIGNAL
3080
3081dnl find out what to use at the end of a signal function
3082if test $ac_cv_type_signal = void; then
3083 AC_DEFINE(SIGRETURN, [return])
3084else
3085 AC_DEFINE(SIGRETURN, [return 0])
3086fi
3087
3088dnl check if struct sigcontext is defined (used for SGI only)
3089AC_MSG_CHECKING(for struct sigcontext)
3090AC_TRY_COMPILE([
3091#include <signal.h>
3092test_sig()
3093{
3094 struct sigcontext *scont;
3095 scont = (struct sigcontext *)0;
3096 return 1;
3097} ], ,
3098 AC_MSG_RESULT(yes)
3099 AC_DEFINE(HAVE_SIGCONTEXT),
3100 AC_MSG_RESULT(no))
3101
3102dnl tricky stuff: try to find out if getcwd() is implemented with
3103dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003104AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3105 [
3106 AC_RUN_IFELSE([[
3107#include "confdefs.h"
3108#ifdef HAVE_UNISTD_H
3109#include <unistd.h>
3110#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003111char *dagger[] = { "IFS=pwd", 0 };
3112main()
3113{
3114 char buffer[500];
3115 extern char **environ;
3116 environ = dagger;
3117 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003118}
3119 ]],[
3120 vim_cv_getcwd_broken=no
3121 ],[
3122 vim_cv_getcwd_broken=yes
3123 ],[
3124 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3125 ])
3126 ])
3127
3128if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3129 AC_DEFINE(BAD_GETCWD)
3130fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131
Bram Moolenaar25153e12010-02-24 14:47:08 +01003132dnl Check for functions in one big call, to reduce the size of configure.
3133dnl Can only be used for functions that do not require any include.
3134AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003135 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003136 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003137 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003138 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003139 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3140 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003141AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003142
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003143dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3144dnl appropriate, so that off_t is 64 bits when needed.
3145AC_SYS_LARGEFILE
3146
Bram Moolenaar071d4272004-06-13 20:20:40 +00003147dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3148AC_MSG_CHECKING(for st_blksize)
3149AC_TRY_COMPILE(
3150[#include <sys/types.h>
3151#include <sys/stat.h>],
3152[ struct stat st;
3153 int n;
3154
3155 stat("/", &st);
3156 n = (int)st.st_blksize;],
3157 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3158 AC_MSG_RESULT(no))
3159
Bram Moolenaar446cb832008-06-24 21:56:24 +00003160AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3161 [
3162 AC_RUN_IFELSE([[
3163#include "confdefs.h"
3164#if STDC_HEADERS
3165# include <stdlib.h>
3166# include <stddef.h>
3167#endif
3168#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003169#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003170main() {struct stat st; exit(stat("configure/", &st) != 0); }
3171 ]],[
3172 vim_cv_stat_ignores_slash=yes
3173 ],[
3174 vim_cv_stat_ignores_slash=no
3175 ],[
3176 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3177 ])
3178 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003179
Bram Moolenaar446cb832008-06-24 21:56:24 +00003180if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3181 AC_DEFINE(STAT_IGNORES_SLASH)
3182fi
3183
Bram Moolenaar071d4272004-06-13 20:20:40 +00003184dnl Link with iconv for charset translation, if not found without library.
3185dnl check for iconv() requires including iconv.h
3186dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3187dnl has been installed.
3188AC_MSG_CHECKING(for iconv_open())
3189save_LIBS="$LIBS"
3190LIBS="$LIBS -liconv"
3191AC_TRY_LINK([
3192#ifdef HAVE_ICONV_H
3193# include <iconv.h>
3194#endif
3195 ], [iconv_open("fr", "to");],
3196 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3197 LIBS="$save_LIBS"
3198 AC_TRY_LINK([
3199#ifdef HAVE_ICONV_H
3200# include <iconv.h>
3201#endif
3202 ], [iconv_open("fr", "to");],
3203 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3204 AC_MSG_RESULT(no)))
3205
3206
3207AC_MSG_CHECKING(for nl_langinfo(CODESET))
3208AC_TRY_LINK([
3209#ifdef HAVE_LANGINFO_H
3210# include <langinfo.h>
3211#endif
3212], [char *cs = nl_langinfo(CODESET);],
3213 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3214 AC_MSG_RESULT(no))
3215
Bram Moolenaar446cb832008-06-24 21:56:24 +00003216dnl Need various functions for floating point support. Only enable
3217dnl floating point when they are all present.
3218AC_CHECK_LIB(m, strtod)
3219AC_MSG_CHECKING([for strtod() and other floating point functions])
3220AC_TRY_LINK([
3221#ifdef HAVE_MATH_H
3222# include <math.h>
3223#endif
3224#if STDC_HEADERS
3225# include <stdlib.h>
3226# include <stddef.h>
3227#endif
3228], [char *s; double d;
3229 d = strtod("1.1", &s);
3230 d = fabs(1.11);
3231 d = ceil(1.11);
3232 d = floor(1.11);
3233 d = log10(1.11);
3234 d = pow(1.11, 2.22);
3235 d = sqrt(1.11);
3236 d = sin(1.11);
3237 d = cos(1.11);
3238 d = atan(1.11);
3239 ],
3240 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3241 AC_MSG_RESULT(no))
3242
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3244dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003245dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246AC_MSG_CHECKING(--disable-acl argument)
3247AC_ARG_ENABLE(acl,
3248 [ --disable-acl Don't check for ACL support.],
3249 , [enable_acl="yes"])
3250if test "$enable_acl" = "yes"; then
3251AC_MSG_RESULT(no)
3252AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3253 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3254 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3255
3256AC_MSG_CHECKING(for POSIX ACL support)
3257AC_TRY_LINK([
3258#include <sys/types.h>
3259#ifdef HAVE_SYS_ACL_H
3260# include <sys/acl.h>
3261#endif
3262acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3263 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3264 acl_free(acl);],
3265 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3266 AC_MSG_RESULT(no))
3267
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003268AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003269AC_MSG_CHECKING(for Solaris ACL support)
3270AC_TRY_LINK([
3271#ifdef HAVE_SYS_ACL_H
3272# include <sys/acl.h>
3273#endif], [acl("foo", GETACLCNT, 0, NULL);
3274 ],
3275 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003276 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003277
3278AC_MSG_CHECKING(for AIX ACL support)
3279AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003280#if STDC_HEADERS
3281# include <stdlib.h>
3282# include <stddef.h>
3283#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003284#ifdef HAVE_SYS_ACL_H
3285# include <sys/acl.h>
3286#endif
3287#ifdef HAVE_SYS_ACCESS_H
3288# include <sys/access.h>
3289#endif
3290#define _ALL_SOURCE
3291
3292#include <sys/stat.h>
3293
3294int aclsize;
3295struct acl *aclent;], [aclsize = sizeof(struct acl);
3296 aclent = (void *)malloc(aclsize);
3297 statacl("foo", STX_NORMAL, aclent, aclsize);
3298 ],
3299 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3300 AC_MSG_RESULT(no))
3301else
3302 AC_MSG_RESULT(yes)
3303fi
3304
3305AC_MSG_CHECKING(--disable-gpm argument)
3306AC_ARG_ENABLE(gpm,
3307 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3308 [enable_gpm="yes"])
3309
3310if test "$enable_gpm" = "yes"; then
3311 AC_MSG_RESULT(no)
3312 dnl Checking if gpm support can be compiled
3313 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3314 [olibs="$LIBS" ; LIBS="-lgpm"]
3315 AC_TRY_LINK(
3316 [#include <gpm.h>
3317 #include <linux/keyboard.h>],
3318 [Gpm_GetLibVersion(NULL);],
3319 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3320 dnl FEAT_MOUSE_GPM if mouse support is included
3321 [vi_cv_have_gpm=yes],
3322 [vi_cv_have_gpm=no])
3323 [LIBS="$olibs"]
3324 )
3325 if test $vi_cv_have_gpm = yes; then
3326 LIBS="$LIBS -lgpm"
3327 AC_DEFINE(HAVE_GPM)
3328 fi
3329else
3330 AC_MSG_RESULT(yes)
3331fi
3332
Bram Moolenaar446cb832008-06-24 21:56:24 +00003333AC_MSG_CHECKING(--disable-sysmouse argument)
3334AC_ARG_ENABLE(sysmouse,
3335 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3336 [enable_sysmouse="yes"])
3337
3338if test "$enable_sysmouse" = "yes"; then
3339 AC_MSG_RESULT(no)
3340 dnl Checking if sysmouse support can be compiled
3341 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3342 dnl defines FEAT_SYSMOUSE if mouse support is included
3343 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3344 AC_TRY_LINK(
3345 [#include <sys/consio.h>
3346 #include <signal.h>
3347 #include <sys/fbio.h>],
3348 [struct mouse_info mouse;
3349 mouse.operation = MOUSE_MODE;
3350 mouse.operation = MOUSE_SHOW;
3351 mouse.u.mode.mode = 0;
3352 mouse.u.mode.signal = SIGUSR2;],
3353 [vi_cv_have_sysmouse=yes],
3354 [vi_cv_have_sysmouse=no])
3355 )
3356 if test $vi_cv_have_sysmouse = yes; then
3357 AC_DEFINE(HAVE_SYSMOUSE)
3358 fi
3359else
3360 AC_MSG_RESULT(yes)
3361fi
3362
Bram Moolenaarf05da212009-11-17 16:13:15 +00003363dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3364AC_MSG_CHECKING(for FD_CLOEXEC)
3365AC_TRY_COMPILE(
3366[#if HAVE_FCNTL_H
3367# include <fcntl.h>
3368#endif],
3369[ int flag = FD_CLOEXEC;],
3370 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3371 AC_MSG_RESULT(not usable))
3372
Bram Moolenaar071d4272004-06-13 20:20:40 +00003373dnl rename needs to be checked separately to work on Nextstep with cc
3374AC_MSG_CHECKING(for rename)
3375AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3376 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3377 AC_MSG_RESULT(no))
3378
3379dnl sysctl() may exist but not the arguments we use
3380AC_MSG_CHECKING(for sysctl)
3381AC_TRY_COMPILE(
3382[#include <sys/types.h>
3383#include <sys/sysctl.h>],
3384[ int mib[2], r;
3385 size_t len;
3386
3387 mib[0] = CTL_HW;
3388 mib[1] = HW_USERMEM;
3389 len = sizeof(r);
3390 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3391 ],
3392 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3393 AC_MSG_RESULT(not usable))
3394
3395dnl sysinfo() may exist but not be Linux compatible
3396AC_MSG_CHECKING(for sysinfo)
3397AC_TRY_COMPILE(
3398[#include <sys/types.h>
3399#include <sys/sysinfo.h>],
3400[ struct sysinfo sinfo;
3401 int t;
3402
3403 (void)sysinfo(&sinfo);
3404 t = sinfo.totalram;
3405 ],
3406 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3407 AC_MSG_RESULT(not usable))
3408
Bram Moolenaar914572a2007-05-01 11:37:47 +00003409dnl struct sysinfo may have the mem_unit field or not
3410AC_MSG_CHECKING(for sysinfo.mem_unit)
3411AC_TRY_COMPILE(
3412[#include <sys/types.h>
3413#include <sys/sysinfo.h>],
3414[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003415 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003416 ],
3417 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3418 AC_MSG_RESULT(no))
3419
Bram Moolenaar071d4272004-06-13 20:20:40 +00003420dnl sysconf() may exist but not support what we want to use
3421AC_MSG_CHECKING(for sysconf)
3422AC_TRY_COMPILE(
3423[#include <unistd.h>],
3424[ (void)sysconf(_SC_PAGESIZE);
3425 (void)sysconf(_SC_PHYS_PAGES);
3426 ],
3427 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3428 AC_MSG_RESULT(not usable))
3429
Bram Moolenaar914703b2010-05-31 21:59:46 +02003430AC_CHECK_SIZEOF([int])
3431AC_CHECK_SIZEOF([long])
3432AC_CHECK_SIZEOF([time_t])
3433AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003434
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003435dnl Make sure that uint32_t is really 32 bits unsigned.
3436AC_MSG_CHECKING([uint32_t is 32 bits])
3437AC_TRY_RUN([
3438#ifdef HAVE_STDINT_H
3439# include <stdint.h>
3440#endif
3441#ifdef HAVE_INTTYPES_H
3442# include <inttypes.h>
3443#endif
3444main() {
3445 uint32_t nr1 = (uint32_t)-1;
3446 uint32_t nr2 = (uint32_t)0xffffffffUL;
3447 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3448 exit(0);
3449}],
3450AC_MSG_RESULT(ok),
3451AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003452AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003453
Bram Moolenaar446cb832008-06-24 21:56:24 +00003454dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3455dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3456
Bram Moolenaar071d4272004-06-13 20:20:40 +00003457[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003458#include "confdefs.h"
3459#ifdef HAVE_STRING_H
3460# include <string.h>
3461#endif
3462#if STDC_HEADERS
3463# include <stdlib.h>
3464# include <stddef.h>
3465#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003466main() {
3467 char buf[10];
3468 strcpy(buf, "abcdefghi");
3469 mch_memmove(buf, buf + 2, 3);
3470 if (strncmp(buf, "ababcf", 6))
3471 exit(1);
3472 strcpy(buf, "abcdefghi");
3473 mch_memmove(buf + 2, buf, 3);
3474 if (strncmp(buf, "cdedef", 6))
3475 exit(1);
3476 exit(0); /* libc version works properly. */
3477}']
3478
Bram Moolenaar446cb832008-06-24 21:56:24 +00003479AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3480 [
3481 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3482 [
3483 vim_cv_memmove_handles_overlap=yes
3484 ],[
3485 vim_cv_memmove_handles_overlap=no
3486 ],[
3487 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3488 ])
3489 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003490
Bram Moolenaar446cb832008-06-24 21:56:24 +00003491if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3492 AC_DEFINE(USEMEMMOVE)
3493else
3494 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3495 [
3496 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3497 [
3498 vim_cv_bcopy_handles_overlap=yes
3499 ],[
3500 vim_cv_bcopy_handles_overlap=no
3501 ],[
3502 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3503 ])
3504 ])
3505
3506 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3507 AC_DEFINE(USEBCOPY)
3508 else
3509 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3510 [
3511 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3512 [
3513 vim_cv_memcpy_handles_overlap=yes
3514 ],[
3515 vim_cv_memcpy_handles_overlap=no
3516 ],[
3517 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3518 ])
3519 ])
3520
3521 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3522 AC_DEFINE(USEMEMCPY)
3523 fi
3524 fi
3525fi
3526
Bram Moolenaar071d4272004-06-13 20:20:40 +00003527
3528dnl Check for multibyte locale functions
3529dnl Find out if _Xsetlocale() is supported by libX11.
3530dnl Check if X_LOCALE should be defined.
3531
3532if test "$enable_multibyte" = "yes"; then
3533 cflags_save=$CFLAGS
3534 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003535 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003536 CFLAGS="$CFLAGS -I$x_includes"
3537 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3538 AC_MSG_CHECKING(whether X_LOCALE needed)
3539 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3540 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3541 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3542 AC_MSG_RESULT(no))
3543 fi
3544 CFLAGS=$cflags_save
3545 LDFLAGS=$ldflags_save
3546fi
3547
3548dnl Link with xpg4, it is said to make Korean locale working
3549AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3550
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003551dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003552dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003553dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003554dnl -t for typedefs (many ctags have this)
3555dnl -s for static functions (Elvis ctags only?)
3556dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3557dnl -i+m to test for older Exuberant ctags
3558AC_MSG_CHECKING(how to create tags)
3559test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003560if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003561 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003562elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3563 TAGPRG="exctags -I INIT+ --fields=+S"
3564elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3565 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003566else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003567 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003568 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3569 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3570 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3571 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3572 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3573 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3574 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3575fi
3576test -f tags.save && mv tags.save tags
3577AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3578
3579dnl Check how we can run man with a section number
3580AC_MSG_CHECKING(how to run man with a section nr)
3581MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003582(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 +00003583AC_MSG_RESULT($MANDEF)
3584if test "$MANDEF" = "man -s"; then
3585 AC_DEFINE(USEMAN_S)
3586fi
3587
3588dnl Check if gettext() is working and if it needs -lintl
3589AC_MSG_CHECKING(--disable-nls argument)
3590AC_ARG_ENABLE(nls,
3591 [ --disable-nls Don't support NLS (gettext()).], ,
3592 [enable_nls="yes"])
3593
3594if test "$enable_nls" = "yes"; then
3595 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003596
3597 INSTALL_LANGS=install-languages
3598 AC_SUBST(INSTALL_LANGS)
3599 INSTALL_TOOL_LANGS=install-tool-languages
3600 AC_SUBST(INSTALL_TOOL_LANGS)
3601
Bram Moolenaar071d4272004-06-13 20:20:40 +00003602 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3603 AC_MSG_CHECKING([for NLS])
3604 if test -f po/Makefile; then
3605 have_gettext="no"
3606 if test -n "$MSGFMT"; then
3607 AC_TRY_LINK(
3608 [#include <libintl.h>],
3609 [gettext("Test");],
3610 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3611 olibs=$LIBS
3612 LIBS="$LIBS -lintl"
3613 AC_TRY_LINK(
3614 [#include <libintl.h>],
3615 [gettext("Test");],
3616 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3617 AC_MSG_RESULT([gettext() doesn't work]);
3618 LIBS=$olibs))
3619 else
3620 AC_MSG_RESULT([msgfmt not found - disabled]);
3621 fi
3622 if test $have_gettext = "yes"; then
3623 AC_DEFINE(HAVE_GETTEXT)
3624 MAKEMO=yes
3625 AC_SUBST(MAKEMO)
3626 dnl this was added in GNU gettext 0.10.36
3627 AC_CHECK_FUNCS(bind_textdomain_codeset)
3628 dnl _nl_msg_cat_cntr is required for GNU gettext
3629 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3630 AC_TRY_LINK(
3631 [#include <libintl.h>
3632 extern int _nl_msg_cat_cntr;],
3633 [++_nl_msg_cat_cntr;],
3634 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3635 AC_MSG_RESULT([no]))
3636 fi
3637 else
3638 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3639 fi
3640else
3641 AC_MSG_RESULT(yes)
3642fi
3643
3644dnl Check for dynamic linking loader
3645AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3646if test x${DLL} = xdlfcn.h; then
3647 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3648 AC_MSG_CHECKING([for dlopen()])
3649 AC_TRY_LINK(,[
3650 extern void* dlopen();
3651 dlopen();
3652 ],
3653 AC_MSG_RESULT(yes);
3654 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3655 AC_MSG_RESULT(no);
3656 AC_MSG_CHECKING([for dlopen() in -ldl])
3657 olibs=$LIBS
3658 LIBS="$LIBS -ldl"
3659 AC_TRY_LINK(,[
3660 extern void* dlopen();
3661 dlopen();
3662 ],
3663 AC_MSG_RESULT(yes);
3664 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3665 AC_MSG_RESULT(no);
3666 LIBS=$olibs))
3667 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3668 dnl ick :-)
3669 AC_MSG_CHECKING([for dlsym()])
3670 AC_TRY_LINK(,[
3671 extern void* dlsym();
3672 dlsym();
3673 ],
3674 AC_MSG_RESULT(yes);
3675 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3676 AC_MSG_RESULT(no);
3677 AC_MSG_CHECKING([for dlsym() in -ldl])
3678 olibs=$LIBS
3679 LIBS="$LIBS -ldl"
3680 AC_TRY_LINK(,[
3681 extern void* dlsym();
3682 dlsym();
3683 ],
3684 AC_MSG_RESULT(yes);
3685 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3686 AC_MSG_RESULT(no);
3687 LIBS=$olibs))
3688elif test x${DLL} = xdl.h; then
3689 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3690 AC_MSG_CHECKING([for shl_load()])
3691 AC_TRY_LINK(,[
3692 extern void* shl_load();
3693 shl_load();
3694 ],
3695 AC_MSG_RESULT(yes);
3696 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3697 AC_MSG_RESULT(no);
3698 AC_MSG_CHECKING([for shl_load() in -ldld])
3699 olibs=$LIBS
3700 LIBS="$LIBS -ldld"
3701 AC_TRY_LINK(,[
3702 extern void* shl_load();
3703 shl_load();
3704 ],
3705 AC_MSG_RESULT(yes);
3706 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3707 AC_MSG_RESULT(no);
3708 LIBS=$olibs))
3709fi
3710AC_CHECK_HEADERS(setjmp.h)
3711
3712if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3713 dnl -ldl must come after DynaLoader.a
3714 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3715 LIBS=`echo $LIBS | sed s/-ldl//`
3716 PERL_LIBS="$PERL_LIBS -ldl"
3717 fi
3718fi
3719
Bram Moolenaar164fca32010-07-14 13:58:07 +02003720if test "x$MACOSX" = "xyes"; then
3721 AC_MSG_CHECKING(whether we need -framework Cocoa)
3722 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3723 dnl disabled during tiny build)
3724 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3725 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003726 AC_MSG_RESULT(yes)
3727 else
3728 AC_MSG_RESULT(no)
3729 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003730 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3731 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3732 dnl missing Objective-C symbols.
3733 if test "x$features" = "xtiny"; then
3734 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3735 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3736 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003737fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003738if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003739 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003740fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003741
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003742dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3743dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3744dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003745dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3746dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003747DEPEND_CFLAGS_FILTER=
3748if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003749 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003750 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003751 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003752 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003753 AC_MSG_RESULT(yes)
3754 else
3755 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003756 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003757 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3758 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003759 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003760 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003761 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3762 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003763 CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003764 AC_MSG_RESULT(yes)
3765 else
3766 AC_MSG_RESULT(no)
3767 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003768fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003769AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003770
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003771dnl link.sh tries to avoid overlinking in a hackish way.
3772dnl At least GNU ld supports --as-needed which provides the same functionality
3773dnl at linker level. Let's use it.
3774AC_MSG_CHECKING(linker --as-needed support)
3775LINK_AS_NEEDED=
3776# Check if linker supports --as-needed and --no-as-needed options
3777if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003778 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003779 LINK_AS_NEEDED=yes
3780fi
3781if test "$LINK_AS_NEEDED" = yes; then
3782 AC_MSG_RESULT(yes)
3783else
3784 AC_MSG_RESULT(no)
3785fi
3786AC_SUBST(LINK_AS_NEEDED)
3787
Bram Moolenaar77c19352012-06-13 19:19:41 +02003788# IBM z/OS reset CFLAGS for config.mk
3789if test "$zOSUnix" = "yes"; then
3790 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3791fi
3792
Bram Moolenaar071d4272004-06-13 20:20:40 +00003793dnl write output files
3794AC_OUTPUT(auto/config.mk:config.mk.in)
3795
3796dnl vim: set sw=2 tw=78 fo+=l: