blob: fc6d405fe762671498c08d17e64249c31685a6f5 [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)
936 dnl Remove "-fno-something", it breaks using cproto.
937 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
938 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
939 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
940 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
941 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
942 -e 's/-bE:perl.exp//' -e 's/-lc //'`
943 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
944 dnl a test in configure may fail because of that.
945 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
946 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
947
948 dnl check that compiling a simple program still works with the flags
949 dnl added for Perl.
950 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
951 cflags_save=$CFLAGS
952 libs_save=$LIBS
953 ldflags_save=$LDFLAGS
954 CFLAGS="$CFLAGS $perlcppflags"
955 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200956 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000957 LDFLAGS="$perlldflags $LDFLAGS"
958 AC_TRY_LINK(,[ ],
959 AC_MSG_RESULT(yes); perl_ok=yes,
960 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
961 CFLAGS=$cflags_save
962 LIBS=$libs_save
963 LDFLAGS=$ldflags_save
964 if test $perl_ok = yes; then
965 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000966 dnl remove -pipe and -Wxxx, it confuses cproto
967 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000968 fi
969 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +0100970 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200971 LDFLAGS="$perlldflags $LDFLAGS"
972 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000973 fi
974 PERL_LIBS=$perllibs
975 PERL_SRC="auto/if_perl.c if_perlsfio.c"
976 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
977 PERL_PRO="if_perl.pro if_perlsfio.pro"
978 AC_DEFINE(FEAT_PERL)
979 fi
980 fi
981 else
982 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
983 fi
984 fi
985
986 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000987 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000988 dir=/System/Library/Perl
989 darwindir=$dir/darwin
990 if test -d $darwindir; then
991 PERL=/usr/bin/perl
992 else
993 dnl Mac OS X 10.3
994 dir=/System/Library/Perl/5.8.1
995 darwindir=$dir/darwin-thread-multi-2level
996 if test -d $darwindir; then
997 PERL=/usr/bin/perl
998 fi
999 fi
1000 if test -n "$PERL"; then
1001 PERL_DIR="$dir"
1002 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1003 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1004 PERL_LIBS="-L$darwindir/CORE -lperl"
1005 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001006 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1007 dnl be included if requested by passing --with-mac-arch to
1008 dnl configure, so strip these flags first (if present)
1009 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1010 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001011 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001012 if test "$enable_perlinterp" = "dynamic"; then
1013 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1014 AC_DEFINE(DYNAMIC_PERL)
1015 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1016 fi
1017 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001018
1019 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1020 AC_MSG_ERROR([could not configure perl])
1021 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001022fi
1023AC_SUBST(shrpenv)
1024AC_SUBST(PERL_SRC)
1025AC_SUBST(PERL_OBJ)
1026AC_SUBST(PERL_PRO)
1027AC_SUBST(PERL_CFLAGS)
1028AC_SUBST(PERL_LIBS)
1029
1030AC_MSG_CHECKING(--enable-pythoninterp argument)
1031AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001032 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001033 [enable_pythoninterp="no"])
1034AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001035if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001036 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001037 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001038 if test "X$vi_cv_path_python" != "X"; then
1039
1040 dnl -- get its version number
1041 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1042 [[vi_cv_var_python_version=`
1043 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1044 ]])
1045
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001046 dnl -- it must be at least version 2.3
1047 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001048 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001049 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001050 then
1051 AC_MSG_RESULT(yep)
1052
1053 dnl -- find where python thinks it was installed
1054 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1055 [ vi_cv_path_python_pfx=`
1056 ${vi_cv_path_python} -c \
1057 "import sys; print sys.prefix"` ])
1058
1059 dnl -- and where it thinks it runs
1060 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1061 [ vi_cv_path_python_epfx=`
1062 ${vi_cv_path_python} -c \
1063 "import sys; print sys.exec_prefix"` ])
1064
1065 dnl -- python's internal library path
1066
1067 AC_CACHE_VAL(vi_cv_path_pythonpath,
1068 [ vi_cv_path_pythonpath=`
1069 unset PYTHONPATH;
1070 ${vi_cv_path_python} -c \
1071 "import sys, string; print string.join(sys.path,':')"` ])
1072
1073 dnl -- where the Python implementation library archives are
1074
1075 AC_ARG_WITH(python-config-dir,
1076 [ --with-python-config-dir=PATH Python's config directory],
1077 [ vi_cv_path_python_conf="${withval}" ] )
1078
1079 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1080 [
1081 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001082 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1083 if test -d "$d" && test -f "$d/config.c"; then
1084 vi_cv_path_python_conf="$d"
1085 else
1086 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1087 for subdir in lib64 lib share; do
1088 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1089 if test -d "$d" && test -f "$d/config.c"; then
1090 vi_cv_path_python_conf="$d"
1091 fi
1092 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001093 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001094 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001095 ])
1096
1097 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1098
1099 if test "X$PYTHON_CONFDIR" = "X"; then
1100 AC_MSG_RESULT([can't find it!])
1101 else
1102
1103 dnl -- we need to examine Python's config/Makefile too
1104 dnl see what the interpreter is built from
1105 AC_CACHE_VAL(vi_cv_path_python_plibs,
1106 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001107 pwd=`pwd`
1108 tmp_mkf="$pwd/config-PyMake$$"
1109 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001110__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001111 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001112 @echo "python_LIBS='$(LIBS)'"
1113 @echo "python_SYSLIBS='$(SYSLIBS)'"
1114 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001115 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001116 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001117eof
1118 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001119 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1120 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001121 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1122 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1123 vi_cv_path_python_plibs="-framework Python"
1124 else
1125 if test "${vi_cv_var_python_version}" = "1.4"; then
1126 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1127 else
1128 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1129 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001130 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001131 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1132 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1133 fi
1134 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001135 AC_CACHE_VAL(vi_cv_dll_name_python,
1136 [
1137 if test "X$python_DLLLIBRARY" != "X"; then
1138 vi_cv_dll_name_python="$python_DLLLIBRARY"
1139 else
1140 vi_cv_dll_name_python="$python_INSTSONAME"
1141 fi
1142 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001143
1144 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1145 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001146 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 +00001147 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001148 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 +00001149 fi
1150 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001151 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001152 if test "${vi_cv_var_python_version}" = "1.4"; then
1153 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1154 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001155 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 +00001156
1157 dnl On FreeBSD linking with "-pthread" is required to use threads.
1158 dnl _THREAD_SAFE must be used for compiling then.
1159 dnl The "-pthread" is added to $LIBS, so that the following check for
1160 dnl sigaltstack() will look in libc_r (it's there in libc!).
1161 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1162 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1163 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1164 AC_MSG_CHECKING([if -pthread should be used])
1165 threadsafe_flag=
1166 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001167 dnl if test "x$MACOSX" != "xyes"; then
1168 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001169 test "$GCC" = yes && threadsafe_flag="-pthread"
1170 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1171 threadsafe_flag="-D_THREAD_SAFE"
1172 thread_lib="-pthread"
1173 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001174 if test "`(uname) 2>/dev/null`" = SunOS; then
1175 threadsafe_flag="-pthreads"
1176 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001177 fi
1178 libs_save_old=$LIBS
1179 if test -n "$threadsafe_flag"; then
1180 cflags_save=$CFLAGS
1181 CFLAGS="$CFLAGS $threadsafe_flag"
1182 LIBS="$LIBS $thread_lib"
1183 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001184 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001185 AC_MSG_RESULT(no); LIBS=$libs_save_old
1186 )
1187 CFLAGS=$cflags_save
1188 else
1189 AC_MSG_RESULT(no)
1190 fi
1191
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001192 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001193 dnl added for Python.
1194 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1195 cflags_save=$CFLAGS
1196 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001197 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001198 LIBS="$LIBS $PYTHON_LIBS"
1199 AC_TRY_LINK(,[ ],
1200 AC_MSG_RESULT(yes); python_ok=yes,
1201 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1202 CFLAGS=$cflags_save
1203 LIBS=$libs_save
1204 if test $python_ok = yes; then
1205 AC_DEFINE(FEAT_PYTHON)
1206 else
1207 LIBS=$libs_save_old
1208 PYTHON_SRC=
1209 PYTHON_OBJ=
1210 PYTHON_LIBS=
1211 PYTHON_CFLAGS=
1212 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001213 fi
1214 else
1215 AC_MSG_RESULT(too old)
1216 fi
1217 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001218
1219 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1220 AC_MSG_ERROR([could not configure python])
1221 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001222fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001223
Bram Moolenaar071d4272004-06-13 20:20:40 +00001224AC_SUBST(PYTHON_CONFDIR)
1225AC_SUBST(PYTHON_LIBS)
1226AC_SUBST(PYTHON_GETPATH_CFLAGS)
1227AC_SUBST(PYTHON_CFLAGS)
1228AC_SUBST(PYTHON_SRC)
1229AC_SUBST(PYTHON_OBJ)
1230
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001231
1232AC_MSG_CHECKING(--enable-python3interp argument)
1233AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001234 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235 [enable_python3interp="no"])
1236AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001237if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001238 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001239 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001240 if test "X$vi_cv_path_python3" != "X"; then
1241
1242 dnl -- get its version number
1243 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1244 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001245 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001246 ]])
1247
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001248 dnl -- it must be at least version 3
1249 AC_MSG_CHECKING(Python is 3.0 or better)
1250 if ${vi_cv_path_python3} -c \
1251 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1252 then
1253 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001254
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001255 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1256 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001257 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001258 vi_cv_var_python3_abiflags=
1259 if ${vi_cv_path_python3} -c \
1260 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1261 then
1262 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1263 "import sys; print(sys.abiflags)"`
1264 fi ])
1265
1266 dnl -- find where python3 thinks it was installed
1267 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1268 [ vi_cv_path_python3_pfx=`
1269 ${vi_cv_path_python3} -c \
1270 "import sys; print(sys.prefix)"` ])
1271
1272 dnl -- and where it thinks it runs
1273 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1274 [ vi_cv_path_python3_epfx=`
1275 ${vi_cv_path_python3} -c \
1276 "import sys; print(sys.exec_prefix)"` ])
1277
1278 dnl -- python3's internal library path
1279
1280 AC_CACHE_VAL(vi_cv_path_python3path,
1281 [ vi_cv_path_python3path=`
1282 unset PYTHONPATH;
1283 ${vi_cv_path_python3} -c \
1284 "import sys, string; print(':'.join(sys.path))"` ])
1285
1286 dnl -- where the Python implementation library archives are
1287
1288 AC_ARG_WITH(python3-config-dir,
1289 [ --with-python3-config-dir=PATH Python's config directory],
1290 [ vi_cv_path_python3_conf="${withval}" ] )
1291
1292 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1293 [
1294 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001295 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001296 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1297 if test -d "$d" && test -f "$d/config.c"; then
1298 vi_cv_path_python3_conf="$d"
1299 else
1300 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1301 for subdir in lib64 lib share; do
1302 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1303 if test -d "$d" && test -f "$d/config.c"; then
1304 vi_cv_path_python3_conf="$d"
1305 fi
1306 done
1307 done
1308 fi
1309 ])
1310
1311 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1312
1313 if test "X$PYTHON3_CONFDIR" = "X"; then
1314 AC_MSG_RESULT([can't find it!])
1315 else
1316
1317 dnl -- we need to examine Python's config/Makefile too
1318 dnl see what the interpreter is built from
1319 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1320 [
1321 pwd=`pwd`
1322 tmp_mkf="$pwd/config-PyMake$$"
1323 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001324__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001325 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001326 @echo "python3_LIBS='$(LIBS)'"
1327 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001328 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001329 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001330eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001331 dnl -- delete the lines from make about Entering/Leaving directory
1332 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1333 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001334 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 +02001335 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1336 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1337 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1338 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1339 ])
1340 AC_CACHE_VAL(vi_cv_dll_name_python3,
1341 [
1342 if test "X$python3_DLLLIBRARY" != "X"; then
1343 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1344 else
1345 vi_cv_dll_name_python3="$python3_INSTSONAME"
1346 fi
1347 ])
1348
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001349 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1350 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001351 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 +02001352 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001353 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 +02001354 fi
1355 PYTHON3_SRC="if_python3.c"
1356 PYTHON3_OBJ="objects/if_python3.o"
1357
1358 dnl On FreeBSD linking with "-pthread" is required to use threads.
1359 dnl _THREAD_SAFE must be used for compiling then.
1360 dnl The "-pthread" is added to $LIBS, so that the following check for
1361 dnl sigaltstack() will look in libc_r (it's there in libc!).
1362 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1363 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1364 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1365 AC_MSG_CHECKING([if -pthread should be used])
1366 threadsafe_flag=
1367 thread_lib=
1368 dnl if test "x$MACOSX" != "xyes"; then
1369 if test "`(uname) 2>/dev/null`" != Darwin; then
1370 test "$GCC" = yes && threadsafe_flag="-pthread"
1371 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1372 threadsafe_flag="-D_THREAD_SAFE"
1373 thread_lib="-pthread"
1374 fi
1375 if test "`(uname) 2>/dev/null`" = SunOS; then
1376 threadsafe_flag="-pthreads"
1377 fi
1378 fi
1379 libs_save_old=$LIBS
1380 if test -n "$threadsafe_flag"; then
1381 cflags_save=$CFLAGS
1382 CFLAGS="$CFLAGS $threadsafe_flag"
1383 LIBS="$LIBS $thread_lib"
1384 AC_TRY_LINK(,[ ],
1385 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1386 AC_MSG_RESULT(no); LIBS=$libs_save_old
1387 )
1388 CFLAGS=$cflags_save
1389 else
1390 AC_MSG_RESULT(no)
1391 fi
1392
1393 dnl check that compiling a simple program still works with the flags
1394 dnl added for Python.
1395 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1396 cflags_save=$CFLAGS
1397 libs_save=$LIBS
1398 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1399 LIBS="$LIBS $PYTHON3_LIBS"
1400 AC_TRY_LINK(,[ ],
1401 AC_MSG_RESULT(yes); python3_ok=yes,
1402 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1403 CFLAGS=$cflags_save
1404 LIBS=$libs_save
1405 if test "$python3_ok" = yes; then
1406 AC_DEFINE(FEAT_PYTHON3)
1407 else
1408 LIBS=$libs_save_old
1409 PYTHON3_SRC=
1410 PYTHON3_OBJ=
1411 PYTHON3_LIBS=
1412 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001413 fi
1414 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001415 else
1416 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001417 fi
1418 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001419 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1420 AC_MSG_ERROR([could not configure python3])
1421 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001422fi
1423
1424AC_SUBST(PYTHON3_CONFDIR)
1425AC_SUBST(PYTHON3_LIBS)
1426AC_SUBST(PYTHON3_CFLAGS)
1427AC_SUBST(PYTHON3_SRC)
1428AC_SUBST(PYTHON3_OBJ)
1429
1430dnl if python2.x and python3.x are enabled one can only link in code
1431dnl with dlopen(), dlsym(), dlclose()
1432if test "$python_ok" = yes && test "$python3_ok" = yes; then
1433 AC_DEFINE(DYNAMIC_PYTHON)
1434 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001435 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001436 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001437 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001438 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001439 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1440 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001441 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001442 #include <dlfcn.h>
1443 /* If this program fails, then RTLD_GLOBAL is needed.
1444 * RTLD_GLOBAL will be used and then it is not possible to
1445 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001446 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001447 */
1448
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001449 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001450 {
1451 int needed = 0;
1452 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1453 if (pylib != 0)
1454 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001455 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001456 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1457 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1458 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001459 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001460 (*init)();
1461 needed = (*simple)("import termios") == -1;
1462 (*final)();
1463 dlclose(pylib);
1464 }
1465 return !needed;
1466 }
1467
1468 int main(int argc, char** argv)
1469 {
1470 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001471 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001472 not_needed = 1;
1473 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001474 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001475 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001476
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001477 CFLAGS=$cflags_save
1478 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001479
1480 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1481 cflags_save=$CFLAGS
1482 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1483 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001484 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1485 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001486 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001487 #include <dlfcn.h>
1488 #include <wchar.h>
1489 /* If this program fails, then RTLD_GLOBAL is needed.
1490 * RTLD_GLOBAL will be used and then it is not possible to
1491 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001492 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001493 */
1494
1495 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1496 {
1497 int needed = 0;
1498 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1499 if (pylib != 0)
1500 {
1501 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1502 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1503 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1504 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1505 (*pfx)(prefix);
1506 (*init)();
1507 needed = (*simple)("import termios") == -1;
1508 (*final)();
1509 dlclose(pylib);
1510 }
1511 return !needed;
1512 }
1513
1514 int main(int argc, char** argv)
1515 {
1516 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001517 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001518 not_needed = 1;
1519 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001520 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001521 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1522
1523 CFLAGS=$cflags_save
1524 LDFLAGS=$ldflags_save
1525
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001526 PYTHON_SRC="if_python.c"
1527 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001528 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001529 PYTHON_LIBS=
1530 PYTHON3_SRC="if_python3.c"
1531 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001532 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001533 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001534elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1535 AC_DEFINE(DYNAMIC_PYTHON)
1536 PYTHON_SRC="if_python.c"
1537 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001538 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001539 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001540elif test "$python_ok" = yes; then
1541 dnl Check that adding -fPIE works. It may be needed when using a static
1542 dnl Python library.
1543 AC_MSG_CHECKING([if -fPIE can be added for Python])
1544 cflags_save=$CFLAGS
1545 libs_save=$LIBS
1546 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1547 LIBS="$LIBS $PYTHON_LIBS"
1548 AC_TRY_LINK(,[ ],
1549 AC_MSG_RESULT(yes); fpie_ok=yes,
1550 AC_MSG_RESULT(no); fpie_ok=no)
1551 CFLAGS=$cflags_save
1552 LIBS=$libs_save
1553 if test $fpie_ok = yes; then
1554 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1555 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001556elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1557 AC_DEFINE(DYNAMIC_PYTHON3)
1558 PYTHON3_SRC="if_python3.c"
1559 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001560 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001561 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001562elif test "$python3_ok" = yes; then
1563 dnl Check that adding -fPIE works. It may be needed when using a static
1564 dnl Python library.
1565 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1566 cflags_save=$CFLAGS
1567 libs_save=$LIBS
1568 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1569 LIBS="$LIBS $PYTHON3_LIBS"
1570 AC_TRY_LINK(,[ ],
1571 AC_MSG_RESULT(yes); fpie_ok=yes,
1572 AC_MSG_RESULT(no); fpie_ok=no)
1573 CFLAGS=$cflags_save
1574 LIBS=$libs_save
1575 if test $fpie_ok = yes; then
1576 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1577 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001578fi
1579
Bram Moolenaar071d4272004-06-13 20:20:40 +00001580AC_MSG_CHECKING(--enable-tclinterp argument)
1581AC_ARG_ENABLE(tclinterp,
1582 [ --enable-tclinterp Include Tcl interpreter.], ,
1583 [enable_tclinterp="no"])
1584AC_MSG_RESULT($enable_tclinterp)
1585
1586if test "$enable_tclinterp" = "yes"; then
1587
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001588 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001589 AC_MSG_CHECKING(--with-tclsh argument)
1590 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1591 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001592 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001593 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1594 AC_SUBST(vi_cv_path_tcl)
1595
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001596 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1597 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1598 tclsh_name="tclsh8.4"
1599 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1600 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001601 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001602 tclsh_name="tclsh8.2"
1603 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1604 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001605 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1606 tclsh_name="tclsh8.0"
1607 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1608 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001609 dnl still didn't find it, try without version number
1610 if test "X$vi_cv_path_tcl" = "X"; then
1611 tclsh_name="tclsh"
1612 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1613 fi
1614 if test "X$vi_cv_path_tcl" != "X"; then
1615 AC_MSG_CHECKING(Tcl version)
1616 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1617 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1618 AC_MSG_RESULT($tclver - OK);
1619 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 -`
1620
1621 AC_MSG_CHECKING(for location of Tcl include)
1622 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001623 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 +00001624 else
1625 dnl For Mac OS X 10.3, use the OS-provided framework location
1626 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1627 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001628 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001629 for try in $tclinc; do
1630 if test -f "$try/tcl.h"; then
1631 AC_MSG_RESULT($try/tcl.h)
1632 TCL_INC=$try
1633 break
1634 fi
1635 done
1636 if test -z "$TCL_INC"; then
1637 AC_MSG_RESULT(<not found>)
1638 SKIP_TCL=YES
1639 fi
1640 if test -z "$SKIP_TCL"; then
1641 AC_MSG_CHECKING(for location of tclConfig.sh script)
1642 if test "x$MACOSX" != "xyes"; then
1643 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001644 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001645 else
1646 dnl For Mac OS X 10.3, use the OS-provided framework location
1647 tclcnf="/System/Library/Frameworks/Tcl.framework"
1648 fi
1649 for try in $tclcnf; do
1650 if test -f $try/tclConfig.sh; then
1651 AC_MSG_RESULT($try/tclConfig.sh)
1652 . $try/tclConfig.sh
1653 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1654 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1655 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001656 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001657 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 +00001658 break
1659 fi
1660 done
1661 if test -z "$TCL_LIBS"; then
1662 AC_MSG_RESULT(<not found>)
1663 AC_MSG_CHECKING(for Tcl library by myself)
1664 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001665 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001666 for ext in .so .a ; do
1667 for ver in "" $tclver ; do
1668 for try in $tcllib ; do
1669 trylib=tcl$ver$ext
1670 if test -f $try/lib$trylib ; then
1671 AC_MSG_RESULT($try/lib$trylib)
1672 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1673 if test "`(uname) 2>/dev/null`" = SunOS &&
1674 uname -r | grep '^5' >/dev/null; then
1675 TCL_LIBS="$TCL_LIBS -R $try"
1676 fi
1677 break 3
1678 fi
1679 done
1680 done
1681 done
1682 if test -z "$TCL_LIBS"; then
1683 AC_MSG_RESULT(<not found>)
1684 SKIP_TCL=YES
1685 fi
1686 fi
1687 if test -z "$SKIP_TCL"; then
1688 AC_DEFINE(FEAT_TCL)
1689 TCL_SRC=if_tcl.c
1690 TCL_OBJ=objects/if_tcl.o
1691 TCL_PRO=if_tcl.pro
1692 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1693 fi
1694 fi
1695 else
1696 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1697 fi
1698 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001699 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1700 AC_MSG_ERROR([could not configure Tcl])
1701 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001702fi
1703AC_SUBST(TCL_SRC)
1704AC_SUBST(TCL_OBJ)
1705AC_SUBST(TCL_PRO)
1706AC_SUBST(TCL_CFLAGS)
1707AC_SUBST(TCL_LIBS)
1708
1709AC_MSG_CHECKING(--enable-rubyinterp argument)
1710AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001711 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001712 [enable_rubyinterp="no"])
1713AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001714if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001715 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001716 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001717 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1718 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1719 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001720 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001721 if test "X$vi_cv_path_ruby" != "X"; then
1722 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001723 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 +00001724 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001725 AC_MSG_CHECKING(Ruby rbconfig)
1726 ruby_rbconfig="RbConfig"
1727 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1728 ruby_rbconfig="Config"
1729 fi
1730 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001731 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001732 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 +00001733 if test "X$rubyhdrdir" != "X"; then
1734 AC_MSG_RESULT($rubyhdrdir)
1735 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001736 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1737 if test -d "$rubyarchdir"; then
1738 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001739 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001740 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001741 if test "X$rubyversion" = "X"; then
1742 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1743 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001744 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001745 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001746 if test "X$rubylibs" != "X"; then
1747 RUBY_LIBS="$rubylibs"
1748 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001749 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1750 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001751 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001752 if test -f "$rubylibdir/$librubya"; then
1753 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001754 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1755 elif test "$librubyarg" = "libruby.a"; then
1756 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1757 librubyarg="-lruby"
1758 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001759 fi
1760
1761 if test "X$librubyarg" != "X"; then
1762 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1763 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001764 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001766 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1767 dnl be included if requested by passing --with-mac-arch to
1768 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001769 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001770 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001771 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001772 LDFLAGS="$rubyldflags $LDFLAGS"
1773 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001774 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001775 fi
1776 RUBY_SRC="if_ruby.c"
1777 RUBY_OBJ="objects/if_ruby.o"
1778 RUBY_PRO="if_ruby.pro"
1779 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001780 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001781 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001782 AC_DEFINE(DYNAMIC_RUBY)
1783 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1784 RUBY_LIBS=
1785 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001786 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001787 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788 fi
1789 else
1790 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1791 fi
1792 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001793
1794 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1795 AC_MSG_ERROR([could not configure Ruby])
1796 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001797fi
1798AC_SUBST(RUBY_SRC)
1799AC_SUBST(RUBY_OBJ)
1800AC_SUBST(RUBY_PRO)
1801AC_SUBST(RUBY_CFLAGS)
1802AC_SUBST(RUBY_LIBS)
1803
1804AC_MSG_CHECKING(--enable-cscope argument)
1805AC_ARG_ENABLE(cscope,
1806 [ --enable-cscope Include cscope interface.], ,
1807 [enable_cscope="no"])
1808AC_MSG_RESULT($enable_cscope)
1809if test "$enable_cscope" = "yes"; then
1810 AC_DEFINE(FEAT_CSCOPE)
1811fi
1812
1813AC_MSG_CHECKING(--enable-workshop argument)
1814AC_ARG_ENABLE(workshop,
1815 [ --enable-workshop Include Sun Visual Workshop support.], ,
1816 [enable_workshop="no"])
1817AC_MSG_RESULT($enable_workshop)
1818if test "$enable_workshop" = "yes"; then
1819 AC_DEFINE(FEAT_SUN_WORKSHOP)
1820 WORKSHOP_SRC="workshop.c integration.c"
1821 AC_SUBST(WORKSHOP_SRC)
1822 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1823 AC_SUBST(WORKSHOP_OBJ)
1824 if test "${enable_gui-xxx}" = xxx; then
1825 enable_gui=motif
1826 fi
1827fi
1828
1829AC_MSG_CHECKING(--disable-netbeans argument)
1830AC_ARG_ENABLE(netbeans,
1831 [ --disable-netbeans Disable NetBeans integration support.],
1832 , [enable_netbeans="yes"])
1833if test "$enable_netbeans" = "yes"; then
1834 AC_MSG_RESULT(no)
1835 dnl On Solaris we need the socket and nsl library.
1836 AC_CHECK_LIB(socket, socket)
1837 AC_CHECK_LIB(nsl, gethostbyname)
1838 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1839 AC_TRY_LINK([
1840#include <stdio.h>
1841#include <stdlib.h>
1842#include <stdarg.h>
1843#include <fcntl.h>
1844#include <netdb.h>
1845#include <netinet/in.h>
1846#include <errno.h>
1847#include <sys/types.h>
1848#include <sys/socket.h>
1849 /* Check bitfields */
1850 struct nbbuf {
1851 unsigned int initDone:1;
1852 ushort signmaplen;
1853 };
1854 ], [
1855 /* Check creating a socket. */
1856 struct sockaddr_in server;
1857 (void)socket(AF_INET, SOCK_STREAM, 0);
1858 (void)htons(100);
1859 (void)gethostbyname("microsoft.com");
1860 if (errno == ECONNREFUSED)
1861 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1862 ],
1863 AC_MSG_RESULT(yes),
1864 AC_MSG_RESULT(no); enable_netbeans="no")
1865else
1866 AC_MSG_RESULT(yes)
1867fi
1868if test "$enable_netbeans" = "yes"; then
1869 AC_DEFINE(FEAT_NETBEANS_INTG)
1870 NETBEANS_SRC="netbeans.c"
1871 AC_SUBST(NETBEANS_SRC)
1872 NETBEANS_OBJ="objects/netbeans.o"
1873 AC_SUBST(NETBEANS_OBJ)
1874fi
1875
1876AC_MSG_CHECKING(--enable-sniff argument)
1877AC_ARG_ENABLE(sniff,
1878 [ --enable-sniff Include Sniff interface.], ,
1879 [enable_sniff="no"])
1880AC_MSG_RESULT($enable_sniff)
1881if test "$enable_sniff" = "yes"; then
1882 AC_DEFINE(FEAT_SNIFF)
1883 SNIFF_SRC="if_sniff.c"
1884 AC_SUBST(SNIFF_SRC)
1885 SNIFF_OBJ="objects/if_sniff.o"
1886 AC_SUBST(SNIFF_OBJ)
1887fi
1888
1889AC_MSG_CHECKING(--enable-multibyte argument)
1890AC_ARG_ENABLE(multibyte,
1891 [ --enable-multibyte Include multibyte editing support.], ,
1892 [enable_multibyte="no"])
1893AC_MSG_RESULT($enable_multibyte)
1894if test "$enable_multibyte" = "yes"; then
1895 AC_DEFINE(FEAT_MBYTE)
1896fi
1897
1898AC_MSG_CHECKING(--enable-hangulinput argument)
1899AC_ARG_ENABLE(hangulinput,
1900 [ --enable-hangulinput Include Hangul input support.], ,
1901 [enable_hangulinput="no"])
1902AC_MSG_RESULT($enable_hangulinput)
1903
1904AC_MSG_CHECKING(--enable-xim argument)
1905AC_ARG_ENABLE(xim,
1906 [ --enable-xim Include XIM input support.],
1907 AC_MSG_RESULT($enable_xim),
1908 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001909
1910AC_MSG_CHECKING(--enable-fontset argument)
1911AC_ARG_ENABLE(fontset,
1912 [ --enable-fontset Include X fontset output support.], ,
1913 [enable_fontset="no"])
1914AC_MSG_RESULT($enable_fontset)
1915dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1916
1917test -z "$with_x" && with_x=yes
1918test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1919if test "$with_x" = no; then
1920 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1921else
1922 dnl Do this check early, so that its failure can override user requests.
1923
1924 AC_PATH_PROG(xmkmfpath, xmkmf)
1925
1926 AC_PATH_XTRA
1927
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001928 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001929 dnl be compiled with a special option.
1930 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001931 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001932 CFLAGS="$CFLAGS -W c,dll"
1933 LDFLAGS="$LDFLAGS -W l,dll"
1934 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1935 fi
1936
1937 dnl On my HPUX system the X include dir is found, but the lib dir not.
1938 dnl This is a desparate try to fix this.
1939
1940 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1941 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1942 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1943 X_LIBS="$X_LIBS -L$x_libraries"
1944 if test "`(uname) 2>/dev/null`" = SunOS &&
1945 uname -r | grep '^5' >/dev/null; then
1946 X_LIBS="$X_LIBS -R $x_libraries"
1947 fi
1948 fi
1949
1950 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1951 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1952 AC_MSG_RESULT(Corrected X includes to $x_includes)
1953 X_CFLAGS="$X_CFLAGS -I$x_includes"
1954 fi
1955
1956 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1957 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1958 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1959 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1960 dnl Same for "-R/usr/lib ".
1961 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1962
1963
1964 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001965 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1966 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967 AC_MSG_CHECKING(if X11 header files can be found)
1968 cflags_save=$CFLAGS
1969 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001970 AC_TRY_COMPILE([#include <X11/Xlib.h>
1971#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001972 AC_MSG_RESULT(yes),
1973 AC_MSG_RESULT(no); no_x=yes)
1974 CFLAGS=$cflags_save
1975
1976 if test "${no_x-no}" = yes; then
1977 with_x=no
1978 else
1979 AC_DEFINE(HAVE_X11)
1980 X_LIB="-lXt -lX11";
1981 AC_SUBST(X_LIB)
1982
1983 ac_save_LDFLAGS="$LDFLAGS"
1984 LDFLAGS="-L$x_libraries $LDFLAGS"
1985
1986 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1987 dnl For HP-UX 10.20 it must be before -lSM -lICE
1988 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1989 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1990
1991 dnl Some systems need -lnsl -lsocket when testing for ICE.
1992 dnl The check above doesn't do this, try here (again). Also needed to get
1993 dnl them after Xdmcp. link.sh will remove them when not needed.
1994 dnl Check for other function than above to avoid the cached value
1995 AC_CHECK_LIB(ICE, IceOpenConnection,
1996 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1997
1998 dnl Check for -lXpm (needed for some versions of Motif)
1999 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2000 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2001 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2002
2003 dnl Check that the X11 header files don't use implicit declarations
2004 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2005 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002006 dnl -Werror is GCC only, others like Solaris Studio might not like it
2007 if test "$GCC" = yes; then
2008 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2009 else
2010 CFLAGS="$CFLAGS $X_CFLAGS"
2011 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002012 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2013 AC_MSG_RESULT(no),
2014 CFLAGS="$CFLAGS -Wno-implicit-int"
2015 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2016 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2017 AC_MSG_RESULT(test failed)
2018 )
2019 )
2020 CFLAGS=$cflags_save
2021
2022 LDFLAGS="$ac_save_LDFLAGS"
2023
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002024 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2025 AC_CACHE_VAL(ac_cv_small_wchar_t,
2026 [AC_TRY_RUN([
2027#include <X11/Xlib.h>
2028#if STDC_HEADERS
2029# include <stdlib.h>
2030# include <stddef.h>
2031#endif
2032 main()
2033 {
2034 if (sizeof(wchar_t) <= 2)
2035 exit(1);
2036 exit(0);
2037 }],
2038 ac_cv_small_wchar_t="no",
2039 ac_cv_small_wchar_t="yes",
2040 AC_MSG_ERROR(failed to compile test program))])
2041 AC_MSG_RESULT($ac_cv_small_wchar_t)
2042 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2043 AC_DEFINE(SMALL_WCHAR_T)
2044 fi
2045
Bram Moolenaar071d4272004-06-13 20:20:40 +00002046 fi
2047fi
2048
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002049test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002050
2051AC_MSG_CHECKING(--enable-gui argument)
2052AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002053 [ --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 +00002054
2055dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2056dnl Do not use character classes for portability with old tools.
2057enable_gui_canon=`echo "_$enable_gui" | \
2058 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2059
2060dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002061SKIP_GTK2=YES
2062SKIP_GNOME=YES
2063SKIP_MOTIF=YES
2064SKIP_ATHENA=YES
2065SKIP_NEXTAW=YES
2066SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067SKIP_CARBON=YES
2068GUITYPE=NONE
2069
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002070if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002071 SKIP_PHOTON=
2072 case "$enable_gui_canon" in
2073 no) AC_MSG_RESULT(no GUI support)
2074 SKIP_PHOTON=YES ;;
2075 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2076 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2077 photon) AC_MSG_RESULT(Photon GUI support) ;;
2078 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2079 SKIP_PHOTON=YES ;;
2080 esac
2081
2082elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2083 SKIP_CARBON=
2084 case "$enable_gui_canon" in
2085 no) AC_MSG_RESULT(no GUI support)
2086 SKIP_CARBON=YES ;;
2087 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002088 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2089 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002090 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2091 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2092 SKIP_CARBON=YES ;;
2093 esac
2094
2095else
2096
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097 case "$enable_gui_canon" in
2098 no|none) AC_MSG_RESULT(no GUI support) ;;
2099 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002100 SKIP_GTK2=
2101 SKIP_GNOME=
2102 SKIP_MOTIF=
2103 SKIP_ATHENA=
2104 SKIP_NEXTAW=
2105 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002106 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002107 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002108 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2109 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002110 SKIP_GTK2=;;
2111 motif) AC_MSG_RESULT(Motif GUI support)
2112 SKIP_MOTIF=;;
2113 athena) AC_MSG_RESULT(Athena GUI support)
2114 SKIP_ATHENA=;;
2115 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2116 SKIP_NEXTAW=;;
2117 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2118 esac
2119
2120fi
2121
Bram Moolenaar071d4272004-06-13 20:20:40 +00002122if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2123 -a "$enable_gui_canon" != "gnome2"; then
2124 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2125 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002126 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002127 , enable_gtk2_check="yes")
2128 AC_MSG_RESULT($enable_gtk2_check)
2129 if test "x$enable_gtk2_check" = "xno"; then
2130 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002131 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002132 fi
2133fi
2134
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002135if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002136 AC_MSG_CHECKING(whether or not to look for GNOME)
2137 AC_ARG_ENABLE(gnome-check,
2138 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2139 , enable_gnome_check="no")
2140 AC_MSG_RESULT($enable_gnome_check)
2141 if test "x$enable_gnome_check" = "xno"; then
2142 SKIP_GNOME=YES
2143 fi
2144fi
2145
2146if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2147 AC_MSG_CHECKING(whether or not to look for Motif)
2148 AC_ARG_ENABLE(motif-check,
2149 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2150 , enable_motif_check="yes")
2151 AC_MSG_RESULT($enable_motif_check)
2152 if test "x$enable_motif_check" = "xno"; then
2153 SKIP_MOTIF=YES
2154 fi
2155fi
2156
2157if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2158 AC_MSG_CHECKING(whether or not to look for Athena)
2159 AC_ARG_ENABLE(athena-check,
2160 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2161 , enable_athena_check="yes")
2162 AC_MSG_RESULT($enable_athena_check)
2163 if test "x$enable_athena_check" = "xno"; then
2164 SKIP_ATHENA=YES
2165 fi
2166fi
2167
2168if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2169 AC_MSG_CHECKING(whether or not to look for neXtaw)
2170 AC_ARG_ENABLE(nextaw-check,
2171 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2172 , enable_nextaw_check="yes")
2173 AC_MSG_RESULT($enable_nextaw_check);
2174 if test "x$enable_nextaw_check" = "xno"; then
2175 SKIP_NEXTAW=YES
2176 fi
2177fi
2178
2179if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2180 AC_MSG_CHECKING(whether or not to look for Carbon)
2181 AC_ARG_ENABLE(carbon-check,
2182 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2183 , enable_carbon_check="yes")
2184 AC_MSG_RESULT($enable_carbon_check);
2185 if test "x$enable_carbon_check" = "xno"; then
2186 SKIP_CARBON=YES
2187 fi
2188fi
2189
Bram Moolenaar843ee412004-06-30 16:16:41 +00002190
Bram Moolenaar071d4272004-06-13 20:20:40 +00002191if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2192 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002193 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002194 AC_MSG_RESULT(yes);
2195 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002196 if test "$VIMNAME" = "vim"; then
2197 VIMNAME=Vim
2198 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002199
Bram Moolenaar164fca32010-07-14 13:58:07 +02002200 if test "x$MACARCH" = "xboth"; then
2201 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2202 else
2203 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2204 fi
2205
Bram Moolenaar14716812006-05-04 21:54:08 +00002206 dnl Default install directory is not /usr/local
2207 if test x$prefix = xNONE; then
2208 prefix=/Applications
2209 fi
2210
2211 dnl Sorry for the hard coded default
2212 datadir='${prefix}/Vim.app/Contents/Resources'
2213
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002215 SKIP_GTK2=YES;
2216 SKIP_GNOME=YES;
2217 SKIP_MOTIF=YES;
2218 SKIP_ATHENA=YES;
2219 SKIP_NEXTAW=YES;
2220 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002221 SKIP_CARBON=YES
2222fi
2223
Bram Moolenaar071d4272004-06-13 20:20:40 +00002224dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002225dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226dnl
2227dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002228dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002229dnl
2230AC_DEFUN(AM_PATH_GTK,
2231[
2232 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2233 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002234 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002235 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2236 no_gtk=""
2237 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2238 && $PKG_CONFIG --exists gtk+-2.0; then
2239 {
2240 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2241 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2242 dnl something like that.
2243 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002244 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002245 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2246 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2247 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2248 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2249 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2250 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2251 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2252 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002253 else
2254 no_gtk=yes
2255 fi
2256
2257 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2258 {
2259 ac_save_CFLAGS="$CFLAGS"
2260 ac_save_LIBS="$LIBS"
2261 CFLAGS="$CFLAGS $GTK_CFLAGS"
2262 LIBS="$LIBS $GTK_LIBS"
2263
2264 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002265 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002266 dnl
2267 rm -f conf.gtktest
2268 AC_TRY_RUN([
2269#include <gtk/gtk.h>
2270#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002271#if STDC_HEADERS
2272# include <stdlib.h>
2273# include <stddef.h>
2274#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002275
2276int
2277main ()
2278{
2279int major, minor, micro;
2280char *tmp_version;
2281
2282system ("touch conf.gtktest");
2283
2284/* HP/UX 9 (%@#!) writes to sscanf strings */
2285tmp_version = g_strdup("$min_gtk_version");
2286if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2287 printf("%s, bad version string\n", "$min_gtk_version");
2288 exit(1);
2289 }
2290
2291if ((gtk_major_version > major) ||
2292 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2293 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2294 (gtk_micro_version >= micro)))
2295{
2296 return 0;
2297}
2298return 1;
2299}
2300],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2301 CFLAGS="$ac_save_CFLAGS"
2302 LIBS="$ac_save_LIBS"
2303 }
2304 fi
2305 if test "x$no_gtk" = x ; then
2306 if test "x$enable_gtktest" = "xyes"; then
2307 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2308 else
2309 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2310 fi
2311 ifelse([$2], , :, [$2])
2312 else
2313 {
2314 AC_MSG_RESULT(no)
2315 GTK_CFLAGS=""
2316 GTK_LIBS=""
2317 ifelse([$3], , :, [$3])
2318 }
2319 fi
2320 }
2321 else
2322 GTK_CFLAGS=""
2323 GTK_LIBS=""
2324 ifelse([$3], , :, [$3])
2325 fi
2326 AC_SUBST(GTK_CFLAGS)
2327 AC_SUBST(GTK_LIBS)
2328 rm -f conf.gtktest
2329])
2330
2331dnl ---------------------------------------------------------------------------
2332dnl gnome
2333dnl ---------------------------------------------------------------------------
2334AC_DEFUN([GNOME_INIT_HOOK],
2335[
2336 AC_SUBST(GNOME_LIBS)
2337 AC_SUBST(GNOME_LIBDIR)
2338 AC_SUBST(GNOME_INCLUDEDIR)
2339
2340 AC_ARG_WITH(gnome-includes,
2341 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2342 [CFLAGS="$CFLAGS -I$withval"]
2343 )
2344
2345 AC_ARG_WITH(gnome-libs,
2346 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2347 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2348 )
2349
2350 AC_ARG_WITH(gnome,
2351 [ --with-gnome Specify prefix for GNOME files],
2352 if test x$withval = xyes; then
2353 want_gnome=yes
2354 ifelse([$1], [], :, [$1])
2355 else
2356 if test "x$withval" = xno; then
2357 want_gnome=no
2358 else
2359 want_gnome=yes
2360 LDFLAGS="$LDFLAGS -L$withval/lib"
2361 CFLAGS="$CFLAGS -I$withval/include"
2362 gnome_prefix=$withval/lib
2363 fi
2364 fi,
2365 want_gnome=yes)
2366
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002367 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002368 {
2369 AC_MSG_CHECKING(for libgnomeui-2.0)
2370 if $PKG_CONFIG --exists libgnomeui-2.0; then
2371 AC_MSG_RESULT(yes)
2372 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2373 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2374 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002375
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002376 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2377 dnl This might not be the right way but it works for me...
2378 AC_MSG_CHECKING(for FreeBSD)
2379 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2380 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002381 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002382 GNOME_LIBS="$GNOME_LIBS -pthread"
2383 else
2384 AC_MSG_RESULT(no)
2385 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002386 $1
2387 else
2388 AC_MSG_RESULT(not found)
2389 if test "x$2" = xfail; then
2390 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2391 fi
2392 fi
2393 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002394 fi
2395])
2396
2397AC_DEFUN([GNOME_INIT],[
2398 GNOME_INIT_HOOK([],fail)
2399])
2400
2401
2402dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002403dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002404dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002405if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002406
2407 AC_MSG_CHECKING(--disable-gtktest argument)
2408 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2409 , enable_gtktest=yes)
2410 if test "x$enable_gtktest" = "xyes" ; then
2411 AC_MSG_RESULT(gtk test enabled)
2412 else
2413 AC_MSG_RESULT(gtk test disabled)
2414 fi
2415
Bram Moolenaar071d4272004-06-13 20:20:40 +00002416 if test "X$PKG_CONFIG" = "X"; then
2417 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2418 fi
2419
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002420 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002421 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2422 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002423 AM_PATH_GTK(2.2.0,
2424 [GUI_LIB_LOC="$GTK_LIBDIR"
2425 GTK_LIBNAME="$GTK_LIBS"
2426 GUI_INC_LOC="$GTK_CFLAGS"], )
2427 if test "x$GTK_CFLAGS" != "x"; then
2428 SKIP_ATHENA=YES
2429 SKIP_NEXTAW=YES
2430 SKIP_MOTIF=YES
2431 GUITYPE=GTK
2432 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002433 fi
2434 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002435 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002436 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2437 || test "0$gtk_minor_version" -ge 2; then
2438 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2439 fi
2440 dnl
2441 dnl if GTK exists, then check for GNOME.
2442 dnl
2443 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002445 GNOME_INIT_HOOK([have_gnome=yes])
2446 if test "x$have_gnome" = xyes ; then
2447 AC_DEFINE(FEAT_GUI_GNOME)
2448 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2449 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002450 fi
2451 }
2452 fi
2453 fi
2454fi
2455
2456dnl Check for Motif include files location.
2457dnl The LAST one found is used, this makes the highest version to be used,
2458dnl e.g. when Motif1.2 and Motif2.0 are both present.
2459
2460if test -z "$SKIP_MOTIF"; then
2461 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"
2462 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2463 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2464
2465 AC_MSG_CHECKING(for location of Motif GUI includes)
2466 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2467 GUI_INC_LOC=
2468 for try in $gui_includes; do
2469 if test -f "$try/Xm/Xm.h"; then
2470 GUI_INC_LOC=$try
2471 fi
2472 done
2473 if test -n "$GUI_INC_LOC"; then
2474 if test "$GUI_INC_LOC" = /usr/include; then
2475 GUI_INC_LOC=
2476 AC_MSG_RESULT(in default path)
2477 else
2478 AC_MSG_RESULT($GUI_INC_LOC)
2479 fi
2480 else
2481 AC_MSG_RESULT(<not found>)
2482 SKIP_MOTIF=YES
2483 fi
2484fi
2485
2486dnl Check for Motif library files location. In the same order as the include
2487dnl files, to avoid a mixup if several versions are present
2488
2489if test -z "$SKIP_MOTIF"; then
2490 AC_MSG_CHECKING(--with-motif-lib argument)
2491 AC_ARG_WITH(motif-lib,
2492 [ --with-motif-lib=STRING Library for Motif ],
2493 [ MOTIF_LIBNAME="${withval}" ] )
2494
2495 if test -n "$MOTIF_LIBNAME"; then
2496 AC_MSG_RESULT($MOTIF_LIBNAME)
2497 GUI_LIB_LOC=
2498 else
2499 AC_MSG_RESULT(no)
2500
2501 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2502 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2503
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002504 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2505 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002506 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002507 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 +00002508 GUI_LIB_LOC=
2509 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002510 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002511 if test -f "$libtry"; then
2512 GUI_LIB_LOC=$try
2513 fi
2514 done
2515 done
2516 if test -n "$GUI_LIB_LOC"; then
2517 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002518 if test "$GUI_LIB_LOC" = /usr/lib \
2519 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2520 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002521 GUI_LIB_LOC=
2522 AC_MSG_RESULT(in default path)
2523 else
2524 if test -n "$GUI_LIB_LOC"; then
2525 AC_MSG_RESULT($GUI_LIB_LOC)
2526 if test "`(uname) 2>/dev/null`" = SunOS &&
2527 uname -r | grep '^5' >/dev/null; then
2528 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2529 fi
2530 fi
2531 fi
2532 MOTIF_LIBNAME=-lXm
2533 else
2534 AC_MSG_RESULT(<not found>)
2535 SKIP_MOTIF=YES
2536 fi
2537 fi
2538fi
2539
2540if test -z "$SKIP_MOTIF"; then
2541 SKIP_ATHENA=YES
2542 SKIP_NEXTAW=YES
2543 GUITYPE=MOTIF
2544 AC_SUBST(MOTIF_LIBNAME)
2545fi
2546
2547dnl Check if the Athena files can be found
2548
2549GUI_X_LIBS=
2550
2551if test -z "$SKIP_ATHENA"; then
2552 AC_MSG_CHECKING(if Athena header files can be found)
2553 cflags_save=$CFLAGS
2554 CFLAGS="$CFLAGS $X_CFLAGS"
2555 AC_TRY_COMPILE([
2556#include <X11/Intrinsic.h>
2557#include <X11/Xaw/Paned.h>], ,
2558 AC_MSG_RESULT(yes),
2559 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2560 CFLAGS=$cflags_save
2561fi
2562
2563if test -z "$SKIP_ATHENA"; then
2564 GUITYPE=ATHENA
2565fi
2566
2567if test -z "$SKIP_NEXTAW"; then
2568 AC_MSG_CHECKING(if neXtaw header files can be found)
2569 cflags_save=$CFLAGS
2570 CFLAGS="$CFLAGS $X_CFLAGS"
2571 AC_TRY_COMPILE([
2572#include <X11/Intrinsic.h>
2573#include <X11/neXtaw/Paned.h>], ,
2574 AC_MSG_RESULT(yes),
2575 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2576 CFLAGS=$cflags_save
2577fi
2578
2579if test -z "$SKIP_NEXTAW"; then
2580 GUITYPE=NEXTAW
2581fi
2582
2583if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2584 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2585 dnl Avoid adding it when it twice
2586 if test -n "$GUI_INC_LOC"; then
2587 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2588 fi
2589 if test -n "$GUI_LIB_LOC"; then
2590 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2591 fi
2592
2593 dnl Check for -lXext and then for -lXmu
2594 ldflags_save=$LDFLAGS
2595 LDFLAGS="$X_LIBS $LDFLAGS"
2596 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2597 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2598 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2599 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2600 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2601 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2602 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2603 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2604 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2605 if test -z "$SKIP_MOTIF"; then
2606 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2607 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2608 fi
2609 LDFLAGS=$ldflags_save
2610
2611 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2612 AC_MSG_CHECKING(for extra X11 defines)
2613 NARROW_PROTO=
2614 rm -fr conftestdir
2615 if mkdir conftestdir; then
2616 cd conftestdir
2617 cat > Imakefile <<'EOF'
2618acfindx:
2619 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2620EOF
2621 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2622 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2623 fi
2624 cd ..
2625 rm -fr conftestdir
2626 fi
2627 if test -z "$NARROW_PROTO"; then
2628 AC_MSG_RESULT(no)
2629 else
2630 AC_MSG_RESULT($NARROW_PROTO)
2631 fi
2632 AC_SUBST(NARROW_PROTO)
2633fi
2634
2635dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2636dnl use the X11 include path
2637if test "$enable_xsmp" = "yes"; then
2638 cppflags_save=$CPPFLAGS
2639 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2640 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2641 CPPFLAGS=$cppflags_save
2642fi
2643
2644
Bram Moolenaare667c952010-07-05 22:57:59 +02002645if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002646 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2647 cppflags_save=$CPPFLAGS
2648 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2649 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2650
2651 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2652 if test ! "$enable_xim" = "no"; then
2653 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2654 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2655 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002656 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002657 fi
2658 CPPFLAGS=$cppflags_save
2659
2660 dnl automatically enable XIM when hangul input isn't enabled
2661 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2662 -a "x$GUITYPE" != "xNONE" ; then
2663 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2664 enable_xim="yes"
2665 fi
2666fi
2667
2668if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2669 cppflags_save=$CPPFLAGS
2670 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002671dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2672 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2673 AC_TRY_COMPILE([
2674#include <X11/Intrinsic.h>
2675#include <X11/Xmu/Editres.h>],
2676 [int i; i = 0;],
2677 AC_MSG_RESULT(yes)
2678 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2679 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680 CPPFLAGS=$cppflags_save
2681fi
2682
2683dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2684if test -z "$SKIP_MOTIF"; then
2685 cppflags_save=$CPPFLAGS
2686 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002687 if test "$zOSUnix" = "yes"; then
2688 xmheader="Xm/Xm.h"
2689 else
2690 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002691 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002692 fi
2693 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002694
Bram Moolenaar77c19352012-06-13 19:19:41 +02002695 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002696 dnl Solaris uses XpmAttributes_21, very annoying.
2697 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2698 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2699 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2700 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2701 )
2702 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002703 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002704 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002705 CPPFLAGS=$cppflags_save
2706fi
2707
2708if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2709 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2710 enable_xim="no"
2711fi
2712if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2713 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2714 enable_fontset="no"
2715fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002716if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002717 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2718 enable_fontset="no"
2719fi
2720
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721if test -z "$SKIP_PHOTON"; then
2722 GUITYPE=PHOTONGUI
2723fi
2724
2725AC_SUBST(GUI_INC_LOC)
2726AC_SUBST(GUI_LIB_LOC)
2727AC_SUBST(GUITYPE)
2728AC_SUBST(GUI_X_LIBS)
2729
2730if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2731 AC_MSG_ERROR([cannot use workshop without Motif])
2732fi
2733
2734dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2735if test "$enable_xim" = "yes"; then
2736 AC_DEFINE(FEAT_XIM)
2737fi
2738if test "$enable_fontset" = "yes"; then
2739 AC_DEFINE(FEAT_XFONTSET)
2740fi
2741
2742
2743dnl ---------------------------------------------------------------------------
2744dnl end of GUI-checking
2745dnl ---------------------------------------------------------------------------
2746
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002747dnl Check for Cygwin, which needs an extra source file if not using X11
2748AC_MSG_CHECKING(for CYGWIN environment)
2749case `uname` in
2750 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2751 AC_MSG_CHECKING(for CYGWIN clipboard support)
2752 if test "x$with_x" = "xno" ; then
2753 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2754 AC_MSG_RESULT(yes)
2755 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2756 else
2757 AC_MSG_RESULT(no - using X11)
2758 fi ;;
2759
2760 *) CYGWIN=no; AC_MSG_RESULT(no);;
2761esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762
2763dnl Only really enable hangul input when GUI and XFONTSET are available
2764if test "$enable_hangulinput" = "yes"; then
2765 if test "x$GUITYPE" = "xNONE"; then
2766 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2767 enable_hangulinput=no
2768 else
2769 AC_DEFINE(FEAT_HANGULIN)
2770 HANGULIN_SRC=hangulin.c
2771 AC_SUBST(HANGULIN_SRC)
2772 HANGULIN_OBJ=objects/hangulin.o
2773 AC_SUBST(HANGULIN_OBJ)
2774 fi
2775fi
2776
2777dnl Checks for libraries and include files.
2778
Bram Moolenaar446cb832008-06-24 21:56:24 +00002779AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2780 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002781 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002782#include "confdefs.h"
2783#include <ctype.h>
2784#if STDC_HEADERS
2785# include <stdlib.h>
2786# include <stddef.h>
2787#endif
2788main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002789 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002790 vim_cv_toupper_broken=yes
2791 ],[
2792 vim_cv_toupper_broken=no
2793 ],[
2794 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2795 ])])
2796
2797if test "x$vim_cv_toupper_broken" = "xyes" ; then
2798 AC_DEFINE(BROKEN_TOUPPER)
2799fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002800
2801AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002802AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002803 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2804 AC_MSG_RESULT(no))
2805
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002806AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2807AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2808 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2809 AC_MSG_RESULT(no))
2810
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811dnl Checks for header files.
2812AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2813dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2814if test "$HAS_ELF" = 1; then
2815 AC_CHECK_LIB(elf, main)
2816fi
2817
2818AC_HEADER_DIRENT
2819
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820dnl If sys/wait.h is not found it might still exist but not be POSIX
2821dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2822if test $ac_cv_header_sys_wait_h = no; then
2823 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2824 AC_TRY_COMPILE([#include <sys/wait.h>],
2825 [union wait xx, yy; xx = yy],
2826 AC_MSG_RESULT(yes)
2827 AC_DEFINE(HAVE_SYS_WAIT_H)
2828 AC_DEFINE(HAVE_UNION_WAIT),
2829 AC_MSG_RESULT(no))
2830fi
2831
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002832AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2833 sys/select.h sys/utsname.h termcap.h fcntl.h \
2834 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2835 termio.h iconv.h inttypes.h langinfo.h math.h \
2836 unistd.h stropts.h errno.h sys/resource.h \
2837 sys/systeminfo.h locale.h sys/stream.h termios.h \
2838 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2839 utime.h sys/param.h libintl.h libgen.h \
2840 util/debug.h util/msg18n.h frame.h sys/acl.h \
2841 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002842
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002843dnl sys/ptem.h depends on sys/stream.h on Solaris
2844AC_CHECK_HEADERS(sys/ptem.h, [], [],
2845[#if defined HAVE_SYS_STREAM_H
2846# include <sys/stream.h>
2847#endif])
2848
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002849dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2850AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2851[#if defined HAVE_SYS_PARAM_H
2852# include <sys/param.h>
2853#endif])
2854
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002855
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002856dnl pthread_np.h may exist but can only be used after including pthread.h
2857AC_MSG_CHECKING([for pthread_np.h])
2858AC_TRY_COMPILE([
2859#include <pthread.h>
2860#include <pthread_np.h>],
2861 [int i; i = 0;],
2862 AC_MSG_RESULT(yes)
2863 AC_DEFINE(HAVE_PTHREAD_NP_H),
2864 AC_MSG_RESULT(no))
2865
Bram Moolenaare344bea2005-09-01 20:46:49 +00002866AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002867if test "x$MACOSX" = "xyes"; then
2868 dnl The strings.h file on OS/X contains a warning and nothing useful.
2869 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2870else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002871
2872dnl Check if strings.h and string.h can both be included when defined.
2873AC_MSG_CHECKING([if strings.h can be included after string.h])
2874cppflags_save=$CPPFLAGS
2875CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2876AC_TRY_COMPILE([
2877#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2878# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2879 /* but don't do it on AIX 5.1 (Uribarri) */
2880#endif
2881#ifdef HAVE_XM_XM_H
2882# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2883#endif
2884#ifdef HAVE_STRING_H
2885# include <string.h>
2886#endif
2887#if defined(HAVE_STRINGS_H)
2888# include <strings.h>
2889#endif
2890 ], [int i; i = 0;],
2891 AC_MSG_RESULT(yes),
2892 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2893 AC_MSG_RESULT(no))
2894CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002895fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002896
2897dnl Checks for typedefs, structures, and compiler characteristics.
2898AC_PROG_GCC_TRADITIONAL
2899AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002900AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002901AC_TYPE_MODE_T
2902AC_TYPE_OFF_T
2903AC_TYPE_PID_T
2904AC_TYPE_SIZE_T
2905AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002906AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002907
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908AC_HEADER_TIME
2909AC_CHECK_TYPE(ino_t, long)
2910AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002911AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002912
2913AC_MSG_CHECKING(for rlim_t)
2914if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2915 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2916else
2917 AC_EGREP_CPP(dnl
2918changequote(<<,>>)dnl
2919<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2920changequote([,]),
2921 [
2922#include <sys/types.h>
2923#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002924# include <stdlib.h>
2925# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002926#endif
2927#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002928# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002929#endif
2930 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2931 AC_MSG_RESULT($ac_cv_type_rlim_t)
2932fi
2933if test $ac_cv_type_rlim_t = no; then
2934 cat >> confdefs.h <<\EOF
2935#define rlim_t unsigned long
2936EOF
2937fi
2938
2939AC_MSG_CHECKING(for stack_t)
2940if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2941 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2942else
2943 AC_EGREP_CPP(stack_t,
2944 [
2945#include <sys/types.h>
2946#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002947# include <stdlib.h>
2948# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002949#endif
2950#include <signal.h>
2951 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2952 AC_MSG_RESULT($ac_cv_type_stack_t)
2953fi
2954if test $ac_cv_type_stack_t = no; then
2955 cat >> confdefs.h <<\EOF
2956#define stack_t struct sigaltstack
2957EOF
2958fi
2959
2960dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2961AC_MSG_CHECKING(whether stack_t has an ss_base field)
2962AC_TRY_COMPILE([
2963#include <sys/types.h>
2964#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002965# include <stdlib.h>
2966# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002967#endif
2968#include <signal.h>
2969#include "confdefs.h"
2970 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2971 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2972 AC_MSG_RESULT(no))
2973
2974olibs="$LIBS"
2975AC_MSG_CHECKING(--with-tlib argument)
2976AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2977if test -n "$with_tlib"; then
2978 AC_MSG_RESULT($with_tlib)
2979 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002980 AC_MSG_CHECKING(for linking with $with_tlib library)
2981 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2982 dnl Need to check for tgetent() below.
2983 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002984else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002985 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002986 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2987 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002988 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002989 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002990 dnl Older versions of ncurses have bugs, get a new one!
2991 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002992 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002993 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002994 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2995 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002996 esac
2997 for libname in $tlibs; do
2998 AC_CHECK_LIB(${libname}, tgetent,,)
2999 if test "x$olibs" != "x$LIBS"; then
3000 dnl It's possible that a library is found but it doesn't work
3001 dnl e.g., shared library that cannot be found
3002 dnl compile and run a test program to be sure
3003 AC_TRY_RUN([
3004#ifdef HAVE_TERMCAP_H
3005# include <termcap.h>
3006#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003007#if STDC_HEADERS
3008# include <stdlib.h>
3009# include <stddef.h>
3010#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3012 res="OK", res="FAIL", res="FAIL")
3013 if test "$res" = "OK"; then
3014 break
3015 fi
3016 AC_MSG_RESULT($libname library is not usable)
3017 LIBS="$olibs"
3018 fi
3019 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003020 if test "x$olibs" = "x$LIBS"; then
3021 AC_MSG_RESULT(no terminal library found)
3022 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003023fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003024
3025if test "x$olibs" = "x$LIBS"; then
3026 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003027 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003028 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3029 AC_MSG_RESULT(yes),
3030 AC_MSG_ERROR([NOT FOUND!
3031 You need to install a terminal library; for example ncurses.
3032 Or specify the name of the library with --with-tlib.]))
3033fi
3034
Bram Moolenaar446cb832008-06-24 21:56:24 +00003035AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3036 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003037 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003038#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003039#ifdef HAVE_TERMCAP_H
3040# include <termcap.h>
3041#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003042#ifdef HAVE_STRING_H
3043# include <string.h>
3044#endif
3045#if STDC_HEADERS
3046# include <stdlib.h>
3047# include <stddef.h>
3048#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003049main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003050{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003051 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052 vim_cv_terminfo=no
3053 ],[
3054 vim_cv_terminfo=yes
3055 ],[
3056 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3057 ])
3058 ])
3059
3060if test "x$vim_cv_terminfo" = "xyes" ; then
3061 AC_DEFINE(TERMINFO)
3062fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003063
3064if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003065 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3066 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003067 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003068#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069#ifdef HAVE_TERMCAP_H
3070# include <termcap.h>
3071#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003072#if STDC_HEADERS
3073# include <stdlib.h>
3074# include <stddef.h>
3075#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003076main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003077{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003078 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003079 vim_cv_tgent=zero
3080 ],[
3081 vim_cv_tgent=non-zero
3082 ],[
3083 AC_MSG_ERROR(failed to compile test program.)
3084 ])
3085 ])
3086
3087 if test "x$vim_cv_tgent" = "xzero" ; then
3088 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3089 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003090fi
3091
3092AC_MSG_CHECKING(whether termcap.h contains ospeed)
3093AC_TRY_LINK([
3094#ifdef HAVE_TERMCAP_H
3095# include <termcap.h>
3096#endif
3097 ], [ospeed = 20000],
3098 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3099 [AC_MSG_RESULT(no)
3100 AC_MSG_CHECKING(whether ospeed can be extern)
3101 AC_TRY_LINK([
3102#ifdef HAVE_TERMCAP_H
3103# include <termcap.h>
3104#endif
3105extern short ospeed;
3106 ], [ospeed = 20000],
3107 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3108 AC_MSG_RESULT(no))]
3109 )
3110
3111AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3112AC_TRY_LINK([
3113#ifdef HAVE_TERMCAP_H
3114# include <termcap.h>
3115#endif
3116 ], [if (UP == 0 && BC == 0) PC = 1],
3117 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3118 [AC_MSG_RESULT(no)
3119 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3120 AC_TRY_LINK([
3121#ifdef HAVE_TERMCAP_H
3122# include <termcap.h>
3123#endif
3124extern char *UP, *BC, PC;
3125 ], [if (UP == 0 && BC == 0) PC = 1],
3126 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3127 AC_MSG_RESULT(no))]
3128 )
3129
3130AC_MSG_CHECKING(whether tputs() uses outfuntype)
3131AC_TRY_COMPILE([
3132#ifdef HAVE_TERMCAP_H
3133# include <termcap.h>
3134#endif
3135 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3136 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3137 AC_MSG_RESULT(no))
3138
3139dnl On some SCO machines sys/select redefines struct timeval
3140AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3141AC_TRY_COMPILE([
3142#include <sys/types.h>
3143#include <sys/time.h>
3144#include <sys/select.h>], ,
3145 AC_MSG_RESULT(yes)
3146 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3147 AC_MSG_RESULT(no))
3148
3149dnl AC_DECL_SYS_SIGLIST
3150
3151dnl Checks for pty.c (copied from screen) ==========================
3152AC_MSG_CHECKING(for /dev/ptc)
3153if test -r /dev/ptc; then
3154 AC_DEFINE(HAVE_DEV_PTC)
3155 AC_MSG_RESULT(yes)
3156else
3157 AC_MSG_RESULT(no)
3158fi
3159
3160AC_MSG_CHECKING(for SVR4 ptys)
3161if test -c /dev/ptmx ; then
3162 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3163 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3164 AC_MSG_RESULT(no))
3165else
3166 AC_MSG_RESULT(no)
3167fi
3168
3169AC_MSG_CHECKING(for ptyranges)
3170if test -d /dev/ptym ; then
3171 pdir='/dev/ptym'
3172else
3173 pdir='/dev'
3174fi
3175dnl SCO uses ptyp%d
3176AC_EGREP_CPP(yes,
3177[#ifdef M_UNIX
3178 yes;
3179#endif
3180 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3181dnl if test -c /dev/ptyp19; then
3182dnl ptys=`echo /dev/ptyp??`
3183dnl else
3184dnl ptys=`echo $pdir/pty??`
3185dnl fi
3186if test "$ptys" != "$pdir/pty??" ; then
3187 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3188 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3189 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3190 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3191 AC_MSG_RESULT([$p0 / $p1])
3192else
3193 AC_MSG_RESULT([don't know])
3194fi
3195
3196dnl **** pty mode/group handling ****
3197dnl
3198dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003199rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003200AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3201 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003202 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003203#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003204#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003205#if STDC_HEADERS
3206# include <stdlib.h>
3207# include <stddef.h>
3208#endif
3209#ifdef HAVE_UNISTD_H
3210#include <unistd.h>
3211#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003212#include <sys/stat.h>
3213#include <stdio.h>
3214main()
3215{
3216 struct stat sb;
3217 char *x,*ttyname();
3218 int om, m;
3219 FILE *fp;
3220
3221 if (!(x = ttyname(0))) exit(1);
3222 if (stat(x, &sb)) exit(1);
3223 om = sb.st_mode;
3224 if (om & 002) exit(0);
3225 m = system("mesg y");
3226 if (m == -1 || m == 127) exit(1);
3227 if (stat(x, &sb)) exit(1);
3228 m = sb.st_mode;
3229 if (chmod(x, om)) exit(1);
3230 if (m & 002) exit(0);
3231 if (sb.st_gid == getgid()) exit(1);
3232 if (!(fp=fopen("conftest_grp", "w")))
3233 exit(1);
3234 fprintf(fp, "%d\n", sb.st_gid);
3235 fclose(fp);
3236 exit(0);
3237}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003238 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003239 if test -f conftest_grp; then
3240 vim_cv_tty_group=`cat conftest_grp`
3241 if test "x$vim_cv_tty_mode" = "x" ; then
3242 vim_cv_tty_mode=0620
3243 fi
3244 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3245 else
3246 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003247 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003248 fi
3249 ],[
3250 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003251 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003252 ],[
3253 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3254 ])
3255 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003256rm -f conftest_grp
3257
Bram Moolenaar446cb832008-06-24 21:56:24 +00003258if test "x$vim_cv_tty_group" != "xworld" ; then
3259 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3260 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003261 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 +00003262 else
3263 AC_DEFINE(PTYMODE, 0620)
3264 fi
3265fi
3266
Bram Moolenaar071d4272004-06-13 20:20:40 +00003267dnl Checks for library functions. ===================================
3268
3269AC_TYPE_SIGNAL
3270
3271dnl find out what to use at the end of a signal function
3272if test $ac_cv_type_signal = void; then
3273 AC_DEFINE(SIGRETURN, [return])
3274else
3275 AC_DEFINE(SIGRETURN, [return 0])
3276fi
3277
3278dnl check if struct sigcontext is defined (used for SGI only)
3279AC_MSG_CHECKING(for struct sigcontext)
3280AC_TRY_COMPILE([
3281#include <signal.h>
3282test_sig()
3283{
3284 struct sigcontext *scont;
3285 scont = (struct sigcontext *)0;
3286 return 1;
3287} ], ,
3288 AC_MSG_RESULT(yes)
3289 AC_DEFINE(HAVE_SIGCONTEXT),
3290 AC_MSG_RESULT(no))
3291
3292dnl tricky stuff: try to find out if getcwd() is implemented with
3293dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003294AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3295 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003296 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003297#include "confdefs.h"
3298#ifdef HAVE_UNISTD_H
3299#include <unistd.h>
3300#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003301char *dagger[] = { "IFS=pwd", 0 };
3302main()
3303{
3304 char buffer[500];
3305 extern char **environ;
3306 environ = dagger;
3307 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003308}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003309 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003310 vim_cv_getcwd_broken=no
3311 ],[
3312 vim_cv_getcwd_broken=yes
3313 ],[
3314 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3315 ])
3316 ])
3317
3318if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3319 AC_DEFINE(BAD_GETCWD)
3320fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003321
Bram Moolenaar25153e12010-02-24 14:47:08 +01003322dnl Check for functions in one big call, to reduce the size of configure.
3323dnl Can only be used for functions that do not require any include.
3324AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003325 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003326 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003327 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003328 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003329 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3330 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003331AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003332
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003333dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3334dnl appropriate, so that off_t is 64 bits when needed.
3335AC_SYS_LARGEFILE
3336
Bram Moolenaar071d4272004-06-13 20:20:40 +00003337dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3338AC_MSG_CHECKING(for st_blksize)
3339AC_TRY_COMPILE(
3340[#include <sys/types.h>
3341#include <sys/stat.h>],
3342[ struct stat st;
3343 int n;
3344
3345 stat("/", &st);
3346 n = (int)st.st_blksize;],
3347 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3348 AC_MSG_RESULT(no))
3349
Bram Moolenaar446cb832008-06-24 21:56:24 +00003350AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3351 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003352 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003353#include "confdefs.h"
3354#if STDC_HEADERS
3355# include <stdlib.h>
3356# include <stddef.h>
3357#endif
3358#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003359#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003360main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003361 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003362 vim_cv_stat_ignores_slash=yes
3363 ],[
3364 vim_cv_stat_ignores_slash=no
3365 ],[
3366 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3367 ])
3368 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003369
Bram Moolenaar446cb832008-06-24 21:56:24 +00003370if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3371 AC_DEFINE(STAT_IGNORES_SLASH)
3372fi
3373
Bram Moolenaar071d4272004-06-13 20:20:40 +00003374dnl Link with iconv for charset translation, if not found without library.
3375dnl check for iconv() requires including iconv.h
3376dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3377dnl has been installed.
3378AC_MSG_CHECKING(for iconv_open())
3379save_LIBS="$LIBS"
3380LIBS="$LIBS -liconv"
3381AC_TRY_LINK([
3382#ifdef HAVE_ICONV_H
3383# include <iconv.h>
3384#endif
3385 ], [iconv_open("fr", "to");],
3386 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3387 LIBS="$save_LIBS"
3388 AC_TRY_LINK([
3389#ifdef HAVE_ICONV_H
3390# include <iconv.h>
3391#endif
3392 ], [iconv_open("fr", "to");],
3393 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3394 AC_MSG_RESULT(no)))
3395
3396
3397AC_MSG_CHECKING(for nl_langinfo(CODESET))
3398AC_TRY_LINK([
3399#ifdef HAVE_LANGINFO_H
3400# include <langinfo.h>
3401#endif
3402], [char *cs = nl_langinfo(CODESET);],
3403 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3404 AC_MSG_RESULT(no))
3405
Bram Moolenaar446cb832008-06-24 21:56:24 +00003406dnl Need various functions for floating point support. Only enable
3407dnl floating point when they are all present.
3408AC_CHECK_LIB(m, strtod)
3409AC_MSG_CHECKING([for strtod() and other floating point functions])
3410AC_TRY_LINK([
3411#ifdef HAVE_MATH_H
3412# include <math.h>
3413#endif
3414#if STDC_HEADERS
3415# include <stdlib.h>
3416# include <stddef.h>
3417#endif
3418], [char *s; double d;
3419 d = strtod("1.1", &s);
3420 d = fabs(1.11);
3421 d = ceil(1.11);
3422 d = floor(1.11);
3423 d = log10(1.11);
3424 d = pow(1.11, 2.22);
3425 d = sqrt(1.11);
3426 d = sin(1.11);
3427 d = cos(1.11);
3428 d = atan(1.11);
3429 ],
3430 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3431 AC_MSG_RESULT(no))
3432
Bram Moolenaar071d4272004-06-13 20:20:40 +00003433dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3434dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003435dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003436AC_MSG_CHECKING(--disable-acl argument)
3437AC_ARG_ENABLE(acl,
3438 [ --disable-acl Don't check for ACL support.],
3439 , [enable_acl="yes"])
3440if test "$enable_acl" = "yes"; then
3441AC_MSG_RESULT(no)
3442AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3443 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3444 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3445
3446AC_MSG_CHECKING(for POSIX ACL support)
3447AC_TRY_LINK([
3448#include <sys/types.h>
3449#ifdef HAVE_SYS_ACL_H
3450# include <sys/acl.h>
3451#endif
3452acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3453 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3454 acl_free(acl);],
3455 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3456 AC_MSG_RESULT(no))
3457
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003458AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003459AC_MSG_CHECKING(for Solaris ACL support)
3460AC_TRY_LINK([
3461#ifdef HAVE_SYS_ACL_H
3462# include <sys/acl.h>
3463#endif], [acl("foo", GETACLCNT, 0, NULL);
3464 ],
3465 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003466 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003467
3468AC_MSG_CHECKING(for AIX ACL support)
3469AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003470#if STDC_HEADERS
3471# include <stdlib.h>
3472# include <stddef.h>
3473#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003474#ifdef HAVE_SYS_ACL_H
3475# include <sys/acl.h>
3476#endif
3477#ifdef HAVE_SYS_ACCESS_H
3478# include <sys/access.h>
3479#endif
3480#define _ALL_SOURCE
3481
3482#include <sys/stat.h>
3483
3484int aclsize;
3485struct acl *aclent;], [aclsize = sizeof(struct acl);
3486 aclent = (void *)malloc(aclsize);
3487 statacl("foo", STX_NORMAL, aclent, aclsize);
3488 ],
3489 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3490 AC_MSG_RESULT(no))
3491else
3492 AC_MSG_RESULT(yes)
3493fi
3494
3495AC_MSG_CHECKING(--disable-gpm argument)
3496AC_ARG_ENABLE(gpm,
3497 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3498 [enable_gpm="yes"])
3499
3500if test "$enable_gpm" = "yes"; then
3501 AC_MSG_RESULT(no)
3502 dnl Checking if gpm support can be compiled
3503 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3504 [olibs="$LIBS" ; LIBS="-lgpm"]
3505 AC_TRY_LINK(
3506 [#include <gpm.h>
3507 #include <linux/keyboard.h>],
3508 [Gpm_GetLibVersion(NULL);],
3509 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3510 dnl FEAT_MOUSE_GPM if mouse support is included
3511 [vi_cv_have_gpm=yes],
3512 [vi_cv_have_gpm=no])
3513 [LIBS="$olibs"]
3514 )
3515 if test $vi_cv_have_gpm = yes; then
3516 LIBS="$LIBS -lgpm"
3517 AC_DEFINE(HAVE_GPM)
3518 fi
3519else
3520 AC_MSG_RESULT(yes)
3521fi
3522
Bram Moolenaar446cb832008-06-24 21:56:24 +00003523AC_MSG_CHECKING(--disable-sysmouse argument)
3524AC_ARG_ENABLE(sysmouse,
3525 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3526 [enable_sysmouse="yes"])
3527
3528if test "$enable_sysmouse" = "yes"; then
3529 AC_MSG_RESULT(no)
3530 dnl Checking if sysmouse support can be compiled
3531 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3532 dnl defines FEAT_SYSMOUSE if mouse support is included
3533 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3534 AC_TRY_LINK(
3535 [#include <sys/consio.h>
3536 #include <signal.h>
3537 #include <sys/fbio.h>],
3538 [struct mouse_info mouse;
3539 mouse.operation = MOUSE_MODE;
3540 mouse.operation = MOUSE_SHOW;
3541 mouse.u.mode.mode = 0;
3542 mouse.u.mode.signal = SIGUSR2;],
3543 [vi_cv_have_sysmouse=yes],
3544 [vi_cv_have_sysmouse=no])
3545 )
3546 if test $vi_cv_have_sysmouse = yes; then
3547 AC_DEFINE(HAVE_SYSMOUSE)
3548 fi
3549else
3550 AC_MSG_RESULT(yes)
3551fi
3552
Bram Moolenaarf05da212009-11-17 16:13:15 +00003553dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3554AC_MSG_CHECKING(for FD_CLOEXEC)
3555AC_TRY_COMPILE(
3556[#if HAVE_FCNTL_H
3557# include <fcntl.h>
3558#endif],
3559[ int flag = FD_CLOEXEC;],
3560 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3561 AC_MSG_RESULT(not usable))
3562
Bram Moolenaar071d4272004-06-13 20:20:40 +00003563dnl rename needs to be checked separately to work on Nextstep with cc
3564AC_MSG_CHECKING(for rename)
3565AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3566 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3567 AC_MSG_RESULT(no))
3568
3569dnl sysctl() may exist but not the arguments we use
3570AC_MSG_CHECKING(for sysctl)
3571AC_TRY_COMPILE(
3572[#include <sys/types.h>
3573#include <sys/sysctl.h>],
3574[ int mib[2], r;
3575 size_t len;
3576
3577 mib[0] = CTL_HW;
3578 mib[1] = HW_USERMEM;
3579 len = sizeof(r);
3580 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3581 ],
3582 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3583 AC_MSG_RESULT(not usable))
3584
3585dnl sysinfo() may exist but not be Linux compatible
3586AC_MSG_CHECKING(for sysinfo)
3587AC_TRY_COMPILE(
3588[#include <sys/types.h>
3589#include <sys/sysinfo.h>],
3590[ struct sysinfo sinfo;
3591 int t;
3592
3593 (void)sysinfo(&sinfo);
3594 t = sinfo.totalram;
3595 ],
3596 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3597 AC_MSG_RESULT(not usable))
3598
Bram Moolenaar914572a2007-05-01 11:37:47 +00003599dnl struct sysinfo may have the mem_unit field or not
3600AC_MSG_CHECKING(for sysinfo.mem_unit)
3601AC_TRY_COMPILE(
3602[#include <sys/types.h>
3603#include <sys/sysinfo.h>],
3604[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003605 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003606 ],
3607 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3608 AC_MSG_RESULT(no))
3609
Bram Moolenaar071d4272004-06-13 20:20:40 +00003610dnl sysconf() may exist but not support what we want to use
3611AC_MSG_CHECKING(for sysconf)
3612AC_TRY_COMPILE(
3613[#include <unistd.h>],
3614[ (void)sysconf(_SC_PAGESIZE);
3615 (void)sysconf(_SC_PHYS_PAGES);
3616 ],
3617 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3618 AC_MSG_RESULT(not usable))
3619
Bram Moolenaar914703b2010-05-31 21:59:46 +02003620AC_CHECK_SIZEOF([int])
3621AC_CHECK_SIZEOF([long])
3622AC_CHECK_SIZEOF([time_t])
3623AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003624
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003625dnl Use different names to avoid clashing with other header files.
3626AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3627AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3628
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003629dnl Make sure that uint32_t is really 32 bits unsigned.
3630AC_MSG_CHECKING([uint32_t is 32 bits])
3631AC_TRY_RUN([
3632#ifdef HAVE_STDINT_H
3633# include <stdint.h>
3634#endif
3635#ifdef HAVE_INTTYPES_H
3636# include <inttypes.h>
3637#endif
3638main() {
3639 uint32_t nr1 = (uint32_t)-1;
3640 uint32_t nr2 = (uint32_t)0xffffffffUL;
3641 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3642 exit(0);
3643}],
3644AC_MSG_RESULT(ok),
3645AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003646AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003647
Bram Moolenaar446cb832008-06-24 21:56:24 +00003648dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3649dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3650
Bram Moolenaar071d4272004-06-13 20:20:40 +00003651[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003652#include "confdefs.h"
3653#ifdef HAVE_STRING_H
3654# include <string.h>
3655#endif
3656#if STDC_HEADERS
3657# include <stdlib.h>
3658# include <stddef.h>
3659#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003660main() {
3661 char buf[10];
3662 strcpy(buf, "abcdefghi");
3663 mch_memmove(buf, buf + 2, 3);
3664 if (strncmp(buf, "ababcf", 6))
3665 exit(1);
3666 strcpy(buf, "abcdefghi");
3667 mch_memmove(buf + 2, buf, 3);
3668 if (strncmp(buf, "cdedef", 6))
3669 exit(1);
3670 exit(0); /* libc version works properly. */
3671}']
3672
Bram Moolenaar446cb832008-06-24 21:56:24 +00003673AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3674 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003675 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 +00003676 [
3677 vim_cv_memmove_handles_overlap=yes
3678 ],[
3679 vim_cv_memmove_handles_overlap=no
3680 ],[
3681 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3682 ])
3683 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003684
Bram Moolenaar446cb832008-06-24 21:56:24 +00003685if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3686 AC_DEFINE(USEMEMMOVE)
3687else
3688 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3689 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003690 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 +00003691 [
3692 vim_cv_bcopy_handles_overlap=yes
3693 ],[
3694 vim_cv_bcopy_handles_overlap=no
3695 ],[
3696 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3697 ])
3698 ])
3699
3700 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3701 AC_DEFINE(USEBCOPY)
3702 else
3703 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3704 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003705 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 +00003706 [
3707 vim_cv_memcpy_handles_overlap=yes
3708 ],[
3709 vim_cv_memcpy_handles_overlap=no
3710 ],[
3711 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3712 ])
3713 ])
3714
3715 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3716 AC_DEFINE(USEMEMCPY)
3717 fi
3718 fi
3719fi
3720
Bram Moolenaar071d4272004-06-13 20:20:40 +00003721
3722dnl Check for multibyte locale functions
3723dnl Find out if _Xsetlocale() is supported by libX11.
3724dnl Check if X_LOCALE should be defined.
3725
3726if test "$enable_multibyte" = "yes"; then
3727 cflags_save=$CFLAGS
3728 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003729 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003730 CFLAGS="$CFLAGS -I$x_includes"
3731 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3732 AC_MSG_CHECKING(whether X_LOCALE needed)
3733 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3734 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3735 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3736 AC_MSG_RESULT(no))
3737 fi
3738 CFLAGS=$cflags_save
3739 LDFLAGS=$ldflags_save
3740fi
3741
3742dnl Link with xpg4, it is said to make Korean locale working
3743AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3744
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003745dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003746dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003747dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003748dnl -t for typedefs (many ctags have this)
3749dnl -s for static functions (Elvis ctags only?)
3750dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3751dnl -i+m to test for older Exuberant ctags
3752AC_MSG_CHECKING(how to create tags)
3753test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003754if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003755 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003756elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3757 TAGPRG="exctags -I INIT+ --fields=+S"
3758elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3759 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003760else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003761 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003762 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3763 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3764 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3765 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3766 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3767 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3768 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3769fi
3770test -f tags.save && mv tags.save tags
3771AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3772
3773dnl Check how we can run man with a section number
3774AC_MSG_CHECKING(how to run man with a section nr)
3775MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003776(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 +00003777AC_MSG_RESULT($MANDEF)
3778if test "$MANDEF" = "man -s"; then
3779 AC_DEFINE(USEMAN_S)
3780fi
3781
3782dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003783dnl We take care to base this on an empty LIBS: on some systems libelf would be
3784dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3785dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003786AC_MSG_CHECKING(--disable-nls argument)
3787AC_ARG_ENABLE(nls,
3788 [ --disable-nls Don't support NLS (gettext()).], ,
3789 [enable_nls="yes"])
3790
3791if test "$enable_nls" = "yes"; then
3792 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003793
3794 INSTALL_LANGS=install-languages
3795 AC_SUBST(INSTALL_LANGS)
3796 INSTALL_TOOL_LANGS=install-tool-languages
3797 AC_SUBST(INSTALL_TOOL_LANGS)
3798
Bram Moolenaar071d4272004-06-13 20:20:40 +00003799 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3800 AC_MSG_CHECKING([for NLS])
3801 if test -f po/Makefile; then
3802 have_gettext="no"
3803 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003804 olibs=$LIBS
3805 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003806 AC_TRY_LINK(
3807 [#include <libintl.h>],
3808 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003809 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3810 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003811 AC_TRY_LINK(
3812 [#include <libintl.h>],
3813 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003814 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3815 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003816 AC_MSG_RESULT([gettext() doesn't work]);
3817 LIBS=$olibs))
3818 else
3819 AC_MSG_RESULT([msgfmt not found - disabled]);
3820 fi
3821 if test $have_gettext = "yes"; then
3822 AC_DEFINE(HAVE_GETTEXT)
3823 MAKEMO=yes
3824 AC_SUBST(MAKEMO)
3825 dnl this was added in GNU gettext 0.10.36
3826 AC_CHECK_FUNCS(bind_textdomain_codeset)
3827 dnl _nl_msg_cat_cntr is required for GNU gettext
3828 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3829 AC_TRY_LINK(
3830 [#include <libintl.h>
3831 extern int _nl_msg_cat_cntr;],
3832 [++_nl_msg_cat_cntr;],
3833 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3834 AC_MSG_RESULT([no]))
3835 fi
3836 else
3837 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3838 fi
3839else
3840 AC_MSG_RESULT(yes)
3841fi
3842
3843dnl Check for dynamic linking loader
3844AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3845if test x${DLL} = xdlfcn.h; then
3846 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3847 AC_MSG_CHECKING([for dlopen()])
3848 AC_TRY_LINK(,[
3849 extern void* dlopen();
3850 dlopen();
3851 ],
3852 AC_MSG_RESULT(yes);
3853 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3854 AC_MSG_RESULT(no);
3855 AC_MSG_CHECKING([for dlopen() in -ldl])
3856 olibs=$LIBS
3857 LIBS="$LIBS -ldl"
3858 AC_TRY_LINK(,[
3859 extern void* dlopen();
3860 dlopen();
3861 ],
3862 AC_MSG_RESULT(yes);
3863 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3864 AC_MSG_RESULT(no);
3865 LIBS=$olibs))
3866 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3867 dnl ick :-)
3868 AC_MSG_CHECKING([for dlsym()])
3869 AC_TRY_LINK(,[
3870 extern void* dlsym();
3871 dlsym();
3872 ],
3873 AC_MSG_RESULT(yes);
3874 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3875 AC_MSG_RESULT(no);
3876 AC_MSG_CHECKING([for dlsym() in -ldl])
3877 olibs=$LIBS
3878 LIBS="$LIBS -ldl"
3879 AC_TRY_LINK(,[
3880 extern void* dlsym();
3881 dlsym();
3882 ],
3883 AC_MSG_RESULT(yes);
3884 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3885 AC_MSG_RESULT(no);
3886 LIBS=$olibs))
3887elif test x${DLL} = xdl.h; then
3888 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3889 AC_MSG_CHECKING([for shl_load()])
3890 AC_TRY_LINK(,[
3891 extern void* shl_load();
3892 shl_load();
3893 ],
3894 AC_MSG_RESULT(yes);
3895 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3896 AC_MSG_RESULT(no);
3897 AC_MSG_CHECKING([for shl_load() in -ldld])
3898 olibs=$LIBS
3899 LIBS="$LIBS -ldld"
3900 AC_TRY_LINK(,[
3901 extern void* shl_load();
3902 shl_load();
3903 ],
3904 AC_MSG_RESULT(yes);
3905 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3906 AC_MSG_RESULT(no);
3907 LIBS=$olibs))
3908fi
3909AC_CHECK_HEADERS(setjmp.h)
3910
3911if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3912 dnl -ldl must come after DynaLoader.a
3913 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3914 LIBS=`echo $LIBS | sed s/-ldl//`
3915 PERL_LIBS="$PERL_LIBS -ldl"
3916 fi
3917fi
3918
Bram Moolenaar164fca32010-07-14 13:58:07 +02003919if test "x$MACOSX" = "xyes"; then
3920 AC_MSG_CHECKING(whether we need -framework Cocoa)
3921 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3922 dnl disabled during tiny build)
3923 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3924 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003925 AC_MSG_RESULT(yes)
3926 else
3927 AC_MSG_RESULT(no)
3928 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003929 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3930 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3931 dnl missing Objective-C symbols.
3932 if test "x$features" = "xtiny"; then
3933 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3934 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3935 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003936fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003937if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003938 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003939fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003940
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003941dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3942dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3943dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003944dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3945dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003946DEPEND_CFLAGS_FILTER=
3947if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003948 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003949 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003950 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003951 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003952 AC_MSG_RESULT(yes)
3953 else
3954 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003955 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003956 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3957 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003958 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003959 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003960 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3961 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003962 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 +00003963 AC_MSG_RESULT(yes)
3964 else
3965 AC_MSG_RESULT(no)
3966 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003967fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003968AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003969
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003970dnl link.sh tries to avoid overlinking in a hackish way.
3971dnl At least GNU ld supports --as-needed which provides the same functionality
3972dnl at linker level. Let's use it.
3973AC_MSG_CHECKING(linker --as-needed support)
3974LINK_AS_NEEDED=
3975# Check if linker supports --as-needed and --no-as-needed options
3976if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003977 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003978 LINK_AS_NEEDED=yes
3979fi
3980if test "$LINK_AS_NEEDED" = yes; then
3981 AC_MSG_RESULT(yes)
3982else
3983 AC_MSG_RESULT(no)
3984fi
3985AC_SUBST(LINK_AS_NEEDED)
3986
Bram Moolenaar77c19352012-06-13 19:19:41 +02003987# IBM z/OS reset CFLAGS for config.mk
3988if test "$zOSUnix" = "yes"; then
3989 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3990fi
3991
Bram Moolenaar071d4272004-06-13 20:20:40 +00003992dnl write output files
3993AC_OUTPUT(auto/config.mk:config.mk.in)
3994
3995dnl vim: set sw=2 tw=78 fo+=l: