blob: 4358524eecee0ffdd0bd3299e280129ef6d55828 [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=
1113 config_dir="config"
1114 if test "${vi_cv_var_python3_abiflags}" != ""; then
1115 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1116 fi
1117 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1118 if test -d "$d" && test -f "$d/config.c"; then
1119 vi_cv_path_python3_conf="$d"
1120 else
1121 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1122 for subdir in lib64 lib share; do
1123 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1124 if test -d "$d" && test -f "$d/config.c"; then
1125 vi_cv_path_python3_conf="$d"
1126 fi
1127 done
1128 done
1129 fi
1130 ])
1131
1132 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1133
1134 if test "X$PYTHON3_CONFDIR" = "X"; then
1135 AC_MSG_RESULT([can't find it!])
1136 else
1137
1138 dnl -- we need to examine Python's config/Makefile too
1139 dnl see what the interpreter is built from
1140 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1141 [
1142 pwd=`pwd`
1143 tmp_mkf="$pwd/config-PyMake$$"
1144 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001145__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001146 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001147 @echo "python3_LIBS='$(LIBS)'"
1148 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001149 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001150 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001151eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001152 dnl -- delete the lines from make about Entering/Leaving directory
1153 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1154 rm -f -- "${tmp_mkf}"
1155 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1156 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1157 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1158 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1159 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1160 ])
1161
1162 if test "X$python3_DLLLIBRARY" != "X"; then
1163 python3_INSTSONAME="$python3_DLLLIBRARY"
1164 fi
1165 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1166 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001167 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 +02001168 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001169 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 +02001170 fi
1171 PYTHON3_SRC="if_python3.c"
1172 PYTHON3_OBJ="objects/if_python3.o"
1173
1174 dnl On FreeBSD linking with "-pthread" is required to use threads.
1175 dnl _THREAD_SAFE must be used for compiling then.
1176 dnl The "-pthread" is added to $LIBS, so that the following check for
1177 dnl sigaltstack() will look in libc_r (it's there in libc!).
1178 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1179 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1180 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1181 AC_MSG_CHECKING([if -pthread should be used])
1182 threadsafe_flag=
1183 thread_lib=
1184 dnl if test "x$MACOSX" != "xyes"; then
1185 if test "`(uname) 2>/dev/null`" != Darwin; then
1186 test "$GCC" = yes && threadsafe_flag="-pthread"
1187 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1188 threadsafe_flag="-D_THREAD_SAFE"
1189 thread_lib="-pthread"
1190 fi
1191 if test "`(uname) 2>/dev/null`" = SunOS; then
1192 threadsafe_flag="-pthreads"
1193 fi
1194 fi
1195 libs_save_old=$LIBS
1196 if test -n "$threadsafe_flag"; then
1197 cflags_save=$CFLAGS
1198 CFLAGS="$CFLAGS $threadsafe_flag"
1199 LIBS="$LIBS $thread_lib"
1200 AC_TRY_LINK(,[ ],
1201 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1202 AC_MSG_RESULT(no); LIBS=$libs_save_old
1203 )
1204 CFLAGS=$cflags_save
1205 else
1206 AC_MSG_RESULT(no)
1207 fi
1208
1209 dnl check that compiling a simple program still works with the flags
1210 dnl added for Python.
1211 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1212 cflags_save=$CFLAGS
1213 libs_save=$LIBS
1214 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1215 LIBS="$LIBS $PYTHON3_LIBS"
1216 AC_TRY_LINK(,[ ],
1217 AC_MSG_RESULT(yes); python3_ok=yes,
1218 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1219 CFLAGS=$cflags_save
1220 LIBS=$libs_save
1221 if test "$python3_ok" = yes; then
1222 AC_DEFINE(FEAT_PYTHON3)
1223 else
1224 LIBS=$libs_save_old
1225 PYTHON3_SRC=
1226 PYTHON3_OBJ=
1227 PYTHON3_LIBS=
1228 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001229 fi
1230 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001231 else
1232 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001233 fi
1234 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001235 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1236 AC_MSG_ERROR([could not configure python3])
1237 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001238fi
1239
1240AC_SUBST(PYTHON3_CONFDIR)
1241AC_SUBST(PYTHON3_LIBS)
1242AC_SUBST(PYTHON3_CFLAGS)
1243AC_SUBST(PYTHON3_SRC)
1244AC_SUBST(PYTHON3_OBJ)
1245
1246dnl if python2.x and python3.x are enabled one can only link in code
1247dnl with dlopen(), dlsym(), dlclose()
1248if test "$python_ok" = yes && test "$python3_ok" = yes; then
1249 AC_DEFINE(DYNAMIC_PYTHON)
1250 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001251 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001252 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001253 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001254 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001255 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1256 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001257 AC_RUN_IFELSE([
1258 #include <dlfcn.h>
1259 /* If this program fails, then RTLD_GLOBAL is needed.
1260 * RTLD_GLOBAL will be used and then it is not possible to
1261 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001262 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001263 */
1264
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001265 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001266 {
1267 int needed = 0;
1268 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1269 if (pylib != 0)
1270 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001271 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001272 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1273 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1274 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001275 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001276 (*init)();
1277 needed = (*simple)("import termios") == -1;
1278 (*final)();
1279 dlclose(pylib);
1280 }
1281 return !needed;
1282 }
1283
1284 int main(int argc, char** argv)
1285 {
1286 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001287 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001288 not_needed = 1;
1289 return !not_needed;
1290 }],
1291 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001292
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001293 CFLAGS=$cflags_save
1294 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001295
1296 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1297 cflags_save=$CFLAGS
1298 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1299 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001300 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1301 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001302 AC_RUN_IFELSE([
1303 #include <dlfcn.h>
1304 #include <wchar.h>
1305 /* If this program fails, then RTLD_GLOBAL is needed.
1306 * RTLD_GLOBAL will be used and then it is not possible to
1307 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001308 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001309 */
1310
1311 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1312 {
1313 int needed = 0;
1314 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1315 if (pylib != 0)
1316 {
1317 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1318 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1319 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1320 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1321 (*pfx)(prefix);
1322 (*init)();
1323 needed = (*simple)("import termios") == -1;
1324 (*final)();
1325 dlclose(pylib);
1326 }
1327 return !needed;
1328 }
1329
1330 int main(int argc, char** argv)
1331 {
1332 int not_needed = 0;
1333 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1334 not_needed = 1;
1335 return !not_needed;
1336 }],
1337 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1338
1339 CFLAGS=$cflags_save
1340 LDFLAGS=$ldflags_save
1341
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001342 PYTHON_SRC="if_python.c"
1343 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001344 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001345 PYTHON_LIBS=
1346 PYTHON3_SRC="if_python3.c"
1347 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001348 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001349 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001350elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1351 AC_DEFINE(DYNAMIC_PYTHON)
1352 PYTHON_SRC="if_python.c"
1353 PYTHON_OBJ="objects/if_python.o"
1354 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1355 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001356elif test "$python_ok" = yes; then
1357 dnl Check that adding -fPIE works. It may be needed when using a static
1358 dnl Python library.
1359 AC_MSG_CHECKING([if -fPIE can be added for Python])
1360 cflags_save=$CFLAGS
1361 libs_save=$LIBS
1362 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1363 LIBS="$LIBS $PYTHON_LIBS"
1364 AC_TRY_LINK(,[ ],
1365 AC_MSG_RESULT(yes); fpie_ok=yes,
1366 AC_MSG_RESULT(no); fpie_ok=no)
1367 CFLAGS=$cflags_save
1368 LIBS=$libs_save
1369 if test $fpie_ok = yes; then
1370 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1371 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001372elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1373 AC_DEFINE(DYNAMIC_PYTHON3)
1374 PYTHON3_SRC="if_python3.c"
1375 PYTHON3_OBJ="objects/if_python3.o"
1376 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1377 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001378elif test "$python3_ok" = yes; then
1379 dnl Check that adding -fPIE works. It may be needed when using a static
1380 dnl Python library.
1381 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1382 cflags_save=$CFLAGS
1383 libs_save=$LIBS
1384 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1385 LIBS="$LIBS $PYTHON3_LIBS"
1386 AC_TRY_LINK(,[ ],
1387 AC_MSG_RESULT(yes); fpie_ok=yes,
1388 AC_MSG_RESULT(no); fpie_ok=no)
1389 CFLAGS=$cflags_save
1390 LIBS=$libs_save
1391 if test $fpie_ok = yes; then
1392 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1393 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001394fi
1395
Bram Moolenaar071d4272004-06-13 20:20:40 +00001396AC_MSG_CHECKING(--enable-tclinterp argument)
1397AC_ARG_ENABLE(tclinterp,
1398 [ --enable-tclinterp Include Tcl interpreter.], ,
1399 [enable_tclinterp="no"])
1400AC_MSG_RESULT($enable_tclinterp)
1401
1402if test "$enable_tclinterp" = "yes"; then
1403
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001404 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001405 AC_MSG_CHECKING(--with-tclsh argument)
1406 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1407 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001408 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001409 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1410 AC_SUBST(vi_cv_path_tcl)
1411
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001412 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1413 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1414 tclsh_name="tclsh8.4"
1415 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1416 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001417 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001418 tclsh_name="tclsh8.2"
1419 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1420 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001421 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1422 tclsh_name="tclsh8.0"
1423 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1424 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001425 dnl still didn't find it, try without version number
1426 if test "X$vi_cv_path_tcl" = "X"; then
1427 tclsh_name="tclsh"
1428 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1429 fi
1430 if test "X$vi_cv_path_tcl" != "X"; then
1431 AC_MSG_CHECKING(Tcl version)
1432 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1433 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1434 AC_MSG_RESULT($tclver - OK);
1435 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 -`
1436
1437 AC_MSG_CHECKING(for location of Tcl include)
1438 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001439 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 +00001440 else
1441 dnl For Mac OS X 10.3, use the OS-provided framework location
1442 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1443 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001444 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001445 for try in $tclinc; do
1446 if test -f "$try/tcl.h"; then
1447 AC_MSG_RESULT($try/tcl.h)
1448 TCL_INC=$try
1449 break
1450 fi
1451 done
1452 if test -z "$TCL_INC"; then
1453 AC_MSG_RESULT(<not found>)
1454 SKIP_TCL=YES
1455 fi
1456 if test -z "$SKIP_TCL"; then
1457 AC_MSG_CHECKING(for location of tclConfig.sh script)
1458 if test "x$MACOSX" != "xyes"; then
1459 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001460 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001461 else
1462 dnl For Mac OS X 10.3, use the OS-provided framework location
1463 tclcnf="/System/Library/Frameworks/Tcl.framework"
1464 fi
1465 for try in $tclcnf; do
1466 if test -f $try/tclConfig.sh; then
1467 AC_MSG_RESULT($try/tclConfig.sh)
1468 . $try/tclConfig.sh
1469 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1470 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1471 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001472 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001473 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 +00001474 break
1475 fi
1476 done
1477 if test -z "$TCL_LIBS"; then
1478 AC_MSG_RESULT(<not found>)
1479 AC_MSG_CHECKING(for Tcl library by myself)
1480 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001481 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001482 for ext in .so .a ; do
1483 for ver in "" $tclver ; do
1484 for try in $tcllib ; do
1485 trylib=tcl$ver$ext
1486 if test -f $try/lib$trylib ; then
1487 AC_MSG_RESULT($try/lib$trylib)
1488 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1489 if test "`(uname) 2>/dev/null`" = SunOS &&
1490 uname -r | grep '^5' >/dev/null; then
1491 TCL_LIBS="$TCL_LIBS -R $try"
1492 fi
1493 break 3
1494 fi
1495 done
1496 done
1497 done
1498 if test -z "$TCL_LIBS"; then
1499 AC_MSG_RESULT(<not found>)
1500 SKIP_TCL=YES
1501 fi
1502 fi
1503 if test -z "$SKIP_TCL"; then
1504 AC_DEFINE(FEAT_TCL)
1505 TCL_SRC=if_tcl.c
1506 TCL_OBJ=objects/if_tcl.o
1507 TCL_PRO=if_tcl.pro
1508 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1509 fi
1510 fi
1511 else
1512 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1513 fi
1514 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001515 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1516 AC_MSG_ERROR([could not configure Tcl])
1517 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001518fi
1519AC_SUBST(TCL_SRC)
1520AC_SUBST(TCL_OBJ)
1521AC_SUBST(TCL_PRO)
1522AC_SUBST(TCL_CFLAGS)
1523AC_SUBST(TCL_LIBS)
1524
1525AC_MSG_CHECKING(--enable-rubyinterp argument)
1526AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001527 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001528 [enable_rubyinterp="no"])
1529AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001530if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001531 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001532 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001533 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1534 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1535 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001536 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001537 if test "X$vi_cv_path_ruby" != "X"; then
1538 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001539 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 +00001540 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001541 AC_MSG_CHECKING(Ruby rbconfig)
1542 ruby_rbconfig="RbConfig"
1543 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1544 ruby_rbconfig="Config"
1545 fi
1546 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001547 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001548 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 +00001549 if test "X$rubyhdrdir" != "X"; then
1550 AC_MSG_RESULT($rubyhdrdir)
1551 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001552 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001553 if test -d "$rubyhdrdir/$rubyarch"; then
1554 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1555 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001556 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001557 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001558 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001559 if test "X$rubylibs" != "X"; then
1560 RUBY_LIBS="$rubylibs"
1561 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001562 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1563 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001564 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001565 if test -f "$rubylibdir/$librubya"; then
1566 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001567 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1568 elif test "$librubyarg" = "libruby.a"; then
1569 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1570 librubyarg="-lruby"
1571 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001572 fi
1573
1574 if test "X$librubyarg" != "X"; then
1575 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1576 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001577 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001578 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001579 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1580 dnl be included if requested by passing --with-mac-arch to
1581 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001582 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001583 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001584 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1585 LDFLAGS="$rubyldflags $LDFLAGS"
1586 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001587 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001588 fi
1589 RUBY_SRC="if_ruby.c"
1590 RUBY_OBJ="objects/if_ruby.o"
1591 RUBY_PRO="if_ruby.pro"
1592 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001593 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001594 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001595 AC_DEFINE(DYNAMIC_RUBY)
1596 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1597 RUBY_LIBS=
1598 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001599 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001600 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001601 fi
1602 else
1603 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1604 fi
1605 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001606
1607 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1608 AC_MSG_ERROR([could not configure Ruby])
1609 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001610fi
1611AC_SUBST(RUBY_SRC)
1612AC_SUBST(RUBY_OBJ)
1613AC_SUBST(RUBY_PRO)
1614AC_SUBST(RUBY_CFLAGS)
1615AC_SUBST(RUBY_LIBS)
1616
1617AC_MSG_CHECKING(--enable-cscope argument)
1618AC_ARG_ENABLE(cscope,
1619 [ --enable-cscope Include cscope interface.], ,
1620 [enable_cscope="no"])
1621AC_MSG_RESULT($enable_cscope)
1622if test "$enable_cscope" = "yes"; then
1623 AC_DEFINE(FEAT_CSCOPE)
1624fi
1625
1626AC_MSG_CHECKING(--enable-workshop argument)
1627AC_ARG_ENABLE(workshop,
1628 [ --enable-workshop Include Sun Visual Workshop support.], ,
1629 [enable_workshop="no"])
1630AC_MSG_RESULT($enable_workshop)
1631if test "$enable_workshop" = "yes"; then
1632 AC_DEFINE(FEAT_SUN_WORKSHOP)
1633 WORKSHOP_SRC="workshop.c integration.c"
1634 AC_SUBST(WORKSHOP_SRC)
1635 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1636 AC_SUBST(WORKSHOP_OBJ)
1637 if test "${enable_gui-xxx}" = xxx; then
1638 enable_gui=motif
1639 fi
1640fi
1641
1642AC_MSG_CHECKING(--disable-netbeans argument)
1643AC_ARG_ENABLE(netbeans,
1644 [ --disable-netbeans Disable NetBeans integration support.],
1645 , [enable_netbeans="yes"])
1646if test "$enable_netbeans" = "yes"; then
1647 AC_MSG_RESULT(no)
1648 dnl On Solaris we need the socket and nsl library.
1649 AC_CHECK_LIB(socket, socket)
1650 AC_CHECK_LIB(nsl, gethostbyname)
1651 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1652 AC_TRY_LINK([
1653#include <stdio.h>
1654#include <stdlib.h>
1655#include <stdarg.h>
1656#include <fcntl.h>
1657#include <netdb.h>
1658#include <netinet/in.h>
1659#include <errno.h>
1660#include <sys/types.h>
1661#include <sys/socket.h>
1662 /* Check bitfields */
1663 struct nbbuf {
1664 unsigned int initDone:1;
1665 ushort signmaplen;
1666 };
1667 ], [
1668 /* Check creating a socket. */
1669 struct sockaddr_in server;
1670 (void)socket(AF_INET, SOCK_STREAM, 0);
1671 (void)htons(100);
1672 (void)gethostbyname("microsoft.com");
1673 if (errno == ECONNREFUSED)
1674 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1675 ],
1676 AC_MSG_RESULT(yes),
1677 AC_MSG_RESULT(no); enable_netbeans="no")
1678else
1679 AC_MSG_RESULT(yes)
1680fi
1681if test "$enable_netbeans" = "yes"; then
1682 AC_DEFINE(FEAT_NETBEANS_INTG)
1683 NETBEANS_SRC="netbeans.c"
1684 AC_SUBST(NETBEANS_SRC)
1685 NETBEANS_OBJ="objects/netbeans.o"
1686 AC_SUBST(NETBEANS_OBJ)
1687fi
1688
1689AC_MSG_CHECKING(--enable-sniff argument)
1690AC_ARG_ENABLE(sniff,
1691 [ --enable-sniff Include Sniff interface.], ,
1692 [enable_sniff="no"])
1693AC_MSG_RESULT($enable_sniff)
1694if test "$enable_sniff" = "yes"; then
1695 AC_DEFINE(FEAT_SNIFF)
1696 SNIFF_SRC="if_sniff.c"
1697 AC_SUBST(SNIFF_SRC)
1698 SNIFF_OBJ="objects/if_sniff.o"
1699 AC_SUBST(SNIFF_OBJ)
1700fi
1701
1702AC_MSG_CHECKING(--enable-multibyte argument)
1703AC_ARG_ENABLE(multibyte,
1704 [ --enable-multibyte Include multibyte editing support.], ,
1705 [enable_multibyte="no"])
1706AC_MSG_RESULT($enable_multibyte)
1707if test "$enable_multibyte" = "yes"; then
1708 AC_DEFINE(FEAT_MBYTE)
1709fi
1710
1711AC_MSG_CHECKING(--enable-hangulinput argument)
1712AC_ARG_ENABLE(hangulinput,
1713 [ --enable-hangulinput Include Hangul input support.], ,
1714 [enable_hangulinput="no"])
1715AC_MSG_RESULT($enable_hangulinput)
1716
1717AC_MSG_CHECKING(--enable-xim argument)
1718AC_ARG_ENABLE(xim,
1719 [ --enable-xim Include XIM input support.],
1720 AC_MSG_RESULT($enable_xim),
1721 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001722
1723AC_MSG_CHECKING(--enable-fontset argument)
1724AC_ARG_ENABLE(fontset,
1725 [ --enable-fontset Include X fontset output support.], ,
1726 [enable_fontset="no"])
1727AC_MSG_RESULT($enable_fontset)
1728dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1729
1730test -z "$with_x" && with_x=yes
1731test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1732if test "$with_x" = no; then
1733 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1734else
1735 dnl Do this check early, so that its failure can override user requests.
1736
1737 AC_PATH_PROG(xmkmfpath, xmkmf)
1738
1739 AC_PATH_XTRA
1740
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001741 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001742 dnl be compiled with a special option.
1743 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001744 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745 CFLAGS="$CFLAGS -W c,dll"
1746 LDFLAGS="$LDFLAGS -W l,dll"
1747 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1748 fi
1749
1750 dnl On my HPUX system the X include dir is found, but the lib dir not.
1751 dnl This is a desparate try to fix this.
1752
1753 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1754 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1755 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1756 X_LIBS="$X_LIBS -L$x_libraries"
1757 if test "`(uname) 2>/dev/null`" = SunOS &&
1758 uname -r | grep '^5' >/dev/null; then
1759 X_LIBS="$X_LIBS -R $x_libraries"
1760 fi
1761 fi
1762
1763 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1764 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1765 AC_MSG_RESULT(Corrected X includes to $x_includes)
1766 X_CFLAGS="$X_CFLAGS -I$x_includes"
1767 fi
1768
1769 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1770 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1771 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1772 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1773 dnl Same for "-R/usr/lib ".
1774 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1775
1776
1777 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001778 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1779 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001780 AC_MSG_CHECKING(if X11 header files can be found)
1781 cflags_save=$CFLAGS
1782 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001783 AC_TRY_COMPILE([#include <X11/Xlib.h>
1784#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001785 AC_MSG_RESULT(yes),
1786 AC_MSG_RESULT(no); no_x=yes)
1787 CFLAGS=$cflags_save
1788
1789 if test "${no_x-no}" = yes; then
1790 with_x=no
1791 else
1792 AC_DEFINE(HAVE_X11)
1793 X_LIB="-lXt -lX11";
1794 AC_SUBST(X_LIB)
1795
1796 ac_save_LDFLAGS="$LDFLAGS"
1797 LDFLAGS="-L$x_libraries $LDFLAGS"
1798
1799 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1800 dnl For HP-UX 10.20 it must be before -lSM -lICE
1801 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1802 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1803
1804 dnl Some systems need -lnsl -lsocket when testing for ICE.
1805 dnl The check above doesn't do this, try here (again). Also needed to get
1806 dnl them after Xdmcp. link.sh will remove them when not needed.
1807 dnl Check for other function than above to avoid the cached value
1808 AC_CHECK_LIB(ICE, IceOpenConnection,
1809 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1810
1811 dnl Check for -lXpm (needed for some versions of Motif)
1812 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1813 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1814 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1815
1816 dnl Check that the X11 header files don't use implicit declarations
1817 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1818 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001819 dnl -Werror is GCC only, others like Solaris Studio might not like it
1820 if test "$GCC" = yes; then
1821 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1822 else
1823 CFLAGS="$CFLAGS $X_CFLAGS"
1824 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001825 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1826 AC_MSG_RESULT(no),
1827 CFLAGS="$CFLAGS -Wno-implicit-int"
1828 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1829 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1830 AC_MSG_RESULT(test failed)
1831 )
1832 )
1833 CFLAGS=$cflags_save
1834
1835 LDFLAGS="$ac_save_LDFLAGS"
1836
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001837 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1838 AC_CACHE_VAL(ac_cv_small_wchar_t,
1839 [AC_TRY_RUN([
1840#include <X11/Xlib.h>
1841#if STDC_HEADERS
1842# include <stdlib.h>
1843# include <stddef.h>
1844#endif
1845 main()
1846 {
1847 if (sizeof(wchar_t) <= 2)
1848 exit(1);
1849 exit(0);
1850 }],
1851 ac_cv_small_wchar_t="no",
1852 ac_cv_small_wchar_t="yes",
1853 AC_MSG_ERROR(failed to compile test program))])
1854 AC_MSG_RESULT($ac_cv_small_wchar_t)
1855 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1856 AC_DEFINE(SMALL_WCHAR_T)
1857 fi
1858
Bram Moolenaar071d4272004-06-13 20:20:40 +00001859 fi
1860fi
1861
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001862test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001863
1864AC_MSG_CHECKING(--enable-gui argument)
1865AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001866 [ --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 +00001867
1868dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1869dnl Do not use character classes for portability with old tools.
1870enable_gui_canon=`echo "_$enable_gui" | \
1871 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1872
1873dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001874SKIP_GTK2=YES
1875SKIP_GNOME=YES
1876SKIP_MOTIF=YES
1877SKIP_ATHENA=YES
1878SKIP_NEXTAW=YES
1879SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880SKIP_CARBON=YES
1881GUITYPE=NONE
1882
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001883if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 SKIP_PHOTON=
1885 case "$enable_gui_canon" in
1886 no) AC_MSG_RESULT(no GUI support)
1887 SKIP_PHOTON=YES ;;
1888 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1889 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1890 photon) AC_MSG_RESULT(Photon GUI support) ;;
1891 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1892 SKIP_PHOTON=YES ;;
1893 esac
1894
1895elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1896 SKIP_CARBON=
1897 case "$enable_gui_canon" in
1898 no) AC_MSG_RESULT(no GUI support)
1899 SKIP_CARBON=YES ;;
1900 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001901 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1902 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1904 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1905 SKIP_CARBON=YES ;;
1906 esac
1907
1908else
1909
Bram Moolenaar071d4272004-06-13 20:20:40 +00001910 case "$enable_gui_canon" in
1911 no|none) AC_MSG_RESULT(no GUI support) ;;
1912 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913 SKIP_GTK2=
1914 SKIP_GNOME=
1915 SKIP_MOTIF=
1916 SKIP_ATHENA=
1917 SKIP_NEXTAW=
1918 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001919 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001920 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001921 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1922 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001923 SKIP_GTK2=;;
1924 motif) AC_MSG_RESULT(Motif GUI support)
1925 SKIP_MOTIF=;;
1926 athena) AC_MSG_RESULT(Athena GUI support)
1927 SKIP_ATHENA=;;
1928 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1929 SKIP_NEXTAW=;;
1930 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1931 esac
1932
1933fi
1934
Bram Moolenaar071d4272004-06-13 20:20:40 +00001935if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1936 -a "$enable_gui_canon" != "gnome2"; then
1937 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1938 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001939 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001940 , enable_gtk2_check="yes")
1941 AC_MSG_RESULT($enable_gtk2_check)
1942 if test "x$enable_gtk2_check" = "xno"; then
1943 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001944 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001945 fi
1946fi
1947
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001948if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949 AC_MSG_CHECKING(whether or not to look for GNOME)
1950 AC_ARG_ENABLE(gnome-check,
1951 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1952 , enable_gnome_check="no")
1953 AC_MSG_RESULT($enable_gnome_check)
1954 if test "x$enable_gnome_check" = "xno"; then
1955 SKIP_GNOME=YES
1956 fi
1957fi
1958
1959if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1960 AC_MSG_CHECKING(whether or not to look for Motif)
1961 AC_ARG_ENABLE(motif-check,
1962 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1963 , enable_motif_check="yes")
1964 AC_MSG_RESULT($enable_motif_check)
1965 if test "x$enable_motif_check" = "xno"; then
1966 SKIP_MOTIF=YES
1967 fi
1968fi
1969
1970if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1971 AC_MSG_CHECKING(whether or not to look for Athena)
1972 AC_ARG_ENABLE(athena-check,
1973 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1974 , enable_athena_check="yes")
1975 AC_MSG_RESULT($enable_athena_check)
1976 if test "x$enable_athena_check" = "xno"; then
1977 SKIP_ATHENA=YES
1978 fi
1979fi
1980
1981if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1982 AC_MSG_CHECKING(whether or not to look for neXtaw)
1983 AC_ARG_ENABLE(nextaw-check,
1984 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1985 , enable_nextaw_check="yes")
1986 AC_MSG_RESULT($enable_nextaw_check);
1987 if test "x$enable_nextaw_check" = "xno"; then
1988 SKIP_NEXTAW=YES
1989 fi
1990fi
1991
1992if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1993 AC_MSG_CHECKING(whether or not to look for Carbon)
1994 AC_ARG_ENABLE(carbon-check,
1995 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1996 , enable_carbon_check="yes")
1997 AC_MSG_RESULT($enable_carbon_check);
1998 if test "x$enable_carbon_check" = "xno"; then
1999 SKIP_CARBON=YES
2000 fi
2001fi
2002
Bram Moolenaar843ee412004-06-30 16:16:41 +00002003
Bram Moolenaar071d4272004-06-13 20:20:40 +00002004if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2005 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002006 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002007 AC_MSG_RESULT(yes);
2008 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002009 if test "$VIMNAME" = "vim"; then
2010 VIMNAME=Vim
2011 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002012
Bram Moolenaar164fca32010-07-14 13:58:07 +02002013 if test "x$MACARCH" = "xboth"; then
2014 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2015 else
2016 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2017 fi
2018
Bram Moolenaar14716812006-05-04 21:54:08 +00002019 dnl Default install directory is not /usr/local
2020 if test x$prefix = xNONE; then
2021 prefix=/Applications
2022 fi
2023
2024 dnl Sorry for the hard coded default
2025 datadir='${prefix}/Vim.app/Contents/Resources'
2026
Bram Moolenaar071d4272004-06-13 20:20:40 +00002027 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002028 SKIP_GTK2=YES;
2029 SKIP_GNOME=YES;
2030 SKIP_MOTIF=YES;
2031 SKIP_ATHENA=YES;
2032 SKIP_NEXTAW=YES;
2033 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002034 SKIP_CARBON=YES
2035fi
2036
Bram Moolenaar071d4272004-06-13 20:20:40 +00002037dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002038dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002039dnl
2040dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002041dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002042dnl
2043AC_DEFUN(AM_PATH_GTK,
2044[
2045 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2046 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002047 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002048 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2049 no_gtk=""
2050 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2051 && $PKG_CONFIG --exists gtk+-2.0; then
2052 {
2053 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2054 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2055 dnl something like that.
2056 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002057 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002058 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2059 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2060 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2061 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2062 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2063 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2064 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2065 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002066 else
2067 no_gtk=yes
2068 fi
2069
2070 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2071 {
2072 ac_save_CFLAGS="$CFLAGS"
2073 ac_save_LIBS="$LIBS"
2074 CFLAGS="$CFLAGS $GTK_CFLAGS"
2075 LIBS="$LIBS $GTK_LIBS"
2076
2077 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002078 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002079 dnl
2080 rm -f conf.gtktest
2081 AC_TRY_RUN([
2082#include <gtk/gtk.h>
2083#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002084#if STDC_HEADERS
2085# include <stdlib.h>
2086# include <stddef.h>
2087#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002088
2089int
2090main ()
2091{
2092int major, minor, micro;
2093char *tmp_version;
2094
2095system ("touch conf.gtktest");
2096
2097/* HP/UX 9 (%@#!) writes to sscanf strings */
2098tmp_version = g_strdup("$min_gtk_version");
2099if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2100 printf("%s, bad version string\n", "$min_gtk_version");
2101 exit(1);
2102 }
2103
2104if ((gtk_major_version > major) ||
2105 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2106 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2107 (gtk_micro_version >= micro)))
2108{
2109 return 0;
2110}
2111return 1;
2112}
2113],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2114 CFLAGS="$ac_save_CFLAGS"
2115 LIBS="$ac_save_LIBS"
2116 }
2117 fi
2118 if test "x$no_gtk" = x ; then
2119 if test "x$enable_gtktest" = "xyes"; then
2120 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2121 else
2122 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2123 fi
2124 ifelse([$2], , :, [$2])
2125 else
2126 {
2127 AC_MSG_RESULT(no)
2128 GTK_CFLAGS=""
2129 GTK_LIBS=""
2130 ifelse([$3], , :, [$3])
2131 }
2132 fi
2133 }
2134 else
2135 GTK_CFLAGS=""
2136 GTK_LIBS=""
2137 ifelse([$3], , :, [$3])
2138 fi
2139 AC_SUBST(GTK_CFLAGS)
2140 AC_SUBST(GTK_LIBS)
2141 rm -f conf.gtktest
2142])
2143
2144dnl ---------------------------------------------------------------------------
2145dnl gnome
2146dnl ---------------------------------------------------------------------------
2147AC_DEFUN([GNOME_INIT_HOOK],
2148[
2149 AC_SUBST(GNOME_LIBS)
2150 AC_SUBST(GNOME_LIBDIR)
2151 AC_SUBST(GNOME_INCLUDEDIR)
2152
2153 AC_ARG_WITH(gnome-includes,
2154 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2155 [CFLAGS="$CFLAGS -I$withval"]
2156 )
2157
2158 AC_ARG_WITH(gnome-libs,
2159 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2160 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2161 )
2162
2163 AC_ARG_WITH(gnome,
2164 [ --with-gnome Specify prefix for GNOME files],
2165 if test x$withval = xyes; then
2166 want_gnome=yes
2167 ifelse([$1], [], :, [$1])
2168 else
2169 if test "x$withval" = xno; then
2170 want_gnome=no
2171 else
2172 want_gnome=yes
2173 LDFLAGS="$LDFLAGS -L$withval/lib"
2174 CFLAGS="$CFLAGS -I$withval/include"
2175 gnome_prefix=$withval/lib
2176 fi
2177 fi,
2178 want_gnome=yes)
2179
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002180 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181 {
2182 AC_MSG_CHECKING(for libgnomeui-2.0)
2183 if $PKG_CONFIG --exists libgnomeui-2.0; then
2184 AC_MSG_RESULT(yes)
2185 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2186 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2187 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002188
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002189 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2190 dnl This might not be the right way but it works for me...
2191 AC_MSG_CHECKING(for FreeBSD)
2192 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2193 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002194 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002195 GNOME_LIBS="$GNOME_LIBS -pthread"
2196 else
2197 AC_MSG_RESULT(no)
2198 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002199 $1
2200 else
2201 AC_MSG_RESULT(not found)
2202 if test "x$2" = xfail; then
2203 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2204 fi
2205 fi
2206 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002207 fi
2208])
2209
2210AC_DEFUN([GNOME_INIT],[
2211 GNOME_INIT_HOOK([],fail)
2212])
2213
2214
2215dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002216dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002217dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002218if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002219
2220 AC_MSG_CHECKING(--disable-gtktest argument)
2221 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2222 , enable_gtktest=yes)
2223 if test "x$enable_gtktest" = "xyes" ; then
2224 AC_MSG_RESULT(gtk test enabled)
2225 else
2226 AC_MSG_RESULT(gtk test disabled)
2227 fi
2228
Bram Moolenaar071d4272004-06-13 20:20:40 +00002229 if test "X$PKG_CONFIG" = "X"; then
2230 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2231 fi
2232
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002233 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002234 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2235 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002236 AM_PATH_GTK(2.2.0,
2237 [GUI_LIB_LOC="$GTK_LIBDIR"
2238 GTK_LIBNAME="$GTK_LIBS"
2239 GUI_INC_LOC="$GTK_CFLAGS"], )
2240 if test "x$GTK_CFLAGS" != "x"; then
2241 SKIP_ATHENA=YES
2242 SKIP_NEXTAW=YES
2243 SKIP_MOTIF=YES
2244 GUITYPE=GTK
2245 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246 fi
2247 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002248 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002249 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2250 || test "0$gtk_minor_version" -ge 2; then
2251 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2252 fi
2253 dnl
2254 dnl if GTK exists, then check for GNOME.
2255 dnl
2256 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002257 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002258 GNOME_INIT_HOOK([have_gnome=yes])
2259 if test "x$have_gnome" = xyes ; then
2260 AC_DEFINE(FEAT_GUI_GNOME)
2261 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2262 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002263 fi
2264 }
2265 fi
2266 fi
2267fi
2268
2269dnl Check for Motif include files location.
2270dnl The LAST one found is used, this makes the highest version to be used,
2271dnl e.g. when Motif1.2 and Motif2.0 are both present.
2272
2273if test -z "$SKIP_MOTIF"; then
2274 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"
2275 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2276 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2277
2278 AC_MSG_CHECKING(for location of Motif GUI includes)
2279 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2280 GUI_INC_LOC=
2281 for try in $gui_includes; do
2282 if test -f "$try/Xm/Xm.h"; then
2283 GUI_INC_LOC=$try
2284 fi
2285 done
2286 if test -n "$GUI_INC_LOC"; then
2287 if test "$GUI_INC_LOC" = /usr/include; then
2288 GUI_INC_LOC=
2289 AC_MSG_RESULT(in default path)
2290 else
2291 AC_MSG_RESULT($GUI_INC_LOC)
2292 fi
2293 else
2294 AC_MSG_RESULT(<not found>)
2295 SKIP_MOTIF=YES
2296 fi
2297fi
2298
2299dnl Check for Motif library files location. In the same order as the include
2300dnl files, to avoid a mixup if several versions are present
2301
2302if test -z "$SKIP_MOTIF"; then
2303 AC_MSG_CHECKING(--with-motif-lib argument)
2304 AC_ARG_WITH(motif-lib,
2305 [ --with-motif-lib=STRING Library for Motif ],
2306 [ MOTIF_LIBNAME="${withval}" ] )
2307
2308 if test -n "$MOTIF_LIBNAME"; then
2309 AC_MSG_RESULT($MOTIF_LIBNAME)
2310 GUI_LIB_LOC=
2311 else
2312 AC_MSG_RESULT(no)
2313
2314 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2315 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2316
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002317 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2318 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002319 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002320 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 +00002321 GUI_LIB_LOC=
2322 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002323 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002324 if test -f "$libtry"; then
2325 GUI_LIB_LOC=$try
2326 fi
2327 done
2328 done
2329 if test -n "$GUI_LIB_LOC"; then
2330 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002331 if test "$GUI_LIB_LOC" = /usr/lib \
2332 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2333 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334 GUI_LIB_LOC=
2335 AC_MSG_RESULT(in default path)
2336 else
2337 if test -n "$GUI_LIB_LOC"; then
2338 AC_MSG_RESULT($GUI_LIB_LOC)
2339 if test "`(uname) 2>/dev/null`" = SunOS &&
2340 uname -r | grep '^5' >/dev/null; then
2341 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2342 fi
2343 fi
2344 fi
2345 MOTIF_LIBNAME=-lXm
2346 else
2347 AC_MSG_RESULT(<not found>)
2348 SKIP_MOTIF=YES
2349 fi
2350 fi
2351fi
2352
2353if test -z "$SKIP_MOTIF"; then
2354 SKIP_ATHENA=YES
2355 SKIP_NEXTAW=YES
2356 GUITYPE=MOTIF
2357 AC_SUBST(MOTIF_LIBNAME)
2358fi
2359
2360dnl Check if the Athena files can be found
2361
2362GUI_X_LIBS=
2363
2364if test -z "$SKIP_ATHENA"; then
2365 AC_MSG_CHECKING(if Athena header files can be found)
2366 cflags_save=$CFLAGS
2367 CFLAGS="$CFLAGS $X_CFLAGS"
2368 AC_TRY_COMPILE([
2369#include <X11/Intrinsic.h>
2370#include <X11/Xaw/Paned.h>], ,
2371 AC_MSG_RESULT(yes),
2372 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2373 CFLAGS=$cflags_save
2374fi
2375
2376if test -z "$SKIP_ATHENA"; then
2377 GUITYPE=ATHENA
2378fi
2379
2380if test -z "$SKIP_NEXTAW"; then
2381 AC_MSG_CHECKING(if neXtaw header files can be found)
2382 cflags_save=$CFLAGS
2383 CFLAGS="$CFLAGS $X_CFLAGS"
2384 AC_TRY_COMPILE([
2385#include <X11/Intrinsic.h>
2386#include <X11/neXtaw/Paned.h>], ,
2387 AC_MSG_RESULT(yes),
2388 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2389 CFLAGS=$cflags_save
2390fi
2391
2392if test -z "$SKIP_NEXTAW"; then
2393 GUITYPE=NEXTAW
2394fi
2395
2396if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2397 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2398 dnl Avoid adding it when it twice
2399 if test -n "$GUI_INC_LOC"; then
2400 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2401 fi
2402 if test -n "$GUI_LIB_LOC"; then
2403 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2404 fi
2405
2406 dnl Check for -lXext and then for -lXmu
2407 ldflags_save=$LDFLAGS
2408 LDFLAGS="$X_LIBS $LDFLAGS"
2409 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2410 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2411 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2412 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2413 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2414 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2415 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2416 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2417 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2418 if test -z "$SKIP_MOTIF"; then
2419 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2420 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2421 fi
2422 LDFLAGS=$ldflags_save
2423
2424 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2425 AC_MSG_CHECKING(for extra X11 defines)
2426 NARROW_PROTO=
2427 rm -fr conftestdir
2428 if mkdir conftestdir; then
2429 cd conftestdir
2430 cat > Imakefile <<'EOF'
2431acfindx:
2432 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2433EOF
2434 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2435 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2436 fi
2437 cd ..
2438 rm -fr conftestdir
2439 fi
2440 if test -z "$NARROW_PROTO"; then
2441 AC_MSG_RESULT(no)
2442 else
2443 AC_MSG_RESULT($NARROW_PROTO)
2444 fi
2445 AC_SUBST(NARROW_PROTO)
2446fi
2447
2448dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2449dnl use the X11 include path
2450if test "$enable_xsmp" = "yes"; then
2451 cppflags_save=$CPPFLAGS
2452 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2453 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2454 CPPFLAGS=$cppflags_save
2455fi
2456
2457
Bram Moolenaare667c952010-07-05 22:57:59 +02002458if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002459 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2460 cppflags_save=$CPPFLAGS
2461 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2462 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2463
2464 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2465 if test ! "$enable_xim" = "no"; then
2466 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2467 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2468 AC_MSG_RESULT(yes),
2469 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2470 fi
2471 CPPFLAGS=$cppflags_save
2472
2473 dnl automatically enable XIM when hangul input isn't enabled
2474 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2475 -a "x$GUITYPE" != "xNONE" ; then
2476 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2477 enable_xim="yes"
2478 fi
2479fi
2480
2481if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2482 cppflags_save=$CPPFLAGS
2483 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002484dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2485 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2486 AC_TRY_COMPILE([
2487#include <X11/Intrinsic.h>
2488#include <X11/Xmu/Editres.h>],
2489 [int i; i = 0;],
2490 AC_MSG_RESULT(yes)
2491 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2492 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002493 CPPFLAGS=$cppflags_save
2494fi
2495
2496dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2497if test -z "$SKIP_MOTIF"; then
2498 cppflags_save=$CPPFLAGS
2499 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002500 if test "$zOSUnix" = "yes"; then
2501 xmheader="Xm/Xm.h"
2502 else
2503 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002504 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002505 fi
2506 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002507
Bram Moolenaar77c19352012-06-13 19:19:41 +02002508 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002509 dnl Solaris uses XpmAttributes_21, very annoying.
2510 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2511 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2512 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2513 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2514 )
2515 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002516 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002517 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002518 CPPFLAGS=$cppflags_save
2519fi
2520
2521if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2522 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2523 enable_xim="no"
2524fi
2525if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2526 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2527 enable_fontset="no"
2528fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002529if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002530 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2531 enable_fontset="no"
2532fi
2533
Bram Moolenaar071d4272004-06-13 20:20:40 +00002534if test -z "$SKIP_PHOTON"; then
2535 GUITYPE=PHOTONGUI
2536fi
2537
2538AC_SUBST(GUI_INC_LOC)
2539AC_SUBST(GUI_LIB_LOC)
2540AC_SUBST(GUITYPE)
2541AC_SUBST(GUI_X_LIBS)
2542
2543if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2544 AC_MSG_ERROR([cannot use workshop without Motif])
2545fi
2546
2547dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2548if test "$enable_xim" = "yes"; then
2549 AC_DEFINE(FEAT_XIM)
2550fi
2551if test "$enable_fontset" = "yes"; then
2552 AC_DEFINE(FEAT_XFONTSET)
2553fi
2554
2555
2556dnl ---------------------------------------------------------------------------
2557dnl end of GUI-checking
2558dnl ---------------------------------------------------------------------------
2559
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002560dnl Check for Cygwin, which needs an extra source file if not using X11
2561AC_MSG_CHECKING(for CYGWIN environment)
2562case `uname` in
2563 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2564 AC_MSG_CHECKING(for CYGWIN clipboard support)
2565 if test "x$with_x" = "xno" ; then
2566 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2567 AC_MSG_RESULT(yes)
2568 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2569 else
2570 AC_MSG_RESULT(no - using X11)
2571 fi ;;
2572
2573 *) CYGWIN=no; AC_MSG_RESULT(no);;
2574esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002575
2576dnl Only really enable hangul input when GUI and XFONTSET are available
2577if test "$enable_hangulinput" = "yes"; then
2578 if test "x$GUITYPE" = "xNONE"; then
2579 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2580 enable_hangulinput=no
2581 else
2582 AC_DEFINE(FEAT_HANGULIN)
2583 HANGULIN_SRC=hangulin.c
2584 AC_SUBST(HANGULIN_SRC)
2585 HANGULIN_OBJ=objects/hangulin.o
2586 AC_SUBST(HANGULIN_OBJ)
2587 fi
2588fi
2589
2590dnl Checks for libraries and include files.
2591
Bram Moolenaar446cb832008-06-24 21:56:24 +00002592AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2593 [
2594 AC_RUN_IFELSE([[
2595#include "confdefs.h"
2596#include <ctype.h>
2597#if STDC_HEADERS
2598# include <stdlib.h>
2599# include <stddef.h>
2600#endif
2601main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2602 ]],[
2603 vim_cv_toupper_broken=yes
2604 ],[
2605 vim_cv_toupper_broken=no
2606 ],[
2607 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2608 ])])
2609
2610if test "x$vim_cv_toupper_broken" = "xyes" ; then
2611 AC_DEFINE(BROKEN_TOUPPER)
2612fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002613
2614AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002615AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002616 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2617 AC_MSG_RESULT(no))
2618
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002619AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2620AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2621 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2622 AC_MSG_RESULT(no))
2623
Bram Moolenaar071d4272004-06-13 20:20:40 +00002624dnl Checks for header files.
2625AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2626dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2627if test "$HAS_ELF" = 1; then
2628 AC_CHECK_LIB(elf, main)
2629fi
2630
2631AC_HEADER_DIRENT
2632
Bram Moolenaar071d4272004-06-13 20:20:40 +00002633dnl If sys/wait.h is not found it might still exist but not be POSIX
2634dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2635if test $ac_cv_header_sys_wait_h = no; then
2636 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2637 AC_TRY_COMPILE([#include <sys/wait.h>],
2638 [union wait xx, yy; xx = yy],
2639 AC_MSG_RESULT(yes)
2640 AC_DEFINE(HAVE_SYS_WAIT_H)
2641 AC_DEFINE(HAVE_UNION_WAIT),
2642 AC_MSG_RESULT(no))
2643fi
2644
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002645AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2646 sys/select.h sys/utsname.h termcap.h fcntl.h \
2647 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2648 termio.h iconv.h inttypes.h langinfo.h math.h \
2649 unistd.h stropts.h errno.h sys/resource.h \
2650 sys/systeminfo.h locale.h sys/stream.h termios.h \
2651 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2652 utime.h sys/param.h libintl.h libgen.h \
2653 util/debug.h util/msg18n.h frame.h sys/acl.h \
2654 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002655
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002656dnl sys/ptem.h depends on sys/stream.h on Solaris
2657AC_CHECK_HEADERS(sys/ptem.h, [], [],
2658[#if defined HAVE_SYS_STREAM_H
2659# include <sys/stream.h>
2660#endif])
2661
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002662dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2663AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2664[#if defined HAVE_SYS_PARAM_H
2665# include <sys/param.h>
2666#endif])
2667
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002668
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002669dnl pthread_np.h may exist but can only be used after including pthread.h
2670AC_MSG_CHECKING([for pthread_np.h])
2671AC_TRY_COMPILE([
2672#include <pthread.h>
2673#include <pthread_np.h>],
2674 [int i; i = 0;],
2675 AC_MSG_RESULT(yes)
2676 AC_DEFINE(HAVE_PTHREAD_NP_H),
2677 AC_MSG_RESULT(no))
2678
Bram Moolenaare344bea2005-09-01 20:46:49 +00002679AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002680if test "x$MACOSX" = "xyes"; then
2681 dnl The strings.h file on OS/X contains a warning and nothing useful.
2682 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2683else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002684
2685dnl Check if strings.h and string.h can both be included when defined.
2686AC_MSG_CHECKING([if strings.h can be included after string.h])
2687cppflags_save=$CPPFLAGS
2688CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2689AC_TRY_COMPILE([
2690#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2691# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2692 /* but don't do it on AIX 5.1 (Uribarri) */
2693#endif
2694#ifdef HAVE_XM_XM_H
2695# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2696#endif
2697#ifdef HAVE_STRING_H
2698# include <string.h>
2699#endif
2700#if defined(HAVE_STRINGS_H)
2701# include <strings.h>
2702#endif
2703 ], [int i; i = 0;],
2704 AC_MSG_RESULT(yes),
2705 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2706 AC_MSG_RESULT(no))
2707CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002708fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002709
2710dnl Checks for typedefs, structures, and compiler characteristics.
2711AC_PROG_GCC_TRADITIONAL
2712AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002713AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002714AC_TYPE_MODE_T
2715AC_TYPE_OFF_T
2716AC_TYPE_PID_T
2717AC_TYPE_SIZE_T
2718AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002719AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002720
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721AC_HEADER_TIME
2722AC_CHECK_TYPE(ino_t, long)
2723AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002724AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725
2726AC_MSG_CHECKING(for rlim_t)
2727if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2728 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2729else
2730 AC_EGREP_CPP(dnl
2731changequote(<<,>>)dnl
2732<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2733changequote([,]),
2734 [
2735#include <sys/types.h>
2736#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002737# include <stdlib.h>
2738# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002739#endif
2740#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002741# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002742#endif
2743 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2744 AC_MSG_RESULT($ac_cv_type_rlim_t)
2745fi
2746if test $ac_cv_type_rlim_t = no; then
2747 cat >> confdefs.h <<\EOF
2748#define rlim_t unsigned long
2749EOF
2750fi
2751
2752AC_MSG_CHECKING(for stack_t)
2753if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2754 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2755else
2756 AC_EGREP_CPP(stack_t,
2757 [
2758#include <sys/types.h>
2759#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002760# include <stdlib.h>
2761# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762#endif
2763#include <signal.h>
2764 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2765 AC_MSG_RESULT($ac_cv_type_stack_t)
2766fi
2767if test $ac_cv_type_stack_t = no; then
2768 cat >> confdefs.h <<\EOF
2769#define stack_t struct sigaltstack
2770EOF
2771fi
2772
2773dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2774AC_MSG_CHECKING(whether stack_t has an ss_base field)
2775AC_TRY_COMPILE([
2776#include <sys/types.h>
2777#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002778# include <stdlib.h>
2779# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002780#endif
2781#include <signal.h>
2782#include "confdefs.h"
2783 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2784 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2785 AC_MSG_RESULT(no))
2786
2787olibs="$LIBS"
2788AC_MSG_CHECKING(--with-tlib argument)
2789AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2790if test -n "$with_tlib"; then
2791 AC_MSG_RESULT($with_tlib)
2792 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002793 AC_MSG_CHECKING(for linking with $with_tlib library)
2794 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2795 dnl Need to check for tgetent() below.
2796 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002797else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002798 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002799 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2800 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002801 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002802 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002803 dnl Older versions of ncurses have bugs, get a new one!
2804 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002805 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002806 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002807 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2808 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002809 esac
2810 for libname in $tlibs; do
2811 AC_CHECK_LIB(${libname}, tgetent,,)
2812 if test "x$olibs" != "x$LIBS"; then
2813 dnl It's possible that a library is found but it doesn't work
2814 dnl e.g., shared library that cannot be found
2815 dnl compile and run a test program to be sure
2816 AC_TRY_RUN([
2817#ifdef HAVE_TERMCAP_H
2818# include <termcap.h>
2819#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002820#if STDC_HEADERS
2821# include <stdlib.h>
2822# include <stddef.h>
2823#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002824main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2825 res="OK", res="FAIL", res="FAIL")
2826 if test "$res" = "OK"; then
2827 break
2828 fi
2829 AC_MSG_RESULT($libname library is not usable)
2830 LIBS="$olibs"
2831 fi
2832 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002833 if test "x$olibs" = "x$LIBS"; then
2834 AC_MSG_RESULT(no terminal library found)
2835 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002836fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002837
2838if test "x$olibs" = "x$LIBS"; then
2839 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002840 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002841 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2842 AC_MSG_RESULT(yes),
2843 AC_MSG_ERROR([NOT FOUND!
2844 You need to install a terminal library; for example ncurses.
2845 Or specify the name of the library with --with-tlib.]))
2846fi
2847
Bram Moolenaar446cb832008-06-24 21:56:24 +00002848AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2849 [
2850 AC_RUN_IFELSE([[
2851#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002852#ifdef HAVE_TERMCAP_H
2853# include <termcap.h>
2854#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002855#ifdef HAVE_STRING_H
2856# include <string.h>
2857#endif
2858#if STDC_HEADERS
2859# include <stdlib.h>
2860# include <stddef.h>
2861#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002862main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002863{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2864 ]],[
2865 vim_cv_terminfo=no
2866 ],[
2867 vim_cv_terminfo=yes
2868 ],[
2869 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2870 ])
2871 ])
2872
2873if test "x$vim_cv_terminfo" = "xyes" ; then
2874 AC_DEFINE(TERMINFO)
2875fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002876
2877if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002878 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2879 [
2880 AC_RUN_IFELSE([[
2881#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002882#ifdef HAVE_TERMCAP_H
2883# include <termcap.h>
2884#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002885#if STDC_HEADERS
2886# include <stdlib.h>
2887# include <stddef.h>
2888#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002889main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002890{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2891 ]],[
2892 vim_cv_tgent=zero
2893 ],[
2894 vim_cv_tgent=non-zero
2895 ],[
2896 AC_MSG_ERROR(failed to compile test program.)
2897 ])
2898 ])
2899
2900 if test "x$vim_cv_tgent" = "xzero" ; then
2901 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2902 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002903fi
2904
2905AC_MSG_CHECKING(whether termcap.h contains ospeed)
2906AC_TRY_LINK([
2907#ifdef HAVE_TERMCAP_H
2908# include <termcap.h>
2909#endif
2910 ], [ospeed = 20000],
2911 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2912 [AC_MSG_RESULT(no)
2913 AC_MSG_CHECKING(whether ospeed can be extern)
2914 AC_TRY_LINK([
2915#ifdef HAVE_TERMCAP_H
2916# include <termcap.h>
2917#endif
2918extern short ospeed;
2919 ], [ospeed = 20000],
2920 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2921 AC_MSG_RESULT(no))]
2922 )
2923
2924AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2925AC_TRY_LINK([
2926#ifdef HAVE_TERMCAP_H
2927# include <termcap.h>
2928#endif
2929 ], [if (UP == 0 && BC == 0) PC = 1],
2930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2931 [AC_MSG_RESULT(no)
2932 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2933 AC_TRY_LINK([
2934#ifdef HAVE_TERMCAP_H
2935# include <termcap.h>
2936#endif
2937extern char *UP, *BC, PC;
2938 ], [if (UP == 0 && BC == 0) PC = 1],
2939 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2940 AC_MSG_RESULT(no))]
2941 )
2942
2943AC_MSG_CHECKING(whether tputs() uses outfuntype)
2944AC_TRY_COMPILE([
2945#ifdef HAVE_TERMCAP_H
2946# include <termcap.h>
2947#endif
2948 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2949 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2950 AC_MSG_RESULT(no))
2951
2952dnl On some SCO machines sys/select redefines struct timeval
2953AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2954AC_TRY_COMPILE([
2955#include <sys/types.h>
2956#include <sys/time.h>
2957#include <sys/select.h>], ,
2958 AC_MSG_RESULT(yes)
2959 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2960 AC_MSG_RESULT(no))
2961
2962dnl AC_DECL_SYS_SIGLIST
2963
2964dnl Checks for pty.c (copied from screen) ==========================
2965AC_MSG_CHECKING(for /dev/ptc)
2966if test -r /dev/ptc; then
2967 AC_DEFINE(HAVE_DEV_PTC)
2968 AC_MSG_RESULT(yes)
2969else
2970 AC_MSG_RESULT(no)
2971fi
2972
2973AC_MSG_CHECKING(for SVR4 ptys)
2974if test -c /dev/ptmx ; then
2975 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2976 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2977 AC_MSG_RESULT(no))
2978else
2979 AC_MSG_RESULT(no)
2980fi
2981
2982AC_MSG_CHECKING(for ptyranges)
2983if test -d /dev/ptym ; then
2984 pdir='/dev/ptym'
2985else
2986 pdir='/dev'
2987fi
2988dnl SCO uses ptyp%d
2989AC_EGREP_CPP(yes,
2990[#ifdef M_UNIX
2991 yes;
2992#endif
2993 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2994dnl if test -c /dev/ptyp19; then
2995dnl ptys=`echo /dev/ptyp??`
2996dnl else
2997dnl ptys=`echo $pdir/pty??`
2998dnl fi
2999if test "$ptys" != "$pdir/pty??" ; then
3000 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3001 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3002 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3003 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3004 AC_MSG_RESULT([$p0 / $p1])
3005else
3006 AC_MSG_RESULT([don't know])
3007fi
3008
3009dnl **** pty mode/group handling ****
3010dnl
3011dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003013AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3014 [
3015 AC_RUN_IFELSE([[
3016#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003017#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003018#if STDC_HEADERS
3019# include <stdlib.h>
3020# include <stddef.h>
3021#endif
3022#ifdef HAVE_UNISTD_H
3023#include <unistd.h>
3024#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003025#include <sys/stat.h>
3026#include <stdio.h>
3027main()
3028{
3029 struct stat sb;
3030 char *x,*ttyname();
3031 int om, m;
3032 FILE *fp;
3033
3034 if (!(x = ttyname(0))) exit(1);
3035 if (stat(x, &sb)) exit(1);
3036 om = sb.st_mode;
3037 if (om & 002) exit(0);
3038 m = system("mesg y");
3039 if (m == -1 || m == 127) exit(1);
3040 if (stat(x, &sb)) exit(1);
3041 m = sb.st_mode;
3042 if (chmod(x, om)) exit(1);
3043 if (m & 002) exit(0);
3044 if (sb.st_gid == getgid()) exit(1);
3045 if (!(fp=fopen("conftest_grp", "w")))
3046 exit(1);
3047 fprintf(fp, "%d\n", sb.st_gid);
3048 fclose(fp);
3049 exit(0);
3050}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003051 ]],[
3052 if test -f conftest_grp; then
3053 vim_cv_tty_group=`cat conftest_grp`
3054 if test "x$vim_cv_tty_mode" = "x" ; then
3055 vim_cv_tty_mode=0620
3056 fi
3057 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3058 else
3059 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003060 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003061 fi
3062 ],[
3063 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003064 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003065 ],[
3066 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3067 ])
3068 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069rm -f conftest_grp
3070
Bram Moolenaar446cb832008-06-24 21:56:24 +00003071if test "x$vim_cv_tty_group" != "xworld" ; then
3072 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3073 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003074 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 +00003075 else
3076 AC_DEFINE(PTYMODE, 0620)
3077 fi
3078fi
3079
Bram Moolenaar071d4272004-06-13 20:20:40 +00003080dnl Checks for library functions. ===================================
3081
3082AC_TYPE_SIGNAL
3083
3084dnl find out what to use at the end of a signal function
3085if test $ac_cv_type_signal = void; then
3086 AC_DEFINE(SIGRETURN, [return])
3087else
3088 AC_DEFINE(SIGRETURN, [return 0])
3089fi
3090
3091dnl check if struct sigcontext is defined (used for SGI only)
3092AC_MSG_CHECKING(for struct sigcontext)
3093AC_TRY_COMPILE([
3094#include <signal.h>
3095test_sig()
3096{
3097 struct sigcontext *scont;
3098 scont = (struct sigcontext *)0;
3099 return 1;
3100} ], ,
3101 AC_MSG_RESULT(yes)
3102 AC_DEFINE(HAVE_SIGCONTEXT),
3103 AC_MSG_RESULT(no))
3104
3105dnl tricky stuff: try to find out if getcwd() is implemented with
3106dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003107AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3108 [
3109 AC_RUN_IFELSE([[
3110#include "confdefs.h"
3111#ifdef HAVE_UNISTD_H
3112#include <unistd.h>
3113#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003114char *dagger[] = { "IFS=pwd", 0 };
3115main()
3116{
3117 char buffer[500];
3118 extern char **environ;
3119 environ = dagger;
3120 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003121}
3122 ]],[
3123 vim_cv_getcwd_broken=no
3124 ],[
3125 vim_cv_getcwd_broken=yes
3126 ],[
3127 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3128 ])
3129 ])
3130
3131if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3132 AC_DEFINE(BAD_GETCWD)
3133fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003134
Bram Moolenaar25153e12010-02-24 14:47:08 +01003135dnl Check for functions in one big call, to reduce the size of configure.
3136dnl Can only be used for functions that do not require any include.
3137AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003138 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003139 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003140 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003141 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003142 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3143 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003144AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003145
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003146dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3147dnl appropriate, so that off_t is 64 bits when needed.
3148AC_SYS_LARGEFILE
3149
Bram Moolenaar071d4272004-06-13 20:20:40 +00003150dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3151AC_MSG_CHECKING(for st_blksize)
3152AC_TRY_COMPILE(
3153[#include <sys/types.h>
3154#include <sys/stat.h>],
3155[ struct stat st;
3156 int n;
3157
3158 stat("/", &st);
3159 n = (int)st.st_blksize;],
3160 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3161 AC_MSG_RESULT(no))
3162
Bram Moolenaar446cb832008-06-24 21:56:24 +00003163AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3164 [
3165 AC_RUN_IFELSE([[
3166#include "confdefs.h"
3167#if STDC_HEADERS
3168# include <stdlib.h>
3169# include <stddef.h>
3170#endif
3171#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003172#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003173main() {struct stat st; exit(stat("configure/", &st) != 0); }
3174 ]],[
3175 vim_cv_stat_ignores_slash=yes
3176 ],[
3177 vim_cv_stat_ignores_slash=no
3178 ],[
3179 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3180 ])
3181 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003182
Bram Moolenaar446cb832008-06-24 21:56:24 +00003183if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3184 AC_DEFINE(STAT_IGNORES_SLASH)
3185fi
3186
Bram Moolenaar071d4272004-06-13 20:20:40 +00003187dnl Link with iconv for charset translation, if not found without library.
3188dnl check for iconv() requires including iconv.h
3189dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3190dnl has been installed.
3191AC_MSG_CHECKING(for iconv_open())
3192save_LIBS="$LIBS"
3193LIBS="$LIBS -liconv"
3194AC_TRY_LINK([
3195#ifdef HAVE_ICONV_H
3196# include <iconv.h>
3197#endif
3198 ], [iconv_open("fr", "to");],
3199 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3200 LIBS="$save_LIBS"
3201 AC_TRY_LINK([
3202#ifdef HAVE_ICONV_H
3203# include <iconv.h>
3204#endif
3205 ], [iconv_open("fr", "to");],
3206 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3207 AC_MSG_RESULT(no)))
3208
3209
3210AC_MSG_CHECKING(for nl_langinfo(CODESET))
3211AC_TRY_LINK([
3212#ifdef HAVE_LANGINFO_H
3213# include <langinfo.h>
3214#endif
3215], [char *cs = nl_langinfo(CODESET);],
3216 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3217 AC_MSG_RESULT(no))
3218
Bram Moolenaar446cb832008-06-24 21:56:24 +00003219dnl Need various functions for floating point support. Only enable
3220dnl floating point when they are all present.
3221AC_CHECK_LIB(m, strtod)
3222AC_MSG_CHECKING([for strtod() and other floating point functions])
3223AC_TRY_LINK([
3224#ifdef HAVE_MATH_H
3225# include <math.h>
3226#endif
3227#if STDC_HEADERS
3228# include <stdlib.h>
3229# include <stddef.h>
3230#endif
3231], [char *s; double d;
3232 d = strtod("1.1", &s);
3233 d = fabs(1.11);
3234 d = ceil(1.11);
3235 d = floor(1.11);
3236 d = log10(1.11);
3237 d = pow(1.11, 2.22);
3238 d = sqrt(1.11);
3239 d = sin(1.11);
3240 d = cos(1.11);
3241 d = atan(1.11);
3242 ],
3243 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3244 AC_MSG_RESULT(no))
3245
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3247dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003248dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003249AC_MSG_CHECKING(--disable-acl argument)
3250AC_ARG_ENABLE(acl,
3251 [ --disable-acl Don't check for ACL support.],
3252 , [enable_acl="yes"])
3253if test "$enable_acl" = "yes"; then
3254AC_MSG_RESULT(no)
3255AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3256 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3257 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3258
3259AC_MSG_CHECKING(for POSIX ACL support)
3260AC_TRY_LINK([
3261#include <sys/types.h>
3262#ifdef HAVE_SYS_ACL_H
3263# include <sys/acl.h>
3264#endif
3265acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3266 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3267 acl_free(acl);],
3268 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3269 AC_MSG_RESULT(no))
3270
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003271AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003272AC_MSG_CHECKING(for Solaris ACL support)
3273AC_TRY_LINK([
3274#ifdef HAVE_SYS_ACL_H
3275# include <sys/acl.h>
3276#endif], [acl("foo", GETACLCNT, 0, NULL);
3277 ],
3278 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003279 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003280
3281AC_MSG_CHECKING(for AIX ACL support)
3282AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003283#if STDC_HEADERS
3284# include <stdlib.h>
3285# include <stddef.h>
3286#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003287#ifdef HAVE_SYS_ACL_H
3288# include <sys/acl.h>
3289#endif
3290#ifdef HAVE_SYS_ACCESS_H
3291# include <sys/access.h>
3292#endif
3293#define _ALL_SOURCE
3294
3295#include <sys/stat.h>
3296
3297int aclsize;
3298struct acl *aclent;], [aclsize = sizeof(struct acl);
3299 aclent = (void *)malloc(aclsize);
3300 statacl("foo", STX_NORMAL, aclent, aclsize);
3301 ],
3302 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3303 AC_MSG_RESULT(no))
3304else
3305 AC_MSG_RESULT(yes)
3306fi
3307
3308AC_MSG_CHECKING(--disable-gpm argument)
3309AC_ARG_ENABLE(gpm,
3310 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3311 [enable_gpm="yes"])
3312
3313if test "$enable_gpm" = "yes"; then
3314 AC_MSG_RESULT(no)
3315 dnl Checking if gpm support can be compiled
3316 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3317 [olibs="$LIBS" ; LIBS="-lgpm"]
3318 AC_TRY_LINK(
3319 [#include <gpm.h>
3320 #include <linux/keyboard.h>],
3321 [Gpm_GetLibVersion(NULL);],
3322 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3323 dnl FEAT_MOUSE_GPM if mouse support is included
3324 [vi_cv_have_gpm=yes],
3325 [vi_cv_have_gpm=no])
3326 [LIBS="$olibs"]
3327 )
3328 if test $vi_cv_have_gpm = yes; then
3329 LIBS="$LIBS -lgpm"
3330 AC_DEFINE(HAVE_GPM)
3331 fi
3332else
3333 AC_MSG_RESULT(yes)
3334fi
3335
Bram Moolenaar446cb832008-06-24 21:56:24 +00003336AC_MSG_CHECKING(--disable-sysmouse argument)
3337AC_ARG_ENABLE(sysmouse,
3338 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3339 [enable_sysmouse="yes"])
3340
3341if test "$enable_sysmouse" = "yes"; then
3342 AC_MSG_RESULT(no)
3343 dnl Checking if sysmouse support can be compiled
3344 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3345 dnl defines FEAT_SYSMOUSE if mouse support is included
3346 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3347 AC_TRY_LINK(
3348 [#include <sys/consio.h>
3349 #include <signal.h>
3350 #include <sys/fbio.h>],
3351 [struct mouse_info mouse;
3352 mouse.operation = MOUSE_MODE;
3353 mouse.operation = MOUSE_SHOW;
3354 mouse.u.mode.mode = 0;
3355 mouse.u.mode.signal = SIGUSR2;],
3356 [vi_cv_have_sysmouse=yes],
3357 [vi_cv_have_sysmouse=no])
3358 )
3359 if test $vi_cv_have_sysmouse = yes; then
3360 AC_DEFINE(HAVE_SYSMOUSE)
3361 fi
3362else
3363 AC_MSG_RESULT(yes)
3364fi
3365
Bram Moolenaarf05da212009-11-17 16:13:15 +00003366dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3367AC_MSG_CHECKING(for FD_CLOEXEC)
3368AC_TRY_COMPILE(
3369[#if HAVE_FCNTL_H
3370# include <fcntl.h>
3371#endif],
3372[ int flag = FD_CLOEXEC;],
3373 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3374 AC_MSG_RESULT(not usable))
3375
Bram Moolenaar071d4272004-06-13 20:20:40 +00003376dnl rename needs to be checked separately to work on Nextstep with cc
3377AC_MSG_CHECKING(for rename)
3378AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3379 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3380 AC_MSG_RESULT(no))
3381
3382dnl sysctl() may exist but not the arguments we use
3383AC_MSG_CHECKING(for sysctl)
3384AC_TRY_COMPILE(
3385[#include <sys/types.h>
3386#include <sys/sysctl.h>],
3387[ int mib[2], r;
3388 size_t len;
3389
3390 mib[0] = CTL_HW;
3391 mib[1] = HW_USERMEM;
3392 len = sizeof(r);
3393 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3394 ],
3395 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3396 AC_MSG_RESULT(not usable))
3397
3398dnl sysinfo() may exist but not be Linux compatible
3399AC_MSG_CHECKING(for sysinfo)
3400AC_TRY_COMPILE(
3401[#include <sys/types.h>
3402#include <sys/sysinfo.h>],
3403[ struct sysinfo sinfo;
3404 int t;
3405
3406 (void)sysinfo(&sinfo);
3407 t = sinfo.totalram;
3408 ],
3409 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3410 AC_MSG_RESULT(not usable))
3411
Bram Moolenaar914572a2007-05-01 11:37:47 +00003412dnl struct sysinfo may have the mem_unit field or not
3413AC_MSG_CHECKING(for sysinfo.mem_unit)
3414AC_TRY_COMPILE(
3415[#include <sys/types.h>
3416#include <sys/sysinfo.h>],
3417[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003418 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003419 ],
3420 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3421 AC_MSG_RESULT(no))
3422
Bram Moolenaar071d4272004-06-13 20:20:40 +00003423dnl sysconf() may exist but not support what we want to use
3424AC_MSG_CHECKING(for sysconf)
3425AC_TRY_COMPILE(
3426[#include <unistd.h>],
3427[ (void)sysconf(_SC_PAGESIZE);
3428 (void)sysconf(_SC_PHYS_PAGES);
3429 ],
3430 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3431 AC_MSG_RESULT(not usable))
3432
Bram Moolenaar914703b2010-05-31 21:59:46 +02003433AC_CHECK_SIZEOF([int])
3434AC_CHECK_SIZEOF([long])
3435AC_CHECK_SIZEOF([time_t])
3436AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003437
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003438dnl Make sure that uint32_t is really 32 bits unsigned.
3439AC_MSG_CHECKING([uint32_t is 32 bits])
3440AC_TRY_RUN([
3441#ifdef HAVE_STDINT_H
3442# include <stdint.h>
3443#endif
3444#ifdef HAVE_INTTYPES_H
3445# include <inttypes.h>
3446#endif
3447main() {
3448 uint32_t nr1 = (uint32_t)-1;
3449 uint32_t nr2 = (uint32_t)0xffffffffUL;
3450 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3451 exit(0);
3452}],
3453AC_MSG_RESULT(ok),
3454AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003455AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003456
Bram Moolenaar446cb832008-06-24 21:56:24 +00003457dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3458dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3459
Bram Moolenaar071d4272004-06-13 20:20:40 +00003460[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003461#include "confdefs.h"
3462#ifdef HAVE_STRING_H
3463# include <string.h>
3464#endif
3465#if STDC_HEADERS
3466# include <stdlib.h>
3467# include <stddef.h>
3468#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003469main() {
3470 char buf[10];
3471 strcpy(buf, "abcdefghi");
3472 mch_memmove(buf, buf + 2, 3);
3473 if (strncmp(buf, "ababcf", 6))
3474 exit(1);
3475 strcpy(buf, "abcdefghi");
3476 mch_memmove(buf + 2, buf, 3);
3477 if (strncmp(buf, "cdedef", 6))
3478 exit(1);
3479 exit(0); /* libc version works properly. */
3480}']
3481
Bram Moolenaar446cb832008-06-24 21:56:24 +00003482AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3483 [
3484 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3485 [
3486 vim_cv_memmove_handles_overlap=yes
3487 ],[
3488 vim_cv_memmove_handles_overlap=no
3489 ],[
3490 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3491 ])
3492 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003493
Bram Moolenaar446cb832008-06-24 21:56:24 +00003494if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3495 AC_DEFINE(USEMEMMOVE)
3496else
3497 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3498 [
3499 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3500 [
3501 vim_cv_bcopy_handles_overlap=yes
3502 ],[
3503 vim_cv_bcopy_handles_overlap=no
3504 ],[
3505 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3506 ])
3507 ])
3508
3509 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3510 AC_DEFINE(USEBCOPY)
3511 else
3512 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3513 [
3514 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3515 [
3516 vim_cv_memcpy_handles_overlap=yes
3517 ],[
3518 vim_cv_memcpy_handles_overlap=no
3519 ],[
3520 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3521 ])
3522 ])
3523
3524 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3525 AC_DEFINE(USEMEMCPY)
3526 fi
3527 fi
3528fi
3529
Bram Moolenaar071d4272004-06-13 20:20:40 +00003530
3531dnl Check for multibyte locale functions
3532dnl Find out if _Xsetlocale() is supported by libX11.
3533dnl Check if X_LOCALE should be defined.
3534
3535if test "$enable_multibyte" = "yes"; then
3536 cflags_save=$CFLAGS
3537 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003538 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003539 CFLAGS="$CFLAGS -I$x_includes"
3540 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3541 AC_MSG_CHECKING(whether X_LOCALE needed)
3542 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3543 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3544 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3545 AC_MSG_RESULT(no))
3546 fi
3547 CFLAGS=$cflags_save
3548 LDFLAGS=$ldflags_save
3549fi
3550
3551dnl Link with xpg4, it is said to make Korean locale working
3552AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3553
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003554dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003555dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003556dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003557dnl -t for typedefs (many ctags have this)
3558dnl -s for static functions (Elvis ctags only?)
3559dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3560dnl -i+m to test for older Exuberant ctags
3561AC_MSG_CHECKING(how to create tags)
3562test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003563if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003564 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003565elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3566 TAGPRG="exctags -I INIT+ --fields=+S"
3567elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3568 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003569else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003570 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003571 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3572 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3573 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3574 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3575 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3576 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3577 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3578fi
3579test -f tags.save && mv tags.save tags
3580AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3581
3582dnl Check how we can run man with a section number
3583AC_MSG_CHECKING(how to run man with a section nr)
3584MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003585(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 +00003586AC_MSG_RESULT($MANDEF)
3587if test "$MANDEF" = "man -s"; then
3588 AC_DEFINE(USEMAN_S)
3589fi
3590
3591dnl Check if gettext() is working and if it needs -lintl
3592AC_MSG_CHECKING(--disable-nls argument)
3593AC_ARG_ENABLE(nls,
3594 [ --disable-nls Don't support NLS (gettext()).], ,
3595 [enable_nls="yes"])
3596
3597if test "$enable_nls" = "yes"; then
3598 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003599
3600 INSTALL_LANGS=install-languages
3601 AC_SUBST(INSTALL_LANGS)
3602 INSTALL_TOOL_LANGS=install-tool-languages
3603 AC_SUBST(INSTALL_TOOL_LANGS)
3604
Bram Moolenaar071d4272004-06-13 20:20:40 +00003605 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3606 AC_MSG_CHECKING([for NLS])
3607 if test -f po/Makefile; then
3608 have_gettext="no"
3609 if test -n "$MSGFMT"; then
3610 AC_TRY_LINK(
3611 [#include <libintl.h>],
3612 [gettext("Test");],
3613 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3614 olibs=$LIBS
3615 LIBS="$LIBS -lintl"
3616 AC_TRY_LINK(
3617 [#include <libintl.h>],
3618 [gettext("Test");],
3619 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3620 AC_MSG_RESULT([gettext() doesn't work]);
3621 LIBS=$olibs))
3622 else
3623 AC_MSG_RESULT([msgfmt not found - disabled]);
3624 fi
3625 if test $have_gettext = "yes"; then
3626 AC_DEFINE(HAVE_GETTEXT)
3627 MAKEMO=yes
3628 AC_SUBST(MAKEMO)
3629 dnl this was added in GNU gettext 0.10.36
3630 AC_CHECK_FUNCS(bind_textdomain_codeset)
3631 dnl _nl_msg_cat_cntr is required for GNU gettext
3632 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3633 AC_TRY_LINK(
3634 [#include <libintl.h>
3635 extern int _nl_msg_cat_cntr;],
3636 [++_nl_msg_cat_cntr;],
3637 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3638 AC_MSG_RESULT([no]))
3639 fi
3640 else
3641 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3642 fi
3643else
3644 AC_MSG_RESULT(yes)
3645fi
3646
3647dnl Check for dynamic linking loader
3648AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3649if test x${DLL} = xdlfcn.h; then
3650 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3651 AC_MSG_CHECKING([for dlopen()])
3652 AC_TRY_LINK(,[
3653 extern void* dlopen();
3654 dlopen();
3655 ],
3656 AC_MSG_RESULT(yes);
3657 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3658 AC_MSG_RESULT(no);
3659 AC_MSG_CHECKING([for dlopen() in -ldl])
3660 olibs=$LIBS
3661 LIBS="$LIBS -ldl"
3662 AC_TRY_LINK(,[
3663 extern void* dlopen();
3664 dlopen();
3665 ],
3666 AC_MSG_RESULT(yes);
3667 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3668 AC_MSG_RESULT(no);
3669 LIBS=$olibs))
3670 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3671 dnl ick :-)
3672 AC_MSG_CHECKING([for dlsym()])
3673 AC_TRY_LINK(,[
3674 extern void* dlsym();
3675 dlsym();
3676 ],
3677 AC_MSG_RESULT(yes);
3678 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3679 AC_MSG_RESULT(no);
3680 AC_MSG_CHECKING([for dlsym() in -ldl])
3681 olibs=$LIBS
3682 LIBS="$LIBS -ldl"
3683 AC_TRY_LINK(,[
3684 extern void* dlsym();
3685 dlsym();
3686 ],
3687 AC_MSG_RESULT(yes);
3688 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3689 AC_MSG_RESULT(no);
3690 LIBS=$olibs))
3691elif test x${DLL} = xdl.h; then
3692 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3693 AC_MSG_CHECKING([for shl_load()])
3694 AC_TRY_LINK(,[
3695 extern void* shl_load();
3696 shl_load();
3697 ],
3698 AC_MSG_RESULT(yes);
3699 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3700 AC_MSG_RESULT(no);
3701 AC_MSG_CHECKING([for shl_load() in -ldld])
3702 olibs=$LIBS
3703 LIBS="$LIBS -ldld"
3704 AC_TRY_LINK(,[
3705 extern void* shl_load();
3706 shl_load();
3707 ],
3708 AC_MSG_RESULT(yes);
3709 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3710 AC_MSG_RESULT(no);
3711 LIBS=$olibs))
3712fi
3713AC_CHECK_HEADERS(setjmp.h)
3714
3715if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3716 dnl -ldl must come after DynaLoader.a
3717 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3718 LIBS=`echo $LIBS | sed s/-ldl//`
3719 PERL_LIBS="$PERL_LIBS -ldl"
3720 fi
3721fi
3722
Bram Moolenaar164fca32010-07-14 13:58:07 +02003723if test "x$MACOSX" = "xyes"; then
3724 AC_MSG_CHECKING(whether we need -framework Cocoa)
3725 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3726 dnl disabled during tiny build)
3727 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3728 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003729 AC_MSG_RESULT(yes)
3730 else
3731 AC_MSG_RESULT(no)
3732 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003733 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3734 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3735 dnl missing Objective-C symbols.
3736 if test "x$features" = "xtiny"; then
3737 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3738 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3739 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003740fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003741if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003742 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003743fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003744
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003745dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3746dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3747dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003748dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3749dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003750DEPEND_CFLAGS_FILTER=
3751if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003752 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003753 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003754 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003755 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003756 AC_MSG_RESULT(yes)
3757 else
3758 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003759 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003760 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3761 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003762 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003763 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003764 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3765 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003766 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 +00003767 AC_MSG_RESULT(yes)
3768 else
3769 AC_MSG_RESULT(no)
3770 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003771fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003772AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003773
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003774dnl link.sh tries to avoid overlinking in a hackish way.
3775dnl At least GNU ld supports --as-needed which provides the same functionality
3776dnl at linker level. Let's use it.
3777AC_MSG_CHECKING(linker --as-needed support)
3778LINK_AS_NEEDED=
3779# Check if linker supports --as-needed and --no-as-needed options
3780if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003781 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003782 LINK_AS_NEEDED=yes
3783fi
3784if test "$LINK_AS_NEEDED" = yes; then
3785 AC_MSG_RESULT(yes)
3786else
3787 AC_MSG_RESULT(no)
3788fi
3789AC_SUBST(LINK_AS_NEEDED)
3790
Bram Moolenaar77c19352012-06-13 19:19:41 +02003791# IBM z/OS reset CFLAGS for config.mk
3792if test "$zOSUnix" = "yes"; then
3793 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3794fi
3795
Bram Moolenaar071d4272004-06-13 20:20:40 +00003796dnl write output files
3797AC_OUTPUT(auto/config.mk:config.mk.in)
3798
3799dnl vim: set sw=2 tw=78 fo+=l: