blob: e97878012ebbffca012bb151b8cdf961c2a9468d [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
Bram Moolenaar2bcaec32014-03-27 18:51:11 +010017AC_PROG_FGREP dnl finds working grep -F
Bram Moolenaar071d4272004-06-13 20:20:40 +000018AC_ISC_POSIX dnl required by AC_C_CROSS
19AC_PROG_AWK dnl required for "make html" in ../doc
20
21dnl Don't strip if we don't have it
22AC_CHECK_PROG(STRIP, strip, strip, :)
23
Bram Moolenaar325b7a22004-07-05 15:58:32 +000024dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000025AC_EXEEXT
26
Bram Moolenaar446cb832008-06-24 21:56:24 +000027dnl Check for standard headers. We don't use this in Vim but other stuff
28dnl in autoconf needs it, where it uses STDC_HEADERS.
29AC_HEADER_STDC
30AC_HEADER_SYS_WAIT
31
Bram Moolenaarf788a062011-12-14 20:51:25 +010032dnl Check for the flag that fails if stuff are missing.
33
34AC_MSG_CHECKING(--enable-fail-if-missing argument)
35AC_ARG_ENABLE(fail_if_missing,
36 [ --enable-fail-if-missing Fail if dependencies on additional features
37 specified on the command line are missing.],
38 [fail_if_missing="yes"],
39 [fail_if_missing="no"])
40AC_MSG_RESULT($fail_if_missing)
41
Bram Moolenaar071d4272004-06-13 20:20:40 +000042dnl Set default value for CFLAGS if none is defined or it's empty
43if test -z "$CFLAGS"; then
44 CFLAGS="-O"
45 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
46fi
47if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000048 dnl method that should work for nearly all versions
49 gccversion=`"$CC" -dumpversion`
50 if test "x$gccversion" = "x"; then
51 dnl old method; fall-back for when -dumpversion doesn't work
52 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
53 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000054 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
55 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000056 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000057 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
58 else
59 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
60 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
61 CFLAGS="$CFLAGS -fno-strength-reduce"
62 fi
63 fi
64fi
65
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020066dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
67dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
68dnl the version number of the clang in use.
69dnl Note that this does not work to get the version of clang 3.1 or 3.2.
70AC_MSG_CHECKING(for recent clang version)
71CLANG_VERSION_STRING=`"$CC" --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'`
72if test x"$CLANG_VERSION_STRING" != x"" ; then
73 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
74 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
75 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
76 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
77 AC_MSG_RESULT($CLANG_VERSION)
78 dnl If you find the same issue with versions earlier than 500.2.75,
79 dnl change the constant 500002075 below appropriately. To get the
80 dnl integer corresponding to a version number, refer to the
81 dnl definition of CLANG_VERSION above.
82 if test "$CLANG_VERSION" -ge 500002075 ; then
83 CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
84 fi
85else
86 AC_MSG_RESULT(no)
87fi
88
Bram Moolenaar446cb832008-06-24 21:56:24 +000089dnl If configure thinks we are cross compiling, there might be something
90dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000091if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000092 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000093fi
94
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000095dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
96dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000097test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
98
99if test -f ./toolcheck; then
100 AC_CHECKING(for buggy tools)
101 sh ./toolcheck 1>&AC_FD_MSG
102fi
103
104OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
105
106dnl Check for BeOS, which needs an extra source file
107AC_MSG_CHECKING(for BeOS)
108case `uname` in
109 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
110 BEOS=yes; AC_MSG_RESULT(yes);;
111 *) BEOS=no; AC_MSG_RESULT(no);;
112esac
113
114dnl If QNX is found, assume we don't want to use Xphoton
115dnl unless it was specifically asked for (--with-x)
116AC_MSG_CHECKING(for QNX)
117case `uname` in
118 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
119 test -z "$with_x" && with_x=no
120 QNX=yes; AC_MSG_RESULT(yes);;
121 *) QNX=no; AC_MSG_RESULT(no);;
122esac
123
124dnl Check for Darwin and MacOS X
125dnl We do a check for MacOS X in the very beginning because there
126dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127AC_MSG_CHECKING([for Darwin (Mac OS X)])
128if test "`(uname) 2>/dev/null`" = Darwin; then
129 AC_MSG_RESULT(yes)
130
131 AC_MSG_CHECKING(--disable-darwin argument)
132 AC_ARG_ENABLE(darwin,
133 [ --disable-darwin Disable Darwin (Mac OS X) support.],
134 , [enable_darwin="yes"])
135 if test "$enable_darwin" = "yes"; then
136 AC_MSG_RESULT(no)
137 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200138 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139 AC_MSG_RESULT(yes)
140 else
141 AC_MSG_RESULT([no, Darwin support disabled])
142 enable_darwin=no
143 fi
144 else
145 AC_MSG_RESULT([yes, Darwin support excluded])
146 fi
147
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000148 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000149 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000150 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000151 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000152
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100153 AC_MSG_CHECKING(--with-developer-dir argument)
154 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
155 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
156 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
157
158 if test "x$DEVELOPER_DIR" = "x"; then
159 AC_PATH_PROG(XCODE_SELECT, xcode-select)
160 if test "x$XCODE_SELECT" != "x"; then
161 AC_MSG_CHECKING(for developer dir using xcode-select)
162 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
163 AC_MSG_RESULT([$DEVELOPER_DIR])
164 else
165 DEVELOPER_DIR=/Developer
166 fi
167 fi
168
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000169 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000170 AC_MSG_CHECKING(for 10.4 universal SDK)
171 dnl There is a terrible inconsistency (but we appear to get away with it):
172 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
173 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
174 dnl tests using the preprocessor are actually done with the wrong header
175 dnl files. $LDFLAGS is set at the end, because configure uses it together
176 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000178 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000179 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100180 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000181 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000182 AC_MSG_RESULT(found, will make universal binary),
183
184 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000185 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000186 AC_MSG_CHECKING(if Intel architecture is supported)
187 CPPFLAGS="$CPPFLAGS -arch i386"
188 LDFLAGS="$save_ldflags -arch i386"
189 AC_TRY_LINK([ ], [ ],
190 AC_MSG_RESULT(yes); MACARCH="intel",
191 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000192 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000193 CPPFLAGS="$save_cppflags -arch ppc"
194 LDFLAGS="$save_ldflags -arch ppc"))
195 elif test "x$MACARCH" = "xintel"; then
196 CPPFLAGS="$CPPFLAGS -arch intel"
197 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000198 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000199 CPPFLAGS="$CPPFLAGS -arch ppc"
200 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000201 fi
202
Bram Moolenaar071d4272004-06-13 20:20:40 +0000203 if test "$enable_darwin" = "yes"; then
204 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200205 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000206 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000207 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100208 dnl Removed -no-cpp-precomp, only for very old compilers.
209 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210
211 dnl If Carbon is found, assume we don't want X11
212 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000213 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000214 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
215 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200216 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 +0000217 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218 fi
219 fi
220 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000221
Bram Moolenaardb552d602006-03-23 22:59:57 +0000222 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000223 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000224 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000225 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
226 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
227 fi
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229else
230 AC_MSG_RESULT(no)
231fi
232
Bram Moolenaar39766a72013-11-03 00:41:00 +0100233dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
234dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100235AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100236
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237AC_SUBST(OS_EXTRA_SRC)
238AC_SUBST(OS_EXTRA_OBJ)
239
240dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
241dnl Only when the directory exists and it wasn't there yet.
242dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243dnl Skip all of this when cross-compiling.
244if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000245 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000246 have_local_include=''
247 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000248 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
249 --without-local-dir do not search /usr/local for local libraries.], [
250 local_dir="$withval"
251 case "$withval" in
252 */*) ;;
253 no)
254 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200255 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000256 have_local_lib=yes
257 ;;
258 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
259 esac
260 AC_MSG_RESULT($local_dir)
261 ], [
262 local_dir=/usr/local
263 AC_MSG_RESULT(Defaulting to $local_dir)
264 ])
265 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000266 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100267 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
268 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000269 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000270 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000272 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
273 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 +0000274 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000275 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000276 fi
277 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000278 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
279 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 +0000280 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000282 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283 fi
284fi
285
286AC_MSG_CHECKING(--with-vim-name argument)
287AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
288 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000289 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290AC_SUBST(VIMNAME)
291AC_MSG_CHECKING(--with-ex-name argument)
292AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
293 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
294 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
295AC_SUBST(EXNAME)
296AC_MSG_CHECKING(--with-view-name argument)
297AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
298 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
299 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
300AC_SUBST(VIEWNAME)
301
302AC_MSG_CHECKING(--with-global-runtime argument)
303AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
304 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
305 AC_MSG_RESULT(no))
306
307AC_MSG_CHECKING(--with-modified-by argument)
308AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
309 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
310 AC_MSG_RESULT(no))
311
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313AC_MSG_CHECKING(if character set is EBCDIC)
314AC_TRY_COMPILE([ ],
315[ /* TryCompile function for CharSet.
316 Treat any failure as ASCII for compatibility with existing art.
317 Use compile-time rather than run-time tests for cross-compiler
318 tolerance. */
319#if '0'!=240
320make an error "Character set is not EBCDIC"
321#endif ],
322[ # TryCompile action if true
323cf_cv_ebcdic=yes ],
324[ # TryCompile action if false
325cf_cv_ebcdic=no])
326# end of TryCompile ])
327# end of CacheVal CvEbcdic
328AC_MSG_RESULT($cf_cv_ebcdic)
329case "$cf_cv_ebcdic" in #(vi
330 yes) AC_DEFINE(EBCDIC)
331 line_break='"\\n"'
332 ;;
333 *) line_break='"\\012"';;
334esac
335AC_SUBST(line_break)
336
337if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200338dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200341 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342 dnl If using cc the environment variable _CC_CCMODE must be
343 dnl set to "1", so that some compiler extensions are enabled.
344 dnl If using c89 the environment variable is named _CC_C89MODE.
345 dnl Note: compile with c89 never tested.
346 if test "$CC" = "cc"; then
347 ccm="$_CC_CCMODE"
348 ccn="CC"
349 else
350 if test "$CC" = "c89"; then
351 ccm="$_CC_C89MODE"
352 ccn="C89"
353 else
354 ccm=1
355 fi
356 fi
357 if test "$ccm" != "1"; then
358 echo ""
359 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200360 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200361 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000362 echo " Do:"
363 echo " export _CC_${ccn}MODE=1"
364 echo " and then call configure again."
365 echo "------------------------------------------"
366 exit 1
367 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200368 # Set CFLAGS for configure process.
369 # This will be reset later for config.mk.
370 # Use haltonmsg to force error for missing H files.
371 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
372 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373 AC_MSG_RESULT(yes)
374 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200375 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000376 AC_MSG_RESULT(no)
377 ;;
378esac
379fi
380
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200381dnl Set QUOTESED. Needs additional backslashes on zOS
382if test "$zOSUnix" = "yes"; then
383 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
384else
385 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
386fi
387AC_SUBST(QUOTESED)
388
389
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200390dnl Link with -lsmack for Smack stuff; if not found
391AC_MSG_CHECKING(--disable-smack argument)
392AC_ARG_ENABLE(smack,
393 [ --disable-smack Do not check for Smack support.],
394 , enable_smack="yes")
395if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200396 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200397 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200398else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200399 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200400fi
401if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200402 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
403fi
404if test "$enable_smack" = "yes"; then
405 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
406 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
407 AC_MSG_RESULT(yes),
408 AC_MSG_RESULT(no); enable_smack = "no")
409fi
410if test "$enable_smack" = "yes"; then
411 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200412 [LIBS="$LIBS -lattr"
413 found_smack="yes"
414 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000415fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000416
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200417dnl When smack was found don't search for SELinux
418if test "x$found_smack" = "x"; then
419 dnl Link with -lselinux for SELinux stuff; if not found
420 AC_MSG_CHECKING(--disable-selinux argument)
421 AC_ARG_ENABLE(selinux,
422 [ --disable-selinux Do not check for SELinux support.],
423 , enable_selinux="yes")
424 if test "$enable_selinux" = "yes"; then
425 AC_MSG_RESULT(no)
426 AC_CHECK_LIB(selinux, is_selinux_enabled,
427 [LIBS="$LIBS -lselinux"
428 AC_DEFINE(HAVE_SELINUX)])
429 else
430 AC_MSG_RESULT(yes)
431 fi
432fi
433
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434dnl Check user requested features.
435
436AC_MSG_CHECKING(--with-features argument)
437AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
438 features="$withval"; AC_MSG_RESULT($features),
439 features="normal"; AC_MSG_RESULT(Defaulting to normal))
440
441dovimdiff=""
442dogvimdiff=""
443case "$features" in
444 tiny) AC_DEFINE(FEAT_TINY) ;;
445 small) AC_DEFINE(FEAT_SMALL) ;;
446 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
447 dogvimdiff="installgvimdiff" ;;
448 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
449 dogvimdiff="installgvimdiff" ;;
450 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
451 dogvimdiff="installgvimdiff" ;;
452 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
453esac
454
455AC_SUBST(dovimdiff)
456AC_SUBST(dogvimdiff)
457
458AC_MSG_CHECKING(--with-compiledby argument)
459AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
460 compiledby="$withval"; AC_MSG_RESULT($withval),
461 compiledby=""; AC_MSG_RESULT(no))
462AC_SUBST(compiledby)
463
464AC_MSG_CHECKING(--disable-xsmp argument)
465AC_ARG_ENABLE(xsmp,
466 [ --disable-xsmp Disable XSMP session management],
467 , enable_xsmp="yes")
468
469if test "$enable_xsmp" = "yes"; then
470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(--disable-xsmp-interact argument)
472 AC_ARG_ENABLE(xsmp-interact,
473 [ --disable-xsmp-interact Disable XSMP interaction],
474 , enable_xsmp_interact="yes")
475 if test "$enable_xsmp_interact" = "yes"; then
476 AC_MSG_RESULT(no)
477 AC_DEFINE(USE_XSMP_INTERACT)
478 else
479 AC_MSG_RESULT(yes)
480 fi
481else
482 AC_MSG_RESULT(yes)
483fi
484
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200485dnl Check for Lua feature.
486AC_MSG_CHECKING(--enable-luainterp argument)
487AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200488 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200489 [enable_luainterp="no"])
490AC_MSG_RESULT($enable_luainterp)
491
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 dnl -- find the lua executable
494 AC_SUBST(vi_cv_path_lua)
495
496 AC_MSG_CHECKING(--with-lua-prefix argument)
497 AC_ARG_WITH(lua_prefix,
498 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
499 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200500 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200501
502 if test "X$with_lua_prefix" != "X"; then
503 vi_cv_path_lua_pfx="$with_lua_prefix"
504 else
505 AC_MSG_CHECKING(LUA_PREFIX environment var)
506 if test "X$LUA_PREFIX" != "X"; then
507 AC_MSG_RESULT("$LUA_PREFIX")
508 vi_cv_path_lua_pfx="$LUA_PREFIX"
509 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200510 AC_MSG_RESULT([not set, default to /usr])
511 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200512 fi
513 fi
514
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200515 AC_MSG_CHECKING(--with-luajit)
516 AC_ARG_WITH(luajit,
517 [ --with-luajit Link with LuaJIT instead of Lua.],
518 [vi_cv_with_luajit="$withval"],
519 [vi_cv_with_luajit="no"])
520 AC_MSG_RESULT($vi_cv_with_luajit)
521
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 LUA_INC=
523 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200524 if test "x$vi_cv_with_luajit" != "xno"; then
525 dnl -- try to find LuaJIT executable
526 AC_PATH_PROG(vi_cv_path_luajit, luajit)
527 if test "X$vi_cv_path_luajit" != "X"; then
528 dnl -- find LuaJIT version
529 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100530 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200531 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
532 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
533 vi_cv_path_lua="$vi_cv_path_luajit"
534 vi_cv_version_lua="$vi_cv_version_lua_luajit"
535 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200536 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200537 dnl -- try to find Lua executable
538 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
539 if test "X$vi_cv_path_plain_lua" != "X"; then
540 dnl -- find Lua version
541 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
542 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
543 fi
544 vi_cv_path_lua="$vi_cv_path_plain_lua"
545 vi_cv_version_lua="$vi_cv_version_plain_lua"
546 fi
547 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
548 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
549 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
550 AC_MSG_RESULT(yes)
551 LUA_INC=/luajit-$vi_cv_version_luajit
552 fi
553 fi
554 if test "X$LUA_INC" = "X"; then
555 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
556 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
557 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200558 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200559 AC_MSG_RESULT(no)
560 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
561 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
562 AC_MSG_RESULT(yes)
563 LUA_INC=/lua$vi_cv_version_lua
564 else
565 AC_MSG_RESULT(no)
566 vi_cv_path_lua_pfx=
567 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200568 fi
569 fi
570 fi
571
572 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200573 if test "x$vi_cv_with_luajit" != "xno"; then
574 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
575 if test "X$multiarch" != "X"; then
576 lib_multiarch="lib/${multiarch}"
577 else
578 lib_multiarch="lib"
579 fi
580 if test "X$vi_cv_version_lua" = "X"; then
581 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
582 else
583 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
584 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200585 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200586 if test "X$LUA_INC" != "X"; then
587 dnl Test alternate location using version
588 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
589 else
590 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
591 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200592 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200593 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200594 lua_ok="yes"
595 else
596 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
597 libs_save=$LIBS
598 LIBS="$LIBS $LUA_LIBS"
599 AC_TRY_LINK(,[ ],
600 AC_MSG_RESULT(yes); lua_ok="yes",
601 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
602 LIBS=$libs_save
603 fi
604 if test "x$lua_ok" = "xyes"; then
605 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
606 LUA_SRC="if_lua.c"
607 LUA_OBJ="objects/if_lua.o"
608 LUA_PRO="if_lua.pro"
609 AC_DEFINE(FEAT_LUA)
610 fi
611 if test "$enable_luainterp" = "dynamic"; then
612 if test "x$vi_cv_with_luajit" != "xno"; then
613 luajit="jit"
614 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200615 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
616 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
617 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200618 if test "x$MACOSX" = "xyes"; then
619 ext="dylib"
620 indexes=""
621 else
622 ext="so"
623 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
624 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
625 if test "X$multiarch" != "X"; then
626 lib_multiarch="lib/${multiarch}"
627 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200628 fi
629 dnl Determine the sover for the current version, but fallback to
630 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200631 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200632 for subdir in "${lib_multiarch}" lib64 lib; do
633 if test -z "$subdir"; then
634 continue
635 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200636 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
637 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
638 for i in $indexes ""; do
639 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200640 sover2="$i"
641 break 3
642 fi
643 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100644 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200645 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200646 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200647 if test "X$sover" = "X"; then
648 AC_MSG_RESULT(no)
649 lua_ok="no"
650 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
651 else
652 AC_MSG_RESULT(yes)
653 lua_ok="yes"
654 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
655 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200656 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200657 AC_DEFINE(DYNAMIC_LUA)
658 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200659 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200660 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200661 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
662 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
663 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
664 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
665 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
666 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200667 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100669 AC_MSG_ERROR([could not configure lua])
670 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200671 AC_SUBST(LUA_SRC)
672 AC_SUBST(LUA_OBJ)
673 AC_SUBST(LUA_PRO)
674 AC_SUBST(LUA_LIBS)
675 AC_SUBST(LUA_CFLAGS)
676fi
677
678
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000679dnl Check for MzScheme feature.
680AC_MSG_CHECKING(--enable-mzschemeinterp argument)
681AC_ARG_ENABLE(mzschemeinterp,
682 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
683 [enable_mzschemeinterp="no"])
684AC_MSG_RESULT($enable_mzschemeinterp)
685
686if test "$enable_mzschemeinterp" = "yes"; then
687 dnl -- find the mzscheme executable
688 AC_SUBST(vi_cv_path_mzscheme)
689
690 AC_MSG_CHECKING(--with-plthome argument)
691 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000692 [ --with-plthome=PLTHOME Use PLTHOME.],
693 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000694 with_plthome="";AC_MSG_RESULT("no"))
695
696 if test "X$with_plthome" != "X"; then
697 vi_cv_path_mzscheme_pfx="$with_plthome"
698 else
699 AC_MSG_CHECKING(PLTHOME environment var)
700 if test "X$PLTHOME" != "X"; then
701 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000702 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000703 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000704 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000706 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707
708 dnl resolve symbolic link, the executable is often elsewhere and there
709 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000710 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000711 lsout=`ls -l $vi_cv_path_mzscheme`
712 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
713 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
714 fi
715 fi
716
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000717 if test "X$vi_cv_path_mzscheme" != "X"; then
718 dnl -- find where MzScheme thinks it was installed
719 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000720 dnl different versions of MzScheme differ in command line processing
721 dnl use universal approach
722 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000723 (build-path (call-with-values \
724 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000725 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
726 dnl Remove a trailing slash
727 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
728 sed -e 's+/$++'` ])
729 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000730 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000731 fi
732 fi
733
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000735 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
736 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
737 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000738 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
739 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000740 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000741 AC_MSG_RESULT(no)
742 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000743 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000744 AC_MSG_RESULT(yes)
745 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000746 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000747 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100748 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
749 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000750 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100751 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000752 else
753 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100754 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
755 if test -f /usr/include/plt/scheme.h; then
756 AC_MSG_RESULT(yes)
757 SCHEME_INC=/usr/include/plt
758 else
759 AC_MSG_RESULT(no)
760 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
761 if test -f /usr/include/racket/scheme.h; then
762 AC_MSG_RESULT(yes)
763 SCHEME_INC=/usr/include/racket
764 else
765 AC_MSG_RESULT(no)
766 vi_cv_path_mzscheme_pfx=
767 fi
768 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000769 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000770 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000771 fi
772 fi
773
774 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000775 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100776 MZSCHEME_LIBS="-framework Racket"
777 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000778 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
779 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
780 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100781 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
782 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
783 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
784 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
785 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
786 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000787 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 +0000788 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000789 dnl Using shared objects
790 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
791 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
792 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100793 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
794 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
795 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
796 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
797 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000798 else
799 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
800 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000801 if test "$GCC" = yes; then
802 dnl Make Vim remember the path to the library. For when it's not in
803 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000804 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000805 elif test "`(uname) 2>/dev/null`" = SunOS &&
806 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000807 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000808 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000809 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100810
811 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000812 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100813 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100814 else
815 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100816 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
817 else
818 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
819 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100820 else
821 if test -d $vi_cv_path_mzscheme_pfx/collects; then
822 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
823 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100824 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100825 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000826 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100827 if test "X$SCHEME_COLLECTS" != "X" ; then
828 AC_MSG_RESULT(${SCHEME_COLLECTS})
829 else
830 AC_MSG_RESULT(not found)
831 fi
832
833 AC_MSG_CHECKING(for mzscheme_base.c)
834 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000835 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100836 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
837 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100838 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100839 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100840 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100841 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
842 MZSCHEME_MOD="++lib scheme/base"
843 else
844 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
845 MZSCHEME_EXTRA="mzscheme_base.c"
846 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
847 MZSCHEME_MOD=""
848 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100849 fi
850 fi
851 if test "X$MZSCHEME_EXTRA" != "X" ; then
852 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000853 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
854 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100855 AC_MSG_RESULT(needed)
856 else
857 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000858 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100859
Bram Moolenaar9e902192013-07-17 18:58:11 +0200860 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
861 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
862
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000863 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100864 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200865
866 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
867 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
868 cflags_save=$CFLAGS
869 libs_save=$LIBS
870 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
871 LIBS="$LIBS $MZSCHEME_LIBS"
872 AC_TRY_LINK(,[ ],
873 AC_MSG_RESULT(yes); mzs_ok=yes,
874 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
875 CFLAGS=$cflags_save
876 LIBS=$libs_save
877 if test $mzs_ok = yes; then
878 MZSCHEME_SRC="if_mzsch.c"
879 MZSCHEME_OBJ="objects/if_mzsch.o"
880 MZSCHEME_PRO="if_mzsch.pro"
881 AC_DEFINE(FEAT_MZSCHEME)
882 else
883 MZSCHEME_CFLAGS=
884 MZSCHEME_LIBS=
885 MZSCHEME_EXTRA=
886 MZSCHEME_MZC=
887 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000888 fi
889 AC_SUBST(MZSCHEME_SRC)
890 AC_SUBST(MZSCHEME_OBJ)
891 AC_SUBST(MZSCHEME_PRO)
892 AC_SUBST(MZSCHEME_LIBS)
893 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000894 AC_SUBST(MZSCHEME_EXTRA)
895 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000896fi
897
898
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899AC_MSG_CHECKING(--enable-perlinterp argument)
900AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200901 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000902 [enable_perlinterp="no"])
903AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200904if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000905 AC_SUBST(vi_cv_path_perl)
906 AC_PATH_PROG(vi_cv_path_perl, perl)
907 if test "X$vi_cv_path_perl" != "X"; then
908 AC_MSG_CHECKING(Perl version)
909 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
910 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200911 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000912 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
913 badthreads=no
914 else
915 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
916 eval `$vi_cv_path_perl -V:use5005threads`
917 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
918 badthreads=no
919 else
920 badthreads=yes
921 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
922 fi
923 else
924 badthreads=yes
925 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
926 fi
927 fi
928 if test $badthreads = no; then
929 AC_MSG_RESULT(OK)
930 eval `$vi_cv_path_perl -V:shrpenv`
931 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
932 shrpenv=""
933 fi
934 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
935 AC_SUBST(vi_cv_perllib)
936 dnl Remove "-fno-something", it breaks using cproto.
937 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
938 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
939 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
940 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
941 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
942 -e 's/-bE:perl.exp//' -e 's/-lc //'`
943 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
944 dnl a test in configure may fail because of that.
945 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
946 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
947
948 dnl check that compiling a simple program still works with the flags
949 dnl added for Perl.
950 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
951 cflags_save=$CFLAGS
952 libs_save=$LIBS
953 ldflags_save=$LDFLAGS
954 CFLAGS="$CFLAGS $perlcppflags"
955 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200956 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000957 LDFLAGS="$perlldflags $LDFLAGS"
958 AC_TRY_LINK(,[ ],
959 AC_MSG_RESULT(yes); perl_ok=yes,
960 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
961 CFLAGS=$cflags_save
962 LIBS=$libs_save
963 LDFLAGS=$ldflags_save
964 if test $perl_ok = yes; then
965 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000966 dnl remove -pipe and -Wxxx, it confuses cproto
967 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000968 fi
969 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +0100970 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200971 LDFLAGS="$perlldflags $LDFLAGS"
972 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000973 fi
974 PERL_LIBS=$perllibs
975 PERL_SRC="auto/if_perl.c if_perlsfio.c"
976 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
977 PERL_PRO="if_perl.pro if_perlsfio.pro"
978 AC_DEFINE(FEAT_PERL)
979 fi
980 fi
981 else
982 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
983 fi
984 fi
985
986 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000987 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000988 dir=/System/Library/Perl
989 darwindir=$dir/darwin
990 if test -d $darwindir; then
991 PERL=/usr/bin/perl
992 else
993 dnl Mac OS X 10.3
994 dir=/System/Library/Perl/5.8.1
995 darwindir=$dir/darwin-thread-multi-2level
996 if test -d $darwindir; then
997 PERL=/usr/bin/perl
998 fi
999 fi
1000 if test -n "$PERL"; then
1001 PERL_DIR="$dir"
1002 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1003 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1004 PERL_LIBS="-L$darwindir/CORE -lperl"
1005 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001006 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1007 dnl be included if requested by passing --with-mac-arch to
1008 dnl configure, so strip these flags first (if present)
1009 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1010 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 +00001011 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001012 if test "$enable_perlinterp" = "dynamic"; then
1013 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1014 AC_DEFINE(DYNAMIC_PERL)
1015 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1016 fi
1017 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001018
1019 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1020 AC_MSG_ERROR([could not configure perl])
1021 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001022fi
1023AC_SUBST(shrpenv)
1024AC_SUBST(PERL_SRC)
1025AC_SUBST(PERL_OBJ)
1026AC_SUBST(PERL_PRO)
1027AC_SUBST(PERL_CFLAGS)
1028AC_SUBST(PERL_LIBS)
1029
1030AC_MSG_CHECKING(--enable-pythoninterp argument)
1031AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001032 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001033 [enable_pythoninterp="no"])
1034AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001035if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001036 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001037 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001038 if test "X$vi_cv_path_python" != "X"; then
1039
1040 dnl -- get its version number
1041 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1042 [[vi_cv_var_python_version=`
1043 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1044 ]])
1045
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001046 dnl -- it must be at least version 2.3
1047 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001048 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001049 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001050 then
1051 AC_MSG_RESULT(yep)
1052
1053 dnl -- find where python thinks it was installed
1054 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1055 [ vi_cv_path_python_pfx=`
1056 ${vi_cv_path_python} -c \
1057 "import sys; print sys.prefix"` ])
1058
1059 dnl -- and where it thinks it runs
1060 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1061 [ vi_cv_path_python_epfx=`
1062 ${vi_cv_path_python} -c \
1063 "import sys; print sys.exec_prefix"` ])
1064
1065 dnl -- python's internal library path
1066
1067 AC_CACHE_VAL(vi_cv_path_pythonpath,
1068 [ vi_cv_path_pythonpath=`
1069 unset PYTHONPATH;
1070 ${vi_cv_path_python} -c \
1071 "import sys, string; print string.join(sys.path,':')"` ])
1072
1073 dnl -- where the Python implementation library archives are
1074
1075 AC_ARG_WITH(python-config-dir,
1076 [ --with-python-config-dir=PATH Python's config directory],
1077 [ vi_cv_path_python_conf="${withval}" ] )
1078
1079 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1080 [
1081 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001082 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1083 if test -d "$d" && test -f "$d/config.c"; then
1084 vi_cv_path_python_conf="$d"
1085 else
1086 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1087 for subdir in lib64 lib share; do
1088 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1089 if test -d "$d" && test -f "$d/config.c"; then
1090 vi_cv_path_python_conf="$d"
1091 fi
1092 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001093 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001094 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001095 ])
1096
1097 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1098
1099 if test "X$PYTHON_CONFDIR" = "X"; then
1100 AC_MSG_RESULT([can't find it!])
1101 else
1102
1103 dnl -- we need to examine Python's config/Makefile too
1104 dnl see what the interpreter is built from
1105 AC_CACHE_VAL(vi_cv_path_python_plibs,
1106 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001107 pwd=`pwd`
1108 tmp_mkf="$pwd/config-PyMake$$"
1109 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001110__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001111 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001112 @echo "python_LIBS='$(LIBS)'"
1113 @echo "python_SYSLIBS='$(SYSLIBS)'"
1114 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001115 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001116 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001117eof
1118 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001119 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1120 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001121 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1122 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1123 vi_cv_path_python_plibs="-framework Python"
1124 else
1125 if test "${vi_cv_var_python_version}" = "1.4"; then
1126 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1127 else
1128 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1129 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001130 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 +00001131 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1132 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1133 fi
1134 ])
1135
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001136 if test "X$python_DLLLIBRARY" != "X"; then
1137 python_INSTSONAME="$python_DLLLIBRARY"
1138 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001139 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1140 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001141 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 +00001142 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001143 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 +00001144 fi
1145 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001146 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001147 if test "${vi_cv_var_python_version}" = "1.4"; then
1148 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1149 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001150 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 +00001151
1152 dnl On FreeBSD linking with "-pthread" is required to use threads.
1153 dnl _THREAD_SAFE must be used for compiling then.
1154 dnl The "-pthread" is added to $LIBS, so that the following check for
1155 dnl sigaltstack() will look in libc_r (it's there in libc!).
1156 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1157 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1158 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1159 AC_MSG_CHECKING([if -pthread should be used])
1160 threadsafe_flag=
1161 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001162 dnl if test "x$MACOSX" != "xyes"; then
1163 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001164 test "$GCC" = yes && threadsafe_flag="-pthread"
1165 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1166 threadsafe_flag="-D_THREAD_SAFE"
1167 thread_lib="-pthread"
1168 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001169 if test "`(uname) 2>/dev/null`" = SunOS; then
1170 threadsafe_flag="-pthreads"
1171 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001172 fi
1173 libs_save_old=$LIBS
1174 if test -n "$threadsafe_flag"; then
1175 cflags_save=$CFLAGS
1176 CFLAGS="$CFLAGS $threadsafe_flag"
1177 LIBS="$LIBS $thread_lib"
1178 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001179 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001180 AC_MSG_RESULT(no); LIBS=$libs_save_old
1181 )
1182 CFLAGS=$cflags_save
1183 else
1184 AC_MSG_RESULT(no)
1185 fi
1186
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001187 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188 dnl added for Python.
1189 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1190 cflags_save=$CFLAGS
1191 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001192 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001193 LIBS="$LIBS $PYTHON_LIBS"
1194 AC_TRY_LINK(,[ ],
1195 AC_MSG_RESULT(yes); python_ok=yes,
1196 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1197 CFLAGS=$cflags_save
1198 LIBS=$libs_save
1199 if test $python_ok = yes; then
1200 AC_DEFINE(FEAT_PYTHON)
1201 else
1202 LIBS=$libs_save_old
1203 PYTHON_SRC=
1204 PYTHON_OBJ=
1205 PYTHON_LIBS=
1206 PYTHON_CFLAGS=
1207 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208 fi
1209 else
1210 AC_MSG_RESULT(too old)
1211 fi
1212 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001213
1214 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1215 AC_MSG_ERROR([could not configure python])
1216 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001217fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001218
Bram Moolenaar071d4272004-06-13 20:20:40 +00001219AC_SUBST(PYTHON_CONFDIR)
1220AC_SUBST(PYTHON_LIBS)
1221AC_SUBST(PYTHON_GETPATH_CFLAGS)
1222AC_SUBST(PYTHON_CFLAGS)
1223AC_SUBST(PYTHON_SRC)
1224AC_SUBST(PYTHON_OBJ)
1225
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001226
1227AC_MSG_CHECKING(--enable-python3interp argument)
1228AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001229 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001230 [enable_python3interp="no"])
1231AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001232if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001233 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001234 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235 if test "X$vi_cv_path_python3" != "X"; then
1236
1237 dnl -- get its version number
1238 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1239 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001240 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001241 ]])
1242
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001243 dnl -- it must be at least version 3
1244 AC_MSG_CHECKING(Python is 3.0 or better)
1245 if ${vi_cv_path_python3} -c \
1246 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1247 then
1248 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001249
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001250 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1251 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001252 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001253 vi_cv_var_python3_abiflags=
1254 if ${vi_cv_path_python3} -c \
1255 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1256 then
1257 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1258 "import sys; print(sys.abiflags)"`
1259 fi ])
1260
1261 dnl -- find where python3 thinks it was installed
1262 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1263 [ vi_cv_path_python3_pfx=`
1264 ${vi_cv_path_python3} -c \
1265 "import sys; print(sys.prefix)"` ])
1266
1267 dnl -- and where it thinks it runs
1268 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1269 [ vi_cv_path_python3_epfx=`
1270 ${vi_cv_path_python3} -c \
1271 "import sys; print(sys.exec_prefix)"` ])
1272
1273 dnl -- python3's internal library path
1274
1275 AC_CACHE_VAL(vi_cv_path_python3path,
1276 [ vi_cv_path_python3path=`
1277 unset PYTHONPATH;
1278 ${vi_cv_path_python3} -c \
1279 "import sys, string; print(':'.join(sys.path))"` ])
1280
1281 dnl -- where the Python implementation library archives are
1282
1283 AC_ARG_WITH(python3-config-dir,
1284 [ --with-python3-config-dir=PATH Python's config directory],
1285 [ vi_cv_path_python3_conf="${withval}" ] )
1286
1287 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1288 [
1289 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001290 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001291 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1292 if test -d "$d" && test -f "$d/config.c"; then
1293 vi_cv_path_python3_conf="$d"
1294 else
1295 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1296 for subdir in lib64 lib share; do
1297 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1298 if test -d "$d" && test -f "$d/config.c"; then
1299 vi_cv_path_python3_conf="$d"
1300 fi
1301 done
1302 done
1303 fi
1304 ])
1305
1306 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1307
1308 if test "X$PYTHON3_CONFDIR" = "X"; then
1309 AC_MSG_RESULT([can't find it!])
1310 else
1311
1312 dnl -- we need to examine Python's config/Makefile too
1313 dnl see what the interpreter is built from
1314 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1315 [
1316 pwd=`pwd`
1317 tmp_mkf="$pwd/config-PyMake$$"
1318 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001319__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001320 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001321 @echo "python3_LIBS='$(LIBS)'"
1322 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001323 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001324 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001325eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001326 dnl -- delete the lines from make about Entering/Leaving directory
1327 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1328 rm -f -- "${tmp_mkf}"
1329 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1330 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1331 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1332 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1333 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1334 ])
1335
1336 if test "X$python3_DLLLIBRARY" != "X"; then
1337 python3_INSTSONAME="$python3_DLLLIBRARY"
1338 fi
1339 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1340 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001341 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 +02001342 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001343 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 +02001344 fi
1345 PYTHON3_SRC="if_python3.c"
1346 PYTHON3_OBJ="objects/if_python3.o"
1347
1348 dnl On FreeBSD linking with "-pthread" is required to use threads.
1349 dnl _THREAD_SAFE must be used for compiling then.
1350 dnl The "-pthread" is added to $LIBS, so that the following check for
1351 dnl sigaltstack() will look in libc_r (it's there in libc!).
1352 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1353 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1354 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1355 AC_MSG_CHECKING([if -pthread should be used])
1356 threadsafe_flag=
1357 thread_lib=
1358 dnl if test "x$MACOSX" != "xyes"; then
1359 if test "`(uname) 2>/dev/null`" != Darwin; then
1360 test "$GCC" = yes && threadsafe_flag="-pthread"
1361 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1362 threadsafe_flag="-D_THREAD_SAFE"
1363 thread_lib="-pthread"
1364 fi
1365 if test "`(uname) 2>/dev/null`" = SunOS; then
1366 threadsafe_flag="-pthreads"
1367 fi
1368 fi
1369 libs_save_old=$LIBS
1370 if test -n "$threadsafe_flag"; then
1371 cflags_save=$CFLAGS
1372 CFLAGS="$CFLAGS $threadsafe_flag"
1373 LIBS="$LIBS $thread_lib"
1374 AC_TRY_LINK(,[ ],
1375 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1376 AC_MSG_RESULT(no); LIBS=$libs_save_old
1377 )
1378 CFLAGS=$cflags_save
1379 else
1380 AC_MSG_RESULT(no)
1381 fi
1382
1383 dnl check that compiling a simple program still works with the flags
1384 dnl added for Python.
1385 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1386 cflags_save=$CFLAGS
1387 libs_save=$LIBS
1388 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1389 LIBS="$LIBS $PYTHON3_LIBS"
1390 AC_TRY_LINK(,[ ],
1391 AC_MSG_RESULT(yes); python3_ok=yes,
1392 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1393 CFLAGS=$cflags_save
1394 LIBS=$libs_save
1395 if test "$python3_ok" = yes; then
1396 AC_DEFINE(FEAT_PYTHON3)
1397 else
1398 LIBS=$libs_save_old
1399 PYTHON3_SRC=
1400 PYTHON3_OBJ=
1401 PYTHON3_LIBS=
1402 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001403 fi
1404 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001405 else
1406 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001407 fi
1408 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001409 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1410 AC_MSG_ERROR([could not configure python3])
1411 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001412fi
1413
1414AC_SUBST(PYTHON3_CONFDIR)
1415AC_SUBST(PYTHON3_LIBS)
1416AC_SUBST(PYTHON3_CFLAGS)
1417AC_SUBST(PYTHON3_SRC)
1418AC_SUBST(PYTHON3_OBJ)
1419
1420dnl if python2.x and python3.x are enabled one can only link in code
1421dnl with dlopen(), dlsym(), dlclose()
1422if test "$python_ok" = yes && test "$python3_ok" = yes; then
1423 AC_DEFINE(DYNAMIC_PYTHON)
1424 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001425 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001426 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001427 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001428 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001429 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1430 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001431 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001432 #include <dlfcn.h>
1433 /* If this program fails, then RTLD_GLOBAL is needed.
1434 * RTLD_GLOBAL will be used and then it is not possible to
1435 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001436 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001437 */
1438
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001439 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001440 {
1441 int needed = 0;
1442 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1443 if (pylib != 0)
1444 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001445 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001446 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1447 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1448 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001449 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001450 (*init)();
1451 needed = (*simple)("import termios") == -1;
1452 (*final)();
1453 dlclose(pylib);
1454 }
1455 return !needed;
1456 }
1457
1458 int main(int argc, char** argv)
1459 {
1460 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001461 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001462 not_needed = 1;
1463 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001464 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001465 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001466
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001467 CFLAGS=$cflags_save
1468 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001469
1470 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1471 cflags_save=$CFLAGS
1472 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1473 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001474 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1475 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001476 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001477 #include <dlfcn.h>
1478 #include <wchar.h>
1479 /* If this program fails, then RTLD_GLOBAL is needed.
1480 * RTLD_GLOBAL will be used and then it is not possible to
1481 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001482 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001483 */
1484
1485 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1486 {
1487 int needed = 0;
1488 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1489 if (pylib != 0)
1490 {
1491 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1492 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1493 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1494 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1495 (*pfx)(prefix);
1496 (*init)();
1497 needed = (*simple)("import termios") == -1;
1498 (*final)();
1499 dlclose(pylib);
1500 }
1501 return !needed;
1502 }
1503
1504 int main(int argc, char** argv)
1505 {
1506 int not_needed = 0;
1507 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1508 not_needed = 1;
1509 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001510 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001511 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1512
1513 CFLAGS=$cflags_save
1514 LDFLAGS=$ldflags_save
1515
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001516 PYTHON_SRC="if_python.c"
1517 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001518 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001519 PYTHON_LIBS=
1520 PYTHON3_SRC="if_python3.c"
1521 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001522 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001523 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001524elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1525 AC_DEFINE(DYNAMIC_PYTHON)
1526 PYTHON_SRC="if_python.c"
1527 PYTHON_OBJ="objects/if_python.o"
1528 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1529 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001530elif test "$python_ok" = yes; then
1531 dnl Check that adding -fPIE works. It may be needed when using a static
1532 dnl Python library.
1533 AC_MSG_CHECKING([if -fPIE can be added for Python])
1534 cflags_save=$CFLAGS
1535 libs_save=$LIBS
1536 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1537 LIBS="$LIBS $PYTHON_LIBS"
1538 AC_TRY_LINK(,[ ],
1539 AC_MSG_RESULT(yes); fpie_ok=yes,
1540 AC_MSG_RESULT(no); fpie_ok=no)
1541 CFLAGS=$cflags_save
1542 LIBS=$libs_save
1543 if test $fpie_ok = yes; then
1544 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1545 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001546elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1547 AC_DEFINE(DYNAMIC_PYTHON3)
1548 PYTHON3_SRC="if_python3.c"
1549 PYTHON3_OBJ="objects/if_python3.o"
1550 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1551 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001552elif test "$python3_ok" = yes; then
1553 dnl Check that adding -fPIE works. It may be needed when using a static
1554 dnl Python library.
1555 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1556 cflags_save=$CFLAGS
1557 libs_save=$LIBS
1558 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1559 LIBS="$LIBS $PYTHON3_LIBS"
1560 AC_TRY_LINK(,[ ],
1561 AC_MSG_RESULT(yes); fpie_ok=yes,
1562 AC_MSG_RESULT(no); fpie_ok=no)
1563 CFLAGS=$cflags_save
1564 LIBS=$libs_save
1565 if test $fpie_ok = yes; then
1566 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1567 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001568fi
1569
Bram Moolenaar071d4272004-06-13 20:20:40 +00001570AC_MSG_CHECKING(--enable-tclinterp argument)
1571AC_ARG_ENABLE(tclinterp,
1572 [ --enable-tclinterp Include Tcl interpreter.], ,
1573 [enable_tclinterp="no"])
1574AC_MSG_RESULT($enable_tclinterp)
1575
1576if test "$enable_tclinterp" = "yes"; then
1577
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001578 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001579 AC_MSG_CHECKING(--with-tclsh argument)
1580 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1581 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001582 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001583 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1584 AC_SUBST(vi_cv_path_tcl)
1585
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001586 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1587 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1588 tclsh_name="tclsh8.4"
1589 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1590 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001591 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001592 tclsh_name="tclsh8.2"
1593 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1594 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001595 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1596 tclsh_name="tclsh8.0"
1597 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1598 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001599 dnl still didn't find it, try without version number
1600 if test "X$vi_cv_path_tcl" = "X"; then
1601 tclsh_name="tclsh"
1602 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1603 fi
1604 if test "X$vi_cv_path_tcl" != "X"; then
1605 AC_MSG_CHECKING(Tcl version)
1606 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1607 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1608 AC_MSG_RESULT($tclver - OK);
1609 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 -`
1610
1611 AC_MSG_CHECKING(for location of Tcl include)
1612 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001613 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 +00001614 else
1615 dnl For Mac OS X 10.3, use the OS-provided framework location
1616 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1617 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001618 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001619 for try in $tclinc; do
1620 if test -f "$try/tcl.h"; then
1621 AC_MSG_RESULT($try/tcl.h)
1622 TCL_INC=$try
1623 break
1624 fi
1625 done
1626 if test -z "$TCL_INC"; then
1627 AC_MSG_RESULT(<not found>)
1628 SKIP_TCL=YES
1629 fi
1630 if test -z "$SKIP_TCL"; then
1631 AC_MSG_CHECKING(for location of tclConfig.sh script)
1632 if test "x$MACOSX" != "xyes"; then
1633 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001634 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001635 else
1636 dnl For Mac OS X 10.3, use the OS-provided framework location
1637 tclcnf="/System/Library/Frameworks/Tcl.framework"
1638 fi
1639 for try in $tclcnf; do
1640 if test -f $try/tclConfig.sh; then
1641 AC_MSG_RESULT($try/tclConfig.sh)
1642 . $try/tclConfig.sh
1643 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1644 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1645 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001646 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001647 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 +00001648 break
1649 fi
1650 done
1651 if test -z "$TCL_LIBS"; then
1652 AC_MSG_RESULT(<not found>)
1653 AC_MSG_CHECKING(for Tcl library by myself)
1654 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001655 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001656 for ext in .so .a ; do
1657 for ver in "" $tclver ; do
1658 for try in $tcllib ; do
1659 trylib=tcl$ver$ext
1660 if test -f $try/lib$trylib ; then
1661 AC_MSG_RESULT($try/lib$trylib)
1662 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1663 if test "`(uname) 2>/dev/null`" = SunOS &&
1664 uname -r | grep '^5' >/dev/null; then
1665 TCL_LIBS="$TCL_LIBS -R $try"
1666 fi
1667 break 3
1668 fi
1669 done
1670 done
1671 done
1672 if test -z "$TCL_LIBS"; then
1673 AC_MSG_RESULT(<not found>)
1674 SKIP_TCL=YES
1675 fi
1676 fi
1677 if test -z "$SKIP_TCL"; then
1678 AC_DEFINE(FEAT_TCL)
1679 TCL_SRC=if_tcl.c
1680 TCL_OBJ=objects/if_tcl.o
1681 TCL_PRO=if_tcl.pro
1682 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1683 fi
1684 fi
1685 else
1686 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1687 fi
1688 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001689 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1690 AC_MSG_ERROR([could not configure Tcl])
1691 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001692fi
1693AC_SUBST(TCL_SRC)
1694AC_SUBST(TCL_OBJ)
1695AC_SUBST(TCL_PRO)
1696AC_SUBST(TCL_CFLAGS)
1697AC_SUBST(TCL_LIBS)
1698
1699AC_MSG_CHECKING(--enable-rubyinterp argument)
1700AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001701 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001702 [enable_rubyinterp="no"])
1703AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001704if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001705 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001707 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1708 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1709 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001710 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001711 if test "X$vi_cv_path_ruby" != "X"; then
1712 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001713 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 +00001714 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001715 AC_MSG_CHECKING(Ruby rbconfig)
1716 ruby_rbconfig="RbConfig"
1717 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1718 ruby_rbconfig="Config"
1719 fi
1720 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001721 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001722 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 +00001723 if test "X$rubyhdrdir" != "X"; then
1724 AC_MSG_RESULT($rubyhdrdir)
1725 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001726 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1727 if test -d "$rubyarchdir"; then
1728 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001729 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001730 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001731 if test "X$rubyversion" = "X"; then
1732 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1733 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001734 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001735 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001736 if test "X$rubylibs" != "X"; then
1737 RUBY_LIBS="$rubylibs"
1738 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001739 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1740 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001741 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001742 if test -f "$rubylibdir/$librubya"; then
1743 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001744 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1745 elif test "$librubyarg" = "libruby.a"; then
1746 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1747 librubyarg="-lruby"
1748 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001749 fi
1750
1751 if test "X$librubyarg" != "X"; then
1752 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1753 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001754 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001755 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001756 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1757 dnl be included if requested by passing --with-mac-arch to
1758 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001759 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001760 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001761 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001762 LDFLAGS="$rubyldflags $LDFLAGS"
1763 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001764 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 fi
1766 RUBY_SRC="if_ruby.c"
1767 RUBY_OBJ="objects/if_ruby.o"
1768 RUBY_PRO="if_ruby.pro"
1769 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001770 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001771 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001772 AC_DEFINE(DYNAMIC_RUBY)
1773 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1774 RUBY_LIBS=
1775 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001777 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 fi
1779 else
1780 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1781 fi
1782 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001783
1784 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1785 AC_MSG_ERROR([could not configure Ruby])
1786 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001787fi
1788AC_SUBST(RUBY_SRC)
1789AC_SUBST(RUBY_OBJ)
1790AC_SUBST(RUBY_PRO)
1791AC_SUBST(RUBY_CFLAGS)
1792AC_SUBST(RUBY_LIBS)
1793
1794AC_MSG_CHECKING(--enable-cscope argument)
1795AC_ARG_ENABLE(cscope,
1796 [ --enable-cscope Include cscope interface.], ,
1797 [enable_cscope="no"])
1798AC_MSG_RESULT($enable_cscope)
1799if test "$enable_cscope" = "yes"; then
1800 AC_DEFINE(FEAT_CSCOPE)
1801fi
1802
1803AC_MSG_CHECKING(--enable-workshop argument)
1804AC_ARG_ENABLE(workshop,
1805 [ --enable-workshop Include Sun Visual Workshop support.], ,
1806 [enable_workshop="no"])
1807AC_MSG_RESULT($enable_workshop)
1808if test "$enable_workshop" = "yes"; then
1809 AC_DEFINE(FEAT_SUN_WORKSHOP)
1810 WORKSHOP_SRC="workshop.c integration.c"
1811 AC_SUBST(WORKSHOP_SRC)
1812 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1813 AC_SUBST(WORKSHOP_OBJ)
1814 if test "${enable_gui-xxx}" = xxx; then
1815 enable_gui=motif
1816 fi
1817fi
1818
1819AC_MSG_CHECKING(--disable-netbeans argument)
1820AC_ARG_ENABLE(netbeans,
1821 [ --disable-netbeans Disable NetBeans integration support.],
1822 , [enable_netbeans="yes"])
1823if test "$enable_netbeans" = "yes"; then
1824 AC_MSG_RESULT(no)
1825 dnl On Solaris we need the socket and nsl library.
1826 AC_CHECK_LIB(socket, socket)
1827 AC_CHECK_LIB(nsl, gethostbyname)
1828 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1829 AC_TRY_LINK([
1830#include <stdio.h>
1831#include <stdlib.h>
1832#include <stdarg.h>
1833#include <fcntl.h>
1834#include <netdb.h>
1835#include <netinet/in.h>
1836#include <errno.h>
1837#include <sys/types.h>
1838#include <sys/socket.h>
1839 /* Check bitfields */
1840 struct nbbuf {
1841 unsigned int initDone:1;
1842 ushort signmaplen;
1843 };
1844 ], [
1845 /* Check creating a socket. */
1846 struct sockaddr_in server;
1847 (void)socket(AF_INET, SOCK_STREAM, 0);
1848 (void)htons(100);
1849 (void)gethostbyname("microsoft.com");
1850 if (errno == ECONNREFUSED)
1851 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1852 ],
1853 AC_MSG_RESULT(yes),
1854 AC_MSG_RESULT(no); enable_netbeans="no")
1855else
1856 AC_MSG_RESULT(yes)
1857fi
1858if test "$enable_netbeans" = "yes"; then
1859 AC_DEFINE(FEAT_NETBEANS_INTG)
1860 NETBEANS_SRC="netbeans.c"
1861 AC_SUBST(NETBEANS_SRC)
1862 NETBEANS_OBJ="objects/netbeans.o"
1863 AC_SUBST(NETBEANS_OBJ)
1864fi
1865
1866AC_MSG_CHECKING(--enable-sniff argument)
1867AC_ARG_ENABLE(sniff,
1868 [ --enable-sniff Include Sniff interface.], ,
1869 [enable_sniff="no"])
1870AC_MSG_RESULT($enable_sniff)
1871if test "$enable_sniff" = "yes"; then
1872 AC_DEFINE(FEAT_SNIFF)
1873 SNIFF_SRC="if_sniff.c"
1874 AC_SUBST(SNIFF_SRC)
1875 SNIFF_OBJ="objects/if_sniff.o"
1876 AC_SUBST(SNIFF_OBJ)
1877fi
1878
1879AC_MSG_CHECKING(--enable-multibyte argument)
1880AC_ARG_ENABLE(multibyte,
1881 [ --enable-multibyte Include multibyte editing support.], ,
1882 [enable_multibyte="no"])
1883AC_MSG_RESULT($enable_multibyte)
1884if test "$enable_multibyte" = "yes"; then
1885 AC_DEFINE(FEAT_MBYTE)
1886fi
1887
1888AC_MSG_CHECKING(--enable-hangulinput argument)
1889AC_ARG_ENABLE(hangulinput,
1890 [ --enable-hangulinput Include Hangul input support.], ,
1891 [enable_hangulinput="no"])
1892AC_MSG_RESULT($enable_hangulinput)
1893
1894AC_MSG_CHECKING(--enable-xim argument)
1895AC_ARG_ENABLE(xim,
1896 [ --enable-xim Include XIM input support.],
1897 AC_MSG_RESULT($enable_xim),
1898 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899
1900AC_MSG_CHECKING(--enable-fontset argument)
1901AC_ARG_ENABLE(fontset,
1902 [ --enable-fontset Include X fontset output support.], ,
1903 [enable_fontset="no"])
1904AC_MSG_RESULT($enable_fontset)
1905dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1906
1907test -z "$with_x" && with_x=yes
1908test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1909if test "$with_x" = no; then
1910 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1911else
1912 dnl Do this check early, so that its failure can override user requests.
1913
1914 AC_PATH_PROG(xmkmfpath, xmkmf)
1915
1916 AC_PATH_XTRA
1917
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001918 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001919 dnl be compiled with a special option.
1920 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001921 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 CFLAGS="$CFLAGS -W c,dll"
1923 LDFLAGS="$LDFLAGS -W l,dll"
1924 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1925 fi
1926
1927 dnl On my HPUX system the X include dir is found, but the lib dir not.
1928 dnl This is a desparate try to fix this.
1929
1930 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1931 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1932 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1933 X_LIBS="$X_LIBS -L$x_libraries"
1934 if test "`(uname) 2>/dev/null`" = SunOS &&
1935 uname -r | grep '^5' >/dev/null; then
1936 X_LIBS="$X_LIBS -R $x_libraries"
1937 fi
1938 fi
1939
1940 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1941 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1942 AC_MSG_RESULT(Corrected X includes to $x_includes)
1943 X_CFLAGS="$X_CFLAGS -I$x_includes"
1944 fi
1945
1946 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1947 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1948 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1949 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1950 dnl Same for "-R/usr/lib ".
1951 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1952
1953
1954 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001955 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1956 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001957 AC_MSG_CHECKING(if X11 header files can be found)
1958 cflags_save=$CFLAGS
1959 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001960 AC_TRY_COMPILE([#include <X11/Xlib.h>
1961#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001962 AC_MSG_RESULT(yes),
1963 AC_MSG_RESULT(no); no_x=yes)
1964 CFLAGS=$cflags_save
1965
1966 if test "${no_x-no}" = yes; then
1967 with_x=no
1968 else
1969 AC_DEFINE(HAVE_X11)
1970 X_LIB="-lXt -lX11";
1971 AC_SUBST(X_LIB)
1972
1973 ac_save_LDFLAGS="$LDFLAGS"
1974 LDFLAGS="-L$x_libraries $LDFLAGS"
1975
1976 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1977 dnl For HP-UX 10.20 it must be before -lSM -lICE
1978 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1979 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1980
1981 dnl Some systems need -lnsl -lsocket when testing for ICE.
1982 dnl The check above doesn't do this, try here (again). Also needed to get
1983 dnl them after Xdmcp. link.sh will remove them when not needed.
1984 dnl Check for other function than above to avoid the cached value
1985 AC_CHECK_LIB(ICE, IceOpenConnection,
1986 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1987
1988 dnl Check for -lXpm (needed for some versions of Motif)
1989 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1990 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1991 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1992
1993 dnl Check that the X11 header files don't use implicit declarations
1994 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1995 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001996 dnl -Werror is GCC only, others like Solaris Studio might not like it
1997 if test "$GCC" = yes; then
1998 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1999 else
2000 CFLAGS="$CFLAGS $X_CFLAGS"
2001 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2003 AC_MSG_RESULT(no),
2004 CFLAGS="$CFLAGS -Wno-implicit-int"
2005 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2006 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2007 AC_MSG_RESULT(test failed)
2008 )
2009 )
2010 CFLAGS=$cflags_save
2011
2012 LDFLAGS="$ac_save_LDFLAGS"
2013
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002014 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2015 AC_CACHE_VAL(ac_cv_small_wchar_t,
2016 [AC_TRY_RUN([
2017#include <X11/Xlib.h>
2018#if STDC_HEADERS
2019# include <stdlib.h>
2020# include <stddef.h>
2021#endif
2022 main()
2023 {
2024 if (sizeof(wchar_t) <= 2)
2025 exit(1);
2026 exit(0);
2027 }],
2028 ac_cv_small_wchar_t="no",
2029 ac_cv_small_wchar_t="yes",
2030 AC_MSG_ERROR(failed to compile test program))])
2031 AC_MSG_RESULT($ac_cv_small_wchar_t)
2032 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2033 AC_DEFINE(SMALL_WCHAR_T)
2034 fi
2035
Bram Moolenaar071d4272004-06-13 20:20:40 +00002036 fi
2037fi
2038
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002039test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002040
2041AC_MSG_CHECKING(--enable-gui argument)
2042AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002043 [ --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 +00002044
2045dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2046dnl Do not use character classes for portability with old tools.
2047enable_gui_canon=`echo "_$enable_gui" | \
2048 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2049
2050dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002051SKIP_GTK2=YES
2052SKIP_GNOME=YES
2053SKIP_MOTIF=YES
2054SKIP_ATHENA=YES
2055SKIP_NEXTAW=YES
2056SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002057SKIP_CARBON=YES
2058GUITYPE=NONE
2059
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002060if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002061 SKIP_PHOTON=
2062 case "$enable_gui_canon" in
2063 no) AC_MSG_RESULT(no GUI support)
2064 SKIP_PHOTON=YES ;;
2065 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2066 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2067 photon) AC_MSG_RESULT(Photon GUI support) ;;
2068 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2069 SKIP_PHOTON=YES ;;
2070 esac
2071
2072elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2073 SKIP_CARBON=
2074 case "$enable_gui_canon" in
2075 no) AC_MSG_RESULT(no GUI support)
2076 SKIP_CARBON=YES ;;
2077 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002078 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2079 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002080 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2081 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2082 SKIP_CARBON=YES ;;
2083 esac
2084
2085else
2086
Bram Moolenaar071d4272004-06-13 20:20:40 +00002087 case "$enable_gui_canon" in
2088 no|none) AC_MSG_RESULT(no GUI support) ;;
2089 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002090 SKIP_GTK2=
2091 SKIP_GNOME=
2092 SKIP_MOTIF=
2093 SKIP_ATHENA=
2094 SKIP_NEXTAW=
2095 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002096 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002098 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2099 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002100 SKIP_GTK2=;;
2101 motif) AC_MSG_RESULT(Motif GUI support)
2102 SKIP_MOTIF=;;
2103 athena) AC_MSG_RESULT(Athena GUI support)
2104 SKIP_ATHENA=;;
2105 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2106 SKIP_NEXTAW=;;
2107 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2108 esac
2109
2110fi
2111
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2113 -a "$enable_gui_canon" != "gnome2"; then
2114 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2115 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002116 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002117 , enable_gtk2_check="yes")
2118 AC_MSG_RESULT($enable_gtk2_check)
2119 if test "x$enable_gtk2_check" = "xno"; then
2120 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002121 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002122 fi
2123fi
2124
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002125if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 AC_MSG_CHECKING(whether or not to look for GNOME)
2127 AC_ARG_ENABLE(gnome-check,
2128 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2129 , enable_gnome_check="no")
2130 AC_MSG_RESULT($enable_gnome_check)
2131 if test "x$enable_gnome_check" = "xno"; then
2132 SKIP_GNOME=YES
2133 fi
2134fi
2135
2136if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2137 AC_MSG_CHECKING(whether or not to look for Motif)
2138 AC_ARG_ENABLE(motif-check,
2139 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2140 , enable_motif_check="yes")
2141 AC_MSG_RESULT($enable_motif_check)
2142 if test "x$enable_motif_check" = "xno"; then
2143 SKIP_MOTIF=YES
2144 fi
2145fi
2146
2147if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2148 AC_MSG_CHECKING(whether or not to look for Athena)
2149 AC_ARG_ENABLE(athena-check,
2150 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2151 , enable_athena_check="yes")
2152 AC_MSG_RESULT($enable_athena_check)
2153 if test "x$enable_athena_check" = "xno"; then
2154 SKIP_ATHENA=YES
2155 fi
2156fi
2157
2158if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2159 AC_MSG_CHECKING(whether or not to look for neXtaw)
2160 AC_ARG_ENABLE(nextaw-check,
2161 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2162 , enable_nextaw_check="yes")
2163 AC_MSG_RESULT($enable_nextaw_check);
2164 if test "x$enable_nextaw_check" = "xno"; then
2165 SKIP_NEXTAW=YES
2166 fi
2167fi
2168
2169if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2170 AC_MSG_CHECKING(whether or not to look for Carbon)
2171 AC_ARG_ENABLE(carbon-check,
2172 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2173 , enable_carbon_check="yes")
2174 AC_MSG_RESULT($enable_carbon_check);
2175 if test "x$enable_carbon_check" = "xno"; then
2176 SKIP_CARBON=YES
2177 fi
2178fi
2179
Bram Moolenaar843ee412004-06-30 16:16:41 +00002180
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2182 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002183 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184 AC_MSG_RESULT(yes);
2185 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002186 if test "$VIMNAME" = "vim"; then
2187 VIMNAME=Vim
2188 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002189
Bram Moolenaar164fca32010-07-14 13:58:07 +02002190 if test "x$MACARCH" = "xboth"; then
2191 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2192 else
2193 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2194 fi
2195
Bram Moolenaar14716812006-05-04 21:54:08 +00002196 dnl Default install directory is not /usr/local
2197 if test x$prefix = xNONE; then
2198 prefix=/Applications
2199 fi
2200
2201 dnl Sorry for the hard coded default
2202 datadir='${prefix}/Vim.app/Contents/Resources'
2203
Bram Moolenaar071d4272004-06-13 20:20:40 +00002204 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002205 SKIP_GTK2=YES;
2206 SKIP_GNOME=YES;
2207 SKIP_MOTIF=YES;
2208 SKIP_ATHENA=YES;
2209 SKIP_NEXTAW=YES;
2210 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002211 SKIP_CARBON=YES
2212fi
2213
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002215dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216dnl
2217dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002218dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002219dnl
2220AC_DEFUN(AM_PATH_GTK,
2221[
2222 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2223 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002224 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002225 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2226 no_gtk=""
2227 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2228 && $PKG_CONFIG --exists gtk+-2.0; then
2229 {
2230 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2231 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2232 dnl something like that.
2233 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002234 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002235 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2236 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2237 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2238 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2239 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2240 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2241 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2242 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243 else
2244 no_gtk=yes
2245 fi
2246
2247 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2248 {
2249 ac_save_CFLAGS="$CFLAGS"
2250 ac_save_LIBS="$LIBS"
2251 CFLAGS="$CFLAGS $GTK_CFLAGS"
2252 LIBS="$LIBS $GTK_LIBS"
2253
2254 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002255 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002256 dnl
2257 rm -f conf.gtktest
2258 AC_TRY_RUN([
2259#include <gtk/gtk.h>
2260#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002261#if STDC_HEADERS
2262# include <stdlib.h>
2263# include <stddef.h>
2264#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002265
2266int
2267main ()
2268{
2269int major, minor, micro;
2270char *tmp_version;
2271
2272system ("touch conf.gtktest");
2273
2274/* HP/UX 9 (%@#!) writes to sscanf strings */
2275tmp_version = g_strdup("$min_gtk_version");
2276if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2277 printf("%s, bad version string\n", "$min_gtk_version");
2278 exit(1);
2279 }
2280
2281if ((gtk_major_version > major) ||
2282 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2283 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2284 (gtk_micro_version >= micro)))
2285{
2286 return 0;
2287}
2288return 1;
2289}
2290],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2291 CFLAGS="$ac_save_CFLAGS"
2292 LIBS="$ac_save_LIBS"
2293 }
2294 fi
2295 if test "x$no_gtk" = x ; then
2296 if test "x$enable_gtktest" = "xyes"; then
2297 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2298 else
2299 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2300 fi
2301 ifelse([$2], , :, [$2])
2302 else
2303 {
2304 AC_MSG_RESULT(no)
2305 GTK_CFLAGS=""
2306 GTK_LIBS=""
2307 ifelse([$3], , :, [$3])
2308 }
2309 fi
2310 }
2311 else
2312 GTK_CFLAGS=""
2313 GTK_LIBS=""
2314 ifelse([$3], , :, [$3])
2315 fi
2316 AC_SUBST(GTK_CFLAGS)
2317 AC_SUBST(GTK_LIBS)
2318 rm -f conf.gtktest
2319])
2320
2321dnl ---------------------------------------------------------------------------
2322dnl gnome
2323dnl ---------------------------------------------------------------------------
2324AC_DEFUN([GNOME_INIT_HOOK],
2325[
2326 AC_SUBST(GNOME_LIBS)
2327 AC_SUBST(GNOME_LIBDIR)
2328 AC_SUBST(GNOME_INCLUDEDIR)
2329
2330 AC_ARG_WITH(gnome-includes,
2331 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2332 [CFLAGS="$CFLAGS -I$withval"]
2333 )
2334
2335 AC_ARG_WITH(gnome-libs,
2336 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2337 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2338 )
2339
2340 AC_ARG_WITH(gnome,
2341 [ --with-gnome Specify prefix for GNOME files],
2342 if test x$withval = xyes; then
2343 want_gnome=yes
2344 ifelse([$1], [], :, [$1])
2345 else
2346 if test "x$withval" = xno; then
2347 want_gnome=no
2348 else
2349 want_gnome=yes
2350 LDFLAGS="$LDFLAGS -L$withval/lib"
2351 CFLAGS="$CFLAGS -I$withval/include"
2352 gnome_prefix=$withval/lib
2353 fi
2354 fi,
2355 want_gnome=yes)
2356
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002357 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002358 {
2359 AC_MSG_CHECKING(for libgnomeui-2.0)
2360 if $PKG_CONFIG --exists libgnomeui-2.0; then
2361 AC_MSG_RESULT(yes)
2362 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2363 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2364 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002365
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002366 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2367 dnl This might not be the right way but it works for me...
2368 AC_MSG_CHECKING(for FreeBSD)
2369 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2370 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002371 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002372 GNOME_LIBS="$GNOME_LIBS -pthread"
2373 else
2374 AC_MSG_RESULT(no)
2375 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 $1
2377 else
2378 AC_MSG_RESULT(not found)
2379 if test "x$2" = xfail; then
2380 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2381 fi
2382 fi
2383 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002384 fi
2385])
2386
2387AC_DEFUN([GNOME_INIT],[
2388 GNOME_INIT_HOOK([],fail)
2389])
2390
2391
2392dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002393dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002394dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002395if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002396
2397 AC_MSG_CHECKING(--disable-gtktest argument)
2398 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2399 , enable_gtktest=yes)
2400 if test "x$enable_gtktest" = "xyes" ; then
2401 AC_MSG_RESULT(gtk test enabled)
2402 else
2403 AC_MSG_RESULT(gtk test disabled)
2404 fi
2405
Bram Moolenaar071d4272004-06-13 20:20:40 +00002406 if test "X$PKG_CONFIG" = "X"; then
2407 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2408 fi
2409
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002410 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002411 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2412 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002413 AM_PATH_GTK(2.2.0,
2414 [GUI_LIB_LOC="$GTK_LIBDIR"
2415 GTK_LIBNAME="$GTK_LIBS"
2416 GUI_INC_LOC="$GTK_CFLAGS"], )
2417 if test "x$GTK_CFLAGS" != "x"; then
2418 SKIP_ATHENA=YES
2419 SKIP_NEXTAW=YES
2420 SKIP_MOTIF=YES
2421 GUITYPE=GTK
2422 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002423 fi
2424 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002425 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002426 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2427 || test "0$gtk_minor_version" -ge 2; then
2428 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2429 fi
2430 dnl
2431 dnl if GTK exists, then check for GNOME.
2432 dnl
2433 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002434 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002435 GNOME_INIT_HOOK([have_gnome=yes])
2436 if test "x$have_gnome" = xyes ; then
2437 AC_DEFINE(FEAT_GUI_GNOME)
2438 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2439 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002440 fi
2441 }
2442 fi
2443 fi
2444fi
2445
2446dnl Check for Motif include files location.
2447dnl The LAST one found is used, this makes the highest version to be used,
2448dnl e.g. when Motif1.2 and Motif2.0 are both present.
2449
2450if test -z "$SKIP_MOTIF"; then
2451 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"
2452 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2453 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2454
2455 AC_MSG_CHECKING(for location of Motif GUI includes)
2456 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2457 GUI_INC_LOC=
2458 for try in $gui_includes; do
2459 if test -f "$try/Xm/Xm.h"; then
2460 GUI_INC_LOC=$try
2461 fi
2462 done
2463 if test -n "$GUI_INC_LOC"; then
2464 if test "$GUI_INC_LOC" = /usr/include; then
2465 GUI_INC_LOC=
2466 AC_MSG_RESULT(in default path)
2467 else
2468 AC_MSG_RESULT($GUI_INC_LOC)
2469 fi
2470 else
2471 AC_MSG_RESULT(<not found>)
2472 SKIP_MOTIF=YES
2473 fi
2474fi
2475
2476dnl Check for Motif library files location. In the same order as the include
2477dnl files, to avoid a mixup if several versions are present
2478
2479if test -z "$SKIP_MOTIF"; then
2480 AC_MSG_CHECKING(--with-motif-lib argument)
2481 AC_ARG_WITH(motif-lib,
2482 [ --with-motif-lib=STRING Library for Motif ],
2483 [ MOTIF_LIBNAME="${withval}" ] )
2484
2485 if test -n "$MOTIF_LIBNAME"; then
2486 AC_MSG_RESULT($MOTIF_LIBNAME)
2487 GUI_LIB_LOC=
2488 else
2489 AC_MSG_RESULT(no)
2490
2491 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2492 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2493
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002494 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2495 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002496 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002497 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 +00002498 GUI_LIB_LOC=
2499 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002500 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002501 if test -f "$libtry"; then
2502 GUI_LIB_LOC=$try
2503 fi
2504 done
2505 done
2506 if test -n "$GUI_LIB_LOC"; then
2507 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002508 if test "$GUI_LIB_LOC" = /usr/lib \
2509 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2510 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002511 GUI_LIB_LOC=
2512 AC_MSG_RESULT(in default path)
2513 else
2514 if test -n "$GUI_LIB_LOC"; then
2515 AC_MSG_RESULT($GUI_LIB_LOC)
2516 if test "`(uname) 2>/dev/null`" = SunOS &&
2517 uname -r | grep '^5' >/dev/null; then
2518 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2519 fi
2520 fi
2521 fi
2522 MOTIF_LIBNAME=-lXm
2523 else
2524 AC_MSG_RESULT(<not found>)
2525 SKIP_MOTIF=YES
2526 fi
2527 fi
2528fi
2529
2530if test -z "$SKIP_MOTIF"; then
2531 SKIP_ATHENA=YES
2532 SKIP_NEXTAW=YES
2533 GUITYPE=MOTIF
2534 AC_SUBST(MOTIF_LIBNAME)
2535fi
2536
2537dnl Check if the Athena files can be found
2538
2539GUI_X_LIBS=
2540
2541if test -z "$SKIP_ATHENA"; then
2542 AC_MSG_CHECKING(if Athena header files can be found)
2543 cflags_save=$CFLAGS
2544 CFLAGS="$CFLAGS $X_CFLAGS"
2545 AC_TRY_COMPILE([
2546#include <X11/Intrinsic.h>
2547#include <X11/Xaw/Paned.h>], ,
2548 AC_MSG_RESULT(yes),
2549 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2550 CFLAGS=$cflags_save
2551fi
2552
2553if test -z "$SKIP_ATHENA"; then
2554 GUITYPE=ATHENA
2555fi
2556
2557if test -z "$SKIP_NEXTAW"; then
2558 AC_MSG_CHECKING(if neXtaw header files can be found)
2559 cflags_save=$CFLAGS
2560 CFLAGS="$CFLAGS $X_CFLAGS"
2561 AC_TRY_COMPILE([
2562#include <X11/Intrinsic.h>
2563#include <X11/neXtaw/Paned.h>], ,
2564 AC_MSG_RESULT(yes),
2565 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2566 CFLAGS=$cflags_save
2567fi
2568
2569if test -z "$SKIP_NEXTAW"; then
2570 GUITYPE=NEXTAW
2571fi
2572
2573if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2574 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2575 dnl Avoid adding it when it twice
2576 if test -n "$GUI_INC_LOC"; then
2577 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2578 fi
2579 if test -n "$GUI_LIB_LOC"; then
2580 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2581 fi
2582
2583 dnl Check for -lXext and then for -lXmu
2584 ldflags_save=$LDFLAGS
2585 LDFLAGS="$X_LIBS $LDFLAGS"
2586 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2587 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2588 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2589 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2590 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2591 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2592 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2593 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2594 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2595 if test -z "$SKIP_MOTIF"; then
2596 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2597 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2598 fi
2599 LDFLAGS=$ldflags_save
2600
2601 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2602 AC_MSG_CHECKING(for extra X11 defines)
2603 NARROW_PROTO=
2604 rm -fr conftestdir
2605 if mkdir conftestdir; then
2606 cd conftestdir
2607 cat > Imakefile <<'EOF'
2608acfindx:
2609 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2610EOF
2611 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2612 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2613 fi
2614 cd ..
2615 rm -fr conftestdir
2616 fi
2617 if test -z "$NARROW_PROTO"; then
2618 AC_MSG_RESULT(no)
2619 else
2620 AC_MSG_RESULT($NARROW_PROTO)
2621 fi
2622 AC_SUBST(NARROW_PROTO)
2623fi
2624
2625dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2626dnl use the X11 include path
2627if test "$enable_xsmp" = "yes"; then
2628 cppflags_save=$CPPFLAGS
2629 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2630 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2631 CPPFLAGS=$cppflags_save
2632fi
2633
2634
Bram Moolenaare667c952010-07-05 22:57:59 +02002635if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002636 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2637 cppflags_save=$CPPFLAGS
2638 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2639 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2640
2641 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2642 if test ! "$enable_xim" = "no"; then
2643 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2644 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2645 AC_MSG_RESULT(yes),
2646 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2647 fi
2648 CPPFLAGS=$cppflags_save
2649
2650 dnl automatically enable XIM when hangul input isn't enabled
2651 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2652 -a "x$GUITYPE" != "xNONE" ; then
2653 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2654 enable_xim="yes"
2655 fi
2656fi
2657
2658if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2659 cppflags_save=$CPPFLAGS
2660 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002661dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2662 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2663 AC_TRY_COMPILE([
2664#include <X11/Intrinsic.h>
2665#include <X11/Xmu/Editres.h>],
2666 [int i; i = 0;],
2667 AC_MSG_RESULT(yes)
2668 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2669 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670 CPPFLAGS=$cppflags_save
2671fi
2672
2673dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2674if test -z "$SKIP_MOTIF"; then
2675 cppflags_save=$CPPFLAGS
2676 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002677 if test "$zOSUnix" = "yes"; then
2678 xmheader="Xm/Xm.h"
2679 else
2680 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002681 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002682 fi
2683 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002684
Bram Moolenaar77c19352012-06-13 19:19:41 +02002685 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002686 dnl Solaris uses XpmAttributes_21, very annoying.
2687 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2688 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2689 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2690 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2691 )
2692 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002693 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002694 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002695 CPPFLAGS=$cppflags_save
2696fi
2697
2698if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2699 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2700 enable_xim="no"
2701fi
2702if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2703 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2704 enable_fontset="no"
2705fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002706if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002707 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2708 enable_fontset="no"
2709fi
2710
Bram Moolenaar071d4272004-06-13 20:20:40 +00002711if test -z "$SKIP_PHOTON"; then
2712 GUITYPE=PHOTONGUI
2713fi
2714
2715AC_SUBST(GUI_INC_LOC)
2716AC_SUBST(GUI_LIB_LOC)
2717AC_SUBST(GUITYPE)
2718AC_SUBST(GUI_X_LIBS)
2719
2720if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2721 AC_MSG_ERROR([cannot use workshop without Motif])
2722fi
2723
2724dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2725if test "$enable_xim" = "yes"; then
2726 AC_DEFINE(FEAT_XIM)
2727fi
2728if test "$enable_fontset" = "yes"; then
2729 AC_DEFINE(FEAT_XFONTSET)
2730fi
2731
2732
2733dnl ---------------------------------------------------------------------------
2734dnl end of GUI-checking
2735dnl ---------------------------------------------------------------------------
2736
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002737dnl Check for Cygwin, which needs an extra source file if not using X11
2738AC_MSG_CHECKING(for CYGWIN environment)
2739case `uname` in
2740 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2741 AC_MSG_CHECKING(for CYGWIN clipboard support)
2742 if test "x$with_x" = "xno" ; then
2743 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2744 AC_MSG_RESULT(yes)
2745 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2746 else
2747 AC_MSG_RESULT(no - using X11)
2748 fi ;;
2749
2750 *) CYGWIN=no; AC_MSG_RESULT(no);;
2751esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002752
2753dnl Only really enable hangul input when GUI and XFONTSET are available
2754if test "$enable_hangulinput" = "yes"; then
2755 if test "x$GUITYPE" = "xNONE"; then
2756 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2757 enable_hangulinput=no
2758 else
2759 AC_DEFINE(FEAT_HANGULIN)
2760 HANGULIN_SRC=hangulin.c
2761 AC_SUBST(HANGULIN_SRC)
2762 HANGULIN_OBJ=objects/hangulin.o
2763 AC_SUBST(HANGULIN_OBJ)
2764 fi
2765fi
2766
2767dnl Checks for libraries and include files.
2768
Bram Moolenaar446cb832008-06-24 21:56:24 +00002769AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2770 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002771 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002772#include "confdefs.h"
2773#include <ctype.h>
2774#if STDC_HEADERS
2775# include <stdlib.h>
2776# include <stddef.h>
2777#endif
2778main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002779 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002780 vim_cv_toupper_broken=yes
2781 ],[
2782 vim_cv_toupper_broken=no
2783 ],[
2784 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2785 ])])
2786
2787if test "x$vim_cv_toupper_broken" = "xyes" ; then
2788 AC_DEFINE(BROKEN_TOUPPER)
2789fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002790
2791AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002792AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2794 AC_MSG_RESULT(no))
2795
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002796AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2797AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2798 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2799 AC_MSG_RESULT(no))
2800
Bram Moolenaar071d4272004-06-13 20:20:40 +00002801dnl Checks for header files.
2802AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2803dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2804if test "$HAS_ELF" = 1; then
2805 AC_CHECK_LIB(elf, main)
2806fi
2807
2808AC_HEADER_DIRENT
2809
Bram Moolenaar071d4272004-06-13 20:20:40 +00002810dnl If sys/wait.h is not found it might still exist but not be POSIX
2811dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2812if test $ac_cv_header_sys_wait_h = no; then
2813 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2814 AC_TRY_COMPILE([#include <sys/wait.h>],
2815 [union wait xx, yy; xx = yy],
2816 AC_MSG_RESULT(yes)
2817 AC_DEFINE(HAVE_SYS_WAIT_H)
2818 AC_DEFINE(HAVE_UNION_WAIT),
2819 AC_MSG_RESULT(no))
2820fi
2821
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002822AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2823 sys/select.h sys/utsname.h termcap.h fcntl.h \
2824 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2825 termio.h iconv.h inttypes.h langinfo.h math.h \
2826 unistd.h stropts.h errno.h sys/resource.h \
2827 sys/systeminfo.h locale.h sys/stream.h termios.h \
2828 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2829 utime.h sys/param.h libintl.h libgen.h \
2830 util/debug.h util/msg18n.h frame.h sys/acl.h \
2831 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002832
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002833dnl sys/ptem.h depends on sys/stream.h on Solaris
2834AC_CHECK_HEADERS(sys/ptem.h, [], [],
2835[#if defined HAVE_SYS_STREAM_H
2836# include <sys/stream.h>
2837#endif])
2838
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002839dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2840AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2841[#if defined HAVE_SYS_PARAM_H
2842# include <sys/param.h>
2843#endif])
2844
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002845
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002846dnl pthread_np.h may exist but can only be used after including pthread.h
2847AC_MSG_CHECKING([for pthread_np.h])
2848AC_TRY_COMPILE([
2849#include <pthread.h>
2850#include <pthread_np.h>],
2851 [int i; i = 0;],
2852 AC_MSG_RESULT(yes)
2853 AC_DEFINE(HAVE_PTHREAD_NP_H),
2854 AC_MSG_RESULT(no))
2855
Bram Moolenaare344bea2005-09-01 20:46:49 +00002856AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002857if test "x$MACOSX" = "xyes"; then
2858 dnl The strings.h file on OS/X contains a warning and nothing useful.
2859 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2860else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002861
2862dnl Check if strings.h and string.h can both be included when defined.
2863AC_MSG_CHECKING([if strings.h can be included after string.h])
2864cppflags_save=$CPPFLAGS
2865CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2866AC_TRY_COMPILE([
2867#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2868# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2869 /* but don't do it on AIX 5.1 (Uribarri) */
2870#endif
2871#ifdef HAVE_XM_XM_H
2872# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2873#endif
2874#ifdef HAVE_STRING_H
2875# include <string.h>
2876#endif
2877#if defined(HAVE_STRINGS_H)
2878# include <strings.h>
2879#endif
2880 ], [int i; i = 0;],
2881 AC_MSG_RESULT(yes),
2882 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2883 AC_MSG_RESULT(no))
2884CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002885fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886
2887dnl Checks for typedefs, structures, and compiler characteristics.
2888AC_PROG_GCC_TRADITIONAL
2889AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002890AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002891AC_TYPE_MODE_T
2892AC_TYPE_OFF_T
2893AC_TYPE_PID_T
2894AC_TYPE_SIZE_T
2895AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002896AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002897
Bram Moolenaar071d4272004-06-13 20:20:40 +00002898AC_HEADER_TIME
2899AC_CHECK_TYPE(ino_t, long)
2900AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002901AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002902
2903AC_MSG_CHECKING(for rlim_t)
2904if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2905 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2906else
2907 AC_EGREP_CPP(dnl
2908changequote(<<,>>)dnl
2909<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2910changequote([,]),
2911 [
2912#include <sys/types.h>
2913#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002914# include <stdlib.h>
2915# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002916#endif
2917#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002918# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002919#endif
2920 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2921 AC_MSG_RESULT($ac_cv_type_rlim_t)
2922fi
2923if test $ac_cv_type_rlim_t = no; then
2924 cat >> confdefs.h <<\EOF
2925#define rlim_t unsigned long
2926EOF
2927fi
2928
2929AC_MSG_CHECKING(for stack_t)
2930if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2931 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2932else
2933 AC_EGREP_CPP(stack_t,
2934 [
2935#include <sys/types.h>
2936#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002937# include <stdlib.h>
2938# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002939#endif
2940#include <signal.h>
2941 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2942 AC_MSG_RESULT($ac_cv_type_stack_t)
2943fi
2944if test $ac_cv_type_stack_t = no; then
2945 cat >> confdefs.h <<\EOF
2946#define stack_t struct sigaltstack
2947EOF
2948fi
2949
2950dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2951AC_MSG_CHECKING(whether stack_t has an ss_base field)
2952AC_TRY_COMPILE([
2953#include <sys/types.h>
2954#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002955# include <stdlib.h>
2956# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957#endif
2958#include <signal.h>
2959#include "confdefs.h"
2960 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2961 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2962 AC_MSG_RESULT(no))
2963
2964olibs="$LIBS"
2965AC_MSG_CHECKING(--with-tlib argument)
2966AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2967if test -n "$with_tlib"; then
2968 AC_MSG_RESULT($with_tlib)
2969 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002970 AC_MSG_CHECKING(for linking with $with_tlib library)
2971 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2972 dnl Need to check for tgetent() below.
2973 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002974else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002975 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002976 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2977 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002978 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002979 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002980 dnl Older versions of ncurses have bugs, get a new one!
2981 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002982 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002983 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002984 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2985 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002986 esac
2987 for libname in $tlibs; do
2988 AC_CHECK_LIB(${libname}, tgetent,,)
2989 if test "x$olibs" != "x$LIBS"; then
2990 dnl It's possible that a library is found but it doesn't work
2991 dnl e.g., shared library that cannot be found
2992 dnl compile and run a test program to be sure
2993 AC_TRY_RUN([
2994#ifdef HAVE_TERMCAP_H
2995# include <termcap.h>
2996#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002997#if STDC_HEADERS
2998# include <stdlib.h>
2999# include <stddef.h>
3000#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003001main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3002 res="OK", res="FAIL", res="FAIL")
3003 if test "$res" = "OK"; then
3004 break
3005 fi
3006 AC_MSG_RESULT($libname library is not usable)
3007 LIBS="$olibs"
3008 fi
3009 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003010 if test "x$olibs" = "x$LIBS"; then
3011 AC_MSG_RESULT(no terminal library found)
3012 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003013fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003014
3015if test "x$olibs" = "x$LIBS"; then
3016 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003017 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003018 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3019 AC_MSG_RESULT(yes),
3020 AC_MSG_ERROR([NOT FOUND!
3021 You need to install a terminal library; for example ncurses.
3022 Or specify the name of the library with --with-tlib.]))
3023fi
3024
Bram Moolenaar446cb832008-06-24 21:56:24 +00003025AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3026 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003027 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003028#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003029#ifdef HAVE_TERMCAP_H
3030# include <termcap.h>
3031#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003032#ifdef HAVE_STRING_H
3033# include <string.h>
3034#endif
3035#if STDC_HEADERS
3036# include <stdlib.h>
3037# include <stddef.h>
3038#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003039main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003040{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003041 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003042 vim_cv_terminfo=no
3043 ],[
3044 vim_cv_terminfo=yes
3045 ],[
3046 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3047 ])
3048 ])
3049
3050if test "x$vim_cv_terminfo" = "xyes" ; then
3051 AC_DEFINE(TERMINFO)
3052fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003053
3054if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003055 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3056 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003057 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003059#ifdef HAVE_TERMCAP_H
3060# include <termcap.h>
3061#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003062#if STDC_HEADERS
3063# include <stdlib.h>
3064# include <stddef.h>
3065#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003066main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003067{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003068 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003069 vim_cv_tgent=zero
3070 ],[
3071 vim_cv_tgent=non-zero
3072 ],[
3073 AC_MSG_ERROR(failed to compile test program.)
3074 ])
3075 ])
3076
3077 if test "x$vim_cv_tgent" = "xzero" ; then
3078 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3079 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003080fi
3081
3082AC_MSG_CHECKING(whether termcap.h contains ospeed)
3083AC_TRY_LINK([
3084#ifdef HAVE_TERMCAP_H
3085# include <termcap.h>
3086#endif
3087 ], [ospeed = 20000],
3088 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3089 [AC_MSG_RESULT(no)
3090 AC_MSG_CHECKING(whether ospeed can be extern)
3091 AC_TRY_LINK([
3092#ifdef HAVE_TERMCAP_H
3093# include <termcap.h>
3094#endif
3095extern short ospeed;
3096 ], [ospeed = 20000],
3097 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3098 AC_MSG_RESULT(no))]
3099 )
3100
3101AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3102AC_TRY_LINK([
3103#ifdef HAVE_TERMCAP_H
3104# include <termcap.h>
3105#endif
3106 ], [if (UP == 0 && BC == 0) PC = 1],
3107 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3108 [AC_MSG_RESULT(no)
3109 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3110 AC_TRY_LINK([
3111#ifdef HAVE_TERMCAP_H
3112# include <termcap.h>
3113#endif
3114extern char *UP, *BC, PC;
3115 ], [if (UP == 0 && BC == 0) PC = 1],
3116 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3117 AC_MSG_RESULT(no))]
3118 )
3119
3120AC_MSG_CHECKING(whether tputs() uses outfuntype)
3121AC_TRY_COMPILE([
3122#ifdef HAVE_TERMCAP_H
3123# include <termcap.h>
3124#endif
3125 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3126 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3127 AC_MSG_RESULT(no))
3128
3129dnl On some SCO machines sys/select redefines struct timeval
3130AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3131AC_TRY_COMPILE([
3132#include <sys/types.h>
3133#include <sys/time.h>
3134#include <sys/select.h>], ,
3135 AC_MSG_RESULT(yes)
3136 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3137 AC_MSG_RESULT(no))
3138
3139dnl AC_DECL_SYS_SIGLIST
3140
3141dnl Checks for pty.c (copied from screen) ==========================
3142AC_MSG_CHECKING(for /dev/ptc)
3143if test -r /dev/ptc; then
3144 AC_DEFINE(HAVE_DEV_PTC)
3145 AC_MSG_RESULT(yes)
3146else
3147 AC_MSG_RESULT(no)
3148fi
3149
3150AC_MSG_CHECKING(for SVR4 ptys)
3151if test -c /dev/ptmx ; then
3152 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3153 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3154 AC_MSG_RESULT(no))
3155else
3156 AC_MSG_RESULT(no)
3157fi
3158
3159AC_MSG_CHECKING(for ptyranges)
3160if test -d /dev/ptym ; then
3161 pdir='/dev/ptym'
3162else
3163 pdir='/dev'
3164fi
3165dnl SCO uses ptyp%d
3166AC_EGREP_CPP(yes,
3167[#ifdef M_UNIX
3168 yes;
3169#endif
3170 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3171dnl if test -c /dev/ptyp19; then
3172dnl ptys=`echo /dev/ptyp??`
3173dnl else
3174dnl ptys=`echo $pdir/pty??`
3175dnl fi
3176if test "$ptys" != "$pdir/pty??" ; then
3177 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3178 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3179 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3180 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3181 AC_MSG_RESULT([$p0 / $p1])
3182else
3183 AC_MSG_RESULT([don't know])
3184fi
3185
3186dnl **** pty mode/group handling ****
3187dnl
3188dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003189rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003190AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3191 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003192 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003193#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003194#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003195#if STDC_HEADERS
3196# include <stdlib.h>
3197# include <stddef.h>
3198#endif
3199#ifdef HAVE_UNISTD_H
3200#include <unistd.h>
3201#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003202#include <sys/stat.h>
3203#include <stdio.h>
3204main()
3205{
3206 struct stat sb;
3207 char *x,*ttyname();
3208 int om, m;
3209 FILE *fp;
3210
3211 if (!(x = ttyname(0))) exit(1);
3212 if (stat(x, &sb)) exit(1);
3213 om = sb.st_mode;
3214 if (om & 002) exit(0);
3215 m = system("mesg y");
3216 if (m == -1 || m == 127) exit(1);
3217 if (stat(x, &sb)) exit(1);
3218 m = sb.st_mode;
3219 if (chmod(x, om)) exit(1);
3220 if (m & 002) exit(0);
3221 if (sb.st_gid == getgid()) exit(1);
3222 if (!(fp=fopen("conftest_grp", "w")))
3223 exit(1);
3224 fprintf(fp, "%d\n", sb.st_gid);
3225 fclose(fp);
3226 exit(0);
3227}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003228 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003229 if test -f conftest_grp; then
3230 vim_cv_tty_group=`cat conftest_grp`
3231 if test "x$vim_cv_tty_mode" = "x" ; then
3232 vim_cv_tty_mode=0620
3233 fi
3234 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3235 else
3236 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003237 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003238 fi
3239 ],[
3240 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003241 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003242 ],[
3243 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3244 ])
3245 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246rm -f conftest_grp
3247
Bram Moolenaar446cb832008-06-24 21:56:24 +00003248if test "x$vim_cv_tty_group" != "xworld" ; then
3249 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3250 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003251 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 +00003252 else
3253 AC_DEFINE(PTYMODE, 0620)
3254 fi
3255fi
3256
Bram Moolenaar071d4272004-06-13 20:20:40 +00003257dnl Checks for library functions. ===================================
3258
3259AC_TYPE_SIGNAL
3260
3261dnl find out what to use at the end of a signal function
3262if test $ac_cv_type_signal = void; then
3263 AC_DEFINE(SIGRETURN, [return])
3264else
3265 AC_DEFINE(SIGRETURN, [return 0])
3266fi
3267
3268dnl check if struct sigcontext is defined (used for SGI only)
3269AC_MSG_CHECKING(for struct sigcontext)
3270AC_TRY_COMPILE([
3271#include <signal.h>
3272test_sig()
3273{
3274 struct sigcontext *scont;
3275 scont = (struct sigcontext *)0;
3276 return 1;
3277} ], ,
3278 AC_MSG_RESULT(yes)
3279 AC_DEFINE(HAVE_SIGCONTEXT),
3280 AC_MSG_RESULT(no))
3281
3282dnl tricky stuff: try to find out if getcwd() is implemented with
3283dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003284AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3285 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003286 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003287#include "confdefs.h"
3288#ifdef HAVE_UNISTD_H
3289#include <unistd.h>
3290#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003291char *dagger[] = { "IFS=pwd", 0 };
3292main()
3293{
3294 char buffer[500];
3295 extern char **environ;
3296 environ = dagger;
3297 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003298}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003299 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003300 vim_cv_getcwd_broken=no
3301 ],[
3302 vim_cv_getcwd_broken=yes
3303 ],[
3304 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3305 ])
3306 ])
3307
3308if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3309 AC_DEFINE(BAD_GETCWD)
3310fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003311
Bram Moolenaar25153e12010-02-24 14:47:08 +01003312dnl Check for functions in one big call, to reduce the size of configure.
3313dnl Can only be used for functions that do not require any include.
3314AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003315 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003316 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003317 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003318 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003319 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3320 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003321AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003322
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003323dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3324dnl appropriate, so that off_t is 64 bits when needed.
3325AC_SYS_LARGEFILE
3326
Bram Moolenaar071d4272004-06-13 20:20:40 +00003327dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3328AC_MSG_CHECKING(for st_blksize)
3329AC_TRY_COMPILE(
3330[#include <sys/types.h>
3331#include <sys/stat.h>],
3332[ struct stat st;
3333 int n;
3334
3335 stat("/", &st);
3336 n = (int)st.st_blksize;],
3337 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3338 AC_MSG_RESULT(no))
3339
Bram Moolenaar446cb832008-06-24 21:56:24 +00003340AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3341 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003342 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003343#include "confdefs.h"
3344#if STDC_HEADERS
3345# include <stdlib.h>
3346# include <stddef.h>
3347#endif
3348#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003349#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003350main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003351 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003352 vim_cv_stat_ignores_slash=yes
3353 ],[
3354 vim_cv_stat_ignores_slash=no
3355 ],[
3356 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3357 ])
3358 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003359
Bram Moolenaar446cb832008-06-24 21:56:24 +00003360if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3361 AC_DEFINE(STAT_IGNORES_SLASH)
3362fi
3363
Bram Moolenaar071d4272004-06-13 20:20:40 +00003364dnl Link with iconv for charset translation, if not found without library.
3365dnl check for iconv() requires including iconv.h
3366dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3367dnl has been installed.
3368AC_MSG_CHECKING(for iconv_open())
3369save_LIBS="$LIBS"
3370LIBS="$LIBS -liconv"
3371AC_TRY_LINK([
3372#ifdef HAVE_ICONV_H
3373# include <iconv.h>
3374#endif
3375 ], [iconv_open("fr", "to");],
3376 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3377 LIBS="$save_LIBS"
3378 AC_TRY_LINK([
3379#ifdef HAVE_ICONV_H
3380# include <iconv.h>
3381#endif
3382 ], [iconv_open("fr", "to");],
3383 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3384 AC_MSG_RESULT(no)))
3385
3386
3387AC_MSG_CHECKING(for nl_langinfo(CODESET))
3388AC_TRY_LINK([
3389#ifdef HAVE_LANGINFO_H
3390# include <langinfo.h>
3391#endif
3392], [char *cs = nl_langinfo(CODESET);],
3393 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3394 AC_MSG_RESULT(no))
3395
Bram Moolenaar446cb832008-06-24 21:56:24 +00003396dnl Need various functions for floating point support. Only enable
3397dnl floating point when they are all present.
3398AC_CHECK_LIB(m, strtod)
3399AC_MSG_CHECKING([for strtod() and other floating point functions])
3400AC_TRY_LINK([
3401#ifdef HAVE_MATH_H
3402# include <math.h>
3403#endif
3404#if STDC_HEADERS
3405# include <stdlib.h>
3406# include <stddef.h>
3407#endif
3408], [char *s; double d;
3409 d = strtod("1.1", &s);
3410 d = fabs(1.11);
3411 d = ceil(1.11);
3412 d = floor(1.11);
3413 d = log10(1.11);
3414 d = pow(1.11, 2.22);
3415 d = sqrt(1.11);
3416 d = sin(1.11);
3417 d = cos(1.11);
3418 d = atan(1.11);
3419 ],
3420 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3421 AC_MSG_RESULT(no))
3422
Bram Moolenaar071d4272004-06-13 20:20:40 +00003423dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3424dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003425dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003426AC_MSG_CHECKING(--disable-acl argument)
3427AC_ARG_ENABLE(acl,
3428 [ --disable-acl Don't check for ACL support.],
3429 , [enable_acl="yes"])
3430if test "$enable_acl" = "yes"; then
3431AC_MSG_RESULT(no)
3432AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3433 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3434 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3435
3436AC_MSG_CHECKING(for POSIX ACL support)
3437AC_TRY_LINK([
3438#include <sys/types.h>
3439#ifdef HAVE_SYS_ACL_H
3440# include <sys/acl.h>
3441#endif
3442acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3443 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3444 acl_free(acl);],
3445 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3446 AC_MSG_RESULT(no))
3447
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003448AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003449AC_MSG_CHECKING(for Solaris ACL support)
3450AC_TRY_LINK([
3451#ifdef HAVE_SYS_ACL_H
3452# include <sys/acl.h>
3453#endif], [acl("foo", GETACLCNT, 0, NULL);
3454 ],
3455 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003456 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003457
3458AC_MSG_CHECKING(for AIX ACL support)
3459AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003460#if STDC_HEADERS
3461# include <stdlib.h>
3462# include <stddef.h>
3463#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003464#ifdef HAVE_SYS_ACL_H
3465# include <sys/acl.h>
3466#endif
3467#ifdef HAVE_SYS_ACCESS_H
3468# include <sys/access.h>
3469#endif
3470#define _ALL_SOURCE
3471
3472#include <sys/stat.h>
3473
3474int aclsize;
3475struct acl *aclent;], [aclsize = sizeof(struct acl);
3476 aclent = (void *)malloc(aclsize);
3477 statacl("foo", STX_NORMAL, aclent, aclsize);
3478 ],
3479 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3480 AC_MSG_RESULT(no))
3481else
3482 AC_MSG_RESULT(yes)
3483fi
3484
3485AC_MSG_CHECKING(--disable-gpm argument)
3486AC_ARG_ENABLE(gpm,
3487 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3488 [enable_gpm="yes"])
3489
3490if test "$enable_gpm" = "yes"; then
3491 AC_MSG_RESULT(no)
3492 dnl Checking if gpm support can be compiled
3493 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3494 [olibs="$LIBS" ; LIBS="-lgpm"]
3495 AC_TRY_LINK(
3496 [#include <gpm.h>
3497 #include <linux/keyboard.h>],
3498 [Gpm_GetLibVersion(NULL);],
3499 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3500 dnl FEAT_MOUSE_GPM if mouse support is included
3501 [vi_cv_have_gpm=yes],
3502 [vi_cv_have_gpm=no])
3503 [LIBS="$olibs"]
3504 )
3505 if test $vi_cv_have_gpm = yes; then
3506 LIBS="$LIBS -lgpm"
3507 AC_DEFINE(HAVE_GPM)
3508 fi
3509else
3510 AC_MSG_RESULT(yes)
3511fi
3512
Bram Moolenaar446cb832008-06-24 21:56:24 +00003513AC_MSG_CHECKING(--disable-sysmouse argument)
3514AC_ARG_ENABLE(sysmouse,
3515 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3516 [enable_sysmouse="yes"])
3517
3518if test "$enable_sysmouse" = "yes"; then
3519 AC_MSG_RESULT(no)
3520 dnl Checking if sysmouse support can be compiled
3521 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3522 dnl defines FEAT_SYSMOUSE if mouse support is included
3523 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3524 AC_TRY_LINK(
3525 [#include <sys/consio.h>
3526 #include <signal.h>
3527 #include <sys/fbio.h>],
3528 [struct mouse_info mouse;
3529 mouse.operation = MOUSE_MODE;
3530 mouse.operation = MOUSE_SHOW;
3531 mouse.u.mode.mode = 0;
3532 mouse.u.mode.signal = SIGUSR2;],
3533 [vi_cv_have_sysmouse=yes],
3534 [vi_cv_have_sysmouse=no])
3535 )
3536 if test $vi_cv_have_sysmouse = yes; then
3537 AC_DEFINE(HAVE_SYSMOUSE)
3538 fi
3539else
3540 AC_MSG_RESULT(yes)
3541fi
3542
Bram Moolenaarf05da212009-11-17 16:13:15 +00003543dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3544AC_MSG_CHECKING(for FD_CLOEXEC)
3545AC_TRY_COMPILE(
3546[#if HAVE_FCNTL_H
3547# include <fcntl.h>
3548#endif],
3549[ int flag = FD_CLOEXEC;],
3550 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3551 AC_MSG_RESULT(not usable))
3552
Bram Moolenaar071d4272004-06-13 20:20:40 +00003553dnl rename needs to be checked separately to work on Nextstep with cc
3554AC_MSG_CHECKING(for rename)
3555AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3556 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3557 AC_MSG_RESULT(no))
3558
3559dnl sysctl() may exist but not the arguments we use
3560AC_MSG_CHECKING(for sysctl)
3561AC_TRY_COMPILE(
3562[#include <sys/types.h>
3563#include <sys/sysctl.h>],
3564[ int mib[2], r;
3565 size_t len;
3566
3567 mib[0] = CTL_HW;
3568 mib[1] = HW_USERMEM;
3569 len = sizeof(r);
3570 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3571 ],
3572 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3573 AC_MSG_RESULT(not usable))
3574
3575dnl sysinfo() may exist but not be Linux compatible
3576AC_MSG_CHECKING(for sysinfo)
3577AC_TRY_COMPILE(
3578[#include <sys/types.h>
3579#include <sys/sysinfo.h>],
3580[ struct sysinfo sinfo;
3581 int t;
3582
3583 (void)sysinfo(&sinfo);
3584 t = sinfo.totalram;
3585 ],
3586 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3587 AC_MSG_RESULT(not usable))
3588
Bram Moolenaar914572a2007-05-01 11:37:47 +00003589dnl struct sysinfo may have the mem_unit field or not
3590AC_MSG_CHECKING(for sysinfo.mem_unit)
3591AC_TRY_COMPILE(
3592[#include <sys/types.h>
3593#include <sys/sysinfo.h>],
3594[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003595 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003596 ],
3597 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3598 AC_MSG_RESULT(no))
3599
Bram Moolenaar071d4272004-06-13 20:20:40 +00003600dnl sysconf() may exist but not support what we want to use
3601AC_MSG_CHECKING(for sysconf)
3602AC_TRY_COMPILE(
3603[#include <unistd.h>],
3604[ (void)sysconf(_SC_PAGESIZE);
3605 (void)sysconf(_SC_PHYS_PAGES);
3606 ],
3607 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3608 AC_MSG_RESULT(not usable))
3609
Bram Moolenaar914703b2010-05-31 21:59:46 +02003610AC_CHECK_SIZEOF([int])
3611AC_CHECK_SIZEOF([long])
3612AC_CHECK_SIZEOF([time_t])
3613AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003614
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003615dnl Use different names to avoid clashing with other header files.
3616AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3617AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3618
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003619dnl Make sure that uint32_t is really 32 bits unsigned.
3620AC_MSG_CHECKING([uint32_t is 32 bits])
3621AC_TRY_RUN([
3622#ifdef HAVE_STDINT_H
3623# include <stdint.h>
3624#endif
3625#ifdef HAVE_INTTYPES_H
3626# include <inttypes.h>
3627#endif
3628main() {
3629 uint32_t nr1 = (uint32_t)-1;
3630 uint32_t nr2 = (uint32_t)0xffffffffUL;
3631 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3632 exit(0);
3633}],
3634AC_MSG_RESULT(ok),
3635AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003636AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003637
Bram Moolenaar446cb832008-06-24 21:56:24 +00003638dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3639dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3640
Bram Moolenaar071d4272004-06-13 20:20:40 +00003641[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003642#include "confdefs.h"
3643#ifdef HAVE_STRING_H
3644# include <string.h>
3645#endif
3646#if STDC_HEADERS
3647# include <stdlib.h>
3648# include <stddef.h>
3649#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003650main() {
3651 char buf[10];
3652 strcpy(buf, "abcdefghi");
3653 mch_memmove(buf, buf + 2, 3);
3654 if (strncmp(buf, "ababcf", 6))
3655 exit(1);
3656 strcpy(buf, "abcdefghi");
3657 mch_memmove(buf + 2, buf, 3);
3658 if (strncmp(buf, "cdedef", 6))
3659 exit(1);
3660 exit(0); /* libc version works properly. */
3661}']
3662
Bram Moolenaar446cb832008-06-24 21:56:24 +00003663AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3664 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003665 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00003666 [
3667 vim_cv_memmove_handles_overlap=yes
3668 ],[
3669 vim_cv_memmove_handles_overlap=no
3670 ],[
3671 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3672 ])
3673 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003674
Bram Moolenaar446cb832008-06-24 21:56:24 +00003675if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3676 AC_DEFINE(USEMEMMOVE)
3677else
3678 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3679 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003680 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00003681 [
3682 vim_cv_bcopy_handles_overlap=yes
3683 ],[
3684 vim_cv_bcopy_handles_overlap=no
3685 ],[
3686 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3687 ])
3688 ])
3689
3690 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3691 AC_DEFINE(USEBCOPY)
3692 else
3693 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3694 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003695 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00003696 [
3697 vim_cv_memcpy_handles_overlap=yes
3698 ],[
3699 vim_cv_memcpy_handles_overlap=no
3700 ],[
3701 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3702 ])
3703 ])
3704
3705 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3706 AC_DEFINE(USEMEMCPY)
3707 fi
3708 fi
3709fi
3710
Bram Moolenaar071d4272004-06-13 20:20:40 +00003711
3712dnl Check for multibyte locale functions
3713dnl Find out if _Xsetlocale() is supported by libX11.
3714dnl Check if X_LOCALE should be defined.
3715
3716if test "$enable_multibyte" = "yes"; then
3717 cflags_save=$CFLAGS
3718 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003719 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003720 CFLAGS="$CFLAGS -I$x_includes"
3721 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3722 AC_MSG_CHECKING(whether X_LOCALE needed)
3723 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3724 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3725 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3726 AC_MSG_RESULT(no))
3727 fi
3728 CFLAGS=$cflags_save
3729 LDFLAGS=$ldflags_save
3730fi
3731
3732dnl Link with xpg4, it is said to make Korean locale working
3733AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3734
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003735dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003736dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003737dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003738dnl -t for typedefs (many ctags have this)
3739dnl -s for static functions (Elvis ctags only?)
3740dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3741dnl -i+m to test for older Exuberant ctags
3742AC_MSG_CHECKING(how to create tags)
3743test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003744if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003745 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003746elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3747 TAGPRG="exctags -I INIT+ --fields=+S"
3748elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3749 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003750else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003751 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003752 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3753 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3754 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3755 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3756 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3757 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3758 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3759fi
3760test -f tags.save && mv tags.save tags
3761AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3762
3763dnl Check how we can run man with a section number
3764AC_MSG_CHECKING(how to run man with a section nr)
3765MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003766(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 +00003767AC_MSG_RESULT($MANDEF)
3768if test "$MANDEF" = "man -s"; then
3769 AC_DEFINE(USEMAN_S)
3770fi
3771
3772dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003773dnl We take care to base this on an empty LIBS: on some systems libelf would be
3774dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3775dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003776AC_MSG_CHECKING(--disable-nls argument)
3777AC_ARG_ENABLE(nls,
3778 [ --disable-nls Don't support NLS (gettext()).], ,
3779 [enable_nls="yes"])
3780
3781if test "$enable_nls" = "yes"; then
3782 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003783
3784 INSTALL_LANGS=install-languages
3785 AC_SUBST(INSTALL_LANGS)
3786 INSTALL_TOOL_LANGS=install-tool-languages
3787 AC_SUBST(INSTALL_TOOL_LANGS)
3788
Bram Moolenaar071d4272004-06-13 20:20:40 +00003789 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3790 AC_MSG_CHECKING([for NLS])
3791 if test -f po/Makefile; then
3792 have_gettext="no"
3793 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003794 olibs=$LIBS
3795 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003796 AC_TRY_LINK(
3797 [#include <libintl.h>],
3798 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003799 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3800 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003801 AC_TRY_LINK(
3802 [#include <libintl.h>],
3803 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003804 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3805 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003806 AC_MSG_RESULT([gettext() doesn't work]);
3807 LIBS=$olibs))
3808 else
3809 AC_MSG_RESULT([msgfmt not found - disabled]);
3810 fi
3811 if test $have_gettext = "yes"; then
3812 AC_DEFINE(HAVE_GETTEXT)
3813 MAKEMO=yes
3814 AC_SUBST(MAKEMO)
3815 dnl this was added in GNU gettext 0.10.36
3816 AC_CHECK_FUNCS(bind_textdomain_codeset)
3817 dnl _nl_msg_cat_cntr is required for GNU gettext
3818 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3819 AC_TRY_LINK(
3820 [#include <libintl.h>
3821 extern int _nl_msg_cat_cntr;],
3822 [++_nl_msg_cat_cntr;],
3823 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3824 AC_MSG_RESULT([no]))
3825 fi
3826 else
3827 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3828 fi
3829else
3830 AC_MSG_RESULT(yes)
3831fi
3832
3833dnl Check for dynamic linking loader
3834AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3835if test x${DLL} = xdlfcn.h; then
3836 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3837 AC_MSG_CHECKING([for dlopen()])
3838 AC_TRY_LINK(,[
3839 extern void* dlopen();
3840 dlopen();
3841 ],
3842 AC_MSG_RESULT(yes);
3843 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3844 AC_MSG_RESULT(no);
3845 AC_MSG_CHECKING([for dlopen() in -ldl])
3846 olibs=$LIBS
3847 LIBS="$LIBS -ldl"
3848 AC_TRY_LINK(,[
3849 extern void* dlopen();
3850 dlopen();
3851 ],
3852 AC_MSG_RESULT(yes);
3853 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3854 AC_MSG_RESULT(no);
3855 LIBS=$olibs))
3856 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3857 dnl ick :-)
3858 AC_MSG_CHECKING([for dlsym()])
3859 AC_TRY_LINK(,[
3860 extern void* dlsym();
3861 dlsym();
3862 ],
3863 AC_MSG_RESULT(yes);
3864 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3865 AC_MSG_RESULT(no);
3866 AC_MSG_CHECKING([for dlsym() in -ldl])
3867 olibs=$LIBS
3868 LIBS="$LIBS -ldl"
3869 AC_TRY_LINK(,[
3870 extern void* dlsym();
3871 dlsym();
3872 ],
3873 AC_MSG_RESULT(yes);
3874 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3875 AC_MSG_RESULT(no);
3876 LIBS=$olibs))
3877elif test x${DLL} = xdl.h; then
3878 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3879 AC_MSG_CHECKING([for shl_load()])
3880 AC_TRY_LINK(,[
3881 extern void* shl_load();
3882 shl_load();
3883 ],
3884 AC_MSG_RESULT(yes);
3885 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3886 AC_MSG_RESULT(no);
3887 AC_MSG_CHECKING([for shl_load() in -ldld])
3888 olibs=$LIBS
3889 LIBS="$LIBS -ldld"
3890 AC_TRY_LINK(,[
3891 extern void* shl_load();
3892 shl_load();
3893 ],
3894 AC_MSG_RESULT(yes);
3895 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3896 AC_MSG_RESULT(no);
3897 LIBS=$olibs))
3898fi
3899AC_CHECK_HEADERS(setjmp.h)
3900
3901if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3902 dnl -ldl must come after DynaLoader.a
3903 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3904 LIBS=`echo $LIBS | sed s/-ldl//`
3905 PERL_LIBS="$PERL_LIBS -ldl"
3906 fi
3907fi
3908
Bram Moolenaar164fca32010-07-14 13:58:07 +02003909if test "x$MACOSX" = "xyes"; then
3910 AC_MSG_CHECKING(whether we need -framework Cocoa)
3911 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3912 dnl disabled during tiny build)
3913 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3914 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003915 AC_MSG_RESULT(yes)
3916 else
3917 AC_MSG_RESULT(no)
3918 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003919 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3920 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3921 dnl missing Objective-C symbols.
3922 if test "x$features" = "xtiny"; then
3923 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3924 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3925 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003926fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003927if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003928 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003929fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003930
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003931dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3932dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3933dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003934dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3935dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003936DEPEND_CFLAGS_FILTER=
3937if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003938 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003939 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003940 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003941 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003942 AC_MSG_RESULT(yes)
3943 else
3944 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003945 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003946 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3947 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003948 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003949 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003950 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3951 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003952 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 +00003953 AC_MSG_RESULT(yes)
3954 else
3955 AC_MSG_RESULT(no)
3956 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003957fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003958AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003959
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003960dnl link.sh tries to avoid overlinking in a hackish way.
3961dnl At least GNU ld supports --as-needed which provides the same functionality
3962dnl at linker level. Let's use it.
3963AC_MSG_CHECKING(linker --as-needed support)
3964LINK_AS_NEEDED=
3965# Check if linker supports --as-needed and --no-as-needed options
3966if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003967 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003968 LINK_AS_NEEDED=yes
3969fi
3970if test "$LINK_AS_NEEDED" = yes; then
3971 AC_MSG_RESULT(yes)
3972else
3973 AC_MSG_RESULT(no)
3974fi
3975AC_SUBST(LINK_AS_NEEDED)
3976
Bram Moolenaar77c19352012-06-13 19:19:41 +02003977# IBM z/OS reset CFLAGS for config.mk
3978if test "$zOSUnix" = "yes"; then
3979 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3980fi
3981
Bram Moolenaar071d4272004-06-13 20:20:40 +00003982dnl write output files
3983AC_OUTPUT(auto/config.mk:config.mk.in)
3984
3985dnl vim: set sw=2 tw=78 fo+=l: