blob: e558186adf21ef97fc026090eacffdcd4e38d19b [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
Bram Moolenaarc8836f72014-04-12 13:12:24 +020049 gccversion=`$CC -dumpversion`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000050 if test "x$gccversion" = "x"; then
51 dnl old method; fall-back for when -dumpversion doesn't work
Bram Moolenaarc8836f72014-04-12 13:12:24 +020052 gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000053 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)
Bram Moolenaarc8836f72014-04-12 13:12:24 +020071CLANG_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'`
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020072if test x"$CLANG_VERSION_STRING" != x"" ; then
73 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
74 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
75 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
76 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
77 AC_MSG_RESULT($CLANG_VERSION)
78 dnl If you find the same issue with versions earlier than 500.2.75,
79 dnl change the constant 500002075 below appropriately. To get the
80 dnl integer corresponding to a version number, refer to the
81 dnl definition of CLANG_VERSION above.
82 if test "$CLANG_VERSION" -ge 500002075 ; then
83 CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
84 fi
85else
86 AC_MSG_RESULT(no)
87fi
88
Bram Moolenaar446cb832008-06-24 21:56:24 +000089dnl If configure thinks we are cross compiling, there might be something
90dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000091if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000092 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000093fi
94
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000095dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
96dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000097test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
98
99if test -f ./toolcheck; then
100 AC_CHECKING(for buggy tools)
101 sh ./toolcheck 1>&AC_FD_MSG
102fi
103
104OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
105
106dnl Check for BeOS, which needs an extra source file
107AC_MSG_CHECKING(for BeOS)
108case `uname` in
109 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
110 BEOS=yes; AC_MSG_RESULT(yes);;
111 *) BEOS=no; AC_MSG_RESULT(no);;
112esac
113
114dnl If QNX is found, assume we don't want to use Xphoton
115dnl unless it was specifically asked for (--with-x)
116AC_MSG_CHECKING(for QNX)
117case `uname` in
118 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
119 test -z "$with_x" && with_x=no
120 QNX=yes; AC_MSG_RESULT(yes);;
121 *) QNX=no; AC_MSG_RESULT(no);;
122esac
123
124dnl Check for Darwin and MacOS X
125dnl We do a check for MacOS X in the very beginning because there
126dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127AC_MSG_CHECKING([for Darwin (Mac OS X)])
128if test "`(uname) 2>/dev/null`" = Darwin; then
129 AC_MSG_RESULT(yes)
130
131 AC_MSG_CHECKING(--disable-darwin argument)
132 AC_ARG_ENABLE(darwin,
133 [ --disable-darwin Disable Darwin (Mac OS X) support.],
134 , [enable_darwin="yes"])
135 if test "$enable_darwin" = "yes"; then
136 AC_MSG_RESULT(no)
137 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200138 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139 AC_MSG_RESULT(yes)
140 else
141 AC_MSG_RESULT([no, Darwin support disabled])
142 enable_darwin=no
143 fi
144 else
145 AC_MSG_RESULT([yes, Darwin support excluded])
146 fi
147
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000148 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000149 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000150 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000151 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000152
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100153 AC_MSG_CHECKING(--with-developer-dir argument)
154 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
155 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
156 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
157
158 if test "x$DEVELOPER_DIR" = "x"; then
159 AC_PATH_PROG(XCODE_SELECT, xcode-select)
160 if test "x$XCODE_SELECT" != "x"; then
161 AC_MSG_CHECKING(for developer dir using xcode-select)
162 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
163 AC_MSG_RESULT([$DEVELOPER_DIR])
164 else
165 DEVELOPER_DIR=/Developer
166 fi
167 fi
168
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000169 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000170 AC_MSG_CHECKING(for 10.4 universal SDK)
171 dnl There is a terrible inconsistency (but we appear to get away with it):
172 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
173 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
174 dnl tests using the preprocessor are actually done with the wrong header
175 dnl files. $LDFLAGS is set at the end, because configure uses it together
176 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000178 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000179 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100180 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000181 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000182 AC_MSG_RESULT(found, will make universal binary),
183
184 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000185 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000186 AC_MSG_CHECKING(if Intel architecture is supported)
187 CPPFLAGS="$CPPFLAGS -arch i386"
188 LDFLAGS="$save_ldflags -arch i386"
189 AC_TRY_LINK([ ], [ ],
190 AC_MSG_RESULT(yes); MACARCH="intel",
191 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000192 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000193 CPPFLAGS="$save_cppflags -arch ppc"
194 LDFLAGS="$save_ldflags -arch ppc"))
195 elif test "x$MACARCH" = "xintel"; then
196 CPPFLAGS="$CPPFLAGS -arch intel"
197 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000198 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000199 CPPFLAGS="$CPPFLAGS -arch ppc"
200 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000201 fi
202
Bram Moolenaar071d4272004-06-13 20:20:40 +0000203 if test "$enable_darwin" = "yes"; then
204 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200205 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000206 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000207 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100208 dnl Removed -no-cpp-precomp, only for very old compilers.
209 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210
211 dnl If Carbon is found, assume we don't want X11
212 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000213 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000214 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
215 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200216 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218 fi
219 fi
220 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000221
Bram Moolenaardb552d602006-03-23 22:59:57 +0000222 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000223 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000224 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000225 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
226 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
227 fi
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229else
230 AC_MSG_RESULT(no)
231fi
232
Bram Moolenaar39766a72013-11-03 00:41:00 +0100233dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
234dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100235AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100236
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237AC_SUBST(OS_EXTRA_SRC)
238AC_SUBST(OS_EXTRA_OBJ)
239
240dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
241dnl Only when the directory exists and it wasn't there yet.
242dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243dnl Skip all of this when cross-compiling.
244if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000245 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000246 have_local_include=''
247 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000248 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
249 --without-local-dir do not search /usr/local for local libraries.], [
250 local_dir="$withval"
251 case "$withval" in
252 */*) ;;
253 no)
254 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200255 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000256 have_local_lib=yes
257 ;;
258 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
259 esac
260 AC_MSG_RESULT($local_dir)
261 ], [
262 local_dir=/usr/local
263 AC_MSG_RESULT(Defaulting to $local_dir)
264 ])
265 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000266 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100267 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
268 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000269 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000270 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000272 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
273 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000274 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000275 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000276 fi
277 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000278 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
279 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000280 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000282 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283 fi
284fi
285
286AC_MSG_CHECKING(--with-vim-name argument)
287AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
288 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000289 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290AC_SUBST(VIMNAME)
291AC_MSG_CHECKING(--with-ex-name argument)
292AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
293 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
294 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
295AC_SUBST(EXNAME)
296AC_MSG_CHECKING(--with-view-name argument)
297AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
298 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
299 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
300AC_SUBST(VIEWNAME)
301
302AC_MSG_CHECKING(--with-global-runtime argument)
303AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
304 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
305 AC_MSG_RESULT(no))
306
307AC_MSG_CHECKING(--with-modified-by argument)
308AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
309 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
310 AC_MSG_RESULT(no))
311
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313AC_MSG_CHECKING(if character set is EBCDIC)
314AC_TRY_COMPILE([ ],
315[ /* TryCompile function for CharSet.
316 Treat any failure as ASCII for compatibility with existing art.
317 Use compile-time rather than run-time tests for cross-compiler
318 tolerance. */
319#if '0'!=240
320make an error "Character set is not EBCDIC"
321#endif ],
322[ # TryCompile action if true
323cf_cv_ebcdic=yes ],
324[ # TryCompile action if false
325cf_cv_ebcdic=no])
326# end of TryCompile ])
327# end of CacheVal CvEbcdic
328AC_MSG_RESULT($cf_cv_ebcdic)
329case "$cf_cv_ebcdic" in #(vi
330 yes) AC_DEFINE(EBCDIC)
331 line_break='"\\n"'
332 ;;
333 *) line_break='"\\012"';;
334esac
335AC_SUBST(line_break)
336
337if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200338dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200341 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342 dnl If using cc the environment variable _CC_CCMODE must be
343 dnl set to "1", so that some compiler extensions are enabled.
344 dnl If using c89 the environment variable is named _CC_C89MODE.
345 dnl Note: compile with c89 never tested.
346 if test "$CC" = "cc"; then
347 ccm="$_CC_CCMODE"
348 ccn="CC"
349 else
350 if test "$CC" = "c89"; then
351 ccm="$_CC_C89MODE"
352 ccn="C89"
353 else
354 ccm=1
355 fi
356 fi
357 if test "$ccm" != "1"; then
358 echo ""
359 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200360 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200361 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000362 echo " Do:"
363 echo " export _CC_${ccn}MODE=1"
364 echo " and then call configure again."
365 echo "------------------------------------------"
366 exit 1
367 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200368 # Set CFLAGS for configure process.
369 # This will be reset later for config.mk.
370 # Use haltonmsg to force error for missing H files.
371 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
372 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373 AC_MSG_RESULT(yes)
374 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200375 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000376 AC_MSG_RESULT(no)
377 ;;
378esac
379fi
380
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200381dnl Set QUOTESED. Needs additional backslashes on zOS
382if test "$zOSUnix" = "yes"; then
383 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
384else
385 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
386fi
387AC_SUBST(QUOTESED)
388
389
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200390dnl Link with -lsmack for Smack stuff; if not found
391AC_MSG_CHECKING(--disable-smack argument)
392AC_ARG_ENABLE(smack,
393 [ --disable-smack Do not check for Smack support.],
394 , enable_smack="yes")
395if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200396 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200397 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200398else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200399 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200400fi
401if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200402 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
403fi
404if test "$enable_smack" = "yes"; then
405 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
406 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
407 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200408 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200409fi
410if test "$enable_smack" = "yes"; then
411 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200412 [LIBS="$LIBS -lattr"
413 found_smack="yes"
414 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000415fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000416
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200417dnl When smack was found don't search for SELinux
418if test "x$found_smack" = "x"; then
419 dnl Link with -lselinux for SELinux stuff; if not found
420 AC_MSG_CHECKING(--disable-selinux argument)
421 AC_ARG_ENABLE(selinux,
422 [ --disable-selinux Do not check for SELinux support.],
423 , enable_selinux="yes")
424 if test "$enable_selinux" = "yes"; then
425 AC_MSG_RESULT(no)
426 AC_CHECK_LIB(selinux, is_selinux_enabled,
427 [LIBS="$LIBS -lselinux"
428 AC_DEFINE(HAVE_SELINUX)])
429 else
430 AC_MSG_RESULT(yes)
431 fi
432fi
433
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434dnl Check user requested features.
435
436AC_MSG_CHECKING(--with-features argument)
437AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
438 features="$withval"; AC_MSG_RESULT($features),
439 features="normal"; AC_MSG_RESULT(Defaulting to normal))
440
441dovimdiff=""
442dogvimdiff=""
443case "$features" in
444 tiny) AC_DEFINE(FEAT_TINY) ;;
445 small) AC_DEFINE(FEAT_SMALL) ;;
446 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
447 dogvimdiff="installgvimdiff" ;;
448 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
449 dogvimdiff="installgvimdiff" ;;
450 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
451 dogvimdiff="installgvimdiff" ;;
452 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
453esac
454
455AC_SUBST(dovimdiff)
456AC_SUBST(dogvimdiff)
457
458AC_MSG_CHECKING(--with-compiledby argument)
459AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
460 compiledby="$withval"; AC_MSG_RESULT($withval),
461 compiledby=""; AC_MSG_RESULT(no))
462AC_SUBST(compiledby)
463
464AC_MSG_CHECKING(--disable-xsmp argument)
465AC_ARG_ENABLE(xsmp,
466 [ --disable-xsmp Disable XSMP session management],
467 , enable_xsmp="yes")
468
469if test "$enable_xsmp" = "yes"; then
470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(--disable-xsmp-interact argument)
472 AC_ARG_ENABLE(xsmp-interact,
473 [ --disable-xsmp-interact Disable XSMP interaction],
474 , enable_xsmp_interact="yes")
475 if test "$enable_xsmp_interact" = "yes"; then
476 AC_MSG_RESULT(no)
477 AC_DEFINE(USE_XSMP_INTERACT)
478 else
479 AC_MSG_RESULT(yes)
480 fi
481else
482 AC_MSG_RESULT(yes)
483fi
484
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200485dnl Check for Lua feature.
486AC_MSG_CHECKING(--enable-luainterp argument)
487AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200488 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200489 [enable_luainterp="no"])
490AC_MSG_RESULT($enable_luainterp)
491
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 dnl -- find the lua executable
494 AC_SUBST(vi_cv_path_lua)
495
496 AC_MSG_CHECKING(--with-lua-prefix argument)
497 AC_ARG_WITH(lua_prefix,
498 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
499 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200500 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200501
502 if test "X$with_lua_prefix" != "X"; then
503 vi_cv_path_lua_pfx="$with_lua_prefix"
504 else
505 AC_MSG_CHECKING(LUA_PREFIX environment var)
506 if test "X$LUA_PREFIX" != "X"; then
507 AC_MSG_RESULT("$LUA_PREFIX")
508 vi_cv_path_lua_pfx="$LUA_PREFIX"
509 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200510 AC_MSG_RESULT([not set, default to /usr])
511 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200512 fi
513 fi
514
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200515 AC_MSG_CHECKING(--with-luajit)
516 AC_ARG_WITH(luajit,
517 [ --with-luajit Link with LuaJIT instead of Lua.],
518 [vi_cv_with_luajit="$withval"],
519 [vi_cv_with_luajit="no"])
520 AC_MSG_RESULT($vi_cv_with_luajit)
521
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 LUA_INC=
523 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200524 if test "x$vi_cv_with_luajit" != "xno"; then
525 dnl -- try to find LuaJIT executable
526 AC_PATH_PROG(vi_cv_path_luajit, luajit)
527 if test "X$vi_cv_path_luajit" != "X"; then
528 dnl -- find LuaJIT version
529 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100530 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200531 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
532 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
533 vi_cv_path_lua="$vi_cv_path_luajit"
534 vi_cv_version_lua="$vi_cv_version_lua_luajit"
535 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200536 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200537 dnl -- try to find Lua executable
538 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
539 if test "X$vi_cv_path_plain_lua" != "X"; then
540 dnl -- find Lua version
541 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
542 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
543 fi
544 vi_cv_path_lua="$vi_cv_path_plain_lua"
545 vi_cv_version_lua="$vi_cv_version_plain_lua"
546 fi
547 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
548 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
549 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
550 AC_MSG_RESULT(yes)
551 LUA_INC=/luajit-$vi_cv_version_luajit
552 fi
553 fi
554 if test "X$LUA_INC" = "X"; then
555 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
556 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
557 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200558 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200559 AC_MSG_RESULT(no)
560 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
561 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
562 AC_MSG_RESULT(yes)
563 LUA_INC=/lua$vi_cv_version_lua
564 else
565 AC_MSG_RESULT(no)
566 vi_cv_path_lua_pfx=
567 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200568 fi
569 fi
570 fi
571
572 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200573 if test "x$vi_cv_with_luajit" != "xno"; then
574 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
575 if test "X$multiarch" != "X"; then
576 lib_multiarch="lib/${multiarch}"
577 else
578 lib_multiarch="lib"
579 fi
580 if test "X$vi_cv_version_lua" = "X"; then
581 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
582 else
583 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
584 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200585 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200586 if test "X$LUA_INC" != "X"; then
587 dnl Test alternate location using version
588 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
589 else
590 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
591 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200592 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200593 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200594 lua_ok="yes"
595 else
596 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
597 libs_save=$LIBS
598 LIBS="$LIBS $LUA_LIBS"
599 AC_TRY_LINK(,[ ],
600 AC_MSG_RESULT(yes); lua_ok="yes",
601 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
602 LIBS=$libs_save
603 fi
604 if test "x$lua_ok" = "xyes"; then
605 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
606 LUA_SRC="if_lua.c"
607 LUA_OBJ="objects/if_lua.o"
608 LUA_PRO="if_lua.pro"
609 AC_DEFINE(FEAT_LUA)
610 fi
611 if test "$enable_luainterp" = "dynamic"; then
612 if test "x$vi_cv_with_luajit" != "xno"; then
613 luajit="jit"
614 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200615 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
616 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
617 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200618 if test "x$MACOSX" = "xyes"; then
619 ext="dylib"
620 indexes=""
621 else
622 ext="so"
623 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
624 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
625 if test "X$multiarch" != "X"; then
626 lib_multiarch="lib/${multiarch}"
627 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200628 fi
629 dnl Determine the sover for the current version, but fallback to
630 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200631 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200632 for subdir in "${lib_multiarch}" lib64 lib; do
633 if test -z "$subdir"; then
634 continue
635 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200636 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
637 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
638 for i in $indexes ""; do
639 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200640 sover2="$i"
641 break 3
642 fi
643 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100644 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200645 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200646 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200647 if test "X$sover" = "X"; then
648 AC_MSG_RESULT(no)
649 lua_ok="no"
650 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
651 else
652 AC_MSG_RESULT(yes)
653 lua_ok="yes"
654 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
655 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200656 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200657 AC_DEFINE(DYNAMIC_LUA)
658 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200659 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200660 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200661 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
662 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
663 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
664 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
665 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
666 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200667 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100669 AC_MSG_ERROR([could not configure lua])
670 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200671 AC_SUBST(LUA_SRC)
672 AC_SUBST(LUA_OBJ)
673 AC_SUBST(LUA_PRO)
674 AC_SUBST(LUA_LIBS)
675 AC_SUBST(LUA_CFLAGS)
676fi
677
678
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000679dnl Check for MzScheme feature.
680AC_MSG_CHECKING(--enable-mzschemeinterp argument)
681AC_ARG_ENABLE(mzschemeinterp,
682 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
683 [enable_mzschemeinterp="no"])
684AC_MSG_RESULT($enable_mzschemeinterp)
685
686if test "$enable_mzschemeinterp" = "yes"; then
687 dnl -- find the mzscheme executable
688 AC_SUBST(vi_cv_path_mzscheme)
689
690 AC_MSG_CHECKING(--with-plthome argument)
691 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000692 [ --with-plthome=PLTHOME Use PLTHOME.],
693 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000694 with_plthome="";AC_MSG_RESULT("no"))
695
696 if test "X$with_plthome" != "X"; then
697 vi_cv_path_mzscheme_pfx="$with_plthome"
698 else
699 AC_MSG_CHECKING(PLTHOME environment var)
700 if test "X$PLTHOME" != "X"; then
701 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000702 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000703 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000704 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000706 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707
708 dnl resolve symbolic link, the executable is often elsewhere and there
709 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000710 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000711 lsout=`ls -l $vi_cv_path_mzscheme`
712 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
713 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
714 fi
715 fi
716
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000717 if test "X$vi_cv_path_mzscheme" != "X"; then
718 dnl -- find where MzScheme thinks it was installed
719 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000720 dnl different versions of MzScheme differ in command line processing
721 dnl use universal approach
722 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000723 (build-path (call-with-values \
724 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000725 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
726 dnl Remove a trailing slash
727 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
728 sed -e 's+/$++'` ])
729 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000730 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000731 fi
732 fi
733
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000735 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
736 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
737 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000738 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
739 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000740 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000741 AC_MSG_RESULT(no)
742 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000743 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000744 AC_MSG_RESULT(yes)
745 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000746 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000747 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100748 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
749 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000750 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100751 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000752 else
753 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100754 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
755 if test -f /usr/include/plt/scheme.h; then
756 AC_MSG_RESULT(yes)
757 SCHEME_INC=/usr/include/plt
758 else
759 AC_MSG_RESULT(no)
760 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
761 if test -f /usr/include/racket/scheme.h; then
762 AC_MSG_RESULT(yes)
763 SCHEME_INC=/usr/include/racket
764 else
765 AC_MSG_RESULT(no)
766 vi_cv_path_mzscheme_pfx=
767 fi
768 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000769 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000770 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000771 fi
772 fi
773
774 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000775 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100776 MZSCHEME_LIBS="-framework Racket"
777 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000778 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
779 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
780 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100781 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
782 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
783 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
784 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
785 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
786 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000787 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000788 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000789 dnl Using shared objects
790 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
791 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
792 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100793 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
794 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
795 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
796 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
797 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000798 else
799 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
800 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000801 if test "$GCC" = yes; then
802 dnl Make Vim remember the path to the library. For when it's not in
803 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000804 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000805 elif test "`(uname) 2>/dev/null`" = SunOS &&
806 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000807 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000808 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000809 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100810
811 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000812 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100813 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100814 else
815 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100816 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
817 else
818 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
819 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100820 else
821 if test -d $vi_cv_path_mzscheme_pfx/collects; then
822 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
823 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100824 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100825 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000826 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100827 if test "X$SCHEME_COLLECTS" != "X" ; then
828 AC_MSG_RESULT(${SCHEME_COLLECTS})
829 else
830 AC_MSG_RESULT(not found)
831 fi
832
833 AC_MSG_CHECKING(for mzscheme_base.c)
834 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000835 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100836 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
837 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100838 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100839 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100840 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100841 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
842 MZSCHEME_MOD="++lib scheme/base"
843 else
844 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
845 MZSCHEME_EXTRA="mzscheme_base.c"
846 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
847 MZSCHEME_MOD=""
848 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100849 fi
850 fi
851 if test "X$MZSCHEME_EXTRA" != "X" ; then
852 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000853 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
854 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100855 AC_MSG_RESULT(needed)
856 else
857 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000858 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100859
Bram Moolenaar9e902192013-07-17 18:58:11 +0200860 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
861 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
862
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000863 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100864 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200865
866 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
867 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
868 cflags_save=$CFLAGS
869 libs_save=$LIBS
870 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
871 LIBS="$LIBS $MZSCHEME_LIBS"
872 AC_TRY_LINK(,[ ],
873 AC_MSG_RESULT(yes); mzs_ok=yes,
874 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
875 CFLAGS=$cflags_save
876 LIBS=$libs_save
877 if test $mzs_ok = yes; then
878 MZSCHEME_SRC="if_mzsch.c"
879 MZSCHEME_OBJ="objects/if_mzsch.o"
880 MZSCHEME_PRO="if_mzsch.pro"
881 AC_DEFINE(FEAT_MZSCHEME)
882 else
883 MZSCHEME_CFLAGS=
884 MZSCHEME_LIBS=
885 MZSCHEME_EXTRA=
886 MZSCHEME_MZC=
887 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000888 fi
889 AC_SUBST(MZSCHEME_SRC)
890 AC_SUBST(MZSCHEME_OBJ)
891 AC_SUBST(MZSCHEME_PRO)
892 AC_SUBST(MZSCHEME_LIBS)
893 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000894 AC_SUBST(MZSCHEME_EXTRA)
895 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000896fi
897
898
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899AC_MSG_CHECKING(--enable-perlinterp argument)
900AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200901 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000902 [enable_perlinterp="no"])
903AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200904if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000905 AC_SUBST(vi_cv_path_perl)
906 AC_PATH_PROG(vi_cv_path_perl, perl)
907 if test "X$vi_cv_path_perl" != "X"; then
908 AC_MSG_CHECKING(Perl version)
909 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
910 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200911 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000912 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
913 badthreads=no
914 else
915 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
916 eval `$vi_cv_path_perl -V:use5005threads`
917 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
918 badthreads=no
919 else
920 badthreads=yes
921 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
922 fi
923 else
924 badthreads=yes
925 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
926 fi
927 fi
928 if test $badthreads = no; then
929 AC_MSG_RESULT(OK)
930 eval `$vi_cv_path_perl -V:shrpenv`
931 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
932 shrpenv=""
933 fi
934 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
935 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200936 vi_cv_perl_extutils=unknown_perl_extutils_path
937 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
938 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
939 if test -f "$xsubpp_path"; then
940 vi_cv_perl_xsubpp="$xsubpp_path"
941 fi
942 done
943 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000944 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +0200945 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000946 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaar280a8682015-06-21 13:41:08 +0200947 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
948 -e 's/-fdebug-prefix-map[[^ ]]*//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000949 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
950 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
951 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
952 -e 's/-bE:perl.exp//' -e 's/-lc //'`
953 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
954 dnl a test in configure may fail because of that.
955 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
956 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
957
958 dnl check that compiling a simple program still works with the flags
959 dnl added for Perl.
960 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
961 cflags_save=$CFLAGS
962 libs_save=$LIBS
963 ldflags_save=$LDFLAGS
964 CFLAGS="$CFLAGS $perlcppflags"
965 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200966 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 LDFLAGS="$perlldflags $LDFLAGS"
968 AC_TRY_LINK(,[ ],
969 AC_MSG_RESULT(yes); perl_ok=yes,
970 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
971 CFLAGS=$cflags_save
972 LIBS=$libs_save
973 LDFLAGS=$ldflags_save
974 if test $perl_ok = yes; then
975 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000976 dnl remove -pipe and -Wxxx, it confuses cproto
977 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000978 fi
979 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +0100980 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200981 LDFLAGS="$perlldflags $LDFLAGS"
982 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000983 fi
984 PERL_LIBS=$perllibs
985 PERL_SRC="auto/if_perl.c if_perlsfio.c"
986 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
987 PERL_PRO="if_perl.pro if_perlsfio.pro"
988 AC_DEFINE(FEAT_PERL)
989 fi
990 fi
991 else
992 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
993 fi
994 fi
995
996 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000997 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000998 dir=/System/Library/Perl
999 darwindir=$dir/darwin
1000 if test -d $darwindir; then
1001 PERL=/usr/bin/perl
1002 else
1003 dnl Mac OS X 10.3
1004 dir=/System/Library/Perl/5.8.1
1005 darwindir=$dir/darwin-thread-multi-2level
1006 if test -d $darwindir; then
1007 PERL=/usr/bin/perl
1008 fi
1009 fi
1010 if test -n "$PERL"; then
1011 PERL_DIR="$dir"
1012 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1013 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1014 PERL_LIBS="-L$darwindir/CORE -lperl"
1015 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001016 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1017 dnl be included if requested by passing --with-mac-arch to
1018 dnl configure, so strip these flags first (if present)
1019 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1020 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 +00001021 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001022 if test "$enable_perlinterp" = "dynamic"; then
1023 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1024 AC_DEFINE(DYNAMIC_PERL)
1025 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1026 fi
1027 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001028
1029 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1030 AC_MSG_ERROR([could not configure perl])
1031 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001032fi
1033AC_SUBST(shrpenv)
1034AC_SUBST(PERL_SRC)
1035AC_SUBST(PERL_OBJ)
1036AC_SUBST(PERL_PRO)
1037AC_SUBST(PERL_CFLAGS)
1038AC_SUBST(PERL_LIBS)
1039
1040AC_MSG_CHECKING(--enable-pythoninterp argument)
1041AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001042 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001043 [enable_pythoninterp="no"])
1044AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001045if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001046 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1047 AC_MSG_ERROR([cannot use Python with tiny or small features])
1048 fi
1049
Bram Moolenaar071d4272004-06-13 20:20:40 +00001050 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001051 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001052 if test "X$vi_cv_path_python" != "X"; then
1053
1054 dnl -- get its version number
1055 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1056 [[vi_cv_var_python_version=`
1057 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1058 ]])
1059
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001060 dnl -- it must be at least version 2.3
1061 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001062 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001063 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001064 then
1065 AC_MSG_RESULT(yep)
1066
1067 dnl -- find where python thinks it was installed
1068 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1069 [ vi_cv_path_python_pfx=`
1070 ${vi_cv_path_python} -c \
1071 "import sys; print sys.prefix"` ])
1072
1073 dnl -- and where it thinks it runs
1074 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1075 [ vi_cv_path_python_epfx=`
1076 ${vi_cv_path_python} -c \
1077 "import sys; print sys.exec_prefix"` ])
1078
1079 dnl -- python's internal library path
1080
1081 AC_CACHE_VAL(vi_cv_path_pythonpath,
1082 [ vi_cv_path_pythonpath=`
1083 unset PYTHONPATH;
1084 ${vi_cv_path_python} -c \
1085 "import sys, string; print string.join(sys.path,':')"` ])
1086
1087 dnl -- where the Python implementation library archives are
1088
1089 AC_ARG_WITH(python-config-dir,
1090 [ --with-python-config-dir=PATH Python's config directory],
1091 [ vi_cv_path_python_conf="${withval}" ] )
1092
1093 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1094 [
1095 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001096 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1097 if test -d "$d" && test -f "$d/config.c"; then
1098 vi_cv_path_python_conf="$d"
1099 else
1100 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1101 for subdir in lib64 lib share; do
1102 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1103 if test -d "$d" && test -f "$d/config.c"; then
1104 vi_cv_path_python_conf="$d"
1105 fi
1106 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001107 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001108 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001109 ])
1110
1111 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1112
1113 if test "X$PYTHON_CONFDIR" = "X"; then
1114 AC_MSG_RESULT([can't find it!])
1115 else
1116
1117 dnl -- we need to examine Python's config/Makefile too
1118 dnl see what the interpreter is built from
1119 AC_CACHE_VAL(vi_cv_path_python_plibs,
1120 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001121 pwd=`pwd`
1122 tmp_mkf="$pwd/config-PyMake$$"
1123 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001124__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001125 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001126 @echo "python_LIBS='$(LIBS)'"
1127 @echo "python_SYSLIBS='$(SYSLIBS)'"
1128 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001129 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001130 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001131 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1132 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1133 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001134eof
1135 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001136 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1137 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001138 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1139 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1140 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001141 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1142 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1143 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001144 else
1145 if test "${vi_cv_var_python_version}" = "1.4"; then
1146 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1147 else
1148 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1149 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001150 dnl -- Check if the path contained in python_LINKFORSHARED is
1151 dnl usable for vim build. If not, make and try other
1152 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001153 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001154 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1155 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1156 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1157 dnl -- The path looks relative. Guess the absolute one using
1158 dnl the prefix and try that.
1159 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1160 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1161 dnl -- A last resort.
1162 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1163 dnl -- No check is done. The last word is left to the
1164 dnl "sanity" test on link flags that follows shortly.
1165 fi
1166 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1167 fi
1168 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001169 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 +00001170 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1171 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1172 fi
1173 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001174 AC_CACHE_VAL(vi_cv_dll_name_python,
1175 [
1176 if test "X$python_DLLLIBRARY" != "X"; then
1177 vi_cv_dll_name_python="$python_DLLLIBRARY"
1178 else
1179 vi_cv_dll_name_python="$python_INSTSONAME"
1180 fi
1181 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001182
1183 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1184 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001185 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 +00001186 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001187 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 +00001188 fi
1189 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001190 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001191 if test "${vi_cv_var_python_version}" = "1.4"; then
1192 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1193 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001194 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 +00001195
1196 dnl On FreeBSD linking with "-pthread" is required to use threads.
1197 dnl _THREAD_SAFE must be used for compiling then.
1198 dnl The "-pthread" is added to $LIBS, so that the following check for
1199 dnl sigaltstack() will look in libc_r (it's there in libc!).
1200 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1201 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1202 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1203 AC_MSG_CHECKING([if -pthread should be used])
1204 threadsafe_flag=
1205 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001206 dnl if test "x$MACOSX" != "xyes"; then
1207 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208 test "$GCC" = yes && threadsafe_flag="-pthread"
1209 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1210 threadsafe_flag="-D_THREAD_SAFE"
1211 thread_lib="-pthread"
1212 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001213 if test "`(uname) 2>/dev/null`" = SunOS; then
1214 threadsafe_flag="-pthreads"
1215 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001216 fi
1217 libs_save_old=$LIBS
1218 if test -n "$threadsafe_flag"; then
1219 cflags_save=$CFLAGS
1220 CFLAGS="$CFLAGS $threadsafe_flag"
1221 LIBS="$LIBS $thread_lib"
1222 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001223 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001224 AC_MSG_RESULT(no); LIBS=$libs_save_old
1225 )
1226 CFLAGS=$cflags_save
1227 else
1228 AC_MSG_RESULT(no)
1229 fi
1230
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001231 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001232 dnl added for Python.
1233 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1234 cflags_save=$CFLAGS
1235 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001236 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001237 LIBS="$LIBS $PYTHON_LIBS"
1238 AC_TRY_LINK(,[ ],
1239 AC_MSG_RESULT(yes); python_ok=yes,
1240 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1241 CFLAGS=$cflags_save
1242 LIBS=$libs_save
1243 if test $python_ok = yes; then
1244 AC_DEFINE(FEAT_PYTHON)
1245 else
1246 LIBS=$libs_save_old
1247 PYTHON_SRC=
1248 PYTHON_OBJ=
1249 PYTHON_LIBS=
1250 PYTHON_CFLAGS=
1251 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001252 fi
1253 else
1254 AC_MSG_RESULT(too old)
1255 fi
1256 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001257
1258 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1259 AC_MSG_ERROR([could not configure python])
1260 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001261fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001262
Bram Moolenaar071d4272004-06-13 20:20:40 +00001263AC_SUBST(PYTHON_CONFDIR)
1264AC_SUBST(PYTHON_LIBS)
1265AC_SUBST(PYTHON_GETPATH_CFLAGS)
1266AC_SUBST(PYTHON_CFLAGS)
1267AC_SUBST(PYTHON_SRC)
1268AC_SUBST(PYTHON_OBJ)
1269
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001270
1271AC_MSG_CHECKING(--enable-python3interp argument)
1272AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001273 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001274 [enable_python3interp="no"])
1275AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001276if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001277 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1278 AC_MSG_ERROR([cannot use Python with tiny or small features])
1279 fi
1280
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001281 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001282 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001283 if test "X$vi_cv_path_python3" != "X"; then
1284
1285 dnl -- get its version number
1286 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1287 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001288 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001289 ]])
1290
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001291 dnl -- it must be at least version 3
1292 AC_MSG_CHECKING(Python is 3.0 or better)
1293 if ${vi_cv_path_python3} -c \
1294 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1295 then
1296 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001297
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001298 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1299 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001300 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001301 vi_cv_var_python3_abiflags=
1302 if ${vi_cv_path_python3} -c \
1303 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1304 then
1305 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1306 "import sys; print(sys.abiflags)"`
1307 fi ])
1308
1309 dnl -- find where python3 thinks it was installed
1310 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1311 [ vi_cv_path_python3_pfx=`
1312 ${vi_cv_path_python3} -c \
1313 "import sys; print(sys.prefix)"` ])
1314
1315 dnl -- and where it thinks it runs
1316 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1317 [ vi_cv_path_python3_epfx=`
1318 ${vi_cv_path_python3} -c \
1319 "import sys; print(sys.exec_prefix)"` ])
1320
1321 dnl -- python3's internal library path
1322
1323 AC_CACHE_VAL(vi_cv_path_python3path,
1324 [ vi_cv_path_python3path=`
1325 unset PYTHONPATH;
1326 ${vi_cv_path_python3} -c \
1327 "import sys, string; print(':'.join(sys.path))"` ])
1328
1329 dnl -- where the Python implementation library archives are
1330
1331 AC_ARG_WITH(python3-config-dir,
1332 [ --with-python3-config-dir=PATH Python's config directory],
1333 [ vi_cv_path_python3_conf="${withval}" ] )
1334
1335 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1336 [
1337 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001338 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001339 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1340 if test -d "$d" && test -f "$d/config.c"; then
1341 vi_cv_path_python3_conf="$d"
1342 else
1343 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1344 for subdir in lib64 lib share; do
1345 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1346 if test -d "$d" && test -f "$d/config.c"; then
1347 vi_cv_path_python3_conf="$d"
1348 fi
1349 done
1350 done
1351 fi
1352 ])
1353
1354 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1355
1356 if test "X$PYTHON3_CONFDIR" = "X"; then
1357 AC_MSG_RESULT([can't find it!])
1358 else
1359
1360 dnl -- we need to examine Python's config/Makefile too
1361 dnl see what the interpreter is built from
1362 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1363 [
1364 pwd=`pwd`
1365 tmp_mkf="$pwd/config-PyMake$$"
1366 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001367__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001368 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001369 @echo "python3_LIBS='$(LIBS)'"
1370 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001371 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001372 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001373eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001374 dnl -- delete the lines from make about Entering/Leaving directory
1375 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1376 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001377 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001378 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1379 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1380 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1381 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1382 ])
1383 AC_CACHE_VAL(vi_cv_dll_name_python3,
1384 [
1385 if test "X$python3_DLLLIBRARY" != "X"; then
1386 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1387 else
1388 vi_cv_dll_name_python3="$python3_INSTSONAME"
1389 fi
1390 ])
1391
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001392 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1393 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001394 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 +02001395 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001396 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 +02001397 fi
1398 PYTHON3_SRC="if_python3.c"
1399 PYTHON3_OBJ="objects/if_python3.o"
1400
1401 dnl On FreeBSD linking with "-pthread" is required to use threads.
1402 dnl _THREAD_SAFE must be used for compiling then.
1403 dnl The "-pthread" is added to $LIBS, so that the following check for
1404 dnl sigaltstack() will look in libc_r (it's there in libc!).
1405 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1406 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1407 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1408 AC_MSG_CHECKING([if -pthread should be used])
1409 threadsafe_flag=
1410 thread_lib=
1411 dnl if test "x$MACOSX" != "xyes"; then
1412 if test "`(uname) 2>/dev/null`" != Darwin; then
1413 test "$GCC" = yes && threadsafe_flag="-pthread"
1414 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1415 threadsafe_flag="-D_THREAD_SAFE"
1416 thread_lib="-pthread"
1417 fi
1418 if test "`(uname) 2>/dev/null`" = SunOS; then
1419 threadsafe_flag="-pthreads"
1420 fi
1421 fi
1422 libs_save_old=$LIBS
1423 if test -n "$threadsafe_flag"; then
1424 cflags_save=$CFLAGS
1425 CFLAGS="$CFLAGS $threadsafe_flag"
1426 LIBS="$LIBS $thread_lib"
1427 AC_TRY_LINK(,[ ],
1428 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1429 AC_MSG_RESULT(no); LIBS=$libs_save_old
1430 )
1431 CFLAGS=$cflags_save
1432 else
1433 AC_MSG_RESULT(no)
1434 fi
1435
1436 dnl check that compiling a simple program still works with the flags
1437 dnl added for Python.
1438 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1439 cflags_save=$CFLAGS
1440 libs_save=$LIBS
1441 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1442 LIBS="$LIBS $PYTHON3_LIBS"
1443 AC_TRY_LINK(,[ ],
1444 AC_MSG_RESULT(yes); python3_ok=yes,
1445 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1446 CFLAGS=$cflags_save
1447 LIBS=$libs_save
1448 if test "$python3_ok" = yes; then
1449 AC_DEFINE(FEAT_PYTHON3)
1450 else
1451 LIBS=$libs_save_old
1452 PYTHON3_SRC=
1453 PYTHON3_OBJ=
1454 PYTHON3_LIBS=
1455 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001456 fi
1457 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001458 else
1459 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001460 fi
1461 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001462 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1463 AC_MSG_ERROR([could not configure python3])
1464 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001465fi
1466
1467AC_SUBST(PYTHON3_CONFDIR)
1468AC_SUBST(PYTHON3_LIBS)
1469AC_SUBST(PYTHON3_CFLAGS)
1470AC_SUBST(PYTHON3_SRC)
1471AC_SUBST(PYTHON3_OBJ)
1472
1473dnl if python2.x and python3.x are enabled one can only link in code
1474dnl with dlopen(), dlsym(), dlclose()
1475if test "$python_ok" = yes && test "$python3_ok" = yes; then
1476 AC_DEFINE(DYNAMIC_PYTHON)
1477 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001478 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001479 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001480 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001481 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001482 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001483 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001484 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001485 #include <dlfcn.h>
1486 /* If this program fails, then RTLD_GLOBAL is needed.
1487 * RTLD_GLOBAL will be used and then it is not possible to
1488 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001489 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001490 */
1491
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001492 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001493 {
1494 int needed = 0;
1495 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1496 if (pylib != 0)
1497 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001498 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001499 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1500 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1501 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001502 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001503 (*init)();
1504 needed = (*simple)("import termios") == -1;
1505 (*final)();
1506 dlclose(pylib);
1507 }
1508 return !needed;
1509 }
1510
1511 int main(int argc, char** argv)
1512 {
1513 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001514 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001515 not_needed = 1;
1516 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001517 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001518 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001519
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001520 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001521 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001522
1523 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1524 cflags_save=$CFLAGS
1525 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001526 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001527 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001528 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001529 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001530 #include <dlfcn.h>
1531 #include <wchar.h>
1532 /* If this program fails, then RTLD_GLOBAL is needed.
1533 * RTLD_GLOBAL will be used and then it is not possible to
1534 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001535 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001536 */
1537
1538 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1539 {
1540 int needed = 0;
1541 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1542 if (pylib != 0)
1543 {
1544 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1545 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1546 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1547 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1548 (*pfx)(prefix);
1549 (*init)();
1550 needed = (*simple)("import termios") == -1;
1551 (*final)();
1552 dlclose(pylib);
1553 }
1554 return !needed;
1555 }
1556
1557 int main(int argc, char** argv)
1558 {
1559 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001560 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001561 not_needed = 1;
1562 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001563 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001564 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1565
1566 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001567 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001568
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001569 PYTHON_SRC="if_python.c"
1570 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001571 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001572 PYTHON_LIBS=
1573 PYTHON3_SRC="if_python3.c"
1574 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001575 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001576 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001577elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1578 AC_DEFINE(DYNAMIC_PYTHON)
1579 PYTHON_SRC="if_python.c"
1580 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001581 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001582 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001583elif test "$python_ok" = yes; then
1584 dnl Check that adding -fPIE works. It may be needed when using a static
1585 dnl Python library.
1586 AC_MSG_CHECKING([if -fPIE can be added for Python])
1587 cflags_save=$CFLAGS
1588 libs_save=$LIBS
1589 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1590 LIBS="$LIBS $PYTHON_LIBS"
1591 AC_TRY_LINK(,[ ],
1592 AC_MSG_RESULT(yes); fpie_ok=yes,
1593 AC_MSG_RESULT(no); fpie_ok=no)
1594 CFLAGS=$cflags_save
1595 LIBS=$libs_save
1596 if test $fpie_ok = yes; then
1597 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1598 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001599elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1600 AC_DEFINE(DYNAMIC_PYTHON3)
1601 PYTHON3_SRC="if_python3.c"
1602 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001603 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001604 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001605elif test "$python3_ok" = yes; then
1606 dnl Check that adding -fPIE works. It may be needed when using a static
1607 dnl Python library.
1608 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1609 cflags_save=$CFLAGS
1610 libs_save=$LIBS
1611 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1612 LIBS="$LIBS $PYTHON3_LIBS"
1613 AC_TRY_LINK(,[ ],
1614 AC_MSG_RESULT(yes); fpie_ok=yes,
1615 AC_MSG_RESULT(no); fpie_ok=no)
1616 CFLAGS=$cflags_save
1617 LIBS=$libs_save
1618 if test $fpie_ok = yes; then
1619 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1620 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001621fi
1622
Bram Moolenaar071d4272004-06-13 20:20:40 +00001623AC_MSG_CHECKING(--enable-tclinterp argument)
1624AC_ARG_ENABLE(tclinterp,
1625 [ --enable-tclinterp Include Tcl interpreter.], ,
1626 [enable_tclinterp="no"])
1627AC_MSG_RESULT($enable_tclinterp)
1628
1629if test "$enable_tclinterp" = "yes"; then
1630
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001631 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001632 AC_MSG_CHECKING(--with-tclsh argument)
1633 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1634 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001635 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001636 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1637 AC_SUBST(vi_cv_path_tcl)
1638
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001639 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1640 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1641 tclsh_name="tclsh8.4"
1642 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1643 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001644 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001645 tclsh_name="tclsh8.2"
1646 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1647 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001648 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1649 tclsh_name="tclsh8.0"
1650 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1651 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001652 dnl still didn't find it, try without version number
1653 if test "X$vi_cv_path_tcl" = "X"; then
1654 tclsh_name="tclsh"
1655 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1656 fi
1657 if test "X$vi_cv_path_tcl" != "X"; then
1658 AC_MSG_CHECKING(Tcl version)
1659 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1660 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1661 AC_MSG_RESULT($tclver - OK);
1662 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 -`
1663
1664 AC_MSG_CHECKING(for location of Tcl include)
1665 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001666 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 +00001667 else
1668 dnl For Mac OS X 10.3, use the OS-provided framework location
1669 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1670 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001671 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001672 for try in $tclinc; do
1673 if test -f "$try/tcl.h"; then
1674 AC_MSG_RESULT($try/tcl.h)
1675 TCL_INC=$try
1676 break
1677 fi
1678 done
1679 if test -z "$TCL_INC"; then
1680 AC_MSG_RESULT(<not found>)
1681 SKIP_TCL=YES
1682 fi
1683 if test -z "$SKIP_TCL"; then
1684 AC_MSG_CHECKING(for location of tclConfig.sh script)
1685 if test "x$MACOSX" != "xyes"; then
1686 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001687 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001688 else
1689 dnl For Mac OS X 10.3, use the OS-provided framework location
1690 tclcnf="/System/Library/Frameworks/Tcl.framework"
1691 fi
1692 for try in $tclcnf; do
1693 if test -f $try/tclConfig.sh; then
1694 AC_MSG_RESULT($try/tclConfig.sh)
1695 . $try/tclConfig.sh
1696 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1697 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1698 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001699 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001700 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 +00001701 break
1702 fi
1703 done
1704 if test -z "$TCL_LIBS"; then
1705 AC_MSG_RESULT(<not found>)
1706 AC_MSG_CHECKING(for Tcl library by myself)
1707 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001708 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001709 for ext in .so .a ; do
1710 for ver in "" $tclver ; do
1711 for try in $tcllib ; do
1712 trylib=tcl$ver$ext
1713 if test -f $try/lib$trylib ; then
1714 AC_MSG_RESULT($try/lib$trylib)
1715 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1716 if test "`(uname) 2>/dev/null`" = SunOS &&
1717 uname -r | grep '^5' >/dev/null; then
1718 TCL_LIBS="$TCL_LIBS -R $try"
1719 fi
1720 break 3
1721 fi
1722 done
1723 done
1724 done
1725 if test -z "$TCL_LIBS"; then
1726 AC_MSG_RESULT(<not found>)
1727 SKIP_TCL=YES
1728 fi
1729 fi
1730 if test -z "$SKIP_TCL"; then
1731 AC_DEFINE(FEAT_TCL)
1732 TCL_SRC=if_tcl.c
1733 TCL_OBJ=objects/if_tcl.o
1734 TCL_PRO=if_tcl.pro
1735 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1736 fi
1737 fi
1738 else
1739 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1740 fi
1741 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001742 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1743 AC_MSG_ERROR([could not configure Tcl])
1744 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745fi
1746AC_SUBST(TCL_SRC)
1747AC_SUBST(TCL_OBJ)
1748AC_SUBST(TCL_PRO)
1749AC_SUBST(TCL_CFLAGS)
1750AC_SUBST(TCL_LIBS)
1751
1752AC_MSG_CHECKING(--enable-rubyinterp argument)
1753AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001754 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001755 [enable_rubyinterp="no"])
1756AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001757if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001758 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1759 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1760 fi
1761
Bram Moolenaar165641d2010-02-17 16:23:09 +01001762 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001763 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001764 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1765 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1766 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001767 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001768 if test "X$vi_cv_path_ruby" != "X"; then
1769 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001770 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 +00001771 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001772 AC_MSG_CHECKING(Ruby rbconfig)
1773 ruby_rbconfig="RbConfig"
1774 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1775 ruby_rbconfig="Config"
1776 fi
1777 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001779 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 +00001780 if test "X$rubyhdrdir" != "X"; then
1781 AC_MSG_RESULT($rubyhdrdir)
1782 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001783 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1784 if test -d "$rubyarchdir"; then
1785 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001786 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001787 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001788 if test "X$rubyversion" = "X"; then
1789 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1790 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001791 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001792 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001793 if test "X$rubylibs" != "X"; then
1794 RUBY_LIBS="$rubylibs"
1795 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001796 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1797 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001798 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001799 if test -f "$rubylibdir/$librubya"; then
1800 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001801 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1802 elif test "$librubyarg" = "libruby.a"; then
1803 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1804 librubyarg="-lruby"
1805 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001806 fi
1807
1808 if test "X$librubyarg" != "X"; then
1809 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1810 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001811 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001812 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001813 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1814 dnl be included if requested by passing --with-mac-arch to
1815 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001816 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001817 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001818 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001819 LDFLAGS="$rubyldflags $LDFLAGS"
1820 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001821 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 fi
1823 RUBY_SRC="if_ruby.c"
1824 RUBY_OBJ="objects/if_ruby.o"
1825 RUBY_PRO="if_ruby.pro"
1826 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001827 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001828 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001829 AC_DEFINE(DYNAMIC_RUBY)
1830 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1831 RUBY_LIBS=
1832 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001833 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001834 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001835 fi
1836 else
1837 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1838 fi
1839 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001840
1841 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1842 AC_MSG_ERROR([could not configure Ruby])
1843 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844fi
1845AC_SUBST(RUBY_SRC)
1846AC_SUBST(RUBY_OBJ)
1847AC_SUBST(RUBY_PRO)
1848AC_SUBST(RUBY_CFLAGS)
1849AC_SUBST(RUBY_LIBS)
1850
1851AC_MSG_CHECKING(--enable-cscope argument)
1852AC_ARG_ENABLE(cscope,
1853 [ --enable-cscope Include cscope interface.], ,
1854 [enable_cscope="no"])
1855AC_MSG_RESULT($enable_cscope)
1856if test "$enable_cscope" = "yes"; then
1857 AC_DEFINE(FEAT_CSCOPE)
1858fi
1859
1860AC_MSG_CHECKING(--enable-workshop argument)
1861AC_ARG_ENABLE(workshop,
1862 [ --enable-workshop Include Sun Visual Workshop support.], ,
1863 [enable_workshop="no"])
1864AC_MSG_RESULT($enable_workshop)
1865if test "$enable_workshop" = "yes"; then
1866 AC_DEFINE(FEAT_SUN_WORKSHOP)
1867 WORKSHOP_SRC="workshop.c integration.c"
1868 AC_SUBST(WORKSHOP_SRC)
1869 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1870 AC_SUBST(WORKSHOP_OBJ)
1871 if test "${enable_gui-xxx}" = xxx; then
1872 enable_gui=motif
1873 fi
1874fi
1875
1876AC_MSG_CHECKING(--disable-netbeans argument)
1877AC_ARG_ENABLE(netbeans,
1878 [ --disable-netbeans Disable NetBeans integration support.],
1879 , [enable_netbeans="yes"])
1880if test "$enable_netbeans" = "yes"; then
1881 AC_MSG_RESULT(no)
1882 dnl On Solaris we need the socket and nsl library.
1883 AC_CHECK_LIB(socket, socket)
1884 AC_CHECK_LIB(nsl, gethostbyname)
1885 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1886 AC_TRY_LINK([
1887#include <stdio.h>
1888#include <stdlib.h>
1889#include <stdarg.h>
1890#include <fcntl.h>
1891#include <netdb.h>
1892#include <netinet/in.h>
1893#include <errno.h>
1894#include <sys/types.h>
1895#include <sys/socket.h>
1896 /* Check bitfields */
1897 struct nbbuf {
1898 unsigned int initDone:1;
1899 ushort signmaplen;
1900 };
1901 ], [
1902 /* Check creating a socket. */
1903 struct sockaddr_in server;
1904 (void)socket(AF_INET, SOCK_STREAM, 0);
1905 (void)htons(100);
1906 (void)gethostbyname("microsoft.com");
1907 if (errno == ECONNREFUSED)
1908 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1909 ],
1910 AC_MSG_RESULT(yes),
1911 AC_MSG_RESULT(no); enable_netbeans="no")
1912else
1913 AC_MSG_RESULT(yes)
1914fi
1915if test "$enable_netbeans" = "yes"; then
1916 AC_DEFINE(FEAT_NETBEANS_INTG)
1917 NETBEANS_SRC="netbeans.c"
1918 AC_SUBST(NETBEANS_SRC)
1919 NETBEANS_OBJ="objects/netbeans.o"
1920 AC_SUBST(NETBEANS_OBJ)
1921fi
1922
1923AC_MSG_CHECKING(--enable-sniff argument)
1924AC_ARG_ENABLE(sniff,
1925 [ --enable-sniff Include Sniff interface.], ,
1926 [enable_sniff="no"])
1927AC_MSG_RESULT($enable_sniff)
1928if test "$enable_sniff" = "yes"; then
1929 AC_DEFINE(FEAT_SNIFF)
1930 SNIFF_SRC="if_sniff.c"
1931 AC_SUBST(SNIFF_SRC)
1932 SNIFF_OBJ="objects/if_sniff.o"
1933 AC_SUBST(SNIFF_OBJ)
1934fi
1935
1936AC_MSG_CHECKING(--enable-multibyte argument)
1937AC_ARG_ENABLE(multibyte,
1938 [ --enable-multibyte Include multibyte editing support.], ,
1939 [enable_multibyte="no"])
1940AC_MSG_RESULT($enable_multibyte)
1941if test "$enable_multibyte" = "yes"; then
1942 AC_DEFINE(FEAT_MBYTE)
1943fi
1944
1945AC_MSG_CHECKING(--enable-hangulinput argument)
1946AC_ARG_ENABLE(hangulinput,
1947 [ --enable-hangulinput Include Hangul input support.], ,
1948 [enable_hangulinput="no"])
1949AC_MSG_RESULT($enable_hangulinput)
1950
1951AC_MSG_CHECKING(--enable-xim argument)
1952AC_ARG_ENABLE(xim,
1953 [ --enable-xim Include XIM input support.],
1954 AC_MSG_RESULT($enable_xim),
1955 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001956
1957AC_MSG_CHECKING(--enable-fontset argument)
1958AC_ARG_ENABLE(fontset,
1959 [ --enable-fontset Include X fontset output support.], ,
1960 [enable_fontset="no"])
1961AC_MSG_RESULT($enable_fontset)
1962dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1963
1964test -z "$with_x" && with_x=yes
1965test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1966if test "$with_x" = no; then
1967 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1968else
1969 dnl Do this check early, so that its failure can override user requests.
1970
1971 AC_PATH_PROG(xmkmfpath, xmkmf)
1972
1973 AC_PATH_XTRA
1974
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001975 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001976 dnl be compiled with a special option.
1977 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001978 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001979 CFLAGS="$CFLAGS -W c,dll"
1980 LDFLAGS="$LDFLAGS -W l,dll"
1981 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1982 fi
1983
1984 dnl On my HPUX system the X include dir is found, but the lib dir not.
1985 dnl This is a desparate try to fix this.
1986
1987 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1988 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1989 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1990 X_LIBS="$X_LIBS -L$x_libraries"
1991 if test "`(uname) 2>/dev/null`" = SunOS &&
1992 uname -r | grep '^5' >/dev/null; then
1993 X_LIBS="$X_LIBS -R $x_libraries"
1994 fi
1995 fi
1996
1997 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1998 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1999 AC_MSG_RESULT(Corrected X includes to $x_includes)
2000 X_CFLAGS="$X_CFLAGS -I$x_includes"
2001 fi
2002
2003 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2004 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2005 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2006 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2007 dnl Same for "-R/usr/lib ".
2008 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2009
2010
2011 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002012 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2013 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002014 AC_MSG_CHECKING(if X11 header files can be found)
2015 cflags_save=$CFLAGS
2016 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002017 AC_TRY_COMPILE([#include <X11/Xlib.h>
2018#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002019 AC_MSG_RESULT(yes),
2020 AC_MSG_RESULT(no); no_x=yes)
2021 CFLAGS=$cflags_save
2022
2023 if test "${no_x-no}" = yes; then
2024 with_x=no
2025 else
2026 AC_DEFINE(HAVE_X11)
2027 X_LIB="-lXt -lX11";
2028 AC_SUBST(X_LIB)
2029
2030 ac_save_LDFLAGS="$LDFLAGS"
2031 LDFLAGS="-L$x_libraries $LDFLAGS"
2032
2033 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2034 dnl For HP-UX 10.20 it must be before -lSM -lICE
2035 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2036 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2037
2038 dnl Some systems need -lnsl -lsocket when testing for ICE.
2039 dnl The check above doesn't do this, try here (again). Also needed to get
2040 dnl them after Xdmcp. link.sh will remove them when not needed.
2041 dnl Check for other function than above to avoid the cached value
2042 AC_CHECK_LIB(ICE, IceOpenConnection,
2043 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2044
2045 dnl Check for -lXpm (needed for some versions of Motif)
2046 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2047 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2048 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2049
2050 dnl Check that the X11 header files don't use implicit declarations
2051 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2052 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002053 dnl -Werror is GCC only, others like Solaris Studio might not like it
2054 if test "$GCC" = yes; then
2055 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2056 else
2057 CFLAGS="$CFLAGS $X_CFLAGS"
2058 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002059 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2060 AC_MSG_RESULT(no),
2061 CFLAGS="$CFLAGS -Wno-implicit-int"
2062 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2063 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2064 AC_MSG_RESULT(test failed)
2065 )
2066 )
2067 CFLAGS=$cflags_save
2068
2069 LDFLAGS="$ac_save_LDFLAGS"
2070
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002071 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2072 AC_CACHE_VAL(ac_cv_small_wchar_t,
2073 [AC_TRY_RUN([
2074#include <X11/Xlib.h>
2075#if STDC_HEADERS
2076# include <stdlib.h>
2077# include <stddef.h>
2078#endif
2079 main()
2080 {
2081 if (sizeof(wchar_t) <= 2)
2082 exit(1);
2083 exit(0);
2084 }],
2085 ac_cv_small_wchar_t="no",
2086 ac_cv_small_wchar_t="yes",
2087 AC_MSG_ERROR(failed to compile test program))])
2088 AC_MSG_RESULT($ac_cv_small_wchar_t)
2089 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2090 AC_DEFINE(SMALL_WCHAR_T)
2091 fi
2092
Bram Moolenaar071d4272004-06-13 20:20:40 +00002093 fi
2094fi
2095
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002096test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097
2098AC_MSG_CHECKING(--enable-gui argument)
2099AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002100 [ --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 +00002101
2102dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2103dnl Do not use character classes for portability with old tools.
2104enable_gui_canon=`echo "_$enable_gui" | \
2105 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2106
2107dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002108SKIP_GTK2=YES
2109SKIP_GNOME=YES
2110SKIP_MOTIF=YES
2111SKIP_ATHENA=YES
2112SKIP_NEXTAW=YES
2113SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114SKIP_CARBON=YES
2115GUITYPE=NONE
2116
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002117if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118 SKIP_PHOTON=
2119 case "$enable_gui_canon" in
2120 no) AC_MSG_RESULT(no GUI support)
2121 SKIP_PHOTON=YES ;;
2122 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2123 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2124 photon) AC_MSG_RESULT(Photon GUI support) ;;
2125 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2126 SKIP_PHOTON=YES ;;
2127 esac
2128
2129elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2130 SKIP_CARBON=
2131 case "$enable_gui_canon" in
2132 no) AC_MSG_RESULT(no GUI support)
2133 SKIP_CARBON=YES ;;
2134 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002135 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2136 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002137 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2138 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2139 SKIP_CARBON=YES ;;
2140 esac
2141
2142else
2143
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144 case "$enable_gui_canon" in
2145 no|none) AC_MSG_RESULT(no GUI support) ;;
2146 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002147 SKIP_GTK2=
2148 SKIP_GNOME=
2149 SKIP_MOTIF=
2150 SKIP_ATHENA=
2151 SKIP_NEXTAW=
2152 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002154 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002155 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2156 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002157 SKIP_GTK2=;;
2158 motif) AC_MSG_RESULT(Motif GUI support)
2159 SKIP_MOTIF=;;
2160 athena) AC_MSG_RESULT(Athena GUI support)
2161 SKIP_ATHENA=;;
2162 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2163 SKIP_NEXTAW=;;
2164 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2165 esac
2166
2167fi
2168
Bram Moolenaar071d4272004-06-13 20:20:40 +00002169if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2170 -a "$enable_gui_canon" != "gnome2"; then
2171 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2172 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002173 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002174 , enable_gtk2_check="yes")
2175 AC_MSG_RESULT($enable_gtk2_check)
2176 if test "x$enable_gtk2_check" = "xno"; then
2177 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002178 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002179 fi
2180fi
2181
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002182if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002183 AC_MSG_CHECKING(whether or not to look for GNOME)
2184 AC_ARG_ENABLE(gnome-check,
2185 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2186 , enable_gnome_check="no")
2187 AC_MSG_RESULT($enable_gnome_check)
2188 if test "x$enable_gnome_check" = "xno"; then
2189 SKIP_GNOME=YES
2190 fi
2191fi
2192
2193if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2194 AC_MSG_CHECKING(whether or not to look for Motif)
2195 AC_ARG_ENABLE(motif-check,
2196 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2197 , enable_motif_check="yes")
2198 AC_MSG_RESULT($enable_motif_check)
2199 if test "x$enable_motif_check" = "xno"; then
2200 SKIP_MOTIF=YES
2201 fi
2202fi
2203
2204if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2205 AC_MSG_CHECKING(whether or not to look for Athena)
2206 AC_ARG_ENABLE(athena-check,
2207 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2208 , enable_athena_check="yes")
2209 AC_MSG_RESULT($enable_athena_check)
2210 if test "x$enable_athena_check" = "xno"; then
2211 SKIP_ATHENA=YES
2212 fi
2213fi
2214
2215if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2216 AC_MSG_CHECKING(whether or not to look for neXtaw)
2217 AC_ARG_ENABLE(nextaw-check,
2218 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2219 , enable_nextaw_check="yes")
2220 AC_MSG_RESULT($enable_nextaw_check);
2221 if test "x$enable_nextaw_check" = "xno"; then
2222 SKIP_NEXTAW=YES
2223 fi
2224fi
2225
2226if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2227 AC_MSG_CHECKING(whether or not to look for Carbon)
2228 AC_ARG_ENABLE(carbon-check,
2229 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2230 , enable_carbon_check="yes")
2231 AC_MSG_RESULT($enable_carbon_check);
2232 if test "x$enable_carbon_check" = "xno"; then
2233 SKIP_CARBON=YES
2234 fi
2235fi
2236
Bram Moolenaar843ee412004-06-30 16:16:41 +00002237
Bram Moolenaar071d4272004-06-13 20:20:40 +00002238if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2239 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002240 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002241 AC_MSG_RESULT(yes);
2242 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002243 if test "$VIMNAME" = "vim"; then
2244 VIMNAME=Vim
2245 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002246
Bram Moolenaar164fca32010-07-14 13:58:07 +02002247 if test "x$MACARCH" = "xboth"; then
2248 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2249 else
2250 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2251 fi
2252
Bram Moolenaar14716812006-05-04 21:54:08 +00002253 dnl Default install directory is not /usr/local
2254 if test x$prefix = xNONE; then
2255 prefix=/Applications
2256 fi
2257
2258 dnl Sorry for the hard coded default
2259 datadir='${prefix}/Vim.app/Contents/Resources'
2260
Bram Moolenaar071d4272004-06-13 20:20:40 +00002261 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002262 SKIP_GTK2=YES;
2263 SKIP_GNOME=YES;
2264 SKIP_MOTIF=YES;
2265 SKIP_ATHENA=YES;
2266 SKIP_NEXTAW=YES;
2267 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002268 SKIP_CARBON=YES
2269fi
2270
Bram Moolenaar071d4272004-06-13 20:20:40 +00002271dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002272dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273dnl
2274dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002275dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002276dnl
2277AC_DEFUN(AM_PATH_GTK,
2278[
2279 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2280 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002281 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2283 no_gtk=""
2284 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2285 && $PKG_CONFIG --exists gtk+-2.0; then
2286 {
2287 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2288 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2289 dnl something like that.
2290 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002291 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002292 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2293 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2294 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2295 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2296 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2297 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2298 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2299 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002300 else
2301 no_gtk=yes
2302 fi
2303
2304 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2305 {
2306 ac_save_CFLAGS="$CFLAGS"
2307 ac_save_LIBS="$LIBS"
2308 CFLAGS="$CFLAGS $GTK_CFLAGS"
2309 LIBS="$LIBS $GTK_LIBS"
2310
2311 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002312 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002313 dnl
2314 rm -f conf.gtktest
2315 AC_TRY_RUN([
2316#include <gtk/gtk.h>
2317#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002318#if STDC_HEADERS
2319# include <stdlib.h>
2320# include <stddef.h>
2321#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002322
2323int
2324main ()
2325{
2326int major, minor, micro;
2327char *tmp_version;
2328
2329system ("touch conf.gtktest");
2330
2331/* HP/UX 9 (%@#!) writes to sscanf strings */
2332tmp_version = g_strdup("$min_gtk_version");
2333if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2334 printf("%s, bad version string\n", "$min_gtk_version");
2335 exit(1);
2336 }
2337
2338if ((gtk_major_version > major) ||
2339 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2340 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2341 (gtk_micro_version >= micro)))
2342{
2343 return 0;
2344}
2345return 1;
2346}
2347],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2348 CFLAGS="$ac_save_CFLAGS"
2349 LIBS="$ac_save_LIBS"
2350 }
2351 fi
2352 if test "x$no_gtk" = x ; then
2353 if test "x$enable_gtktest" = "xyes"; then
2354 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2355 else
2356 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2357 fi
2358 ifelse([$2], , :, [$2])
2359 else
2360 {
2361 AC_MSG_RESULT(no)
2362 GTK_CFLAGS=""
2363 GTK_LIBS=""
2364 ifelse([$3], , :, [$3])
2365 }
2366 fi
2367 }
2368 else
2369 GTK_CFLAGS=""
2370 GTK_LIBS=""
2371 ifelse([$3], , :, [$3])
2372 fi
2373 AC_SUBST(GTK_CFLAGS)
2374 AC_SUBST(GTK_LIBS)
2375 rm -f conf.gtktest
2376])
2377
2378dnl ---------------------------------------------------------------------------
2379dnl gnome
2380dnl ---------------------------------------------------------------------------
2381AC_DEFUN([GNOME_INIT_HOOK],
2382[
2383 AC_SUBST(GNOME_LIBS)
2384 AC_SUBST(GNOME_LIBDIR)
2385 AC_SUBST(GNOME_INCLUDEDIR)
2386
2387 AC_ARG_WITH(gnome-includes,
2388 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2389 [CFLAGS="$CFLAGS -I$withval"]
2390 )
2391
2392 AC_ARG_WITH(gnome-libs,
2393 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2394 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2395 )
2396
2397 AC_ARG_WITH(gnome,
2398 [ --with-gnome Specify prefix for GNOME files],
2399 if test x$withval = xyes; then
2400 want_gnome=yes
2401 ifelse([$1], [], :, [$1])
2402 else
2403 if test "x$withval" = xno; then
2404 want_gnome=no
2405 else
2406 want_gnome=yes
2407 LDFLAGS="$LDFLAGS -L$withval/lib"
2408 CFLAGS="$CFLAGS -I$withval/include"
2409 gnome_prefix=$withval/lib
2410 fi
2411 fi,
2412 want_gnome=yes)
2413
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002414 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002415 {
2416 AC_MSG_CHECKING(for libgnomeui-2.0)
2417 if $PKG_CONFIG --exists libgnomeui-2.0; then
2418 AC_MSG_RESULT(yes)
2419 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2420 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2421 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002422
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002423 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2424 dnl This might not be the right way but it works for me...
2425 AC_MSG_CHECKING(for FreeBSD)
2426 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2427 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002428 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002429 GNOME_LIBS="$GNOME_LIBS -pthread"
2430 else
2431 AC_MSG_RESULT(no)
2432 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002433 $1
2434 else
2435 AC_MSG_RESULT(not found)
2436 if test "x$2" = xfail; then
2437 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2438 fi
2439 fi
2440 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002441 fi
2442])
2443
2444AC_DEFUN([GNOME_INIT],[
2445 GNOME_INIT_HOOK([],fail)
2446])
2447
2448
2449dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002450dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002451dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002452if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002453
2454 AC_MSG_CHECKING(--disable-gtktest argument)
2455 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2456 , enable_gtktest=yes)
2457 if test "x$enable_gtktest" = "xyes" ; then
2458 AC_MSG_RESULT(gtk test enabled)
2459 else
2460 AC_MSG_RESULT(gtk test disabled)
2461 fi
2462
Bram Moolenaar071d4272004-06-13 20:20:40 +00002463 if test "X$PKG_CONFIG" = "X"; then
2464 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2465 fi
2466
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002467 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002468 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2469 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002470 AM_PATH_GTK(2.2.0,
2471 [GUI_LIB_LOC="$GTK_LIBDIR"
2472 GTK_LIBNAME="$GTK_LIBS"
2473 GUI_INC_LOC="$GTK_CFLAGS"], )
2474 if test "x$GTK_CFLAGS" != "x"; then
2475 SKIP_ATHENA=YES
2476 SKIP_NEXTAW=YES
2477 SKIP_MOTIF=YES
2478 GUITYPE=GTK
2479 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480 fi
2481 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002482 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002483 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2484 || test "0$gtk_minor_version" -ge 2; then
2485 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2486 fi
2487 dnl
2488 dnl if GTK exists, then check for GNOME.
2489 dnl
2490 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002491 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002492 GNOME_INIT_HOOK([have_gnome=yes])
2493 if test "x$have_gnome" = xyes ; then
2494 AC_DEFINE(FEAT_GUI_GNOME)
2495 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2496 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002497 fi
2498 }
2499 fi
2500 fi
2501fi
2502
2503dnl Check for Motif include files location.
2504dnl The LAST one found is used, this makes the highest version to be used,
2505dnl e.g. when Motif1.2 and Motif2.0 are both present.
2506
2507if test -z "$SKIP_MOTIF"; then
2508 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"
2509 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2510 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2511
2512 AC_MSG_CHECKING(for location of Motif GUI includes)
2513 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2514 GUI_INC_LOC=
2515 for try in $gui_includes; do
2516 if test -f "$try/Xm/Xm.h"; then
2517 GUI_INC_LOC=$try
2518 fi
2519 done
2520 if test -n "$GUI_INC_LOC"; then
2521 if test "$GUI_INC_LOC" = /usr/include; then
2522 GUI_INC_LOC=
2523 AC_MSG_RESULT(in default path)
2524 else
2525 AC_MSG_RESULT($GUI_INC_LOC)
2526 fi
2527 else
2528 AC_MSG_RESULT(<not found>)
2529 SKIP_MOTIF=YES
2530 fi
2531fi
2532
2533dnl Check for Motif library files location. In the same order as the include
2534dnl files, to avoid a mixup if several versions are present
2535
2536if test -z "$SKIP_MOTIF"; then
2537 AC_MSG_CHECKING(--with-motif-lib argument)
2538 AC_ARG_WITH(motif-lib,
2539 [ --with-motif-lib=STRING Library for Motif ],
2540 [ MOTIF_LIBNAME="${withval}" ] )
2541
2542 if test -n "$MOTIF_LIBNAME"; then
2543 AC_MSG_RESULT($MOTIF_LIBNAME)
2544 GUI_LIB_LOC=
2545 else
2546 AC_MSG_RESULT(no)
2547
2548 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2549 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2550
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002551 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2552 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002554 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 +00002555 GUI_LIB_LOC=
2556 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002557 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002558 if test -f "$libtry"; then
2559 GUI_LIB_LOC=$try
2560 fi
2561 done
2562 done
2563 if test -n "$GUI_LIB_LOC"; then
2564 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002565 if test "$GUI_LIB_LOC" = /usr/lib \
2566 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2567 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002568 GUI_LIB_LOC=
2569 AC_MSG_RESULT(in default path)
2570 else
2571 if test -n "$GUI_LIB_LOC"; then
2572 AC_MSG_RESULT($GUI_LIB_LOC)
2573 if test "`(uname) 2>/dev/null`" = SunOS &&
2574 uname -r | grep '^5' >/dev/null; then
2575 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2576 fi
2577 fi
2578 fi
2579 MOTIF_LIBNAME=-lXm
2580 else
2581 AC_MSG_RESULT(<not found>)
2582 SKIP_MOTIF=YES
2583 fi
2584 fi
2585fi
2586
2587if test -z "$SKIP_MOTIF"; then
2588 SKIP_ATHENA=YES
2589 SKIP_NEXTAW=YES
2590 GUITYPE=MOTIF
2591 AC_SUBST(MOTIF_LIBNAME)
2592fi
2593
2594dnl Check if the Athena files can be found
2595
2596GUI_X_LIBS=
2597
2598if test -z "$SKIP_ATHENA"; then
2599 AC_MSG_CHECKING(if Athena header files can be found)
2600 cflags_save=$CFLAGS
2601 CFLAGS="$CFLAGS $X_CFLAGS"
2602 AC_TRY_COMPILE([
2603#include <X11/Intrinsic.h>
2604#include <X11/Xaw/Paned.h>], ,
2605 AC_MSG_RESULT(yes),
2606 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2607 CFLAGS=$cflags_save
2608fi
2609
2610if test -z "$SKIP_ATHENA"; then
2611 GUITYPE=ATHENA
2612fi
2613
2614if test -z "$SKIP_NEXTAW"; then
2615 AC_MSG_CHECKING(if neXtaw header files can be found)
2616 cflags_save=$CFLAGS
2617 CFLAGS="$CFLAGS $X_CFLAGS"
2618 AC_TRY_COMPILE([
2619#include <X11/Intrinsic.h>
2620#include <X11/neXtaw/Paned.h>], ,
2621 AC_MSG_RESULT(yes),
2622 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2623 CFLAGS=$cflags_save
2624fi
2625
2626if test -z "$SKIP_NEXTAW"; then
2627 GUITYPE=NEXTAW
2628fi
2629
2630if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2631 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2632 dnl Avoid adding it when it twice
2633 if test -n "$GUI_INC_LOC"; then
2634 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2635 fi
2636 if test -n "$GUI_LIB_LOC"; then
2637 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2638 fi
2639
2640 dnl Check for -lXext and then for -lXmu
2641 ldflags_save=$LDFLAGS
2642 LDFLAGS="$X_LIBS $LDFLAGS"
2643 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2644 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2645 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2646 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2647 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2648 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2649 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2650 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2651 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2652 if test -z "$SKIP_MOTIF"; then
2653 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2654 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2655 fi
2656 LDFLAGS=$ldflags_save
2657
2658 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2659 AC_MSG_CHECKING(for extra X11 defines)
2660 NARROW_PROTO=
2661 rm -fr conftestdir
2662 if mkdir conftestdir; then
2663 cd conftestdir
2664 cat > Imakefile <<'EOF'
2665acfindx:
2666 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2667EOF
2668 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2669 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2670 fi
2671 cd ..
2672 rm -fr conftestdir
2673 fi
2674 if test -z "$NARROW_PROTO"; then
2675 AC_MSG_RESULT(no)
2676 else
2677 AC_MSG_RESULT($NARROW_PROTO)
2678 fi
2679 AC_SUBST(NARROW_PROTO)
2680fi
2681
2682dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2683dnl use the X11 include path
2684if test "$enable_xsmp" = "yes"; then
2685 cppflags_save=$CPPFLAGS
2686 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2687 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2688 CPPFLAGS=$cppflags_save
2689fi
2690
2691
Bram Moolenaare667c952010-07-05 22:57:59 +02002692if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2694 cppflags_save=$CPPFLAGS
2695 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2696 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2697
2698 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2699 if test ! "$enable_xim" = "no"; then
2700 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2701 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2702 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002703 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002704 fi
2705 CPPFLAGS=$cppflags_save
2706
2707 dnl automatically enable XIM when hangul input isn't enabled
2708 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2709 -a "x$GUITYPE" != "xNONE" ; then
2710 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2711 enable_xim="yes"
2712 fi
2713fi
2714
2715if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2716 cppflags_save=$CPPFLAGS
2717 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002718dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2719 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2720 AC_TRY_COMPILE([
2721#include <X11/Intrinsic.h>
2722#include <X11/Xmu/Editres.h>],
2723 [int i; i = 0;],
2724 AC_MSG_RESULT(yes)
2725 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2726 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002727 CPPFLAGS=$cppflags_save
2728fi
2729
2730dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2731if test -z "$SKIP_MOTIF"; then
2732 cppflags_save=$CPPFLAGS
2733 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002734 if test "$zOSUnix" = "yes"; then
2735 xmheader="Xm/Xm.h"
2736 else
2737 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002738 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002739 fi
2740 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002741
Bram Moolenaar77c19352012-06-13 19:19:41 +02002742 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002743 dnl Solaris uses XpmAttributes_21, very annoying.
2744 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2745 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2746 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2747 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2748 )
2749 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002750 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002751 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002752 CPPFLAGS=$cppflags_save
2753fi
2754
2755if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2756 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2757 enable_xim="no"
2758fi
2759if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2760 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2761 enable_fontset="no"
2762fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002763if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002764 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2765 enable_fontset="no"
2766fi
2767
Bram Moolenaar071d4272004-06-13 20:20:40 +00002768if test -z "$SKIP_PHOTON"; then
2769 GUITYPE=PHOTONGUI
2770fi
2771
2772AC_SUBST(GUI_INC_LOC)
2773AC_SUBST(GUI_LIB_LOC)
2774AC_SUBST(GUITYPE)
2775AC_SUBST(GUI_X_LIBS)
2776
2777if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2778 AC_MSG_ERROR([cannot use workshop without Motif])
2779fi
2780
2781dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2782if test "$enable_xim" = "yes"; then
2783 AC_DEFINE(FEAT_XIM)
2784fi
2785if test "$enable_fontset" = "yes"; then
2786 AC_DEFINE(FEAT_XFONTSET)
2787fi
2788
2789
2790dnl ---------------------------------------------------------------------------
2791dnl end of GUI-checking
2792dnl ---------------------------------------------------------------------------
2793
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002794dnl Check for Cygwin, which needs an extra source file if not using X11
2795AC_MSG_CHECKING(for CYGWIN environment)
2796case `uname` in
2797 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2798 AC_MSG_CHECKING(for CYGWIN clipboard support)
2799 if test "x$with_x" = "xno" ; then
2800 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2801 AC_MSG_RESULT(yes)
2802 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2803 else
2804 AC_MSG_RESULT(no - using X11)
2805 fi ;;
2806
2807 *) CYGWIN=no; AC_MSG_RESULT(no);;
2808esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002809
2810dnl Only really enable hangul input when GUI and XFONTSET are available
2811if test "$enable_hangulinput" = "yes"; then
2812 if test "x$GUITYPE" = "xNONE"; then
2813 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2814 enable_hangulinput=no
2815 else
2816 AC_DEFINE(FEAT_HANGULIN)
2817 HANGULIN_SRC=hangulin.c
2818 AC_SUBST(HANGULIN_SRC)
2819 HANGULIN_OBJ=objects/hangulin.o
2820 AC_SUBST(HANGULIN_OBJ)
2821 fi
2822fi
2823
2824dnl Checks for libraries and include files.
2825
Bram Moolenaar446cb832008-06-24 21:56:24 +00002826AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2827 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002828 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002829#include "confdefs.h"
2830#include <ctype.h>
2831#if STDC_HEADERS
2832# include <stdlib.h>
2833# include <stddef.h>
2834#endif
2835main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002836 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002837 vim_cv_toupper_broken=yes
2838 ],[
2839 vim_cv_toupper_broken=no
2840 ],[
2841 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2842 ])])
2843
2844if test "x$vim_cv_toupper_broken" = "xyes" ; then
2845 AC_DEFINE(BROKEN_TOUPPER)
2846fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002847
2848AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002849AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2851 AC_MSG_RESULT(no))
2852
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002853AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2854AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2855 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2856 AC_MSG_RESULT(no))
2857
Bram Moolenaar071d4272004-06-13 20:20:40 +00002858dnl Checks for header files.
2859AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2860dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2861if test "$HAS_ELF" = 1; then
2862 AC_CHECK_LIB(elf, main)
2863fi
2864
2865AC_HEADER_DIRENT
2866
Bram Moolenaar071d4272004-06-13 20:20:40 +00002867dnl If sys/wait.h is not found it might still exist but not be POSIX
2868dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2869if test $ac_cv_header_sys_wait_h = no; then
2870 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2871 AC_TRY_COMPILE([#include <sys/wait.h>],
2872 [union wait xx, yy; xx = yy],
2873 AC_MSG_RESULT(yes)
2874 AC_DEFINE(HAVE_SYS_WAIT_H)
2875 AC_DEFINE(HAVE_UNION_WAIT),
2876 AC_MSG_RESULT(no))
2877fi
2878
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002879AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2880 sys/select.h sys/utsname.h termcap.h fcntl.h \
2881 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2882 termio.h iconv.h inttypes.h langinfo.h math.h \
2883 unistd.h stropts.h errno.h sys/resource.h \
2884 sys/systeminfo.h locale.h sys/stream.h termios.h \
2885 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2886 utime.h sys/param.h libintl.h libgen.h \
2887 util/debug.h util/msg18n.h frame.h sys/acl.h \
2888 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002889
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002890dnl sys/ptem.h depends on sys/stream.h on Solaris
2891AC_CHECK_HEADERS(sys/ptem.h, [], [],
2892[#if defined HAVE_SYS_STREAM_H
2893# include <sys/stream.h>
2894#endif])
2895
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002896dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2897AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2898[#if defined HAVE_SYS_PARAM_H
2899# include <sys/param.h>
2900#endif])
2901
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002902
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002903dnl pthread_np.h may exist but can only be used after including pthread.h
2904AC_MSG_CHECKING([for pthread_np.h])
2905AC_TRY_COMPILE([
2906#include <pthread.h>
2907#include <pthread_np.h>],
2908 [int i; i = 0;],
2909 AC_MSG_RESULT(yes)
2910 AC_DEFINE(HAVE_PTHREAD_NP_H),
2911 AC_MSG_RESULT(no))
2912
Bram Moolenaare344bea2005-09-01 20:46:49 +00002913AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002914if test "x$MACOSX" = "xyes"; then
2915 dnl The strings.h file on OS/X contains a warning and nothing useful.
2916 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2917else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002918
2919dnl Check if strings.h and string.h can both be included when defined.
2920AC_MSG_CHECKING([if strings.h can be included after string.h])
2921cppflags_save=$CPPFLAGS
2922CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2923AC_TRY_COMPILE([
2924#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2925# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2926 /* but don't do it on AIX 5.1 (Uribarri) */
2927#endif
2928#ifdef HAVE_XM_XM_H
2929# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2930#endif
2931#ifdef HAVE_STRING_H
2932# include <string.h>
2933#endif
2934#if defined(HAVE_STRINGS_H)
2935# include <strings.h>
2936#endif
2937 ], [int i; i = 0;],
2938 AC_MSG_RESULT(yes),
2939 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2940 AC_MSG_RESULT(no))
2941CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002942fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002943
2944dnl Checks for typedefs, structures, and compiler characteristics.
2945AC_PROG_GCC_TRADITIONAL
2946AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002947AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002948AC_TYPE_MODE_T
2949AC_TYPE_OFF_T
2950AC_TYPE_PID_T
2951AC_TYPE_SIZE_T
2952AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002953AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002954
Bram Moolenaar071d4272004-06-13 20:20:40 +00002955AC_HEADER_TIME
2956AC_CHECK_TYPE(ino_t, long)
2957AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002958AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002959
2960AC_MSG_CHECKING(for rlim_t)
2961if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2962 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2963else
2964 AC_EGREP_CPP(dnl
2965changequote(<<,>>)dnl
2966<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2967changequote([,]),
2968 [
2969#include <sys/types.h>
2970#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002971# include <stdlib.h>
2972# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002973#endif
2974#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002975# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002976#endif
2977 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2978 AC_MSG_RESULT($ac_cv_type_rlim_t)
2979fi
2980if test $ac_cv_type_rlim_t = no; then
2981 cat >> confdefs.h <<\EOF
2982#define rlim_t unsigned long
2983EOF
2984fi
2985
2986AC_MSG_CHECKING(for stack_t)
2987if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2988 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2989else
2990 AC_EGREP_CPP(stack_t,
2991 [
2992#include <sys/types.h>
2993#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002994# include <stdlib.h>
2995# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002996#endif
2997#include <signal.h>
2998 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2999 AC_MSG_RESULT($ac_cv_type_stack_t)
3000fi
3001if test $ac_cv_type_stack_t = no; then
3002 cat >> confdefs.h <<\EOF
3003#define stack_t struct sigaltstack
3004EOF
3005fi
3006
3007dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3008AC_MSG_CHECKING(whether stack_t has an ss_base field)
3009AC_TRY_COMPILE([
3010#include <sys/types.h>
3011#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003012# include <stdlib.h>
3013# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014#endif
3015#include <signal.h>
3016#include "confdefs.h"
3017 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3018 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3019 AC_MSG_RESULT(no))
3020
3021olibs="$LIBS"
3022AC_MSG_CHECKING(--with-tlib argument)
3023AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3024if test -n "$with_tlib"; then
3025 AC_MSG_RESULT($with_tlib)
3026 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003027 AC_MSG_CHECKING(for linking with $with_tlib library)
3028 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3029 dnl Need to check for tgetent() below.
3030 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003032 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003033 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3034 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003035 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003036 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003037 dnl Older versions of ncurses have bugs, get a new one!
3038 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003039 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003040 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003041 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3042 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043 esac
3044 for libname in $tlibs; do
3045 AC_CHECK_LIB(${libname}, tgetent,,)
3046 if test "x$olibs" != "x$LIBS"; then
3047 dnl It's possible that a library is found but it doesn't work
3048 dnl e.g., shared library that cannot be found
3049 dnl compile and run a test program to be sure
3050 AC_TRY_RUN([
3051#ifdef HAVE_TERMCAP_H
3052# include <termcap.h>
3053#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003054#if STDC_HEADERS
3055# include <stdlib.h>
3056# include <stddef.h>
3057#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003058main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3059 res="OK", res="FAIL", res="FAIL")
3060 if test "$res" = "OK"; then
3061 break
3062 fi
3063 AC_MSG_RESULT($libname library is not usable)
3064 LIBS="$olibs"
3065 fi
3066 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003067 if test "x$olibs" = "x$LIBS"; then
3068 AC_MSG_RESULT(no terminal library found)
3069 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003070fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003071
3072if test "x$olibs" = "x$LIBS"; then
3073 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003074 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003075 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3076 AC_MSG_RESULT(yes),
3077 AC_MSG_ERROR([NOT FOUND!
3078 You need to install a terminal library; for example ncurses.
3079 Or specify the name of the library with --with-tlib.]))
3080fi
3081
Bram Moolenaar446cb832008-06-24 21:56:24 +00003082AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3083 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003084 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003085#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003086#ifdef HAVE_TERMCAP_H
3087# include <termcap.h>
3088#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003089#ifdef HAVE_STRING_H
3090# include <string.h>
3091#endif
3092#if STDC_HEADERS
3093# include <stdlib.h>
3094# include <stddef.h>
3095#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003096main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003097{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003098 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003099 vim_cv_terminfo=no
3100 ],[
3101 vim_cv_terminfo=yes
3102 ],[
3103 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3104 ])
3105 ])
3106
3107if test "x$vim_cv_terminfo" = "xyes" ; then
3108 AC_DEFINE(TERMINFO)
3109fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003110
3111if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003112 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3113 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003114 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003115#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003116#ifdef HAVE_TERMCAP_H
3117# include <termcap.h>
3118#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003119#if STDC_HEADERS
3120# include <stdlib.h>
3121# include <stddef.h>
3122#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003123main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003124{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003125 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003126 vim_cv_tgent=zero
3127 ],[
3128 vim_cv_tgent=non-zero
3129 ],[
3130 AC_MSG_ERROR(failed to compile test program.)
3131 ])
3132 ])
3133
3134 if test "x$vim_cv_tgent" = "xzero" ; then
3135 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3136 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003137fi
3138
3139AC_MSG_CHECKING(whether termcap.h contains ospeed)
3140AC_TRY_LINK([
3141#ifdef HAVE_TERMCAP_H
3142# include <termcap.h>
3143#endif
3144 ], [ospeed = 20000],
3145 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3146 [AC_MSG_RESULT(no)
3147 AC_MSG_CHECKING(whether ospeed can be extern)
3148 AC_TRY_LINK([
3149#ifdef HAVE_TERMCAP_H
3150# include <termcap.h>
3151#endif
3152extern short ospeed;
3153 ], [ospeed = 20000],
3154 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3155 AC_MSG_RESULT(no))]
3156 )
3157
3158AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3159AC_TRY_LINK([
3160#ifdef HAVE_TERMCAP_H
3161# include <termcap.h>
3162#endif
3163 ], [if (UP == 0 && BC == 0) PC = 1],
3164 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3165 [AC_MSG_RESULT(no)
3166 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3167 AC_TRY_LINK([
3168#ifdef HAVE_TERMCAP_H
3169# include <termcap.h>
3170#endif
3171extern char *UP, *BC, PC;
3172 ], [if (UP == 0 && BC == 0) PC = 1],
3173 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3174 AC_MSG_RESULT(no))]
3175 )
3176
3177AC_MSG_CHECKING(whether tputs() uses outfuntype)
3178AC_TRY_COMPILE([
3179#ifdef HAVE_TERMCAP_H
3180# include <termcap.h>
3181#endif
3182 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3183 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3184 AC_MSG_RESULT(no))
3185
3186dnl On some SCO machines sys/select redefines struct timeval
3187AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3188AC_TRY_COMPILE([
3189#include <sys/types.h>
3190#include <sys/time.h>
3191#include <sys/select.h>], ,
3192 AC_MSG_RESULT(yes)
3193 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3194 AC_MSG_RESULT(no))
3195
3196dnl AC_DECL_SYS_SIGLIST
3197
3198dnl Checks for pty.c (copied from screen) ==========================
3199AC_MSG_CHECKING(for /dev/ptc)
3200if test -r /dev/ptc; then
3201 AC_DEFINE(HAVE_DEV_PTC)
3202 AC_MSG_RESULT(yes)
3203else
3204 AC_MSG_RESULT(no)
3205fi
3206
3207AC_MSG_CHECKING(for SVR4 ptys)
3208if test -c /dev/ptmx ; then
3209 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3210 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3211 AC_MSG_RESULT(no))
3212else
3213 AC_MSG_RESULT(no)
3214fi
3215
3216AC_MSG_CHECKING(for ptyranges)
3217if test -d /dev/ptym ; then
3218 pdir='/dev/ptym'
3219else
3220 pdir='/dev'
3221fi
3222dnl SCO uses ptyp%d
3223AC_EGREP_CPP(yes,
3224[#ifdef M_UNIX
3225 yes;
3226#endif
3227 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3228dnl if test -c /dev/ptyp19; then
3229dnl ptys=`echo /dev/ptyp??`
3230dnl else
3231dnl ptys=`echo $pdir/pty??`
3232dnl fi
3233if test "$ptys" != "$pdir/pty??" ; then
3234 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3235 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3236 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3237 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3238 AC_MSG_RESULT([$p0 / $p1])
3239else
3240 AC_MSG_RESULT([don't know])
3241fi
3242
3243dnl **** pty mode/group handling ****
3244dnl
3245dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003247AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3248 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003249 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003250#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003251#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003252#if STDC_HEADERS
3253# include <stdlib.h>
3254# include <stddef.h>
3255#endif
3256#ifdef HAVE_UNISTD_H
3257#include <unistd.h>
3258#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003259#include <sys/stat.h>
3260#include <stdio.h>
3261main()
3262{
3263 struct stat sb;
3264 char *x,*ttyname();
3265 int om, m;
3266 FILE *fp;
3267
3268 if (!(x = ttyname(0))) exit(1);
3269 if (stat(x, &sb)) exit(1);
3270 om = sb.st_mode;
3271 if (om & 002) exit(0);
3272 m = system("mesg y");
3273 if (m == -1 || m == 127) exit(1);
3274 if (stat(x, &sb)) exit(1);
3275 m = sb.st_mode;
3276 if (chmod(x, om)) exit(1);
3277 if (m & 002) exit(0);
3278 if (sb.st_gid == getgid()) exit(1);
3279 if (!(fp=fopen("conftest_grp", "w")))
3280 exit(1);
3281 fprintf(fp, "%d\n", sb.st_gid);
3282 fclose(fp);
3283 exit(0);
3284}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003285 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003286 if test -f conftest_grp; then
3287 vim_cv_tty_group=`cat conftest_grp`
3288 if test "x$vim_cv_tty_mode" = "x" ; then
3289 vim_cv_tty_mode=0620
3290 fi
3291 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3292 else
3293 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003294 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003295 fi
3296 ],[
3297 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003298 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003299 ],[
3300 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3301 ])
3302 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003303rm -f conftest_grp
3304
Bram Moolenaar446cb832008-06-24 21:56:24 +00003305if test "x$vim_cv_tty_group" != "xworld" ; then
3306 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3307 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003308 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 +00003309 else
3310 AC_DEFINE(PTYMODE, 0620)
3311 fi
3312fi
3313
Bram Moolenaar071d4272004-06-13 20:20:40 +00003314dnl Checks for library functions. ===================================
3315
3316AC_TYPE_SIGNAL
3317
3318dnl find out what to use at the end of a signal function
3319if test $ac_cv_type_signal = void; then
3320 AC_DEFINE(SIGRETURN, [return])
3321else
3322 AC_DEFINE(SIGRETURN, [return 0])
3323fi
3324
3325dnl check if struct sigcontext is defined (used for SGI only)
3326AC_MSG_CHECKING(for struct sigcontext)
3327AC_TRY_COMPILE([
3328#include <signal.h>
3329test_sig()
3330{
3331 struct sigcontext *scont;
3332 scont = (struct sigcontext *)0;
3333 return 1;
3334} ], ,
3335 AC_MSG_RESULT(yes)
3336 AC_DEFINE(HAVE_SIGCONTEXT),
3337 AC_MSG_RESULT(no))
3338
3339dnl tricky stuff: try to find out if getcwd() is implemented with
3340dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003341AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3342 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003343 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003344#include "confdefs.h"
3345#ifdef HAVE_UNISTD_H
3346#include <unistd.h>
3347#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003348char *dagger[] = { "IFS=pwd", 0 };
3349main()
3350{
3351 char buffer[500];
3352 extern char **environ;
3353 environ = dagger;
3354 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003355}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003356 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003357 vim_cv_getcwd_broken=no
3358 ],[
3359 vim_cv_getcwd_broken=yes
3360 ],[
3361 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3362 ])
3363 ])
3364
3365if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3366 AC_DEFINE(BAD_GETCWD)
3367fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003368
Bram Moolenaar25153e12010-02-24 14:47:08 +01003369dnl Check for functions in one big call, to reduce the size of configure.
3370dnl Can only be used for functions that do not require any include.
3371AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003372 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003373 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003374 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003375 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003376 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3377 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003378AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003379
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003380dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3381dnl appropriate, so that off_t is 64 bits when needed.
3382AC_SYS_LARGEFILE
3383
Bram Moolenaar071d4272004-06-13 20:20:40 +00003384dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3385AC_MSG_CHECKING(for st_blksize)
3386AC_TRY_COMPILE(
3387[#include <sys/types.h>
3388#include <sys/stat.h>],
3389[ struct stat st;
3390 int n;
3391
3392 stat("/", &st);
3393 n = (int)st.st_blksize;],
3394 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3395 AC_MSG_RESULT(no))
3396
Bram Moolenaar446cb832008-06-24 21:56:24 +00003397AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3398 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003399 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003400#include "confdefs.h"
3401#if STDC_HEADERS
3402# include <stdlib.h>
3403# include <stddef.h>
3404#endif
3405#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003406#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003407main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003408 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003409 vim_cv_stat_ignores_slash=yes
3410 ],[
3411 vim_cv_stat_ignores_slash=no
3412 ],[
3413 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3414 ])
3415 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003416
Bram Moolenaar446cb832008-06-24 21:56:24 +00003417if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3418 AC_DEFINE(STAT_IGNORES_SLASH)
3419fi
3420
Bram Moolenaar071d4272004-06-13 20:20:40 +00003421dnl Link with iconv for charset translation, if not found without library.
3422dnl check for iconv() requires including iconv.h
3423dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3424dnl has been installed.
3425AC_MSG_CHECKING(for iconv_open())
3426save_LIBS="$LIBS"
3427LIBS="$LIBS -liconv"
3428AC_TRY_LINK([
3429#ifdef HAVE_ICONV_H
3430# include <iconv.h>
3431#endif
3432 ], [iconv_open("fr", "to");],
3433 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3434 LIBS="$save_LIBS"
3435 AC_TRY_LINK([
3436#ifdef HAVE_ICONV_H
3437# include <iconv.h>
3438#endif
3439 ], [iconv_open("fr", "to");],
3440 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3441 AC_MSG_RESULT(no)))
3442
3443
3444AC_MSG_CHECKING(for nl_langinfo(CODESET))
3445AC_TRY_LINK([
3446#ifdef HAVE_LANGINFO_H
3447# include <langinfo.h>
3448#endif
3449], [char *cs = nl_langinfo(CODESET);],
3450 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3451 AC_MSG_RESULT(no))
3452
Bram Moolenaar446cb832008-06-24 21:56:24 +00003453dnl Need various functions for floating point support. Only enable
3454dnl floating point when they are all present.
3455AC_CHECK_LIB(m, strtod)
3456AC_MSG_CHECKING([for strtod() and other floating point functions])
3457AC_TRY_LINK([
3458#ifdef HAVE_MATH_H
3459# include <math.h>
3460#endif
3461#if STDC_HEADERS
3462# include <stdlib.h>
3463# include <stddef.h>
3464#endif
3465], [char *s; double d;
3466 d = strtod("1.1", &s);
3467 d = fabs(1.11);
3468 d = ceil(1.11);
3469 d = floor(1.11);
3470 d = log10(1.11);
3471 d = pow(1.11, 2.22);
3472 d = sqrt(1.11);
3473 d = sin(1.11);
3474 d = cos(1.11);
3475 d = atan(1.11);
3476 ],
3477 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3478 AC_MSG_RESULT(no))
3479
Bram Moolenaar071d4272004-06-13 20:20:40 +00003480dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3481dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003482dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003483AC_MSG_CHECKING(--disable-acl argument)
3484AC_ARG_ENABLE(acl,
3485 [ --disable-acl Don't check for ACL support.],
3486 , [enable_acl="yes"])
3487if test "$enable_acl" = "yes"; then
3488AC_MSG_RESULT(no)
3489AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3490 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3491 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3492
3493AC_MSG_CHECKING(for POSIX ACL support)
3494AC_TRY_LINK([
3495#include <sys/types.h>
3496#ifdef HAVE_SYS_ACL_H
3497# include <sys/acl.h>
3498#endif
3499acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3500 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3501 acl_free(acl);],
3502 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3503 AC_MSG_RESULT(no))
3504
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003505AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003506AC_MSG_CHECKING(for Solaris ACL support)
3507AC_TRY_LINK([
3508#ifdef HAVE_SYS_ACL_H
3509# include <sys/acl.h>
3510#endif], [acl("foo", GETACLCNT, 0, NULL);
3511 ],
3512 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003513 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003514
3515AC_MSG_CHECKING(for AIX ACL support)
3516AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003517#if STDC_HEADERS
3518# include <stdlib.h>
3519# include <stddef.h>
3520#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003521#ifdef HAVE_SYS_ACL_H
3522# include <sys/acl.h>
3523#endif
3524#ifdef HAVE_SYS_ACCESS_H
3525# include <sys/access.h>
3526#endif
3527#define _ALL_SOURCE
3528
3529#include <sys/stat.h>
3530
3531int aclsize;
3532struct acl *aclent;], [aclsize = sizeof(struct acl);
3533 aclent = (void *)malloc(aclsize);
3534 statacl("foo", STX_NORMAL, aclent, aclsize);
3535 ],
3536 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3537 AC_MSG_RESULT(no))
3538else
3539 AC_MSG_RESULT(yes)
3540fi
3541
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003542if test "x$GTK_CFLAGS" != "x"; then
3543 dnl pango_shape_full() is new, fall back to pango_shape().
3544 AC_MSG_CHECKING(for pango_shape_full)
3545 ac_save_CFLAGS="$CFLAGS"
3546 ac_save_LIBS="$LIBS"
3547 CFLAGS="$CFLAGS $GTK_CFLAGS"
3548 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003549 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003550 [#include <gtk/gtk.h>],
3551 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3552 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3553 AC_MSG_RESULT(no))
3554 CFLAGS="$ac_save_CFLAGS"
3555 LIBS="$ac_save_LIBS"
3556fi
3557
Bram Moolenaar071d4272004-06-13 20:20:40 +00003558AC_MSG_CHECKING(--disable-gpm argument)
3559AC_ARG_ENABLE(gpm,
3560 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3561 [enable_gpm="yes"])
3562
3563if test "$enable_gpm" = "yes"; then
3564 AC_MSG_RESULT(no)
3565 dnl Checking if gpm support can be compiled
3566 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3567 [olibs="$LIBS" ; LIBS="-lgpm"]
3568 AC_TRY_LINK(
3569 [#include <gpm.h>
3570 #include <linux/keyboard.h>],
3571 [Gpm_GetLibVersion(NULL);],
3572 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3573 dnl FEAT_MOUSE_GPM if mouse support is included
3574 [vi_cv_have_gpm=yes],
3575 [vi_cv_have_gpm=no])
3576 [LIBS="$olibs"]
3577 )
3578 if test $vi_cv_have_gpm = yes; then
3579 LIBS="$LIBS -lgpm"
3580 AC_DEFINE(HAVE_GPM)
3581 fi
3582else
3583 AC_MSG_RESULT(yes)
3584fi
3585
Bram Moolenaar446cb832008-06-24 21:56:24 +00003586AC_MSG_CHECKING(--disable-sysmouse argument)
3587AC_ARG_ENABLE(sysmouse,
3588 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3589 [enable_sysmouse="yes"])
3590
3591if test "$enable_sysmouse" = "yes"; then
3592 AC_MSG_RESULT(no)
3593 dnl Checking if sysmouse support can be compiled
3594 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3595 dnl defines FEAT_SYSMOUSE if mouse support is included
3596 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3597 AC_TRY_LINK(
3598 [#include <sys/consio.h>
3599 #include <signal.h>
3600 #include <sys/fbio.h>],
3601 [struct mouse_info mouse;
3602 mouse.operation = MOUSE_MODE;
3603 mouse.operation = MOUSE_SHOW;
3604 mouse.u.mode.mode = 0;
3605 mouse.u.mode.signal = SIGUSR2;],
3606 [vi_cv_have_sysmouse=yes],
3607 [vi_cv_have_sysmouse=no])
3608 )
3609 if test $vi_cv_have_sysmouse = yes; then
3610 AC_DEFINE(HAVE_SYSMOUSE)
3611 fi
3612else
3613 AC_MSG_RESULT(yes)
3614fi
3615
Bram Moolenaarf05da212009-11-17 16:13:15 +00003616dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3617AC_MSG_CHECKING(for FD_CLOEXEC)
3618AC_TRY_COMPILE(
3619[#if HAVE_FCNTL_H
3620# include <fcntl.h>
3621#endif],
3622[ int flag = FD_CLOEXEC;],
3623 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3624 AC_MSG_RESULT(not usable))
3625
Bram Moolenaar071d4272004-06-13 20:20:40 +00003626dnl rename needs to be checked separately to work on Nextstep with cc
3627AC_MSG_CHECKING(for rename)
3628AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3629 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3630 AC_MSG_RESULT(no))
3631
3632dnl sysctl() may exist but not the arguments we use
3633AC_MSG_CHECKING(for sysctl)
3634AC_TRY_COMPILE(
3635[#include <sys/types.h>
3636#include <sys/sysctl.h>],
3637[ int mib[2], r;
3638 size_t len;
3639
3640 mib[0] = CTL_HW;
3641 mib[1] = HW_USERMEM;
3642 len = sizeof(r);
3643 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3644 ],
3645 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3646 AC_MSG_RESULT(not usable))
3647
3648dnl sysinfo() may exist but not be Linux compatible
3649AC_MSG_CHECKING(for sysinfo)
3650AC_TRY_COMPILE(
3651[#include <sys/types.h>
3652#include <sys/sysinfo.h>],
3653[ struct sysinfo sinfo;
3654 int t;
3655
3656 (void)sysinfo(&sinfo);
3657 t = sinfo.totalram;
3658 ],
3659 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3660 AC_MSG_RESULT(not usable))
3661
Bram Moolenaar914572a2007-05-01 11:37:47 +00003662dnl struct sysinfo may have the mem_unit field or not
3663AC_MSG_CHECKING(for sysinfo.mem_unit)
3664AC_TRY_COMPILE(
3665[#include <sys/types.h>
3666#include <sys/sysinfo.h>],
3667[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003668 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003669 ],
3670 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3671 AC_MSG_RESULT(no))
3672
Bram Moolenaar071d4272004-06-13 20:20:40 +00003673dnl sysconf() may exist but not support what we want to use
3674AC_MSG_CHECKING(for sysconf)
3675AC_TRY_COMPILE(
3676[#include <unistd.h>],
3677[ (void)sysconf(_SC_PAGESIZE);
3678 (void)sysconf(_SC_PHYS_PAGES);
3679 ],
3680 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3681 AC_MSG_RESULT(not usable))
3682
Bram Moolenaar914703b2010-05-31 21:59:46 +02003683AC_CHECK_SIZEOF([int])
3684AC_CHECK_SIZEOF([long])
3685AC_CHECK_SIZEOF([time_t])
3686AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003687
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003688dnl Use different names to avoid clashing with other header files.
3689AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3690AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3691
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003692dnl Make sure that uint32_t is really 32 bits unsigned.
3693AC_MSG_CHECKING([uint32_t is 32 bits])
3694AC_TRY_RUN([
3695#ifdef HAVE_STDINT_H
3696# include <stdint.h>
3697#endif
3698#ifdef HAVE_INTTYPES_H
3699# include <inttypes.h>
3700#endif
3701main() {
3702 uint32_t nr1 = (uint32_t)-1;
3703 uint32_t nr2 = (uint32_t)0xffffffffUL;
3704 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3705 exit(0);
3706}],
3707AC_MSG_RESULT(ok),
3708AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003709AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003710
Bram Moolenaar446cb832008-06-24 21:56:24 +00003711dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3712dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3713
Bram Moolenaar071d4272004-06-13 20:20:40 +00003714[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003715#include "confdefs.h"
3716#ifdef HAVE_STRING_H
3717# include <string.h>
3718#endif
3719#if STDC_HEADERS
3720# include <stdlib.h>
3721# include <stddef.h>
3722#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003723main() {
3724 char buf[10];
3725 strcpy(buf, "abcdefghi");
3726 mch_memmove(buf, buf + 2, 3);
3727 if (strncmp(buf, "ababcf", 6))
3728 exit(1);
3729 strcpy(buf, "abcdefghi");
3730 mch_memmove(buf + 2, buf, 3);
3731 if (strncmp(buf, "cdedef", 6))
3732 exit(1);
3733 exit(0); /* libc version works properly. */
3734}']
3735
Bram Moolenaar446cb832008-06-24 21:56:24 +00003736AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3737 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003738 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 +00003739 [
3740 vim_cv_memmove_handles_overlap=yes
3741 ],[
3742 vim_cv_memmove_handles_overlap=no
3743 ],[
3744 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3745 ])
3746 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003747
Bram Moolenaar446cb832008-06-24 21:56:24 +00003748if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3749 AC_DEFINE(USEMEMMOVE)
3750else
3751 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3752 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003753 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 +00003754 [
3755 vim_cv_bcopy_handles_overlap=yes
3756 ],[
3757 vim_cv_bcopy_handles_overlap=no
3758 ],[
3759 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3760 ])
3761 ])
3762
3763 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3764 AC_DEFINE(USEBCOPY)
3765 else
3766 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3767 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003768 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 +00003769 [
3770 vim_cv_memcpy_handles_overlap=yes
3771 ],[
3772 vim_cv_memcpy_handles_overlap=no
3773 ],[
3774 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3775 ])
3776 ])
3777
3778 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3779 AC_DEFINE(USEMEMCPY)
3780 fi
3781 fi
3782fi
3783
Bram Moolenaar071d4272004-06-13 20:20:40 +00003784
3785dnl Check for multibyte locale functions
3786dnl Find out if _Xsetlocale() is supported by libX11.
3787dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003788if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003789 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003790 libs_save=$LIBS
3791 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
3792 CFLAGS="$CFLAGS $X_CFLAGS"
3793
3794 AC_MSG_CHECKING(whether X_LOCALE needed)
3795 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3796 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3797 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3798 AC_MSG_RESULT(no))
3799
3800 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
3801 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
3802 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
3803
Bram Moolenaar071d4272004-06-13 20:20:40 +00003804 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003805 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00003806fi
3807
3808dnl Link with xpg4, it is said to make Korean locale working
3809AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3810
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003811dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003812dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003813dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003814dnl -t for typedefs (many ctags have this)
3815dnl -s for static functions (Elvis ctags only?)
3816dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3817dnl -i+m to test for older Exuberant ctags
3818AC_MSG_CHECKING(how to create tags)
3819test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003820if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003821 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003822elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3823 TAGPRG="exctags -I INIT+ --fields=+S"
3824elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3825 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003826else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003827 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003828 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3829 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3830 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3831 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3832 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3833 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3834 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3835fi
3836test -f tags.save && mv tags.save tags
3837AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3838
3839dnl Check how we can run man with a section number
3840AC_MSG_CHECKING(how to run man with a section nr)
3841MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003842(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 +00003843AC_MSG_RESULT($MANDEF)
3844if test "$MANDEF" = "man -s"; then
3845 AC_DEFINE(USEMAN_S)
3846fi
3847
3848dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003849dnl We take care to base this on an empty LIBS: on some systems libelf would be
3850dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3851dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003852AC_MSG_CHECKING(--disable-nls argument)
3853AC_ARG_ENABLE(nls,
3854 [ --disable-nls Don't support NLS (gettext()).], ,
3855 [enable_nls="yes"])
3856
3857if test "$enable_nls" = "yes"; then
3858 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003859
3860 INSTALL_LANGS=install-languages
3861 AC_SUBST(INSTALL_LANGS)
3862 INSTALL_TOOL_LANGS=install-tool-languages
3863 AC_SUBST(INSTALL_TOOL_LANGS)
3864
Bram Moolenaar071d4272004-06-13 20:20:40 +00003865 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3866 AC_MSG_CHECKING([for NLS])
3867 if test -f po/Makefile; then
3868 have_gettext="no"
3869 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003870 olibs=$LIBS
3871 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003872 AC_TRY_LINK(
3873 [#include <libintl.h>],
3874 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003875 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3876 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003877 AC_TRY_LINK(
3878 [#include <libintl.h>],
3879 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003880 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3881 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003882 AC_MSG_RESULT([gettext() doesn't work]);
3883 LIBS=$olibs))
3884 else
3885 AC_MSG_RESULT([msgfmt not found - disabled]);
3886 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02003887 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003888 AC_DEFINE(HAVE_GETTEXT)
3889 MAKEMO=yes
3890 AC_SUBST(MAKEMO)
3891 dnl this was added in GNU gettext 0.10.36
3892 AC_CHECK_FUNCS(bind_textdomain_codeset)
3893 dnl _nl_msg_cat_cntr is required for GNU gettext
3894 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3895 AC_TRY_LINK(
3896 [#include <libintl.h>
3897 extern int _nl_msg_cat_cntr;],
3898 [++_nl_msg_cat_cntr;],
3899 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3900 AC_MSG_RESULT([no]))
3901 fi
3902 else
3903 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3904 fi
3905else
3906 AC_MSG_RESULT(yes)
3907fi
3908
3909dnl Check for dynamic linking loader
3910AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3911if test x${DLL} = xdlfcn.h; then
3912 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3913 AC_MSG_CHECKING([for dlopen()])
3914 AC_TRY_LINK(,[
3915 extern void* dlopen();
3916 dlopen();
3917 ],
3918 AC_MSG_RESULT(yes);
3919 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3920 AC_MSG_RESULT(no);
3921 AC_MSG_CHECKING([for dlopen() in -ldl])
3922 olibs=$LIBS
3923 LIBS="$LIBS -ldl"
3924 AC_TRY_LINK(,[
3925 extern void* dlopen();
3926 dlopen();
3927 ],
3928 AC_MSG_RESULT(yes);
3929 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3930 AC_MSG_RESULT(no);
3931 LIBS=$olibs))
3932 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3933 dnl ick :-)
3934 AC_MSG_CHECKING([for dlsym()])
3935 AC_TRY_LINK(,[
3936 extern void* dlsym();
3937 dlsym();
3938 ],
3939 AC_MSG_RESULT(yes);
3940 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3941 AC_MSG_RESULT(no);
3942 AC_MSG_CHECKING([for dlsym() in -ldl])
3943 olibs=$LIBS
3944 LIBS="$LIBS -ldl"
3945 AC_TRY_LINK(,[
3946 extern void* dlsym();
3947 dlsym();
3948 ],
3949 AC_MSG_RESULT(yes);
3950 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3951 AC_MSG_RESULT(no);
3952 LIBS=$olibs))
3953elif test x${DLL} = xdl.h; then
3954 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3955 AC_MSG_CHECKING([for shl_load()])
3956 AC_TRY_LINK(,[
3957 extern void* shl_load();
3958 shl_load();
3959 ],
3960 AC_MSG_RESULT(yes);
3961 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3962 AC_MSG_RESULT(no);
3963 AC_MSG_CHECKING([for shl_load() in -ldld])
3964 olibs=$LIBS
3965 LIBS="$LIBS -ldld"
3966 AC_TRY_LINK(,[
3967 extern void* shl_load();
3968 shl_load();
3969 ],
3970 AC_MSG_RESULT(yes);
3971 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3972 AC_MSG_RESULT(no);
3973 LIBS=$olibs))
3974fi
3975AC_CHECK_HEADERS(setjmp.h)
3976
3977if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3978 dnl -ldl must come after DynaLoader.a
3979 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3980 LIBS=`echo $LIBS | sed s/-ldl//`
3981 PERL_LIBS="$PERL_LIBS -ldl"
3982 fi
3983fi
3984
Bram Moolenaar164fca32010-07-14 13:58:07 +02003985if test "x$MACOSX" = "xyes"; then
3986 AC_MSG_CHECKING(whether we need -framework Cocoa)
3987 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3988 dnl disabled during tiny build)
3989 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3990 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003991 AC_MSG_RESULT(yes)
3992 else
3993 AC_MSG_RESULT(no)
3994 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003995 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3996 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3997 dnl missing Objective-C symbols.
3998 if test "x$features" = "xtiny"; then
3999 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4000 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4001 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004002fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004003if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004004 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004005fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004006
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004007dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4008dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4009dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004010dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4011dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004012DEPEND_CFLAGS_FILTER=
4013if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004014 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004015 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004016 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004017 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004018 AC_MSG_RESULT(yes)
4019 else
4020 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004021 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004022 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4023 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004024 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004025 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004026 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4027 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004028 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 +00004029 AC_MSG_RESULT(yes)
4030 else
4031 AC_MSG_RESULT(no)
4032 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004033fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004034AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004035
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004036dnl link.sh tries to avoid overlinking in a hackish way.
4037dnl At least GNU ld supports --as-needed which provides the same functionality
4038dnl at linker level. Let's use it.
4039AC_MSG_CHECKING(linker --as-needed support)
4040LINK_AS_NEEDED=
4041# Check if linker supports --as-needed and --no-as-needed options
4042if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004043 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004044 LINK_AS_NEEDED=yes
4045fi
4046if test "$LINK_AS_NEEDED" = yes; then
4047 AC_MSG_RESULT(yes)
4048else
4049 AC_MSG_RESULT(no)
4050fi
4051AC_SUBST(LINK_AS_NEEDED)
4052
Bram Moolenaar77c19352012-06-13 19:19:41 +02004053# IBM z/OS reset CFLAGS for config.mk
4054if test "$zOSUnix" = "yes"; then
4055 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4056fi
4057
Bram Moolenaar071d4272004-06-13 20:20:40 +00004058dnl write output files
4059AC_OUTPUT(auto/config.mk:config.mk.in)
4060
4061dnl vim: set sw=2 tw=78 fo+=l: