blob: 37c5ff8e8fea484c95a42fafa5bc5ae728642877 [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 Moolenaar588ebeb2008-05-07 17:09:24 +0000390dnl Link with -lselinux for SELinux stuff; if not found
391AC_MSG_CHECKING(--disable-selinux argument)
392AC_ARG_ENABLE(selinux,
393 [ --disable-selinux Don't check for SELinux support.],
394 , enable_selinux="yes")
395if test "$enable_selinux" = "yes"; then
396 AC_MSG_RESULT(no)
397 AC_CHECK_LIB(selinux, is_selinux_enabled,
398 [LIBS="$LIBS -lselinux"
399 AC_DEFINE(HAVE_SELINUX)])
400else
401 AC_MSG_RESULT(yes)
402fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000403
404dnl Check user requested features.
405
406AC_MSG_CHECKING(--with-features argument)
407AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
408 features="$withval"; AC_MSG_RESULT($features),
409 features="normal"; AC_MSG_RESULT(Defaulting to normal))
410
411dovimdiff=""
412dogvimdiff=""
413case "$features" in
414 tiny) AC_DEFINE(FEAT_TINY) ;;
415 small) AC_DEFINE(FEAT_SMALL) ;;
416 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
417 dogvimdiff="installgvimdiff" ;;
418 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
419 dogvimdiff="installgvimdiff" ;;
420 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
421 dogvimdiff="installgvimdiff" ;;
422 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
423esac
424
425AC_SUBST(dovimdiff)
426AC_SUBST(dogvimdiff)
427
428AC_MSG_CHECKING(--with-compiledby argument)
429AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
430 compiledby="$withval"; AC_MSG_RESULT($withval),
431 compiledby=""; AC_MSG_RESULT(no))
432AC_SUBST(compiledby)
433
434AC_MSG_CHECKING(--disable-xsmp argument)
435AC_ARG_ENABLE(xsmp,
436 [ --disable-xsmp Disable XSMP session management],
437 , enable_xsmp="yes")
438
439if test "$enable_xsmp" = "yes"; then
440 AC_MSG_RESULT(no)
441 AC_MSG_CHECKING(--disable-xsmp-interact argument)
442 AC_ARG_ENABLE(xsmp-interact,
443 [ --disable-xsmp-interact Disable XSMP interaction],
444 , enable_xsmp_interact="yes")
445 if test "$enable_xsmp_interact" = "yes"; then
446 AC_MSG_RESULT(no)
447 AC_DEFINE(USE_XSMP_INTERACT)
448 else
449 AC_MSG_RESULT(yes)
450 fi
451else
452 AC_MSG_RESULT(yes)
453fi
454
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200455dnl Check for Lua feature.
456AC_MSG_CHECKING(--enable-luainterp argument)
457AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200458 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200459 [enable_luainterp="no"])
460AC_MSG_RESULT($enable_luainterp)
461
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200462if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200463 dnl -- find the lua executable
464 AC_SUBST(vi_cv_path_lua)
465
466 AC_MSG_CHECKING(--with-lua-prefix argument)
467 AC_ARG_WITH(lua_prefix,
468 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
469 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200470 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200471
472 if test "X$with_lua_prefix" != "X"; then
473 vi_cv_path_lua_pfx="$with_lua_prefix"
474 else
475 AC_MSG_CHECKING(LUA_PREFIX environment var)
476 if test "X$LUA_PREFIX" != "X"; then
477 AC_MSG_RESULT("$LUA_PREFIX")
478 vi_cv_path_lua_pfx="$LUA_PREFIX"
479 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200480 AC_MSG_RESULT([not set, default to /usr])
481 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200482 fi
483 fi
484
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200485 AC_MSG_CHECKING(--with-luajit)
486 AC_ARG_WITH(luajit,
487 [ --with-luajit Link with LuaJIT instead of Lua.],
488 [vi_cv_with_luajit="$withval"],
489 [vi_cv_with_luajit="no"])
490 AC_MSG_RESULT($vi_cv_with_luajit)
491
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200492 LUA_INC=
493 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200494 if test "x$vi_cv_with_luajit" != "xno"; then
495 dnl -- try to find LuaJIT executable
496 AC_PATH_PROG(vi_cv_path_luajit, luajit)
497 if test "X$vi_cv_path_luajit" != "X"; then
498 dnl -- find LuaJIT version
499 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100500 [ 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 +0200501 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
502 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
503 vi_cv_path_lua="$vi_cv_path_luajit"
504 vi_cv_version_lua="$vi_cv_version_lua_luajit"
505 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200506 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200507 dnl -- try to find Lua executable
508 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
509 if test "X$vi_cv_path_plain_lua" != "X"; then
510 dnl -- find Lua version
511 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
512 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
513 fi
514 vi_cv_path_lua="$vi_cv_path_plain_lua"
515 vi_cv_version_lua="$vi_cv_version_plain_lua"
516 fi
517 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
518 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
519 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
520 AC_MSG_RESULT(yes)
521 LUA_INC=/luajit-$vi_cv_version_luajit
522 fi
523 fi
524 if test "X$LUA_INC" = "X"; then
525 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
526 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
527 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200528 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200529 AC_MSG_RESULT(no)
530 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
531 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
532 AC_MSG_RESULT(yes)
533 LUA_INC=/lua$vi_cv_version_lua
534 else
535 AC_MSG_RESULT(no)
536 vi_cv_path_lua_pfx=
537 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200538 fi
539 fi
540 fi
541
542 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200543 if test "x$vi_cv_with_luajit" != "xno"; then
544 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
545 if test "X$multiarch" != "X"; then
546 lib_multiarch="lib/${multiarch}"
547 else
548 lib_multiarch="lib"
549 fi
550 if test "X$vi_cv_version_lua" = "X"; then
551 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
552 else
553 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
554 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200555 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200556 if test "X$LUA_INC" != "X"; then
557 dnl Test alternate location using version
558 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
559 else
560 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
561 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200562 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200563 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200564 lua_ok="yes"
565 else
566 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
567 libs_save=$LIBS
568 LIBS="$LIBS $LUA_LIBS"
569 AC_TRY_LINK(,[ ],
570 AC_MSG_RESULT(yes); lua_ok="yes",
571 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
572 LIBS=$libs_save
573 fi
574 if test "x$lua_ok" = "xyes"; then
575 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
576 LUA_SRC="if_lua.c"
577 LUA_OBJ="objects/if_lua.o"
578 LUA_PRO="if_lua.pro"
579 AC_DEFINE(FEAT_LUA)
580 fi
581 if test "$enable_luainterp" = "dynamic"; then
582 if test "x$vi_cv_with_luajit" != "xno"; then
583 luajit="jit"
584 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200585 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
586 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
587 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200588 if test "x$MACOSX" = "xyes"; then
589 ext="dylib"
590 indexes=""
591 else
592 ext="so"
593 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
594 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
595 if test "X$multiarch" != "X"; then
596 lib_multiarch="lib/${multiarch}"
597 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200598 fi
599 dnl Determine the sover for the current version, but fallback to
600 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200601 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200602 for subdir in "${lib_multiarch}" lib64 lib; do
603 if test -z "$subdir"; then
604 continue
605 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200606 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
607 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
608 for i in $indexes ""; do
609 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200610 sover2="$i"
611 break 3
612 fi
613 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100614 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200615 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200616 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200617 if test "X$sover" = "X"; then
618 AC_MSG_RESULT(no)
619 lua_ok="no"
620 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
621 else
622 AC_MSG_RESULT(yes)
623 lua_ok="yes"
624 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
625 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200626 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200627 AC_DEFINE(DYNAMIC_LUA)
628 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200629 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200630 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200631 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
632 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
633 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
634 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
635 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
636 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200637 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200638 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100639 AC_MSG_ERROR([could not configure lua])
640 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200641 AC_SUBST(LUA_SRC)
642 AC_SUBST(LUA_OBJ)
643 AC_SUBST(LUA_PRO)
644 AC_SUBST(LUA_LIBS)
645 AC_SUBST(LUA_CFLAGS)
646fi
647
648
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000649dnl Check for MzScheme feature.
650AC_MSG_CHECKING(--enable-mzschemeinterp argument)
651AC_ARG_ENABLE(mzschemeinterp,
652 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
653 [enable_mzschemeinterp="no"])
654AC_MSG_RESULT($enable_mzschemeinterp)
655
656if test "$enable_mzschemeinterp" = "yes"; then
657 dnl -- find the mzscheme executable
658 AC_SUBST(vi_cv_path_mzscheme)
659
660 AC_MSG_CHECKING(--with-plthome argument)
661 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000662 [ --with-plthome=PLTHOME Use PLTHOME.],
663 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000664 with_plthome="";AC_MSG_RESULT("no"))
665
666 if test "X$with_plthome" != "X"; then
667 vi_cv_path_mzscheme_pfx="$with_plthome"
668 else
669 AC_MSG_CHECKING(PLTHOME environment var)
670 if test "X$PLTHOME" != "X"; then
671 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000672 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000673 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000674 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000675 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000676 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000677
678 dnl resolve symbolic link, the executable is often elsewhere and there
679 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000680 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000681 lsout=`ls -l $vi_cv_path_mzscheme`
682 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
683 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
684 fi
685 fi
686
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000687 if test "X$vi_cv_path_mzscheme" != "X"; then
688 dnl -- find where MzScheme thinks it was installed
689 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000690 dnl different versions of MzScheme differ in command line processing
691 dnl use universal approach
692 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000693 (build-path (call-with-values \
694 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000695 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
696 dnl Remove a trailing slash
697 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
698 sed -e 's+/$++'` ])
699 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000700 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000701 fi
702 fi
703
Bram Moolenaard7afed32007-05-06 13:26:41 +0000704 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
706 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
707 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000708 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
709 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000710 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000711 AC_MSG_RESULT(no)
712 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000713 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000714 AC_MSG_RESULT(yes)
715 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000716 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100718 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
719 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000720 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100721 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000722 else
723 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100724 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
725 if test -f /usr/include/plt/scheme.h; then
726 AC_MSG_RESULT(yes)
727 SCHEME_INC=/usr/include/plt
728 else
729 AC_MSG_RESULT(no)
730 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
731 if test -f /usr/include/racket/scheme.h; then
732 AC_MSG_RESULT(yes)
733 SCHEME_INC=/usr/include/racket
734 else
735 AC_MSG_RESULT(no)
736 vi_cv_path_mzscheme_pfx=
737 fi
738 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000739 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000740 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000741 fi
742 fi
743
744 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000745 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100746 MZSCHEME_LIBS="-framework Racket"
747 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000748 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
749 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
750 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100751 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
752 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
753 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
754 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
755 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
756 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000757 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 +0000758 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000759 dnl Using shared objects
760 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
761 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
762 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100763 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
764 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
765 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
766 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
767 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000768 else
769 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
770 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000771 if test "$GCC" = yes; then
772 dnl Make Vim remember the path to the library. For when it's not in
773 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000774 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000775 elif test "`(uname) 2>/dev/null`" = SunOS &&
776 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000777 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000778 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000779 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100780
781 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000782 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100783 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100784 else
785 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100786 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
787 else
788 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
789 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100790 else
791 if test -d $vi_cv_path_mzscheme_pfx/collects; then
792 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
793 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100794 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100795 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000796 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100797 if test "X$SCHEME_COLLECTS" != "X" ; then
798 AC_MSG_RESULT(${SCHEME_COLLECTS})
799 else
800 AC_MSG_RESULT(not found)
801 fi
802
803 AC_MSG_CHECKING(for mzscheme_base.c)
804 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000805 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100806 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
807 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100808 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100809 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100810 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100811 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
812 MZSCHEME_MOD="++lib scheme/base"
813 else
814 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
815 MZSCHEME_EXTRA="mzscheme_base.c"
816 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
817 MZSCHEME_MOD=""
818 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100819 fi
820 fi
821 if test "X$MZSCHEME_EXTRA" != "X" ; then
822 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000823 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
824 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100825 AC_MSG_RESULT(needed)
826 else
827 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000828 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100829
Bram Moolenaar9e902192013-07-17 18:58:11 +0200830 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
831 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
832
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000833 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100834 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200835
836 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
837 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
838 cflags_save=$CFLAGS
839 libs_save=$LIBS
840 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
841 LIBS="$LIBS $MZSCHEME_LIBS"
842 AC_TRY_LINK(,[ ],
843 AC_MSG_RESULT(yes); mzs_ok=yes,
844 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
845 CFLAGS=$cflags_save
846 LIBS=$libs_save
847 if test $mzs_ok = yes; then
848 MZSCHEME_SRC="if_mzsch.c"
849 MZSCHEME_OBJ="objects/if_mzsch.o"
850 MZSCHEME_PRO="if_mzsch.pro"
851 AC_DEFINE(FEAT_MZSCHEME)
852 else
853 MZSCHEME_CFLAGS=
854 MZSCHEME_LIBS=
855 MZSCHEME_EXTRA=
856 MZSCHEME_MZC=
857 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000858 fi
859 AC_SUBST(MZSCHEME_SRC)
860 AC_SUBST(MZSCHEME_OBJ)
861 AC_SUBST(MZSCHEME_PRO)
862 AC_SUBST(MZSCHEME_LIBS)
863 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000864 AC_SUBST(MZSCHEME_EXTRA)
865 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000866fi
867
868
Bram Moolenaar071d4272004-06-13 20:20:40 +0000869AC_MSG_CHECKING(--enable-perlinterp argument)
870AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200871 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000872 [enable_perlinterp="no"])
873AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200874if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000875 AC_SUBST(vi_cv_path_perl)
876 AC_PATH_PROG(vi_cv_path_perl, perl)
877 if test "X$vi_cv_path_perl" != "X"; then
878 AC_MSG_CHECKING(Perl version)
879 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
880 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200881 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000882 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
883 badthreads=no
884 else
885 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
886 eval `$vi_cv_path_perl -V:use5005threads`
887 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
888 badthreads=no
889 else
890 badthreads=yes
891 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
892 fi
893 else
894 badthreads=yes
895 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
896 fi
897 fi
898 if test $badthreads = no; then
899 AC_MSG_RESULT(OK)
900 eval `$vi_cv_path_perl -V:shrpenv`
901 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
902 shrpenv=""
903 fi
904 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
905 AC_SUBST(vi_cv_perllib)
906 dnl Remove "-fno-something", it breaks using cproto.
907 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
908 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
909 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
910 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
911 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
912 -e 's/-bE:perl.exp//' -e 's/-lc //'`
913 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
914 dnl a test in configure may fail because of that.
915 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
916 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
917
918 dnl check that compiling a simple program still works with the flags
919 dnl added for Perl.
920 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
921 cflags_save=$CFLAGS
922 libs_save=$LIBS
923 ldflags_save=$LDFLAGS
924 CFLAGS="$CFLAGS $perlcppflags"
925 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200926 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000927 LDFLAGS="$perlldflags $LDFLAGS"
928 AC_TRY_LINK(,[ ],
929 AC_MSG_RESULT(yes); perl_ok=yes,
930 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
931 CFLAGS=$cflags_save
932 LIBS=$libs_save
933 LDFLAGS=$ldflags_save
934 if test $perl_ok = yes; then
935 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000936 dnl remove -pipe and -Wxxx, it confuses cproto
937 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000938 fi
939 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +0100940 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200941 LDFLAGS="$perlldflags $LDFLAGS"
942 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943 fi
944 PERL_LIBS=$perllibs
945 PERL_SRC="auto/if_perl.c if_perlsfio.c"
946 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
947 PERL_PRO="if_perl.pro if_perlsfio.pro"
948 AC_DEFINE(FEAT_PERL)
949 fi
950 fi
951 else
952 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
953 fi
954 fi
955
956 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000957 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000958 dir=/System/Library/Perl
959 darwindir=$dir/darwin
960 if test -d $darwindir; then
961 PERL=/usr/bin/perl
962 else
963 dnl Mac OS X 10.3
964 dir=/System/Library/Perl/5.8.1
965 darwindir=$dir/darwin-thread-multi-2level
966 if test -d $darwindir; then
967 PERL=/usr/bin/perl
968 fi
969 fi
970 if test -n "$PERL"; then
971 PERL_DIR="$dir"
972 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
973 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
974 PERL_LIBS="-L$darwindir/CORE -lperl"
975 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200976 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
977 dnl be included if requested by passing --with-mac-arch to
978 dnl configure, so strip these flags first (if present)
979 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
980 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 +0000981 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200982 if test "$enable_perlinterp" = "dynamic"; then
983 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
984 AC_DEFINE(DYNAMIC_PERL)
985 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
986 fi
987 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100988
989 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
990 AC_MSG_ERROR([could not configure perl])
991 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992fi
993AC_SUBST(shrpenv)
994AC_SUBST(PERL_SRC)
995AC_SUBST(PERL_OBJ)
996AC_SUBST(PERL_PRO)
997AC_SUBST(PERL_CFLAGS)
998AC_SUBST(PERL_LIBS)
999
1000AC_MSG_CHECKING(--enable-pythoninterp argument)
1001AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001002 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001003 [enable_pythoninterp="no"])
1004AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001005if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001006 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001007 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001008 if test "X$vi_cv_path_python" != "X"; then
1009
1010 dnl -- get its version number
1011 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1012 [[vi_cv_var_python_version=`
1013 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1014 ]])
1015
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001016 dnl -- it must be at least version 2.3
1017 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001018 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001019 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001020 then
1021 AC_MSG_RESULT(yep)
1022
1023 dnl -- find where python thinks it was installed
1024 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1025 [ vi_cv_path_python_pfx=`
1026 ${vi_cv_path_python} -c \
1027 "import sys; print sys.prefix"` ])
1028
1029 dnl -- and where it thinks it runs
1030 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1031 [ vi_cv_path_python_epfx=`
1032 ${vi_cv_path_python} -c \
1033 "import sys; print sys.exec_prefix"` ])
1034
1035 dnl -- python's internal library path
1036
1037 AC_CACHE_VAL(vi_cv_path_pythonpath,
1038 [ vi_cv_path_pythonpath=`
1039 unset PYTHONPATH;
1040 ${vi_cv_path_python} -c \
1041 "import sys, string; print string.join(sys.path,':')"` ])
1042
1043 dnl -- where the Python implementation library archives are
1044
1045 AC_ARG_WITH(python-config-dir,
1046 [ --with-python-config-dir=PATH Python's config directory],
1047 [ vi_cv_path_python_conf="${withval}" ] )
1048
1049 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1050 [
1051 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001052 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1053 if test -d "$d" && test -f "$d/config.c"; then
1054 vi_cv_path_python_conf="$d"
1055 else
1056 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1057 for subdir in lib64 lib share; do
1058 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1059 if test -d "$d" && test -f "$d/config.c"; then
1060 vi_cv_path_python_conf="$d"
1061 fi
1062 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001063 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001064 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001065 ])
1066
1067 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1068
1069 if test "X$PYTHON_CONFDIR" = "X"; then
1070 AC_MSG_RESULT([can't find it!])
1071 else
1072
1073 dnl -- we need to examine Python's config/Makefile too
1074 dnl see what the interpreter is built from
1075 AC_CACHE_VAL(vi_cv_path_python_plibs,
1076 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001077 pwd=`pwd`
1078 tmp_mkf="$pwd/config-PyMake$$"
1079 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001080__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001081 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001082 @echo "python_LIBS='$(LIBS)'"
1083 @echo "python_SYSLIBS='$(SYSLIBS)'"
1084 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001085 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001086 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001087eof
1088 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001089 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1090 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001091 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1092 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1093 vi_cv_path_python_plibs="-framework Python"
1094 else
1095 if test "${vi_cv_var_python_version}" = "1.4"; then
1096 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1097 else
1098 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1099 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001100 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 +00001101 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1102 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1103 fi
1104 ])
1105
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001106 if test "X$python_DLLLIBRARY" != "X"; then
1107 python_INSTSONAME="$python_DLLLIBRARY"
1108 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001109 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1110 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001111 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 +00001112 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001113 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 +00001114 fi
1115 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001116 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001117 if test "${vi_cv_var_python_version}" = "1.4"; then
1118 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1119 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001120 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 +00001121
1122 dnl On FreeBSD linking with "-pthread" is required to use threads.
1123 dnl _THREAD_SAFE must be used for compiling then.
1124 dnl The "-pthread" is added to $LIBS, so that the following check for
1125 dnl sigaltstack() will look in libc_r (it's there in libc!).
1126 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1127 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1128 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1129 AC_MSG_CHECKING([if -pthread should be used])
1130 threadsafe_flag=
1131 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001132 dnl if test "x$MACOSX" != "xyes"; then
1133 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001134 test "$GCC" = yes && threadsafe_flag="-pthread"
1135 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1136 threadsafe_flag="-D_THREAD_SAFE"
1137 thread_lib="-pthread"
1138 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001139 if test "`(uname) 2>/dev/null`" = SunOS; then
1140 threadsafe_flag="-pthreads"
1141 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001142 fi
1143 libs_save_old=$LIBS
1144 if test -n "$threadsafe_flag"; then
1145 cflags_save=$CFLAGS
1146 CFLAGS="$CFLAGS $threadsafe_flag"
1147 LIBS="$LIBS $thread_lib"
1148 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001149 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001150 AC_MSG_RESULT(no); LIBS=$libs_save_old
1151 )
1152 CFLAGS=$cflags_save
1153 else
1154 AC_MSG_RESULT(no)
1155 fi
1156
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001157 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001158 dnl added for Python.
1159 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1160 cflags_save=$CFLAGS
1161 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001162 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001163 LIBS="$LIBS $PYTHON_LIBS"
1164 AC_TRY_LINK(,[ ],
1165 AC_MSG_RESULT(yes); python_ok=yes,
1166 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1167 CFLAGS=$cflags_save
1168 LIBS=$libs_save
1169 if test $python_ok = yes; then
1170 AC_DEFINE(FEAT_PYTHON)
1171 else
1172 LIBS=$libs_save_old
1173 PYTHON_SRC=
1174 PYTHON_OBJ=
1175 PYTHON_LIBS=
1176 PYTHON_CFLAGS=
1177 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001178 fi
1179 else
1180 AC_MSG_RESULT(too old)
1181 fi
1182 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001183
1184 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1185 AC_MSG_ERROR([could not configure python])
1186 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001187fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001188
Bram Moolenaar071d4272004-06-13 20:20:40 +00001189AC_SUBST(PYTHON_CONFDIR)
1190AC_SUBST(PYTHON_LIBS)
1191AC_SUBST(PYTHON_GETPATH_CFLAGS)
1192AC_SUBST(PYTHON_CFLAGS)
1193AC_SUBST(PYTHON_SRC)
1194AC_SUBST(PYTHON_OBJ)
1195
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001196
1197AC_MSG_CHECKING(--enable-python3interp argument)
1198AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001199 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001200 [enable_python3interp="no"])
1201AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001202if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001203 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001204 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001205 if test "X$vi_cv_path_python3" != "X"; then
1206
1207 dnl -- get its version number
1208 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1209 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001210 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001211 ]])
1212
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001213 dnl -- it must be at least version 3
1214 AC_MSG_CHECKING(Python is 3.0 or better)
1215 if ${vi_cv_path_python3} -c \
1216 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1217 then
1218 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001219
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001220 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1221 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001222 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001223 vi_cv_var_python3_abiflags=
1224 if ${vi_cv_path_python3} -c \
1225 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1226 then
1227 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1228 "import sys; print(sys.abiflags)"`
1229 fi ])
1230
1231 dnl -- find where python3 thinks it was installed
1232 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1233 [ vi_cv_path_python3_pfx=`
1234 ${vi_cv_path_python3} -c \
1235 "import sys; print(sys.prefix)"` ])
1236
1237 dnl -- and where it thinks it runs
1238 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1239 [ vi_cv_path_python3_epfx=`
1240 ${vi_cv_path_python3} -c \
1241 "import sys; print(sys.exec_prefix)"` ])
1242
1243 dnl -- python3's internal library path
1244
1245 AC_CACHE_VAL(vi_cv_path_python3path,
1246 [ vi_cv_path_python3path=`
1247 unset PYTHONPATH;
1248 ${vi_cv_path_python3} -c \
1249 "import sys, string; print(':'.join(sys.path))"` ])
1250
1251 dnl -- where the Python implementation library archives are
1252
1253 AC_ARG_WITH(python3-config-dir,
1254 [ --with-python3-config-dir=PATH Python's config directory],
1255 [ vi_cv_path_python3_conf="${withval}" ] )
1256
1257 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1258 [
1259 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001260 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001261 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1262 if test -d "$d" && test -f "$d/config.c"; then
1263 vi_cv_path_python3_conf="$d"
1264 else
1265 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1266 for subdir in lib64 lib share; do
1267 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1268 if test -d "$d" && test -f "$d/config.c"; then
1269 vi_cv_path_python3_conf="$d"
1270 fi
1271 done
1272 done
1273 fi
1274 ])
1275
1276 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1277
1278 if test "X$PYTHON3_CONFDIR" = "X"; then
1279 AC_MSG_RESULT([can't find it!])
1280 else
1281
1282 dnl -- we need to examine Python's config/Makefile too
1283 dnl see what the interpreter is built from
1284 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1285 [
1286 pwd=`pwd`
1287 tmp_mkf="$pwd/config-PyMake$$"
1288 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001289__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001290 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001291 @echo "python3_LIBS='$(LIBS)'"
1292 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001293 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001294 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001295eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001296 dnl -- delete the lines from make about Entering/Leaving directory
1297 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1298 rm -f -- "${tmp_mkf}"
1299 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1300 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1301 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1302 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1303 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1304 ])
1305
1306 if test "X$python3_DLLLIBRARY" != "X"; then
1307 python3_INSTSONAME="$python3_DLLLIBRARY"
1308 fi
1309 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1310 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001311 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 +02001312 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001313 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 +02001314 fi
1315 PYTHON3_SRC="if_python3.c"
1316 PYTHON3_OBJ="objects/if_python3.o"
1317
1318 dnl On FreeBSD linking with "-pthread" is required to use threads.
1319 dnl _THREAD_SAFE must be used for compiling then.
1320 dnl The "-pthread" is added to $LIBS, so that the following check for
1321 dnl sigaltstack() will look in libc_r (it's there in libc!).
1322 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1323 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1324 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1325 AC_MSG_CHECKING([if -pthread should be used])
1326 threadsafe_flag=
1327 thread_lib=
1328 dnl if test "x$MACOSX" != "xyes"; then
1329 if test "`(uname) 2>/dev/null`" != Darwin; then
1330 test "$GCC" = yes && threadsafe_flag="-pthread"
1331 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1332 threadsafe_flag="-D_THREAD_SAFE"
1333 thread_lib="-pthread"
1334 fi
1335 if test "`(uname) 2>/dev/null`" = SunOS; then
1336 threadsafe_flag="-pthreads"
1337 fi
1338 fi
1339 libs_save_old=$LIBS
1340 if test -n "$threadsafe_flag"; then
1341 cflags_save=$CFLAGS
1342 CFLAGS="$CFLAGS $threadsafe_flag"
1343 LIBS="$LIBS $thread_lib"
1344 AC_TRY_LINK(,[ ],
1345 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1346 AC_MSG_RESULT(no); LIBS=$libs_save_old
1347 )
1348 CFLAGS=$cflags_save
1349 else
1350 AC_MSG_RESULT(no)
1351 fi
1352
1353 dnl check that compiling a simple program still works with the flags
1354 dnl added for Python.
1355 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1356 cflags_save=$CFLAGS
1357 libs_save=$LIBS
1358 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1359 LIBS="$LIBS $PYTHON3_LIBS"
1360 AC_TRY_LINK(,[ ],
1361 AC_MSG_RESULT(yes); python3_ok=yes,
1362 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1363 CFLAGS=$cflags_save
1364 LIBS=$libs_save
1365 if test "$python3_ok" = yes; then
1366 AC_DEFINE(FEAT_PYTHON3)
1367 else
1368 LIBS=$libs_save_old
1369 PYTHON3_SRC=
1370 PYTHON3_OBJ=
1371 PYTHON3_LIBS=
1372 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001373 fi
1374 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001375 else
1376 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001377 fi
1378 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001379 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1380 AC_MSG_ERROR([could not configure python3])
1381 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001382fi
1383
1384AC_SUBST(PYTHON3_CONFDIR)
1385AC_SUBST(PYTHON3_LIBS)
1386AC_SUBST(PYTHON3_CFLAGS)
1387AC_SUBST(PYTHON3_SRC)
1388AC_SUBST(PYTHON3_OBJ)
1389
1390dnl if python2.x and python3.x are enabled one can only link in code
1391dnl with dlopen(), dlsym(), dlclose()
1392if test "$python_ok" = yes && test "$python3_ok" = yes; then
1393 AC_DEFINE(DYNAMIC_PYTHON)
1394 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001395 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001396 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001397 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001398 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001399 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1400 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001401 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001402 #include <dlfcn.h>
1403 /* If this program fails, then RTLD_GLOBAL is needed.
1404 * RTLD_GLOBAL will be used and then it is not possible to
1405 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001406 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001407 */
1408
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001409 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001410 {
1411 int needed = 0;
1412 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1413 if (pylib != 0)
1414 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001415 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001416 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1417 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1418 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001419 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001420 (*init)();
1421 needed = (*simple)("import termios") == -1;
1422 (*final)();
1423 dlclose(pylib);
1424 }
1425 return !needed;
1426 }
1427
1428 int main(int argc, char** argv)
1429 {
1430 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001431 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001432 not_needed = 1;
1433 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001434 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001435 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001436
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001437 CFLAGS=$cflags_save
1438 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001439
1440 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1441 cflags_save=$CFLAGS
1442 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1443 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001444 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1445 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001446 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001447 #include <dlfcn.h>
1448 #include <wchar.h>
1449 /* If this program fails, then RTLD_GLOBAL is needed.
1450 * RTLD_GLOBAL will be used and then it is not possible to
1451 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001452 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001453 */
1454
1455 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1456 {
1457 int needed = 0;
1458 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1459 if (pylib != 0)
1460 {
1461 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1462 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1463 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1464 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1465 (*pfx)(prefix);
1466 (*init)();
1467 needed = (*simple)("import termios") == -1;
1468 (*final)();
1469 dlclose(pylib);
1470 }
1471 return !needed;
1472 }
1473
1474 int main(int argc, char** argv)
1475 {
1476 int not_needed = 0;
1477 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1478 not_needed = 1;
1479 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001480 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001481 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1482
1483 CFLAGS=$cflags_save
1484 LDFLAGS=$ldflags_save
1485
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001486 PYTHON_SRC="if_python.c"
1487 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001488 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001489 PYTHON_LIBS=
1490 PYTHON3_SRC="if_python3.c"
1491 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001492 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001493 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001494elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1495 AC_DEFINE(DYNAMIC_PYTHON)
1496 PYTHON_SRC="if_python.c"
1497 PYTHON_OBJ="objects/if_python.o"
1498 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1499 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001500elif test "$python_ok" = yes; then
1501 dnl Check that adding -fPIE works. It may be needed when using a static
1502 dnl Python library.
1503 AC_MSG_CHECKING([if -fPIE can be added for Python])
1504 cflags_save=$CFLAGS
1505 libs_save=$LIBS
1506 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1507 LIBS="$LIBS $PYTHON_LIBS"
1508 AC_TRY_LINK(,[ ],
1509 AC_MSG_RESULT(yes); fpie_ok=yes,
1510 AC_MSG_RESULT(no); fpie_ok=no)
1511 CFLAGS=$cflags_save
1512 LIBS=$libs_save
1513 if test $fpie_ok = yes; then
1514 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1515 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001516elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1517 AC_DEFINE(DYNAMIC_PYTHON3)
1518 PYTHON3_SRC="if_python3.c"
1519 PYTHON3_OBJ="objects/if_python3.o"
1520 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1521 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001522elif test "$python3_ok" = yes; then
1523 dnl Check that adding -fPIE works. It may be needed when using a static
1524 dnl Python library.
1525 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1526 cflags_save=$CFLAGS
1527 libs_save=$LIBS
1528 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1529 LIBS="$LIBS $PYTHON3_LIBS"
1530 AC_TRY_LINK(,[ ],
1531 AC_MSG_RESULT(yes); fpie_ok=yes,
1532 AC_MSG_RESULT(no); fpie_ok=no)
1533 CFLAGS=$cflags_save
1534 LIBS=$libs_save
1535 if test $fpie_ok = yes; then
1536 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1537 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001538fi
1539
Bram Moolenaar071d4272004-06-13 20:20:40 +00001540AC_MSG_CHECKING(--enable-tclinterp argument)
1541AC_ARG_ENABLE(tclinterp,
1542 [ --enable-tclinterp Include Tcl interpreter.], ,
1543 [enable_tclinterp="no"])
1544AC_MSG_RESULT($enable_tclinterp)
1545
1546if test "$enable_tclinterp" = "yes"; then
1547
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001548 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001549 AC_MSG_CHECKING(--with-tclsh argument)
1550 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1551 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001552 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001553 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1554 AC_SUBST(vi_cv_path_tcl)
1555
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001556 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1557 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1558 tclsh_name="tclsh8.4"
1559 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1560 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001561 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001562 tclsh_name="tclsh8.2"
1563 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1564 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001565 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1566 tclsh_name="tclsh8.0"
1567 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1568 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001569 dnl still didn't find it, try without version number
1570 if test "X$vi_cv_path_tcl" = "X"; then
1571 tclsh_name="tclsh"
1572 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1573 fi
1574 if test "X$vi_cv_path_tcl" != "X"; then
1575 AC_MSG_CHECKING(Tcl version)
1576 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1577 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1578 AC_MSG_RESULT($tclver - OK);
1579 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 -`
1580
1581 AC_MSG_CHECKING(for location of Tcl include)
1582 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001583 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 +00001584 else
1585 dnl For Mac OS X 10.3, use the OS-provided framework location
1586 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1587 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001588 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001589 for try in $tclinc; do
1590 if test -f "$try/tcl.h"; then
1591 AC_MSG_RESULT($try/tcl.h)
1592 TCL_INC=$try
1593 break
1594 fi
1595 done
1596 if test -z "$TCL_INC"; then
1597 AC_MSG_RESULT(<not found>)
1598 SKIP_TCL=YES
1599 fi
1600 if test -z "$SKIP_TCL"; then
1601 AC_MSG_CHECKING(for location of tclConfig.sh script)
1602 if test "x$MACOSX" != "xyes"; then
1603 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001604 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001605 else
1606 dnl For Mac OS X 10.3, use the OS-provided framework location
1607 tclcnf="/System/Library/Frameworks/Tcl.framework"
1608 fi
1609 for try in $tclcnf; do
1610 if test -f $try/tclConfig.sh; then
1611 AC_MSG_RESULT($try/tclConfig.sh)
1612 . $try/tclConfig.sh
1613 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1614 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1615 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001616 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001617 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 +00001618 break
1619 fi
1620 done
1621 if test -z "$TCL_LIBS"; then
1622 AC_MSG_RESULT(<not found>)
1623 AC_MSG_CHECKING(for Tcl library by myself)
1624 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001625 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001626 for ext in .so .a ; do
1627 for ver in "" $tclver ; do
1628 for try in $tcllib ; do
1629 trylib=tcl$ver$ext
1630 if test -f $try/lib$trylib ; then
1631 AC_MSG_RESULT($try/lib$trylib)
1632 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1633 if test "`(uname) 2>/dev/null`" = SunOS &&
1634 uname -r | grep '^5' >/dev/null; then
1635 TCL_LIBS="$TCL_LIBS -R $try"
1636 fi
1637 break 3
1638 fi
1639 done
1640 done
1641 done
1642 if test -z "$TCL_LIBS"; then
1643 AC_MSG_RESULT(<not found>)
1644 SKIP_TCL=YES
1645 fi
1646 fi
1647 if test -z "$SKIP_TCL"; then
1648 AC_DEFINE(FEAT_TCL)
1649 TCL_SRC=if_tcl.c
1650 TCL_OBJ=objects/if_tcl.o
1651 TCL_PRO=if_tcl.pro
1652 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1653 fi
1654 fi
1655 else
1656 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1657 fi
1658 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001659 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1660 AC_MSG_ERROR([could not configure Tcl])
1661 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001662fi
1663AC_SUBST(TCL_SRC)
1664AC_SUBST(TCL_OBJ)
1665AC_SUBST(TCL_PRO)
1666AC_SUBST(TCL_CFLAGS)
1667AC_SUBST(TCL_LIBS)
1668
1669AC_MSG_CHECKING(--enable-rubyinterp argument)
1670AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001671 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001672 [enable_rubyinterp="no"])
1673AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001674if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001675 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001676 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001677 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1678 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1679 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001680 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001681 if test "X$vi_cv_path_ruby" != "X"; then
1682 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001683 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 +00001684 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001685 AC_MSG_CHECKING(Ruby rbconfig)
1686 ruby_rbconfig="RbConfig"
1687 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1688 ruby_rbconfig="Config"
1689 fi
1690 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001691 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001692 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 +00001693 if test "X$rubyhdrdir" != "X"; then
1694 AC_MSG_RESULT($rubyhdrdir)
1695 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001696 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1697 if test -d "$rubyarchdir"; then
1698 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001699 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001700 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001701 if test "X$rubyversion" = "X"; then
1702 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1703 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001704 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001705 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 if test "X$rubylibs" != "X"; then
1707 RUBY_LIBS="$rubylibs"
1708 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001709 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1710 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001711 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001712 if test -f "$rubylibdir/$librubya"; then
1713 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001714 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1715 elif test "$librubyarg" = "libruby.a"; then
1716 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1717 librubyarg="-lruby"
1718 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001719 fi
1720
1721 if test "X$librubyarg" != "X"; then
1722 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1723 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001724 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001725 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001726 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1727 dnl be included if requested by passing --with-mac-arch to
1728 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001729 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001730 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001731 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001732 LDFLAGS="$rubyldflags $LDFLAGS"
1733 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001734 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001735 fi
1736 RUBY_SRC="if_ruby.c"
1737 RUBY_OBJ="objects/if_ruby.o"
1738 RUBY_PRO="if_ruby.pro"
1739 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001740 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001741 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001742 AC_DEFINE(DYNAMIC_RUBY)
1743 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1744 RUBY_LIBS=
1745 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001746 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001747 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001748 fi
1749 else
1750 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1751 fi
1752 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001753
1754 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1755 AC_MSG_ERROR([could not configure Ruby])
1756 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001757fi
1758AC_SUBST(RUBY_SRC)
1759AC_SUBST(RUBY_OBJ)
1760AC_SUBST(RUBY_PRO)
1761AC_SUBST(RUBY_CFLAGS)
1762AC_SUBST(RUBY_LIBS)
1763
1764AC_MSG_CHECKING(--enable-cscope argument)
1765AC_ARG_ENABLE(cscope,
1766 [ --enable-cscope Include cscope interface.], ,
1767 [enable_cscope="no"])
1768AC_MSG_RESULT($enable_cscope)
1769if test "$enable_cscope" = "yes"; then
1770 AC_DEFINE(FEAT_CSCOPE)
1771fi
1772
1773AC_MSG_CHECKING(--enable-workshop argument)
1774AC_ARG_ENABLE(workshop,
1775 [ --enable-workshop Include Sun Visual Workshop support.], ,
1776 [enable_workshop="no"])
1777AC_MSG_RESULT($enable_workshop)
1778if test "$enable_workshop" = "yes"; then
1779 AC_DEFINE(FEAT_SUN_WORKSHOP)
1780 WORKSHOP_SRC="workshop.c integration.c"
1781 AC_SUBST(WORKSHOP_SRC)
1782 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1783 AC_SUBST(WORKSHOP_OBJ)
1784 if test "${enable_gui-xxx}" = xxx; then
1785 enable_gui=motif
1786 fi
1787fi
1788
1789AC_MSG_CHECKING(--disable-netbeans argument)
1790AC_ARG_ENABLE(netbeans,
1791 [ --disable-netbeans Disable NetBeans integration support.],
1792 , [enable_netbeans="yes"])
1793if test "$enable_netbeans" = "yes"; then
1794 AC_MSG_RESULT(no)
1795 dnl On Solaris we need the socket and nsl library.
1796 AC_CHECK_LIB(socket, socket)
1797 AC_CHECK_LIB(nsl, gethostbyname)
1798 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1799 AC_TRY_LINK([
1800#include <stdio.h>
1801#include <stdlib.h>
1802#include <stdarg.h>
1803#include <fcntl.h>
1804#include <netdb.h>
1805#include <netinet/in.h>
1806#include <errno.h>
1807#include <sys/types.h>
1808#include <sys/socket.h>
1809 /* Check bitfields */
1810 struct nbbuf {
1811 unsigned int initDone:1;
1812 ushort signmaplen;
1813 };
1814 ], [
1815 /* Check creating a socket. */
1816 struct sockaddr_in server;
1817 (void)socket(AF_INET, SOCK_STREAM, 0);
1818 (void)htons(100);
1819 (void)gethostbyname("microsoft.com");
1820 if (errno == ECONNREFUSED)
1821 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1822 ],
1823 AC_MSG_RESULT(yes),
1824 AC_MSG_RESULT(no); enable_netbeans="no")
1825else
1826 AC_MSG_RESULT(yes)
1827fi
1828if test "$enable_netbeans" = "yes"; then
1829 AC_DEFINE(FEAT_NETBEANS_INTG)
1830 NETBEANS_SRC="netbeans.c"
1831 AC_SUBST(NETBEANS_SRC)
1832 NETBEANS_OBJ="objects/netbeans.o"
1833 AC_SUBST(NETBEANS_OBJ)
1834fi
1835
1836AC_MSG_CHECKING(--enable-sniff argument)
1837AC_ARG_ENABLE(sniff,
1838 [ --enable-sniff Include Sniff interface.], ,
1839 [enable_sniff="no"])
1840AC_MSG_RESULT($enable_sniff)
1841if test "$enable_sniff" = "yes"; then
1842 AC_DEFINE(FEAT_SNIFF)
1843 SNIFF_SRC="if_sniff.c"
1844 AC_SUBST(SNIFF_SRC)
1845 SNIFF_OBJ="objects/if_sniff.o"
1846 AC_SUBST(SNIFF_OBJ)
1847fi
1848
1849AC_MSG_CHECKING(--enable-multibyte argument)
1850AC_ARG_ENABLE(multibyte,
1851 [ --enable-multibyte Include multibyte editing support.], ,
1852 [enable_multibyte="no"])
1853AC_MSG_RESULT($enable_multibyte)
1854if test "$enable_multibyte" = "yes"; then
1855 AC_DEFINE(FEAT_MBYTE)
1856fi
1857
1858AC_MSG_CHECKING(--enable-hangulinput argument)
1859AC_ARG_ENABLE(hangulinput,
1860 [ --enable-hangulinput Include Hangul input support.], ,
1861 [enable_hangulinput="no"])
1862AC_MSG_RESULT($enable_hangulinput)
1863
1864AC_MSG_CHECKING(--enable-xim argument)
1865AC_ARG_ENABLE(xim,
1866 [ --enable-xim Include XIM input support.],
1867 AC_MSG_RESULT($enable_xim),
1868 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001869
1870AC_MSG_CHECKING(--enable-fontset argument)
1871AC_ARG_ENABLE(fontset,
1872 [ --enable-fontset Include X fontset output support.], ,
1873 [enable_fontset="no"])
1874AC_MSG_RESULT($enable_fontset)
1875dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1876
1877test -z "$with_x" && with_x=yes
1878test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1879if test "$with_x" = no; then
1880 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1881else
1882 dnl Do this check early, so that its failure can override user requests.
1883
1884 AC_PATH_PROG(xmkmfpath, xmkmf)
1885
1886 AC_PATH_XTRA
1887
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001888 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001889 dnl be compiled with a special option.
1890 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001891 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001892 CFLAGS="$CFLAGS -W c,dll"
1893 LDFLAGS="$LDFLAGS -W l,dll"
1894 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1895 fi
1896
1897 dnl On my HPUX system the X include dir is found, but the lib dir not.
1898 dnl This is a desparate try to fix this.
1899
1900 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1901 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1902 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1903 X_LIBS="$X_LIBS -L$x_libraries"
1904 if test "`(uname) 2>/dev/null`" = SunOS &&
1905 uname -r | grep '^5' >/dev/null; then
1906 X_LIBS="$X_LIBS -R $x_libraries"
1907 fi
1908 fi
1909
1910 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1911 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1912 AC_MSG_RESULT(Corrected X includes to $x_includes)
1913 X_CFLAGS="$X_CFLAGS -I$x_includes"
1914 fi
1915
1916 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1917 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1918 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1919 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1920 dnl Same for "-R/usr/lib ".
1921 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1922
1923
1924 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001925 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1926 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001927 AC_MSG_CHECKING(if X11 header files can be found)
1928 cflags_save=$CFLAGS
1929 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001930 AC_TRY_COMPILE([#include <X11/Xlib.h>
1931#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001932 AC_MSG_RESULT(yes),
1933 AC_MSG_RESULT(no); no_x=yes)
1934 CFLAGS=$cflags_save
1935
1936 if test "${no_x-no}" = yes; then
1937 with_x=no
1938 else
1939 AC_DEFINE(HAVE_X11)
1940 X_LIB="-lXt -lX11";
1941 AC_SUBST(X_LIB)
1942
1943 ac_save_LDFLAGS="$LDFLAGS"
1944 LDFLAGS="-L$x_libraries $LDFLAGS"
1945
1946 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1947 dnl For HP-UX 10.20 it must be before -lSM -lICE
1948 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1949 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1950
1951 dnl Some systems need -lnsl -lsocket when testing for ICE.
1952 dnl The check above doesn't do this, try here (again). Also needed to get
1953 dnl them after Xdmcp. link.sh will remove them when not needed.
1954 dnl Check for other function than above to avoid the cached value
1955 AC_CHECK_LIB(ICE, IceOpenConnection,
1956 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1957
1958 dnl Check for -lXpm (needed for some versions of Motif)
1959 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1960 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1961 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1962
1963 dnl Check that the X11 header files don't use implicit declarations
1964 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1965 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001966 dnl -Werror is GCC only, others like Solaris Studio might not like it
1967 if test "$GCC" = yes; then
1968 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1969 else
1970 CFLAGS="$CFLAGS $X_CFLAGS"
1971 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1973 AC_MSG_RESULT(no),
1974 CFLAGS="$CFLAGS -Wno-implicit-int"
1975 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1976 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1977 AC_MSG_RESULT(test failed)
1978 )
1979 )
1980 CFLAGS=$cflags_save
1981
1982 LDFLAGS="$ac_save_LDFLAGS"
1983
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001984 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1985 AC_CACHE_VAL(ac_cv_small_wchar_t,
1986 [AC_TRY_RUN([
1987#include <X11/Xlib.h>
1988#if STDC_HEADERS
1989# include <stdlib.h>
1990# include <stddef.h>
1991#endif
1992 main()
1993 {
1994 if (sizeof(wchar_t) <= 2)
1995 exit(1);
1996 exit(0);
1997 }],
1998 ac_cv_small_wchar_t="no",
1999 ac_cv_small_wchar_t="yes",
2000 AC_MSG_ERROR(failed to compile test program))])
2001 AC_MSG_RESULT($ac_cv_small_wchar_t)
2002 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2003 AC_DEFINE(SMALL_WCHAR_T)
2004 fi
2005
Bram Moolenaar071d4272004-06-13 20:20:40 +00002006 fi
2007fi
2008
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002009test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002010
2011AC_MSG_CHECKING(--enable-gui argument)
2012AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002013 [ --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 +00002014
2015dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2016dnl Do not use character classes for portability with old tools.
2017enable_gui_canon=`echo "_$enable_gui" | \
2018 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2019
2020dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002021SKIP_GTK2=YES
2022SKIP_GNOME=YES
2023SKIP_MOTIF=YES
2024SKIP_ATHENA=YES
2025SKIP_NEXTAW=YES
2026SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002027SKIP_CARBON=YES
2028GUITYPE=NONE
2029
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002030if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002031 SKIP_PHOTON=
2032 case "$enable_gui_canon" in
2033 no) AC_MSG_RESULT(no GUI support)
2034 SKIP_PHOTON=YES ;;
2035 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2036 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2037 photon) AC_MSG_RESULT(Photon GUI support) ;;
2038 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2039 SKIP_PHOTON=YES ;;
2040 esac
2041
2042elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2043 SKIP_CARBON=
2044 case "$enable_gui_canon" in
2045 no) AC_MSG_RESULT(no GUI support)
2046 SKIP_CARBON=YES ;;
2047 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002048 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2049 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002050 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2051 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2052 SKIP_CARBON=YES ;;
2053 esac
2054
2055else
2056
Bram Moolenaar071d4272004-06-13 20:20:40 +00002057 case "$enable_gui_canon" in
2058 no|none) AC_MSG_RESULT(no GUI support) ;;
2059 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002060 SKIP_GTK2=
2061 SKIP_GNOME=
2062 SKIP_MOTIF=
2063 SKIP_ATHENA=
2064 SKIP_NEXTAW=
2065 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002066 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002068 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2069 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002070 SKIP_GTK2=;;
2071 motif) AC_MSG_RESULT(Motif GUI support)
2072 SKIP_MOTIF=;;
2073 athena) AC_MSG_RESULT(Athena GUI support)
2074 SKIP_ATHENA=;;
2075 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2076 SKIP_NEXTAW=;;
2077 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2078 esac
2079
2080fi
2081
Bram Moolenaar071d4272004-06-13 20:20:40 +00002082if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2083 -a "$enable_gui_canon" != "gnome2"; then
2084 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2085 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002086 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002087 , enable_gtk2_check="yes")
2088 AC_MSG_RESULT($enable_gtk2_check)
2089 if test "x$enable_gtk2_check" = "xno"; then
2090 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002091 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002092 fi
2093fi
2094
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002095if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002096 AC_MSG_CHECKING(whether or not to look for GNOME)
2097 AC_ARG_ENABLE(gnome-check,
2098 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2099 , enable_gnome_check="no")
2100 AC_MSG_RESULT($enable_gnome_check)
2101 if test "x$enable_gnome_check" = "xno"; then
2102 SKIP_GNOME=YES
2103 fi
2104fi
2105
2106if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2107 AC_MSG_CHECKING(whether or not to look for Motif)
2108 AC_ARG_ENABLE(motif-check,
2109 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2110 , enable_motif_check="yes")
2111 AC_MSG_RESULT($enable_motif_check)
2112 if test "x$enable_motif_check" = "xno"; then
2113 SKIP_MOTIF=YES
2114 fi
2115fi
2116
2117if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2118 AC_MSG_CHECKING(whether or not to look for Athena)
2119 AC_ARG_ENABLE(athena-check,
2120 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2121 , enable_athena_check="yes")
2122 AC_MSG_RESULT($enable_athena_check)
2123 if test "x$enable_athena_check" = "xno"; then
2124 SKIP_ATHENA=YES
2125 fi
2126fi
2127
2128if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2129 AC_MSG_CHECKING(whether or not to look for neXtaw)
2130 AC_ARG_ENABLE(nextaw-check,
2131 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2132 , enable_nextaw_check="yes")
2133 AC_MSG_RESULT($enable_nextaw_check);
2134 if test "x$enable_nextaw_check" = "xno"; then
2135 SKIP_NEXTAW=YES
2136 fi
2137fi
2138
2139if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2140 AC_MSG_CHECKING(whether or not to look for Carbon)
2141 AC_ARG_ENABLE(carbon-check,
2142 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2143 , enable_carbon_check="yes")
2144 AC_MSG_RESULT($enable_carbon_check);
2145 if test "x$enable_carbon_check" = "xno"; then
2146 SKIP_CARBON=YES
2147 fi
2148fi
2149
Bram Moolenaar843ee412004-06-30 16:16:41 +00002150
Bram Moolenaar071d4272004-06-13 20:20:40 +00002151if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2152 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002153 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002154 AC_MSG_RESULT(yes);
2155 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002156 if test "$VIMNAME" = "vim"; then
2157 VIMNAME=Vim
2158 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002159
Bram Moolenaar164fca32010-07-14 13:58:07 +02002160 if test "x$MACARCH" = "xboth"; then
2161 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2162 else
2163 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2164 fi
2165
Bram Moolenaar14716812006-05-04 21:54:08 +00002166 dnl Default install directory is not /usr/local
2167 if test x$prefix = xNONE; then
2168 prefix=/Applications
2169 fi
2170
2171 dnl Sorry for the hard coded default
2172 datadir='${prefix}/Vim.app/Contents/Resources'
2173
Bram Moolenaar071d4272004-06-13 20:20:40 +00002174 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002175 SKIP_GTK2=YES;
2176 SKIP_GNOME=YES;
2177 SKIP_MOTIF=YES;
2178 SKIP_ATHENA=YES;
2179 SKIP_NEXTAW=YES;
2180 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181 SKIP_CARBON=YES
2182fi
2183
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002185dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002186dnl
2187dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002188dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002189dnl
2190AC_DEFUN(AM_PATH_GTK,
2191[
2192 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2193 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002194 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002195 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2196 no_gtk=""
2197 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2198 && $PKG_CONFIG --exists gtk+-2.0; then
2199 {
2200 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2201 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2202 dnl something like that.
2203 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002204 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002205 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2206 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2207 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2208 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2209 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2210 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2211 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2212 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002213 else
2214 no_gtk=yes
2215 fi
2216
2217 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2218 {
2219 ac_save_CFLAGS="$CFLAGS"
2220 ac_save_LIBS="$LIBS"
2221 CFLAGS="$CFLAGS $GTK_CFLAGS"
2222 LIBS="$LIBS $GTK_LIBS"
2223
2224 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002225 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226 dnl
2227 rm -f conf.gtktest
2228 AC_TRY_RUN([
2229#include <gtk/gtk.h>
2230#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002231#if STDC_HEADERS
2232# include <stdlib.h>
2233# include <stddef.h>
2234#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002235
2236int
2237main ()
2238{
2239int major, minor, micro;
2240char *tmp_version;
2241
2242system ("touch conf.gtktest");
2243
2244/* HP/UX 9 (%@#!) writes to sscanf strings */
2245tmp_version = g_strdup("$min_gtk_version");
2246if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2247 printf("%s, bad version string\n", "$min_gtk_version");
2248 exit(1);
2249 }
2250
2251if ((gtk_major_version > major) ||
2252 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2253 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2254 (gtk_micro_version >= micro)))
2255{
2256 return 0;
2257}
2258return 1;
2259}
2260],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2261 CFLAGS="$ac_save_CFLAGS"
2262 LIBS="$ac_save_LIBS"
2263 }
2264 fi
2265 if test "x$no_gtk" = x ; then
2266 if test "x$enable_gtktest" = "xyes"; then
2267 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2268 else
2269 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2270 fi
2271 ifelse([$2], , :, [$2])
2272 else
2273 {
2274 AC_MSG_RESULT(no)
2275 GTK_CFLAGS=""
2276 GTK_LIBS=""
2277 ifelse([$3], , :, [$3])
2278 }
2279 fi
2280 }
2281 else
2282 GTK_CFLAGS=""
2283 GTK_LIBS=""
2284 ifelse([$3], , :, [$3])
2285 fi
2286 AC_SUBST(GTK_CFLAGS)
2287 AC_SUBST(GTK_LIBS)
2288 rm -f conf.gtktest
2289])
2290
2291dnl ---------------------------------------------------------------------------
2292dnl gnome
2293dnl ---------------------------------------------------------------------------
2294AC_DEFUN([GNOME_INIT_HOOK],
2295[
2296 AC_SUBST(GNOME_LIBS)
2297 AC_SUBST(GNOME_LIBDIR)
2298 AC_SUBST(GNOME_INCLUDEDIR)
2299
2300 AC_ARG_WITH(gnome-includes,
2301 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2302 [CFLAGS="$CFLAGS -I$withval"]
2303 )
2304
2305 AC_ARG_WITH(gnome-libs,
2306 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2307 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2308 )
2309
2310 AC_ARG_WITH(gnome,
2311 [ --with-gnome Specify prefix for GNOME files],
2312 if test x$withval = xyes; then
2313 want_gnome=yes
2314 ifelse([$1], [], :, [$1])
2315 else
2316 if test "x$withval" = xno; then
2317 want_gnome=no
2318 else
2319 want_gnome=yes
2320 LDFLAGS="$LDFLAGS -L$withval/lib"
2321 CFLAGS="$CFLAGS -I$withval/include"
2322 gnome_prefix=$withval/lib
2323 fi
2324 fi,
2325 want_gnome=yes)
2326
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002327 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002328 {
2329 AC_MSG_CHECKING(for libgnomeui-2.0)
2330 if $PKG_CONFIG --exists libgnomeui-2.0; then
2331 AC_MSG_RESULT(yes)
2332 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2333 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2334 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002335
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002336 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2337 dnl This might not be the right way but it works for me...
2338 AC_MSG_CHECKING(for FreeBSD)
2339 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2340 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002341 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002342 GNOME_LIBS="$GNOME_LIBS -pthread"
2343 else
2344 AC_MSG_RESULT(no)
2345 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002346 $1
2347 else
2348 AC_MSG_RESULT(not found)
2349 if test "x$2" = xfail; then
2350 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2351 fi
2352 fi
2353 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002354 fi
2355])
2356
2357AC_DEFUN([GNOME_INIT],[
2358 GNOME_INIT_HOOK([],fail)
2359])
2360
2361
2362dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002363dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002364dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002365if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002366
2367 AC_MSG_CHECKING(--disable-gtktest argument)
2368 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2369 , enable_gtktest=yes)
2370 if test "x$enable_gtktest" = "xyes" ; then
2371 AC_MSG_RESULT(gtk test enabled)
2372 else
2373 AC_MSG_RESULT(gtk test disabled)
2374 fi
2375
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 if test "X$PKG_CONFIG" = "X"; then
2377 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2378 fi
2379
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002380 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002381 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2382 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002383 AM_PATH_GTK(2.2.0,
2384 [GUI_LIB_LOC="$GTK_LIBDIR"
2385 GTK_LIBNAME="$GTK_LIBS"
2386 GUI_INC_LOC="$GTK_CFLAGS"], )
2387 if test "x$GTK_CFLAGS" != "x"; then
2388 SKIP_ATHENA=YES
2389 SKIP_NEXTAW=YES
2390 SKIP_MOTIF=YES
2391 GUITYPE=GTK
2392 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002393 fi
2394 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002395 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002396 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2397 || test "0$gtk_minor_version" -ge 2; then
2398 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2399 fi
2400 dnl
2401 dnl if GTK exists, then check for GNOME.
2402 dnl
2403 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002404 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002405 GNOME_INIT_HOOK([have_gnome=yes])
2406 if test "x$have_gnome" = xyes ; then
2407 AC_DEFINE(FEAT_GUI_GNOME)
2408 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2409 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002410 fi
2411 }
2412 fi
2413 fi
2414fi
2415
2416dnl Check for Motif include files location.
2417dnl The LAST one found is used, this makes the highest version to be used,
2418dnl e.g. when Motif1.2 and Motif2.0 are both present.
2419
2420if test -z "$SKIP_MOTIF"; then
2421 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"
2422 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2423 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2424
2425 AC_MSG_CHECKING(for location of Motif GUI includes)
2426 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2427 GUI_INC_LOC=
2428 for try in $gui_includes; do
2429 if test -f "$try/Xm/Xm.h"; then
2430 GUI_INC_LOC=$try
2431 fi
2432 done
2433 if test -n "$GUI_INC_LOC"; then
2434 if test "$GUI_INC_LOC" = /usr/include; then
2435 GUI_INC_LOC=
2436 AC_MSG_RESULT(in default path)
2437 else
2438 AC_MSG_RESULT($GUI_INC_LOC)
2439 fi
2440 else
2441 AC_MSG_RESULT(<not found>)
2442 SKIP_MOTIF=YES
2443 fi
2444fi
2445
2446dnl Check for Motif library files location. In the same order as the include
2447dnl files, to avoid a mixup if several versions are present
2448
2449if test -z "$SKIP_MOTIF"; then
2450 AC_MSG_CHECKING(--with-motif-lib argument)
2451 AC_ARG_WITH(motif-lib,
2452 [ --with-motif-lib=STRING Library for Motif ],
2453 [ MOTIF_LIBNAME="${withval}" ] )
2454
2455 if test -n "$MOTIF_LIBNAME"; then
2456 AC_MSG_RESULT($MOTIF_LIBNAME)
2457 GUI_LIB_LOC=
2458 else
2459 AC_MSG_RESULT(no)
2460
2461 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2462 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2463
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002464 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2465 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002466 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002467 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 +00002468 GUI_LIB_LOC=
2469 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002470 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002471 if test -f "$libtry"; then
2472 GUI_LIB_LOC=$try
2473 fi
2474 done
2475 done
2476 if test -n "$GUI_LIB_LOC"; then
2477 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002478 if test "$GUI_LIB_LOC" = /usr/lib \
2479 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2480 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002481 GUI_LIB_LOC=
2482 AC_MSG_RESULT(in default path)
2483 else
2484 if test -n "$GUI_LIB_LOC"; then
2485 AC_MSG_RESULT($GUI_LIB_LOC)
2486 if test "`(uname) 2>/dev/null`" = SunOS &&
2487 uname -r | grep '^5' >/dev/null; then
2488 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2489 fi
2490 fi
2491 fi
2492 MOTIF_LIBNAME=-lXm
2493 else
2494 AC_MSG_RESULT(<not found>)
2495 SKIP_MOTIF=YES
2496 fi
2497 fi
2498fi
2499
2500if test -z "$SKIP_MOTIF"; then
2501 SKIP_ATHENA=YES
2502 SKIP_NEXTAW=YES
2503 GUITYPE=MOTIF
2504 AC_SUBST(MOTIF_LIBNAME)
2505fi
2506
2507dnl Check if the Athena files can be found
2508
2509GUI_X_LIBS=
2510
2511if test -z "$SKIP_ATHENA"; then
2512 AC_MSG_CHECKING(if Athena header files can be found)
2513 cflags_save=$CFLAGS
2514 CFLAGS="$CFLAGS $X_CFLAGS"
2515 AC_TRY_COMPILE([
2516#include <X11/Intrinsic.h>
2517#include <X11/Xaw/Paned.h>], ,
2518 AC_MSG_RESULT(yes),
2519 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2520 CFLAGS=$cflags_save
2521fi
2522
2523if test -z "$SKIP_ATHENA"; then
2524 GUITYPE=ATHENA
2525fi
2526
2527if test -z "$SKIP_NEXTAW"; then
2528 AC_MSG_CHECKING(if neXtaw header files can be found)
2529 cflags_save=$CFLAGS
2530 CFLAGS="$CFLAGS $X_CFLAGS"
2531 AC_TRY_COMPILE([
2532#include <X11/Intrinsic.h>
2533#include <X11/neXtaw/Paned.h>], ,
2534 AC_MSG_RESULT(yes),
2535 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2536 CFLAGS=$cflags_save
2537fi
2538
2539if test -z "$SKIP_NEXTAW"; then
2540 GUITYPE=NEXTAW
2541fi
2542
2543if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2544 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2545 dnl Avoid adding it when it twice
2546 if test -n "$GUI_INC_LOC"; then
2547 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2548 fi
2549 if test -n "$GUI_LIB_LOC"; then
2550 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2551 fi
2552
2553 dnl Check for -lXext and then for -lXmu
2554 ldflags_save=$LDFLAGS
2555 LDFLAGS="$X_LIBS $LDFLAGS"
2556 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2557 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2558 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2559 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2560 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2561 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2562 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2563 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2564 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2565 if test -z "$SKIP_MOTIF"; then
2566 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2567 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2568 fi
2569 LDFLAGS=$ldflags_save
2570
2571 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2572 AC_MSG_CHECKING(for extra X11 defines)
2573 NARROW_PROTO=
2574 rm -fr conftestdir
2575 if mkdir conftestdir; then
2576 cd conftestdir
2577 cat > Imakefile <<'EOF'
2578acfindx:
2579 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2580EOF
2581 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2582 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2583 fi
2584 cd ..
2585 rm -fr conftestdir
2586 fi
2587 if test -z "$NARROW_PROTO"; then
2588 AC_MSG_RESULT(no)
2589 else
2590 AC_MSG_RESULT($NARROW_PROTO)
2591 fi
2592 AC_SUBST(NARROW_PROTO)
2593fi
2594
2595dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2596dnl use the X11 include path
2597if test "$enable_xsmp" = "yes"; then
2598 cppflags_save=$CPPFLAGS
2599 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2600 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2601 CPPFLAGS=$cppflags_save
2602fi
2603
2604
Bram Moolenaare667c952010-07-05 22:57:59 +02002605if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002606 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2607 cppflags_save=$CPPFLAGS
2608 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2609 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2610
2611 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2612 if test ! "$enable_xim" = "no"; then
2613 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2614 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2615 AC_MSG_RESULT(yes),
2616 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2617 fi
2618 CPPFLAGS=$cppflags_save
2619
2620 dnl automatically enable XIM when hangul input isn't enabled
2621 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2622 -a "x$GUITYPE" != "xNONE" ; then
2623 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2624 enable_xim="yes"
2625 fi
2626fi
2627
2628if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2629 cppflags_save=$CPPFLAGS
2630 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002631dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2632 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2633 AC_TRY_COMPILE([
2634#include <X11/Intrinsic.h>
2635#include <X11/Xmu/Editres.h>],
2636 [int i; i = 0;],
2637 AC_MSG_RESULT(yes)
2638 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2639 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640 CPPFLAGS=$cppflags_save
2641fi
2642
2643dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2644if test -z "$SKIP_MOTIF"; then
2645 cppflags_save=$CPPFLAGS
2646 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002647 if test "$zOSUnix" = "yes"; then
2648 xmheader="Xm/Xm.h"
2649 else
2650 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002651 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002652 fi
2653 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002654
Bram Moolenaar77c19352012-06-13 19:19:41 +02002655 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002656 dnl Solaris uses XpmAttributes_21, very annoying.
2657 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2658 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2659 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2660 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2661 )
2662 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002663 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002664 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002665 CPPFLAGS=$cppflags_save
2666fi
2667
2668if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2669 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2670 enable_xim="no"
2671fi
2672if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2673 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2674 enable_fontset="no"
2675fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002676if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2678 enable_fontset="no"
2679fi
2680
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681if test -z "$SKIP_PHOTON"; then
2682 GUITYPE=PHOTONGUI
2683fi
2684
2685AC_SUBST(GUI_INC_LOC)
2686AC_SUBST(GUI_LIB_LOC)
2687AC_SUBST(GUITYPE)
2688AC_SUBST(GUI_X_LIBS)
2689
2690if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2691 AC_MSG_ERROR([cannot use workshop without Motif])
2692fi
2693
2694dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2695if test "$enable_xim" = "yes"; then
2696 AC_DEFINE(FEAT_XIM)
2697fi
2698if test "$enable_fontset" = "yes"; then
2699 AC_DEFINE(FEAT_XFONTSET)
2700fi
2701
2702
2703dnl ---------------------------------------------------------------------------
2704dnl end of GUI-checking
2705dnl ---------------------------------------------------------------------------
2706
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002707dnl Check for Cygwin, which needs an extra source file if not using X11
2708AC_MSG_CHECKING(for CYGWIN environment)
2709case `uname` in
2710 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2711 AC_MSG_CHECKING(for CYGWIN clipboard support)
2712 if test "x$with_x" = "xno" ; then
2713 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2714 AC_MSG_RESULT(yes)
2715 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2716 else
2717 AC_MSG_RESULT(no - using X11)
2718 fi ;;
2719
2720 *) CYGWIN=no; AC_MSG_RESULT(no);;
2721esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002722
2723dnl Only really enable hangul input when GUI and XFONTSET are available
2724if test "$enable_hangulinput" = "yes"; then
2725 if test "x$GUITYPE" = "xNONE"; then
2726 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2727 enable_hangulinput=no
2728 else
2729 AC_DEFINE(FEAT_HANGULIN)
2730 HANGULIN_SRC=hangulin.c
2731 AC_SUBST(HANGULIN_SRC)
2732 HANGULIN_OBJ=objects/hangulin.o
2733 AC_SUBST(HANGULIN_OBJ)
2734 fi
2735fi
2736
2737dnl Checks for libraries and include files.
2738
Bram Moolenaar446cb832008-06-24 21:56:24 +00002739AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2740 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002741 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002742#include "confdefs.h"
2743#include <ctype.h>
2744#if STDC_HEADERS
2745# include <stdlib.h>
2746# include <stddef.h>
2747#endif
2748main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002749 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002750 vim_cv_toupper_broken=yes
2751 ],[
2752 vim_cv_toupper_broken=no
2753 ],[
2754 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2755 ])])
2756
2757if test "x$vim_cv_toupper_broken" = "xyes" ; then
2758 AC_DEFINE(BROKEN_TOUPPER)
2759fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002760
2761AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002762AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002763 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2764 AC_MSG_RESULT(no))
2765
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002766AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2767AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2768 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2769 AC_MSG_RESULT(no))
2770
Bram Moolenaar071d4272004-06-13 20:20:40 +00002771dnl Checks for header files.
2772AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2773dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2774if test "$HAS_ELF" = 1; then
2775 AC_CHECK_LIB(elf, main)
2776fi
2777
2778AC_HEADER_DIRENT
2779
Bram Moolenaar071d4272004-06-13 20:20:40 +00002780dnl If sys/wait.h is not found it might still exist but not be POSIX
2781dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2782if test $ac_cv_header_sys_wait_h = no; then
2783 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2784 AC_TRY_COMPILE([#include <sys/wait.h>],
2785 [union wait xx, yy; xx = yy],
2786 AC_MSG_RESULT(yes)
2787 AC_DEFINE(HAVE_SYS_WAIT_H)
2788 AC_DEFINE(HAVE_UNION_WAIT),
2789 AC_MSG_RESULT(no))
2790fi
2791
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002792AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2793 sys/select.h sys/utsname.h termcap.h fcntl.h \
2794 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2795 termio.h iconv.h inttypes.h langinfo.h math.h \
2796 unistd.h stropts.h errno.h sys/resource.h \
2797 sys/systeminfo.h locale.h sys/stream.h termios.h \
2798 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2799 utime.h sys/param.h libintl.h libgen.h \
2800 util/debug.h util/msg18n.h frame.h sys/acl.h \
2801 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002802
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002803dnl sys/ptem.h depends on sys/stream.h on Solaris
2804AC_CHECK_HEADERS(sys/ptem.h, [], [],
2805[#if defined HAVE_SYS_STREAM_H
2806# include <sys/stream.h>
2807#endif])
2808
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002809dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2810AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2811[#if defined HAVE_SYS_PARAM_H
2812# include <sys/param.h>
2813#endif])
2814
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002815
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002816dnl pthread_np.h may exist but can only be used after including pthread.h
2817AC_MSG_CHECKING([for pthread_np.h])
2818AC_TRY_COMPILE([
2819#include <pthread.h>
2820#include <pthread_np.h>],
2821 [int i; i = 0;],
2822 AC_MSG_RESULT(yes)
2823 AC_DEFINE(HAVE_PTHREAD_NP_H),
2824 AC_MSG_RESULT(no))
2825
Bram Moolenaare344bea2005-09-01 20:46:49 +00002826AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002827if test "x$MACOSX" = "xyes"; then
2828 dnl The strings.h file on OS/X contains a warning and nothing useful.
2829 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2830else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002831
2832dnl Check if strings.h and string.h can both be included when defined.
2833AC_MSG_CHECKING([if strings.h can be included after string.h])
2834cppflags_save=$CPPFLAGS
2835CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2836AC_TRY_COMPILE([
2837#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2838# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2839 /* but don't do it on AIX 5.1 (Uribarri) */
2840#endif
2841#ifdef HAVE_XM_XM_H
2842# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2843#endif
2844#ifdef HAVE_STRING_H
2845# include <string.h>
2846#endif
2847#if defined(HAVE_STRINGS_H)
2848# include <strings.h>
2849#endif
2850 ], [int i; i = 0;],
2851 AC_MSG_RESULT(yes),
2852 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2853 AC_MSG_RESULT(no))
2854CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002855fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002856
2857dnl Checks for typedefs, structures, and compiler characteristics.
2858AC_PROG_GCC_TRADITIONAL
2859AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002860AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002861AC_TYPE_MODE_T
2862AC_TYPE_OFF_T
2863AC_TYPE_PID_T
2864AC_TYPE_SIZE_T
2865AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002866AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002867
Bram Moolenaar071d4272004-06-13 20:20:40 +00002868AC_HEADER_TIME
2869AC_CHECK_TYPE(ino_t, long)
2870AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002871AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002872
2873AC_MSG_CHECKING(for rlim_t)
2874if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2875 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2876else
2877 AC_EGREP_CPP(dnl
2878changequote(<<,>>)dnl
2879<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2880changequote([,]),
2881 [
2882#include <sys/types.h>
2883#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002884# include <stdlib.h>
2885# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886#endif
2887#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002888# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002889#endif
2890 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2891 AC_MSG_RESULT($ac_cv_type_rlim_t)
2892fi
2893if test $ac_cv_type_rlim_t = no; then
2894 cat >> confdefs.h <<\EOF
2895#define rlim_t unsigned long
2896EOF
2897fi
2898
2899AC_MSG_CHECKING(for stack_t)
2900if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2901 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2902else
2903 AC_EGREP_CPP(stack_t,
2904 [
2905#include <sys/types.h>
2906#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002907# include <stdlib.h>
2908# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002909#endif
2910#include <signal.h>
2911 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2912 AC_MSG_RESULT($ac_cv_type_stack_t)
2913fi
2914if test $ac_cv_type_stack_t = no; then
2915 cat >> confdefs.h <<\EOF
2916#define stack_t struct sigaltstack
2917EOF
2918fi
2919
2920dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2921AC_MSG_CHECKING(whether stack_t has an ss_base field)
2922AC_TRY_COMPILE([
2923#include <sys/types.h>
2924#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002925# include <stdlib.h>
2926# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002927#endif
2928#include <signal.h>
2929#include "confdefs.h"
2930 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2931 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2932 AC_MSG_RESULT(no))
2933
2934olibs="$LIBS"
2935AC_MSG_CHECKING(--with-tlib argument)
2936AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2937if test -n "$with_tlib"; then
2938 AC_MSG_RESULT($with_tlib)
2939 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002940 AC_MSG_CHECKING(for linking with $with_tlib library)
2941 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2942 dnl Need to check for tgetent() below.
2943 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002944else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002945 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002946 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2947 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002948 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002949 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002950 dnl Older versions of ncurses have bugs, get a new one!
2951 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002952 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002953 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002954 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2955 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002956 esac
2957 for libname in $tlibs; do
2958 AC_CHECK_LIB(${libname}, tgetent,,)
2959 if test "x$olibs" != "x$LIBS"; then
2960 dnl It's possible that a library is found but it doesn't work
2961 dnl e.g., shared library that cannot be found
2962 dnl compile and run a test program to be sure
2963 AC_TRY_RUN([
2964#ifdef HAVE_TERMCAP_H
2965# include <termcap.h>
2966#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002967#if STDC_HEADERS
2968# include <stdlib.h>
2969# include <stddef.h>
2970#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2972 res="OK", res="FAIL", res="FAIL")
2973 if test "$res" = "OK"; then
2974 break
2975 fi
2976 AC_MSG_RESULT($libname library is not usable)
2977 LIBS="$olibs"
2978 fi
2979 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002980 if test "x$olibs" = "x$LIBS"; then
2981 AC_MSG_RESULT(no terminal library found)
2982 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002983fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002984
2985if test "x$olibs" = "x$LIBS"; then
2986 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002987 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002988 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2989 AC_MSG_RESULT(yes),
2990 AC_MSG_ERROR([NOT FOUND!
2991 You need to install a terminal library; for example ncurses.
2992 Or specify the name of the library with --with-tlib.]))
2993fi
2994
Bram Moolenaar446cb832008-06-24 21:56:24 +00002995AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2996 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002997 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002998#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002999#ifdef HAVE_TERMCAP_H
3000# include <termcap.h>
3001#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003002#ifdef HAVE_STRING_H
3003# include <string.h>
3004#endif
3005#if STDC_HEADERS
3006# include <stdlib.h>
3007# include <stddef.h>
3008#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003009main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003010{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003011 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003012 vim_cv_terminfo=no
3013 ],[
3014 vim_cv_terminfo=yes
3015 ],[
3016 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3017 ])
3018 ])
3019
3020if test "x$vim_cv_terminfo" = "xyes" ; then
3021 AC_DEFINE(TERMINFO)
3022fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003023
3024if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003025 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
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#if STDC_HEADERS
3033# include <stdlib.h>
3034# include <stddef.h>
3035#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003037{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003038 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003039 vim_cv_tgent=zero
3040 ],[
3041 vim_cv_tgent=non-zero
3042 ],[
3043 AC_MSG_ERROR(failed to compile test program.)
3044 ])
3045 ])
3046
3047 if test "x$vim_cv_tgent" = "xzero" ; then
3048 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3049 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003050fi
3051
3052AC_MSG_CHECKING(whether termcap.h contains ospeed)
3053AC_TRY_LINK([
3054#ifdef HAVE_TERMCAP_H
3055# include <termcap.h>
3056#endif
3057 ], [ospeed = 20000],
3058 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3059 [AC_MSG_RESULT(no)
3060 AC_MSG_CHECKING(whether ospeed can be extern)
3061 AC_TRY_LINK([
3062#ifdef HAVE_TERMCAP_H
3063# include <termcap.h>
3064#endif
3065extern short ospeed;
3066 ], [ospeed = 20000],
3067 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3068 AC_MSG_RESULT(no))]
3069 )
3070
3071AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3072AC_TRY_LINK([
3073#ifdef HAVE_TERMCAP_H
3074# include <termcap.h>
3075#endif
3076 ], [if (UP == 0 && BC == 0) PC = 1],
3077 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3078 [AC_MSG_RESULT(no)
3079 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3080 AC_TRY_LINK([
3081#ifdef HAVE_TERMCAP_H
3082# include <termcap.h>
3083#endif
3084extern char *UP, *BC, PC;
3085 ], [if (UP == 0 && BC == 0) PC = 1],
3086 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3087 AC_MSG_RESULT(no))]
3088 )
3089
3090AC_MSG_CHECKING(whether tputs() uses outfuntype)
3091AC_TRY_COMPILE([
3092#ifdef HAVE_TERMCAP_H
3093# include <termcap.h>
3094#endif
3095 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3096 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3097 AC_MSG_RESULT(no))
3098
3099dnl On some SCO machines sys/select redefines struct timeval
3100AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3101AC_TRY_COMPILE([
3102#include <sys/types.h>
3103#include <sys/time.h>
3104#include <sys/select.h>], ,
3105 AC_MSG_RESULT(yes)
3106 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3107 AC_MSG_RESULT(no))
3108
3109dnl AC_DECL_SYS_SIGLIST
3110
3111dnl Checks for pty.c (copied from screen) ==========================
3112AC_MSG_CHECKING(for /dev/ptc)
3113if test -r /dev/ptc; then
3114 AC_DEFINE(HAVE_DEV_PTC)
3115 AC_MSG_RESULT(yes)
3116else
3117 AC_MSG_RESULT(no)
3118fi
3119
3120AC_MSG_CHECKING(for SVR4 ptys)
3121if test -c /dev/ptmx ; then
3122 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3123 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3124 AC_MSG_RESULT(no))
3125else
3126 AC_MSG_RESULT(no)
3127fi
3128
3129AC_MSG_CHECKING(for ptyranges)
3130if test -d /dev/ptym ; then
3131 pdir='/dev/ptym'
3132else
3133 pdir='/dev'
3134fi
3135dnl SCO uses ptyp%d
3136AC_EGREP_CPP(yes,
3137[#ifdef M_UNIX
3138 yes;
3139#endif
3140 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3141dnl if test -c /dev/ptyp19; then
3142dnl ptys=`echo /dev/ptyp??`
3143dnl else
3144dnl ptys=`echo $pdir/pty??`
3145dnl fi
3146if test "$ptys" != "$pdir/pty??" ; then
3147 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3148 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3149 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3150 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3151 AC_MSG_RESULT([$p0 / $p1])
3152else
3153 AC_MSG_RESULT([don't know])
3154fi
3155
3156dnl **** pty mode/group handling ****
3157dnl
3158dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003159rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003160AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3161 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003162 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003163#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003164#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003165#if STDC_HEADERS
3166# include <stdlib.h>
3167# include <stddef.h>
3168#endif
3169#ifdef HAVE_UNISTD_H
3170#include <unistd.h>
3171#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003172#include <sys/stat.h>
3173#include <stdio.h>
3174main()
3175{
3176 struct stat sb;
3177 char *x,*ttyname();
3178 int om, m;
3179 FILE *fp;
3180
3181 if (!(x = ttyname(0))) exit(1);
3182 if (stat(x, &sb)) exit(1);
3183 om = sb.st_mode;
3184 if (om & 002) exit(0);
3185 m = system("mesg y");
3186 if (m == -1 || m == 127) exit(1);
3187 if (stat(x, &sb)) exit(1);
3188 m = sb.st_mode;
3189 if (chmod(x, om)) exit(1);
3190 if (m & 002) exit(0);
3191 if (sb.st_gid == getgid()) exit(1);
3192 if (!(fp=fopen("conftest_grp", "w")))
3193 exit(1);
3194 fprintf(fp, "%d\n", sb.st_gid);
3195 fclose(fp);
3196 exit(0);
3197}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003198 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003199 if test -f conftest_grp; then
3200 vim_cv_tty_group=`cat conftest_grp`
3201 if test "x$vim_cv_tty_mode" = "x" ; then
3202 vim_cv_tty_mode=0620
3203 fi
3204 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3205 else
3206 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003207 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003208 fi
3209 ],[
3210 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003211 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003212 ],[
3213 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3214 ])
3215 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003216rm -f conftest_grp
3217
Bram Moolenaar446cb832008-06-24 21:56:24 +00003218if test "x$vim_cv_tty_group" != "xworld" ; then
3219 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3220 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003221 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 +00003222 else
3223 AC_DEFINE(PTYMODE, 0620)
3224 fi
3225fi
3226
Bram Moolenaar071d4272004-06-13 20:20:40 +00003227dnl Checks for library functions. ===================================
3228
3229AC_TYPE_SIGNAL
3230
3231dnl find out what to use at the end of a signal function
3232if test $ac_cv_type_signal = void; then
3233 AC_DEFINE(SIGRETURN, [return])
3234else
3235 AC_DEFINE(SIGRETURN, [return 0])
3236fi
3237
3238dnl check if struct sigcontext is defined (used for SGI only)
3239AC_MSG_CHECKING(for struct sigcontext)
3240AC_TRY_COMPILE([
3241#include <signal.h>
3242test_sig()
3243{
3244 struct sigcontext *scont;
3245 scont = (struct sigcontext *)0;
3246 return 1;
3247} ], ,
3248 AC_MSG_RESULT(yes)
3249 AC_DEFINE(HAVE_SIGCONTEXT),
3250 AC_MSG_RESULT(no))
3251
3252dnl tricky stuff: try to find out if getcwd() is implemented with
3253dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003254AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3255 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003256 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003257#include "confdefs.h"
3258#ifdef HAVE_UNISTD_H
3259#include <unistd.h>
3260#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003261char *dagger[] = { "IFS=pwd", 0 };
3262main()
3263{
3264 char buffer[500];
3265 extern char **environ;
3266 environ = dagger;
3267 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003268}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003269 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003270 vim_cv_getcwd_broken=no
3271 ],[
3272 vim_cv_getcwd_broken=yes
3273 ],[
3274 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3275 ])
3276 ])
3277
3278if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3279 AC_DEFINE(BAD_GETCWD)
3280fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003281
Bram Moolenaar25153e12010-02-24 14:47:08 +01003282dnl Check for functions in one big call, to reduce the size of configure.
3283dnl Can only be used for functions that do not require any include.
3284AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003285 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003286 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003287 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003288 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003289 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3290 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003291AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003292
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003293dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3294dnl appropriate, so that off_t is 64 bits when needed.
3295AC_SYS_LARGEFILE
3296
Bram Moolenaar071d4272004-06-13 20:20:40 +00003297dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3298AC_MSG_CHECKING(for st_blksize)
3299AC_TRY_COMPILE(
3300[#include <sys/types.h>
3301#include <sys/stat.h>],
3302[ struct stat st;
3303 int n;
3304
3305 stat("/", &st);
3306 n = (int)st.st_blksize;],
3307 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3308 AC_MSG_RESULT(no))
3309
Bram Moolenaar446cb832008-06-24 21:56:24 +00003310AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3311 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003312 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003313#include "confdefs.h"
3314#if STDC_HEADERS
3315# include <stdlib.h>
3316# include <stddef.h>
3317#endif
3318#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003319#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003320main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003321 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003322 vim_cv_stat_ignores_slash=yes
3323 ],[
3324 vim_cv_stat_ignores_slash=no
3325 ],[
3326 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3327 ])
3328 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003329
Bram Moolenaar446cb832008-06-24 21:56:24 +00003330if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3331 AC_DEFINE(STAT_IGNORES_SLASH)
3332fi
3333
Bram Moolenaar071d4272004-06-13 20:20:40 +00003334dnl Link with iconv for charset translation, if not found without library.
3335dnl check for iconv() requires including iconv.h
3336dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3337dnl has been installed.
3338AC_MSG_CHECKING(for iconv_open())
3339save_LIBS="$LIBS"
3340LIBS="$LIBS -liconv"
3341AC_TRY_LINK([
3342#ifdef HAVE_ICONV_H
3343# include <iconv.h>
3344#endif
3345 ], [iconv_open("fr", "to");],
3346 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3347 LIBS="$save_LIBS"
3348 AC_TRY_LINK([
3349#ifdef HAVE_ICONV_H
3350# include <iconv.h>
3351#endif
3352 ], [iconv_open("fr", "to");],
3353 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3354 AC_MSG_RESULT(no)))
3355
3356
3357AC_MSG_CHECKING(for nl_langinfo(CODESET))
3358AC_TRY_LINK([
3359#ifdef HAVE_LANGINFO_H
3360# include <langinfo.h>
3361#endif
3362], [char *cs = nl_langinfo(CODESET);],
3363 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3364 AC_MSG_RESULT(no))
3365
Bram Moolenaar446cb832008-06-24 21:56:24 +00003366dnl Need various functions for floating point support. Only enable
3367dnl floating point when they are all present.
3368AC_CHECK_LIB(m, strtod)
3369AC_MSG_CHECKING([for strtod() and other floating point functions])
3370AC_TRY_LINK([
3371#ifdef HAVE_MATH_H
3372# include <math.h>
3373#endif
3374#if STDC_HEADERS
3375# include <stdlib.h>
3376# include <stddef.h>
3377#endif
3378], [char *s; double d;
3379 d = strtod("1.1", &s);
3380 d = fabs(1.11);
3381 d = ceil(1.11);
3382 d = floor(1.11);
3383 d = log10(1.11);
3384 d = pow(1.11, 2.22);
3385 d = sqrt(1.11);
3386 d = sin(1.11);
3387 d = cos(1.11);
3388 d = atan(1.11);
3389 ],
3390 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3391 AC_MSG_RESULT(no))
3392
Bram Moolenaar071d4272004-06-13 20:20:40 +00003393dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3394dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003395dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003396AC_MSG_CHECKING(--disable-acl argument)
3397AC_ARG_ENABLE(acl,
3398 [ --disable-acl Don't check for ACL support.],
3399 , [enable_acl="yes"])
3400if test "$enable_acl" = "yes"; then
3401AC_MSG_RESULT(no)
3402AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3403 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3404 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3405
3406AC_MSG_CHECKING(for POSIX ACL support)
3407AC_TRY_LINK([
3408#include <sys/types.h>
3409#ifdef HAVE_SYS_ACL_H
3410# include <sys/acl.h>
3411#endif
3412acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3413 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3414 acl_free(acl);],
3415 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3416 AC_MSG_RESULT(no))
3417
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003418AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003419AC_MSG_CHECKING(for Solaris ACL support)
3420AC_TRY_LINK([
3421#ifdef HAVE_SYS_ACL_H
3422# include <sys/acl.h>
3423#endif], [acl("foo", GETACLCNT, 0, NULL);
3424 ],
3425 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003426 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003427
3428AC_MSG_CHECKING(for AIX ACL support)
3429AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003430#if STDC_HEADERS
3431# include <stdlib.h>
3432# include <stddef.h>
3433#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003434#ifdef HAVE_SYS_ACL_H
3435# include <sys/acl.h>
3436#endif
3437#ifdef HAVE_SYS_ACCESS_H
3438# include <sys/access.h>
3439#endif
3440#define _ALL_SOURCE
3441
3442#include <sys/stat.h>
3443
3444int aclsize;
3445struct acl *aclent;], [aclsize = sizeof(struct acl);
3446 aclent = (void *)malloc(aclsize);
3447 statacl("foo", STX_NORMAL, aclent, aclsize);
3448 ],
3449 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3450 AC_MSG_RESULT(no))
3451else
3452 AC_MSG_RESULT(yes)
3453fi
3454
3455AC_MSG_CHECKING(--disable-gpm argument)
3456AC_ARG_ENABLE(gpm,
3457 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3458 [enable_gpm="yes"])
3459
3460if test "$enable_gpm" = "yes"; then
3461 AC_MSG_RESULT(no)
3462 dnl Checking if gpm support can be compiled
3463 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3464 [olibs="$LIBS" ; LIBS="-lgpm"]
3465 AC_TRY_LINK(
3466 [#include <gpm.h>
3467 #include <linux/keyboard.h>],
3468 [Gpm_GetLibVersion(NULL);],
3469 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3470 dnl FEAT_MOUSE_GPM if mouse support is included
3471 [vi_cv_have_gpm=yes],
3472 [vi_cv_have_gpm=no])
3473 [LIBS="$olibs"]
3474 )
3475 if test $vi_cv_have_gpm = yes; then
3476 LIBS="$LIBS -lgpm"
3477 AC_DEFINE(HAVE_GPM)
3478 fi
3479else
3480 AC_MSG_RESULT(yes)
3481fi
3482
Bram Moolenaar446cb832008-06-24 21:56:24 +00003483AC_MSG_CHECKING(--disable-sysmouse argument)
3484AC_ARG_ENABLE(sysmouse,
3485 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3486 [enable_sysmouse="yes"])
3487
3488if test "$enable_sysmouse" = "yes"; then
3489 AC_MSG_RESULT(no)
3490 dnl Checking if sysmouse support can be compiled
3491 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3492 dnl defines FEAT_SYSMOUSE if mouse support is included
3493 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3494 AC_TRY_LINK(
3495 [#include <sys/consio.h>
3496 #include <signal.h>
3497 #include <sys/fbio.h>],
3498 [struct mouse_info mouse;
3499 mouse.operation = MOUSE_MODE;
3500 mouse.operation = MOUSE_SHOW;
3501 mouse.u.mode.mode = 0;
3502 mouse.u.mode.signal = SIGUSR2;],
3503 [vi_cv_have_sysmouse=yes],
3504 [vi_cv_have_sysmouse=no])
3505 )
3506 if test $vi_cv_have_sysmouse = yes; then
3507 AC_DEFINE(HAVE_SYSMOUSE)
3508 fi
3509else
3510 AC_MSG_RESULT(yes)
3511fi
3512
Bram Moolenaarf05da212009-11-17 16:13:15 +00003513dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3514AC_MSG_CHECKING(for FD_CLOEXEC)
3515AC_TRY_COMPILE(
3516[#if HAVE_FCNTL_H
3517# include <fcntl.h>
3518#endif],
3519[ int flag = FD_CLOEXEC;],
3520 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3521 AC_MSG_RESULT(not usable))
3522
Bram Moolenaar071d4272004-06-13 20:20:40 +00003523dnl rename needs to be checked separately to work on Nextstep with cc
3524AC_MSG_CHECKING(for rename)
3525AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3526 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3527 AC_MSG_RESULT(no))
3528
3529dnl sysctl() may exist but not the arguments we use
3530AC_MSG_CHECKING(for sysctl)
3531AC_TRY_COMPILE(
3532[#include <sys/types.h>
3533#include <sys/sysctl.h>],
3534[ int mib[2], r;
3535 size_t len;
3536
3537 mib[0] = CTL_HW;
3538 mib[1] = HW_USERMEM;
3539 len = sizeof(r);
3540 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3541 ],
3542 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3543 AC_MSG_RESULT(not usable))
3544
3545dnl sysinfo() may exist but not be Linux compatible
3546AC_MSG_CHECKING(for sysinfo)
3547AC_TRY_COMPILE(
3548[#include <sys/types.h>
3549#include <sys/sysinfo.h>],
3550[ struct sysinfo sinfo;
3551 int t;
3552
3553 (void)sysinfo(&sinfo);
3554 t = sinfo.totalram;
3555 ],
3556 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3557 AC_MSG_RESULT(not usable))
3558
Bram Moolenaar914572a2007-05-01 11:37:47 +00003559dnl struct sysinfo may have the mem_unit field or not
3560AC_MSG_CHECKING(for sysinfo.mem_unit)
3561AC_TRY_COMPILE(
3562[#include <sys/types.h>
3563#include <sys/sysinfo.h>],
3564[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003565 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003566 ],
3567 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3568 AC_MSG_RESULT(no))
3569
Bram Moolenaar071d4272004-06-13 20:20:40 +00003570dnl sysconf() may exist but not support what we want to use
3571AC_MSG_CHECKING(for sysconf)
3572AC_TRY_COMPILE(
3573[#include <unistd.h>],
3574[ (void)sysconf(_SC_PAGESIZE);
3575 (void)sysconf(_SC_PHYS_PAGES);
3576 ],
3577 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3578 AC_MSG_RESULT(not usable))
3579
Bram Moolenaar914703b2010-05-31 21:59:46 +02003580AC_CHECK_SIZEOF([int])
3581AC_CHECK_SIZEOF([long])
3582AC_CHECK_SIZEOF([time_t])
3583AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003584
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003585dnl Use different names to avoid clashing with other header files.
3586AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3587AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3588
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003589dnl Make sure that uint32_t is really 32 bits unsigned.
3590AC_MSG_CHECKING([uint32_t is 32 bits])
3591AC_TRY_RUN([
3592#ifdef HAVE_STDINT_H
3593# include <stdint.h>
3594#endif
3595#ifdef HAVE_INTTYPES_H
3596# include <inttypes.h>
3597#endif
3598main() {
3599 uint32_t nr1 = (uint32_t)-1;
3600 uint32_t nr2 = (uint32_t)0xffffffffUL;
3601 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3602 exit(0);
3603}],
3604AC_MSG_RESULT(ok),
3605AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003606AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003607
Bram Moolenaar446cb832008-06-24 21:56:24 +00003608dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3609dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3610
Bram Moolenaar071d4272004-06-13 20:20:40 +00003611[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003612#include "confdefs.h"
3613#ifdef HAVE_STRING_H
3614# include <string.h>
3615#endif
3616#if STDC_HEADERS
3617# include <stdlib.h>
3618# include <stddef.h>
3619#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003620main() {
3621 char buf[10];
3622 strcpy(buf, "abcdefghi");
3623 mch_memmove(buf, buf + 2, 3);
3624 if (strncmp(buf, "ababcf", 6))
3625 exit(1);
3626 strcpy(buf, "abcdefghi");
3627 mch_memmove(buf + 2, buf, 3);
3628 if (strncmp(buf, "cdedef", 6))
3629 exit(1);
3630 exit(0); /* libc version works properly. */
3631}']
3632
Bram Moolenaar446cb832008-06-24 21:56:24 +00003633AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3634 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003635 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 +00003636 [
3637 vim_cv_memmove_handles_overlap=yes
3638 ],[
3639 vim_cv_memmove_handles_overlap=no
3640 ],[
3641 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3642 ])
3643 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003644
Bram Moolenaar446cb832008-06-24 21:56:24 +00003645if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3646 AC_DEFINE(USEMEMMOVE)
3647else
3648 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3649 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003650 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 +00003651 [
3652 vim_cv_bcopy_handles_overlap=yes
3653 ],[
3654 vim_cv_bcopy_handles_overlap=no
3655 ],[
3656 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3657 ])
3658 ])
3659
3660 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3661 AC_DEFINE(USEBCOPY)
3662 else
3663 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3664 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003665 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 +00003666 [
3667 vim_cv_memcpy_handles_overlap=yes
3668 ],[
3669 vim_cv_memcpy_handles_overlap=no
3670 ],[
3671 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3672 ])
3673 ])
3674
3675 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3676 AC_DEFINE(USEMEMCPY)
3677 fi
3678 fi
3679fi
3680
Bram Moolenaar071d4272004-06-13 20:20:40 +00003681
3682dnl Check for multibyte locale functions
3683dnl Find out if _Xsetlocale() is supported by libX11.
3684dnl Check if X_LOCALE should be defined.
3685
3686if test "$enable_multibyte" = "yes"; then
3687 cflags_save=$CFLAGS
3688 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003689 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003690 CFLAGS="$CFLAGS -I$x_includes"
3691 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3692 AC_MSG_CHECKING(whether X_LOCALE needed)
3693 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3694 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3695 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3696 AC_MSG_RESULT(no))
3697 fi
3698 CFLAGS=$cflags_save
3699 LDFLAGS=$ldflags_save
3700fi
3701
3702dnl Link with xpg4, it is said to make Korean locale working
3703AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3704
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003705dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003706dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003707dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003708dnl -t for typedefs (many ctags have this)
3709dnl -s for static functions (Elvis ctags only?)
3710dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3711dnl -i+m to test for older Exuberant ctags
3712AC_MSG_CHECKING(how to create tags)
3713test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003714if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003715 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003716elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3717 TAGPRG="exctags -I INIT+ --fields=+S"
3718elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3719 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003720else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003721 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003722 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3723 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3724 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3725 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3726 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3727 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3728 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3729fi
3730test -f tags.save && mv tags.save tags
3731AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3732
3733dnl Check how we can run man with a section number
3734AC_MSG_CHECKING(how to run man with a section nr)
3735MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003736(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 +00003737AC_MSG_RESULT($MANDEF)
3738if test "$MANDEF" = "man -s"; then
3739 AC_DEFINE(USEMAN_S)
3740fi
3741
3742dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003743dnl We take care to base this on an empty LIBS: on some systems libelf would be
3744dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3745dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003746AC_MSG_CHECKING(--disable-nls argument)
3747AC_ARG_ENABLE(nls,
3748 [ --disable-nls Don't support NLS (gettext()).], ,
3749 [enable_nls="yes"])
3750
3751if test "$enable_nls" = "yes"; then
3752 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003753
3754 INSTALL_LANGS=install-languages
3755 AC_SUBST(INSTALL_LANGS)
3756 INSTALL_TOOL_LANGS=install-tool-languages
3757 AC_SUBST(INSTALL_TOOL_LANGS)
3758
Bram Moolenaar071d4272004-06-13 20:20:40 +00003759 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3760 AC_MSG_CHECKING([for NLS])
3761 if test -f po/Makefile; then
3762 have_gettext="no"
3763 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003764 olibs=$LIBS
3765 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003766 AC_TRY_LINK(
3767 [#include <libintl.h>],
3768 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003769 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3770 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003771 AC_TRY_LINK(
3772 [#include <libintl.h>],
3773 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003774 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3775 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003776 AC_MSG_RESULT([gettext() doesn't work]);
3777 LIBS=$olibs))
3778 else
3779 AC_MSG_RESULT([msgfmt not found - disabled]);
3780 fi
3781 if test $have_gettext = "yes"; then
3782 AC_DEFINE(HAVE_GETTEXT)
3783 MAKEMO=yes
3784 AC_SUBST(MAKEMO)
3785 dnl this was added in GNU gettext 0.10.36
3786 AC_CHECK_FUNCS(bind_textdomain_codeset)
3787 dnl _nl_msg_cat_cntr is required for GNU gettext
3788 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3789 AC_TRY_LINK(
3790 [#include <libintl.h>
3791 extern int _nl_msg_cat_cntr;],
3792 [++_nl_msg_cat_cntr;],
3793 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3794 AC_MSG_RESULT([no]))
3795 fi
3796 else
3797 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3798 fi
3799else
3800 AC_MSG_RESULT(yes)
3801fi
3802
3803dnl Check for dynamic linking loader
3804AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3805if test x${DLL} = xdlfcn.h; then
3806 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3807 AC_MSG_CHECKING([for dlopen()])
3808 AC_TRY_LINK(,[
3809 extern void* dlopen();
3810 dlopen();
3811 ],
3812 AC_MSG_RESULT(yes);
3813 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3814 AC_MSG_RESULT(no);
3815 AC_MSG_CHECKING([for dlopen() in -ldl])
3816 olibs=$LIBS
3817 LIBS="$LIBS -ldl"
3818 AC_TRY_LINK(,[
3819 extern void* dlopen();
3820 dlopen();
3821 ],
3822 AC_MSG_RESULT(yes);
3823 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3824 AC_MSG_RESULT(no);
3825 LIBS=$olibs))
3826 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3827 dnl ick :-)
3828 AC_MSG_CHECKING([for dlsym()])
3829 AC_TRY_LINK(,[
3830 extern void* dlsym();
3831 dlsym();
3832 ],
3833 AC_MSG_RESULT(yes);
3834 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3835 AC_MSG_RESULT(no);
3836 AC_MSG_CHECKING([for dlsym() in -ldl])
3837 olibs=$LIBS
3838 LIBS="$LIBS -ldl"
3839 AC_TRY_LINK(,[
3840 extern void* dlsym();
3841 dlsym();
3842 ],
3843 AC_MSG_RESULT(yes);
3844 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3845 AC_MSG_RESULT(no);
3846 LIBS=$olibs))
3847elif test x${DLL} = xdl.h; then
3848 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3849 AC_MSG_CHECKING([for shl_load()])
3850 AC_TRY_LINK(,[
3851 extern void* shl_load();
3852 shl_load();
3853 ],
3854 AC_MSG_RESULT(yes);
3855 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3856 AC_MSG_RESULT(no);
3857 AC_MSG_CHECKING([for shl_load() in -ldld])
3858 olibs=$LIBS
3859 LIBS="$LIBS -ldld"
3860 AC_TRY_LINK(,[
3861 extern void* shl_load();
3862 shl_load();
3863 ],
3864 AC_MSG_RESULT(yes);
3865 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3866 AC_MSG_RESULT(no);
3867 LIBS=$olibs))
3868fi
3869AC_CHECK_HEADERS(setjmp.h)
3870
3871if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3872 dnl -ldl must come after DynaLoader.a
3873 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3874 LIBS=`echo $LIBS | sed s/-ldl//`
3875 PERL_LIBS="$PERL_LIBS -ldl"
3876 fi
3877fi
3878
Bram Moolenaar164fca32010-07-14 13:58:07 +02003879if test "x$MACOSX" = "xyes"; then
3880 AC_MSG_CHECKING(whether we need -framework Cocoa)
3881 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3882 dnl disabled during tiny build)
3883 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3884 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003885 AC_MSG_RESULT(yes)
3886 else
3887 AC_MSG_RESULT(no)
3888 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003889 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3890 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3891 dnl missing Objective-C symbols.
3892 if test "x$features" = "xtiny"; then
3893 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3894 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3895 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003896fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003897if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003898 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003899fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003900
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003901dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3902dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3903dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003904dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3905dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003906DEPEND_CFLAGS_FILTER=
3907if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003908 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003909 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003910 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003911 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003912 AC_MSG_RESULT(yes)
3913 else
3914 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003915 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003916 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3917 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003918 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003919 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003920 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3921 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003922 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 +00003923 AC_MSG_RESULT(yes)
3924 else
3925 AC_MSG_RESULT(no)
3926 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003927fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003928AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003929
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003930dnl link.sh tries to avoid overlinking in a hackish way.
3931dnl At least GNU ld supports --as-needed which provides the same functionality
3932dnl at linker level. Let's use it.
3933AC_MSG_CHECKING(linker --as-needed support)
3934LINK_AS_NEEDED=
3935# Check if linker supports --as-needed and --no-as-needed options
3936if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003937 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003938 LINK_AS_NEEDED=yes
3939fi
3940if test "$LINK_AS_NEEDED" = yes; then
3941 AC_MSG_RESULT(yes)
3942else
3943 AC_MSG_RESULT(no)
3944fi
3945AC_SUBST(LINK_AS_NEEDED)
3946
Bram Moolenaar77c19352012-06-13 19:19:41 +02003947# IBM z/OS reset CFLAGS for config.mk
3948if test "$zOSUnix" = "yes"; then
3949 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3950fi
3951
Bram Moolenaar071d4272004-06-13 20:20:40 +00003952dnl write output files
3953AC_OUTPUT(auto/config.mk:config.mk.in)
3954
3955dnl vim: set sw=2 tw=78 fo+=l: