blob: cf693505a0af8007a5a1eba28a04093dbe35a35e [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020065dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
66dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
67dnl the version number of the clang in use.
68dnl Note that this does not work to get the version of clang 3.1 or 3.2.
69AC_MSG_CHECKING(for recent clang version)
70CLANG_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'`
71if test x"$CLANG_VERSION_STRING" != x"" ; then
72 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
73 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
74 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
75 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
76 AC_MSG_RESULT($CLANG_VERSION)
77 dnl If you find the same issue with versions earlier than 500.2.75,
78 dnl change the constant 500002075 below appropriately. To get the
79 dnl integer corresponding to a version number, refer to the
80 dnl definition of CLANG_VERSION above.
81 if test "$CLANG_VERSION" -ge 500002075 ; then
82 CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
83 fi
84else
85 AC_MSG_RESULT(no)
86fi
87
Bram Moolenaar446cb832008-06-24 21:56:24 +000088dnl If configure thinks we are cross compiling, there might be something
89dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000090if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000091 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000092fi
93
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000094dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
95dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000096test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
97
98if test -f ./toolcheck; then
99 AC_CHECKING(for buggy tools)
100 sh ./toolcheck 1>&AC_FD_MSG
101fi
102
103OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
104
105dnl Check for BeOS, which needs an extra source file
106AC_MSG_CHECKING(for BeOS)
107case `uname` in
108 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
109 BEOS=yes; AC_MSG_RESULT(yes);;
110 *) BEOS=no; AC_MSG_RESULT(no);;
111esac
112
113dnl If QNX is found, assume we don't want to use Xphoton
114dnl unless it was specifically asked for (--with-x)
115AC_MSG_CHECKING(for QNX)
116case `uname` in
117 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
118 test -z "$with_x" && with_x=no
119 QNX=yes; AC_MSG_RESULT(yes);;
120 *) QNX=no; AC_MSG_RESULT(no);;
121esac
122
123dnl Check for Darwin and MacOS X
124dnl We do a check for MacOS X in the very beginning because there
125dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126AC_MSG_CHECKING([for Darwin (Mac OS X)])
127if test "`(uname) 2>/dev/null`" = Darwin; then
128 AC_MSG_RESULT(yes)
129
130 AC_MSG_CHECKING(--disable-darwin argument)
131 AC_ARG_ENABLE(darwin,
132 [ --disable-darwin Disable Darwin (Mac OS X) support.],
133 , [enable_darwin="yes"])
134 if test "$enable_darwin" = "yes"; then
135 AC_MSG_RESULT(no)
136 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200137 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000138 AC_MSG_RESULT(yes)
139 else
140 AC_MSG_RESULT([no, Darwin support disabled])
141 enable_darwin=no
142 fi
143 else
144 AC_MSG_RESULT([yes, Darwin support excluded])
145 fi
146
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000147 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000148 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000149 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000150 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000151
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100152 AC_MSG_CHECKING(--with-developer-dir argument)
153 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
154 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
155 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
156
157 if test "x$DEVELOPER_DIR" = "x"; then
158 AC_PATH_PROG(XCODE_SELECT, xcode-select)
159 if test "x$XCODE_SELECT" != "x"; then
160 AC_MSG_CHECKING(for developer dir using xcode-select)
161 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
162 AC_MSG_RESULT([$DEVELOPER_DIR])
163 else
164 DEVELOPER_DIR=/Developer
165 fi
166 fi
167
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000168 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 AC_MSG_CHECKING(for 10.4 universal SDK)
170 dnl There is a terrible inconsistency (but we appear to get away with it):
171 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
172 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
173 dnl tests using the preprocessor are actually done with the wrong header
174 dnl files. $LDFLAGS is set at the end, because configure uses it together
175 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000176 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000177 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000178 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100179 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000180 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000181 AC_MSG_RESULT(found, will make universal binary),
182
183 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000184 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000185 AC_MSG_CHECKING(if Intel architecture is supported)
186 CPPFLAGS="$CPPFLAGS -arch i386"
187 LDFLAGS="$save_ldflags -arch i386"
188 AC_TRY_LINK([ ], [ ],
189 AC_MSG_RESULT(yes); MACARCH="intel",
190 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000191 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000192 CPPFLAGS="$save_cppflags -arch ppc"
193 LDFLAGS="$save_ldflags -arch ppc"))
194 elif test "x$MACARCH" = "xintel"; then
195 CPPFLAGS="$CPPFLAGS -arch intel"
196 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000197 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000198 CPPFLAGS="$CPPFLAGS -arch ppc"
199 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000200 fi
201
Bram Moolenaar071d4272004-06-13 20:20:40 +0000202 if test "$enable_darwin" = "yes"; then
203 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200204 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000205 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000206 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100207 dnl Removed -no-cpp-precomp, only for very old compilers.
208 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000209
210 dnl If Carbon is found, assume we don't want X11
211 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000212 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
214 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200215 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 +0000216 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 fi
218 fi
219 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000220
Bram Moolenaardb552d602006-03-23 22:59:57 +0000221 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000222 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000223 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000224 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
225 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
226 fi
227
Bram Moolenaar071d4272004-06-13 20:20:40 +0000228else
229 AC_MSG_RESULT(no)
230fi
231
Bram Moolenaar39766a72013-11-03 00:41:00 +0100232dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
233dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100234AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100235
Bram Moolenaar071d4272004-06-13 20:20:40 +0000236AC_SUBST(OS_EXTRA_SRC)
237AC_SUBST(OS_EXTRA_OBJ)
238
239dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
240dnl Only when the directory exists and it wasn't there yet.
241dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000242dnl Skip all of this when cross-compiling.
243if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000244 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000245 have_local_include=''
246 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000247 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
248 --without-local-dir do not search /usr/local for local libraries.], [
249 local_dir="$withval"
250 case "$withval" in
251 */*) ;;
252 no)
253 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200254 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000255 have_local_lib=yes
256 ;;
257 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
258 esac
259 AC_MSG_RESULT($local_dir)
260 ], [
261 local_dir=/usr/local
262 AC_MSG_RESULT(Defaulting to $local_dir)
263 ])
264 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000265 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100266 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
267 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000268 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000269 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000270 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000271 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
272 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 +0000273 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000274 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000275 fi
276 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000277 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
278 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 +0000279 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000280 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000281 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000282 fi
283fi
284
285AC_MSG_CHECKING(--with-vim-name argument)
286AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
287 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000288 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289AC_SUBST(VIMNAME)
290AC_MSG_CHECKING(--with-ex-name argument)
291AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
292 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
293 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
294AC_SUBST(EXNAME)
295AC_MSG_CHECKING(--with-view-name argument)
296AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
297 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
298 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
299AC_SUBST(VIEWNAME)
300
301AC_MSG_CHECKING(--with-global-runtime argument)
302AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
303 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
304 AC_MSG_RESULT(no))
305
306AC_MSG_CHECKING(--with-modified-by argument)
307AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
308 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
309 AC_MSG_RESULT(no))
310
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200311dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312AC_MSG_CHECKING(if character set is EBCDIC)
313AC_TRY_COMPILE([ ],
314[ /* TryCompile function for CharSet.
315 Treat any failure as ASCII for compatibility with existing art.
316 Use compile-time rather than run-time tests for cross-compiler
317 tolerance. */
318#if '0'!=240
319make an error "Character set is not EBCDIC"
320#endif ],
321[ # TryCompile action if true
322cf_cv_ebcdic=yes ],
323[ # TryCompile action if false
324cf_cv_ebcdic=no])
325# end of TryCompile ])
326# end of CacheVal CvEbcdic
327AC_MSG_RESULT($cf_cv_ebcdic)
328case "$cf_cv_ebcdic" in #(vi
329 yes) AC_DEFINE(EBCDIC)
330 line_break='"\\n"'
331 ;;
332 *) line_break='"\\012"';;
333esac
334AC_SUBST(line_break)
335
336if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200337dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200338AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000339case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200340 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341 dnl If using cc the environment variable _CC_CCMODE must be
342 dnl set to "1", so that some compiler extensions are enabled.
343 dnl If using c89 the environment variable is named _CC_C89MODE.
344 dnl Note: compile with c89 never tested.
345 if test "$CC" = "cc"; then
346 ccm="$_CC_CCMODE"
347 ccn="CC"
348 else
349 if test "$CC" = "c89"; then
350 ccm="$_CC_C89MODE"
351 ccn="C89"
352 else
353 ccm=1
354 fi
355 fi
356 if test "$ccm" != "1"; then
357 echo ""
358 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200359 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200360 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000361 echo " Do:"
362 echo " export _CC_${ccn}MODE=1"
363 echo " and then call configure again."
364 echo "------------------------------------------"
365 exit 1
366 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200367 # Set CFLAGS for configure process.
368 # This will be reset later for config.mk.
369 # Use haltonmsg to force error for missing H files.
370 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
371 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000372 AC_MSG_RESULT(yes)
373 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200374 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000375 AC_MSG_RESULT(no)
376 ;;
377esac
378fi
379
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200380dnl Set QUOTESED. Needs additional backslashes on zOS
381if test "$zOSUnix" = "yes"; then
382 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
383else
384 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
385fi
386AC_SUBST(QUOTESED)
387
388
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000389dnl Link with -lselinux for SELinux stuff; if not found
390AC_MSG_CHECKING(--disable-selinux argument)
391AC_ARG_ENABLE(selinux,
392 [ --disable-selinux Don't check for SELinux support.],
393 , enable_selinux="yes")
394if test "$enable_selinux" = "yes"; then
395 AC_MSG_RESULT(no)
396 AC_CHECK_LIB(selinux, is_selinux_enabled,
397 [LIBS="$LIBS -lselinux"
398 AC_DEFINE(HAVE_SELINUX)])
399else
400 AC_MSG_RESULT(yes)
401fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000402
403dnl Check user requested features.
404
405AC_MSG_CHECKING(--with-features argument)
406AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
407 features="$withval"; AC_MSG_RESULT($features),
408 features="normal"; AC_MSG_RESULT(Defaulting to normal))
409
410dovimdiff=""
411dogvimdiff=""
412case "$features" in
413 tiny) AC_DEFINE(FEAT_TINY) ;;
414 small) AC_DEFINE(FEAT_SMALL) ;;
415 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
416 dogvimdiff="installgvimdiff" ;;
417 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
418 dogvimdiff="installgvimdiff" ;;
419 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
420 dogvimdiff="installgvimdiff" ;;
421 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
422esac
423
424AC_SUBST(dovimdiff)
425AC_SUBST(dogvimdiff)
426
427AC_MSG_CHECKING(--with-compiledby argument)
428AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
429 compiledby="$withval"; AC_MSG_RESULT($withval),
430 compiledby=""; AC_MSG_RESULT(no))
431AC_SUBST(compiledby)
432
433AC_MSG_CHECKING(--disable-xsmp argument)
434AC_ARG_ENABLE(xsmp,
435 [ --disable-xsmp Disable XSMP session management],
436 , enable_xsmp="yes")
437
438if test "$enable_xsmp" = "yes"; then
439 AC_MSG_RESULT(no)
440 AC_MSG_CHECKING(--disable-xsmp-interact argument)
441 AC_ARG_ENABLE(xsmp-interact,
442 [ --disable-xsmp-interact Disable XSMP interaction],
443 , enable_xsmp_interact="yes")
444 if test "$enable_xsmp_interact" = "yes"; then
445 AC_MSG_RESULT(no)
446 AC_DEFINE(USE_XSMP_INTERACT)
447 else
448 AC_MSG_RESULT(yes)
449 fi
450else
451 AC_MSG_RESULT(yes)
452fi
453
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200454dnl Check for Lua feature.
455AC_MSG_CHECKING(--enable-luainterp argument)
456AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200457 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200458 [enable_luainterp="no"])
459AC_MSG_RESULT($enable_luainterp)
460
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200461if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200462 dnl -- find the lua executable
463 AC_SUBST(vi_cv_path_lua)
464
465 AC_MSG_CHECKING(--with-lua-prefix argument)
466 AC_ARG_WITH(lua_prefix,
467 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
468 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200470
471 if test "X$with_lua_prefix" != "X"; then
472 vi_cv_path_lua_pfx="$with_lua_prefix"
473 else
474 AC_MSG_CHECKING(LUA_PREFIX environment var)
475 if test "X$LUA_PREFIX" != "X"; then
476 AC_MSG_RESULT("$LUA_PREFIX")
477 vi_cv_path_lua_pfx="$LUA_PREFIX"
478 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200479 AC_MSG_RESULT([not set, default to /usr])
480 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200481 fi
482 fi
483
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200484 AC_MSG_CHECKING(--with-luajit)
485 AC_ARG_WITH(luajit,
486 [ --with-luajit Link with LuaJIT instead of Lua.],
487 [vi_cv_with_luajit="$withval"],
488 [vi_cv_with_luajit="no"])
489 AC_MSG_RESULT($vi_cv_with_luajit)
490
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200491 LUA_INC=
492 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200493 if test "x$vi_cv_with_luajit" != "xno"; then
494 dnl -- try to find LuaJIT executable
495 AC_PATH_PROG(vi_cv_path_luajit, luajit)
496 if test "X$vi_cv_path_luajit" != "X"; then
497 dnl -- find LuaJIT version
498 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100499 [ 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 +0200500 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
501 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
502 vi_cv_path_lua="$vi_cv_path_luajit"
503 vi_cv_version_lua="$vi_cv_version_lua_luajit"
504 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200505 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200506 dnl -- try to find Lua executable
507 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
508 if test "X$vi_cv_path_plain_lua" != "X"; then
509 dnl -- find Lua version
510 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
511 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
512 fi
513 vi_cv_path_lua="$vi_cv_path_plain_lua"
514 vi_cv_version_lua="$vi_cv_version_plain_lua"
515 fi
516 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
517 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
518 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
519 AC_MSG_RESULT(yes)
520 LUA_INC=/luajit-$vi_cv_version_luajit
521 fi
522 fi
523 if test "X$LUA_INC" = "X"; then
524 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
525 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
526 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200527 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200528 AC_MSG_RESULT(no)
529 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
530 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
531 AC_MSG_RESULT(yes)
532 LUA_INC=/lua$vi_cv_version_lua
533 else
534 AC_MSG_RESULT(no)
535 vi_cv_path_lua_pfx=
536 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200537 fi
538 fi
539 fi
540
541 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200542 if test "x$vi_cv_with_luajit" != "xno"; then
543 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
544 if test "X$multiarch" != "X"; then
545 lib_multiarch="lib/${multiarch}"
546 else
547 lib_multiarch="lib"
548 fi
549 if test "X$vi_cv_version_lua" = "X"; then
550 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
551 else
552 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
553 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200554 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200555 if test "X$LUA_INC" != "X"; then
556 dnl Test alternate location using version
557 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
558 else
559 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
560 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200561 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200562 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200563 lua_ok="yes"
564 else
565 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
566 libs_save=$LIBS
567 LIBS="$LIBS $LUA_LIBS"
568 AC_TRY_LINK(,[ ],
569 AC_MSG_RESULT(yes); lua_ok="yes",
570 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
571 LIBS=$libs_save
572 fi
573 if test "x$lua_ok" = "xyes"; then
574 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
575 LUA_SRC="if_lua.c"
576 LUA_OBJ="objects/if_lua.o"
577 LUA_PRO="if_lua.pro"
578 AC_DEFINE(FEAT_LUA)
579 fi
580 if test "$enable_luainterp" = "dynamic"; then
581 if test "x$vi_cv_with_luajit" != "xno"; then
582 luajit="jit"
583 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200584 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
585 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
586 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200587 if test "x$MACOSX" = "xyes"; then
588 ext="dylib"
589 indexes=""
590 else
591 ext="so"
592 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
593 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
594 if test "X$multiarch" != "X"; then
595 lib_multiarch="lib/${multiarch}"
596 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200597 fi
598 dnl Determine the sover for the current version, but fallback to
599 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200600 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200601 for subdir in "${lib_multiarch}" lib64 lib; do
602 if test -z "$subdir"; then
603 continue
604 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200605 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
606 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
607 for i in $indexes ""; do
608 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200609 sover2="$i"
610 break 3
611 fi
612 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100613 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200614 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200615 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200616 if test "X$sover" = "X"; then
617 AC_MSG_RESULT(no)
618 lua_ok="no"
619 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
620 else
621 AC_MSG_RESULT(yes)
622 lua_ok="yes"
623 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
624 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200625 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200626 AC_DEFINE(DYNAMIC_LUA)
627 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200628 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200629 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200630 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
631 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
632 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
633 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
634 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
635 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200636 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200637 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100638 AC_MSG_ERROR([could not configure lua])
639 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200640 AC_SUBST(LUA_SRC)
641 AC_SUBST(LUA_OBJ)
642 AC_SUBST(LUA_PRO)
643 AC_SUBST(LUA_LIBS)
644 AC_SUBST(LUA_CFLAGS)
645fi
646
647
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000648dnl Check for MzScheme feature.
649AC_MSG_CHECKING(--enable-mzschemeinterp argument)
650AC_ARG_ENABLE(mzschemeinterp,
651 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
652 [enable_mzschemeinterp="no"])
653AC_MSG_RESULT($enable_mzschemeinterp)
654
655if test "$enable_mzschemeinterp" = "yes"; then
656 dnl -- find the mzscheme executable
657 AC_SUBST(vi_cv_path_mzscheme)
658
659 AC_MSG_CHECKING(--with-plthome argument)
660 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000661 [ --with-plthome=PLTHOME Use PLTHOME.],
662 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000663 with_plthome="";AC_MSG_RESULT("no"))
664
665 if test "X$with_plthome" != "X"; then
666 vi_cv_path_mzscheme_pfx="$with_plthome"
667 else
668 AC_MSG_CHECKING(PLTHOME environment var)
669 if test "X$PLTHOME" != "X"; then
670 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000671 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000672 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000673 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000674 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000675 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000676
677 dnl resolve symbolic link, the executable is often elsewhere and there
678 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000679 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000680 lsout=`ls -l $vi_cv_path_mzscheme`
681 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
682 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
683 fi
684 fi
685
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000686 if test "X$vi_cv_path_mzscheme" != "X"; then
687 dnl -- find where MzScheme thinks it was installed
688 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000689 dnl different versions of MzScheme differ in command line processing
690 dnl use universal approach
691 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000692 (build-path (call-with-values \
693 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000694 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
695 dnl Remove a trailing slash
696 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
697 sed -e 's+/$++'` ])
698 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000699 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000700 fi
701 fi
702
Bram Moolenaard7afed32007-05-06 13:26:41 +0000703 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000704 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
705 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
706 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000707 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
708 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000709 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000710 AC_MSG_RESULT(no)
711 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000712 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000713 AC_MSG_RESULT(yes)
714 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000715 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000716 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100717 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
718 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000719 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100720 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000721 else
722 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100723 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
724 if test -f /usr/include/plt/scheme.h; then
725 AC_MSG_RESULT(yes)
726 SCHEME_INC=/usr/include/plt
727 else
728 AC_MSG_RESULT(no)
729 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
730 if test -f /usr/include/racket/scheme.h; then
731 AC_MSG_RESULT(yes)
732 SCHEME_INC=/usr/include/racket
733 else
734 AC_MSG_RESULT(no)
735 vi_cv_path_mzscheme_pfx=
736 fi
737 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000738 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000739 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000740 fi
741 fi
742
743 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000744 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100745 MZSCHEME_LIBS="-framework Racket"
746 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000747 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
748 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
749 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100750 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
751 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
752 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
753 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
754 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
755 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000756 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 +0000757 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000758 dnl Using shared objects
759 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
760 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
761 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100762 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
763 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
764 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
765 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
766 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000767 else
768 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
769 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000770 if test "$GCC" = yes; then
771 dnl Make Vim remember the path to the library. For when it's not in
772 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000773 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000774 elif test "`(uname) 2>/dev/null`" = SunOS &&
775 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000776 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000777 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000778 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100779
780 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000781 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100782 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100783 else
784 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100785 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
786 else
787 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
788 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100789 else
790 if test -d $vi_cv_path_mzscheme_pfx/collects; then
791 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
792 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100793 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100794 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000795 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100796 if test "X$SCHEME_COLLECTS" != "X" ; then
797 AC_MSG_RESULT(${SCHEME_COLLECTS})
798 else
799 AC_MSG_RESULT(not found)
800 fi
801
802 AC_MSG_CHECKING(for mzscheme_base.c)
803 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000804 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100805 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
806 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100807 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100808 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100809 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100810 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
811 MZSCHEME_MOD="++lib scheme/base"
812 else
813 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
814 MZSCHEME_EXTRA="mzscheme_base.c"
815 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
816 MZSCHEME_MOD=""
817 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100818 fi
819 fi
820 if test "X$MZSCHEME_EXTRA" != "X" ; then
821 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000822 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
823 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100824 AC_MSG_RESULT(needed)
825 else
826 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000827 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100828
Bram Moolenaar9e902192013-07-17 18:58:11 +0200829 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
830 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
831
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000832 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100833 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200834
835 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
836 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
837 cflags_save=$CFLAGS
838 libs_save=$LIBS
839 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
840 LIBS="$LIBS $MZSCHEME_LIBS"
841 AC_TRY_LINK(,[ ],
842 AC_MSG_RESULT(yes); mzs_ok=yes,
843 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
844 CFLAGS=$cflags_save
845 LIBS=$libs_save
846 if test $mzs_ok = yes; then
847 MZSCHEME_SRC="if_mzsch.c"
848 MZSCHEME_OBJ="objects/if_mzsch.o"
849 MZSCHEME_PRO="if_mzsch.pro"
850 AC_DEFINE(FEAT_MZSCHEME)
851 else
852 MZSCHEME_CFLAGS=
853 MZSCHEME_LIBS=
854 MZSCHEME_EXTRA=
855 MZSCHEME_MZC=
856 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000857 fi
858 AC_SUBST(MZSCHEME_SRC)
859 AC_SUBST(MZSCHEME_OBJ)
860 AC_SUBST(MZSCHEME_PRO)
861 AC_SUBST(MZSCHEME_LIBS)
862 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000863 AC_SUBST(MZSCHEME_EXTRA)
864 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000865fi
866
867
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868AC_MSG_CHECKING(--enable-perlinterp argument)
869AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200870 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000871 [enable_perlinterp="no"])
872AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200873if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000874 AC_SUBST(vi_cv_path_perl)
875 AC_PATH_PROG(vi_cv_path_perl, perl)
876 if test "X$vi_cv_path_perl" != "X"; then
877 AC_MSG_CHECKING(Perl version)
878 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
879 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200880 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000881 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
882 badthreads=no
883 else
884 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
885 eval `$vi_cv_path_perl -V:use5005threads`
886 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
887 badthreads=no
888 else
889 badthreads=yes
890 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
891 fi
892 else
893 badthreads=yes
894 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
895 fi
896 fi
897 if test $badthreads = no; then
898 AC_MSG_RESULT(OK)
899 eval `$vi_cv_path_perl -V:shrpenv`
900 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
901 shrpenv=""
902 fi
903 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
904 AC_SUBST(vi_cv_perllib)
905 dnl Remove "-fno-something", it breaks using cproto.
906 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
907 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
908 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
909 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
910 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
911 -e 's/-bE:perl.exp//' -e 's/-lc //'`
912 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
913 dnl a test in configure may fail because of that.
914 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
915 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
916
917 dnl check that compiling a simple program still works with the flags
918 dnl added for Perl.
919 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
920 cflags_save=$CFLAGS
921 libs_save=$LIBS
922 ldflags_save=$LDFLAGS
923 CFLAGS="$CFLAGS $perlcppflags"
924 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200925 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000926 LDFLAGS="$perlldflags $LDFLAGS"
927 AC_TRY_LINK(,[ ],
928 AC_MSG_RESULT(yes); perl_ok=yes,
929 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
930 CFLAGS=$cflags_save
931 LIBS=$libs_save
932 LDFLAGS=$ldflags_save
933 if test $perl_ok = yes; then
934 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000935 dnl remove -pipe and -Wxxx, it confuses cproto
936 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937 fi
938 if test "X$perlldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200939 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then
940 LDFLAGS="$perlldflags $LDFLAGS"
941 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000942 fi
943 PERL_LIBS=$perllibs
944 PERL_SRC="auto/if_perl.c if_perlsfio.c"
945 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
946 PERL_PRO="if_perl.pro if_perlsfio.pro"
947 AC_DEFINE(FEAT_PERL)
948 fi
949 fi
950 else
951 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
952 fi
953 fi
954
955 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000956 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000957 dir=/System/Library/Perl
958 darwindir=$dir/darwin
959 if test -d $darwindir; then
960 PERL=/usr/bin/perl
961 else
962 dnl Mac OS X 10.3
963 dir=/System/Library/Perl/5.8.1
964 darwindir=$dir/darwin-thread-multi-2level
965 if test -d $darwindir; then
966 PERL=/usr/bin/perl
967 fi
968 fi
969 if test -n "$PERL"; then
970 PERL_DIR="$dir"
971 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
972 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
973 PERL_LIBS="-L$darwindir/CORE -lperl"
974 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200975 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
976 dnl be included if requested by passing --with-mac-arch to
977 dnl configure, so strip these flags first (if present)
978 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
979 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 +0000980 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200981 if test "$enable_perlinterp" = "dynamic"; then
982 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
983 AC_DEFINE(DYNAMIC_PERL)
984 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
985 fi
986 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100987
988 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
989 AC_MSG_ERROR([could not configure perl])
990 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000991fi
992AC_SUBST(shrpenv)
993AC_SUBST(PERL_SRC)
994AC_SUBST(PERL_OBJ)
995AC_SUBST(PERL_PRO)
996AC_SUBST(PERL_CFLAGS)
997AC_SUBST(PERL_LIBS)
998
999AC_MSG_CHECKING(--enable-pythoninterp argument)
1000AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001001 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001002 [enable_pythoninterp="no"])
1003AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001004if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001005 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001006 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001007 if test "X$vi_cv_path_python" != "X"; then
1008
1009 dnl -- get its version number
1010 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1011 [[vi_cv_var_python_version=`
1012 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1013 ]])
1014
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001015 dnl -- it must be at least version 2.3
1016 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001017 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001018 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001019 then
1020 AC_MSG_RESULT(yep)
1021
1022 dnl -- find where python thinks it was installed
1023 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1024 [ vi_cv_path_python_pfx=`
1025 ${vi_cv_path_python} -c \
1026 "import sys; print sys.prefix"` ])
1027
1028 dnl -- and where it thinks it runs
1029 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1030 [ vi_cv_path_python_epfx=`
1031 ${vi_cv_path_python} -c \
1032 "import sys; print sys.exec_prefix"` ])
1033
1034 dnl -- python's internal library path
1035
1036 AC_CACHE_VAL(vi_cv_path_pythonpath,
1037 [ vi_cv_path_pythonpath=`
1038 unset PYTHONPATH;
1039 ${vi_cv_path_python} -c \
1040 "import sys, string; print string.join(sys.path,':')"` ])
1041
1042 dnl -- where the Python implementation library archives are
1043
1044 AC_ARG_WITH(python-config-dir,
1045 [ --with-python-config-dir=PATH Python's config directory],
1046 [ vi_cv_path_python_conf="${withval}" ] )
1047
1048 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1049 [
1050 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001051 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1052 if test -d "$d" && test -f "$d/config.c"; then
1053 vi_cv_path_python_conf="$d"
1054 else
1055 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1056 for subdir in lib64 lib share; do
1057 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1058 if test -d "$d" && test -f "$d/config.c"; then
1059 vi_cv_path_python_conf="$d"
1060 fi
1061 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001062 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001063 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001064 ])
1065
1066 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1067
1068 if test "X$PYTHON_CONFDIR" = "X"; then
1069 AC_MSG_RESULT([can't find it!])
1070 else
1071
1072 dnl -- we need to examine Python's config/Makefile too
1073 dnl see what the interpreter is built from
1074 AC_CACHE_VAL(vi_cv_path_python_plibs,
1075 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001076 pwd=`pwd`
1077 tmp_mkf="$pwd/config-PyMake$$"
1078 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001079__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001080 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001081 @echo "python_LIBS='$(LIBS)'"
1082 @echo "python_SYSLIBS='$(SYSLIBS)'"
1083 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001084 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001085 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001086eof
1087 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001088 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1089 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001090 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1091 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1092 vi_cv_path_python_plibs="-framework Python"
1093 else
1094 if test "${vi_cv_var_python_version}" = "1.4"; then
1095 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1096 else
1097 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1098 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001099 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 +00001100 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1101 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1102 fi
1103 ])
1104
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001105 if test "X$python_DLLLIBRARY" != "X"; then
1106 python_INSTSONAME="$python_DLLLIBRARY"
1107 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001108 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1109 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001110 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 +00001111 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001112 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 +00001113 fi
1114 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001115 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001116 if test "${vi_cv_var_python_version}" = "1.4"; then
1117 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1118 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001119 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 +00001120
1121 dnl On FreeBSD linking with "-pthread" is required to use threads.
1122 dnl _THREAD_SAFE must be used for compiling then.
1123 dnl The "-pthread" is added to $LIBS, so that the following check for
1124 dnl sigaltstack() will look in libc_r (it's there in libc!).
1125 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1126 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1127 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1128 AC_MSG_CHECKING([if -pthread should be used])
1129 threadsafe_flag=
1130 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001131 dnl if test "x$MACOSX" != "xyes"; then
1132 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001133 test "$GCC" = yes && threadsafe_flag="-pthread"
1134 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1135 threadsafe_flag="-D_THREAD_SAFE"
1136 thread_lib="-pthread"
1137 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001138 if test "`(uname) 2>/dev/null`" = SunOS; then
1139 threadsafe_flag="-pthreads"
1140 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001141 fi
1142 libs_save_old=$LIBS
1143 if test -n "$threadsafe_flag"; then
1144 cflags_save=$CFLAGS
1145 CFLAGS="$CFLAGS $threadsafe_flag"
1146 LIBS="$LIBS $thread_lib"
1147 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001148 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001149 AC_MSG_RESULT(no); LIBS=$libs_save_old
1150 )
1151 CFLAGS=$cflags_save
1152 else
1153 AC_MSG_RESULT(no)
1154 fi
1155
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001156 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001157 dnl added for Python.
1158 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1159 cflags_save=$CFLAGS
1160 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001161 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001162 LIBS="$LIBS $PYTHON_LIBS"
1163 AC_TRY_LINK(,[ ],
1164 AC_MSG_RESULT(yes); python_ok=yes,
1165 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1166 CFLAGS=$cflags_save
1167 LIBS=$libs_save
1168 if test $python_ok = yes; then
1169 AC_DEFINE(FEAT_PYTHON)
1170 else
1171 LIBS=$libs_save_old
1172 PYTHON_SRC=
1173 PYTHON_OBJ=
1174 PYTHON_LIBS=
1175 PYTHON_CFLAGS=
1176 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001177 fi
1178 else
1179 AC_MSG_RESULT(too old)
1180 fi
1181 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001182
1183 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1184 AC_MSG_ERROR([could not configure python])
1185 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001186fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001187
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188AC_SUBST(PYTHON_CONFDIR)
1189AC_SUBST(PYTHON_LIBS)
1190AC_SUBST(PYTHON_GETPATH_CFLAGS)
1191AC_SUBST(PYTHON_CFLAGS)
1192AC_SUBST(PYTHON_SRC)
1193AC_SUBST(PYTHON_OBJ)
1194
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001195
1196AC_MSG_CHECKING(--enable-python3interp argument)
1197AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001198 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001199 [enable_python3interp="no"])
1200AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001201if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001202 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001203 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001204 if test "X$vi_cv_path_python3" != "X"; then
1205
1206 dnl -- get its version number
1207 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1208 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001209 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001210 ]])
1211
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001212 dnl -- it must be at least version 3
1213 AC_MSG_CHECKING(Python is 3.0 or better)
1214 if ${vi_cv_path_python3} -c \
1215 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1216 then
1217 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001218
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001219 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1220 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001221 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001222 vi_cv_var_python3_abiflags=
1223 if ${vi_cv_path_python3} -c \
1224 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1225 then
1226 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1227 "import sys; print(sys.abiflags)"`
1228 fi ])
1229
1230 dnl -- find where python3 thinks it was installed
1231 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1232 [ vi_cv_path_python3_pfx=`
1233 ${vi_cv_path_python3} -c \
1234 "import sys; print(sys.prefix)"` ])
1235
1236 dnl -- and where it thinks it runs
1237 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1238 [ vi_cv_path_python3_epfx=`
1239 ${vi_cv_path_python3} -c \
1240 "import sys; print(sys.exec_prefix)"` ])
1241
1242 dnl -- python3's internal library path
1243
1244 AC_CACHE_VAL(vi_cv_path_python3path,
1245 [ vi_cv_path_python3path=`
1246 unset PYTHONPATH;
1247 ${vi_cv_path_python3} -c \
1248 "import sys, string; print(':'.join(sys.path))"` ])
1249
1250 dnl -- where the Python implementation library archives are
1251
1252 AC_ARG_WITH(python3-config-dir,
1253 [ --with-python3-config-dir=PATH Python's config directory],
1254 [ vi_cv_path_python3_conf="${withval}" ] )
1255
1256 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1257 [
1258 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001259 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001260 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1261 if test -d "$d" && test -f "$d/config.c"; then
1262 vi_cv_path_python3_conf="$d"
1263 else
1264 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1265 for subdir in lib64 lib share; do
1266 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1267 if test -d "$d" && test -f "$d/config.c"; then
1268 vi_cv_path_python3_conf="$d"
1269 fi
1270 done
1271 done
1272 fi
1273 ])
1274
1275 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1276
1277 if test "X$PYTHON3_CONFDIR" = "X"; then
1278 AC_MSG_RESULT([can't find it!])
1279 else
1280
1281 dnl -- we need to examine Python's config/Makefile too
1282 dnl see what the interpreter is built from
1283 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1284 [
1285 pwd=`pwd`
1286 tmp_mkf="$pwd/config-PyMake$$"
1287 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001288__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001289 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001290 @echo "python3_LIBS='$(LIBS)'"
1291 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001292 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001293 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001294eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001295 dnl -- delete the lines from make about Entering/Leaving directory
1296 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1297 rm -f -- "${tmp_mkf}"
1298 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1299 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1300 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1301 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1302 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1303 ])
1304
1305 if test "X$python3_DLLLIBRARY" != "X"; then
1306 python3_INSTSONAME="$python3_DLLLIBRARY"
1307 fi
1308 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1309 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001310 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 +02001311 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001312 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 +02001313 fi
1314 PYTHON3_SRC="if_python3.c"
1315 PYTHON3_OBJ="objects/if_python3.o"
1316
1317 dnl On FreeBSD linking with "-pthread" is required to use threads.
1318 dnl _THREAD_SAFE must be used for compiling then.
1319 dnl The "-pthread" is added to $LIBS, so that the following check for
1320 dnl sigaltstack() will look in libc_r (it's there in libc!).
1321 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1322 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1323 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1324 AC_MSG_CHECKING([if -pthread should be used])
1325 threadsafe_flag=
1326 thread_lib=
1327 dnl if test "x$MACOSX" != "xyes"; then
1328 if test "`(uname) 2>/dev/null`" != Darwin; then
1329 test "$GCC" = yes && threadsafe_flag="-pthread"
1330 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1331 threadsafe_flag="-D_THREAD_SAFE"
1332 thread_lib="-pthread"
1333 fi
1334 if test "`(uname) 2>/dev/null`" = SunOS; then
1335 threadsafe_flag="-pthreads"
1336 fi
1337 fi
1338 libs_save_old=$LIBS
1339 if test -n "$threadsafe_flag"; then
1340 cflags_save=$CFLAGS
1341 CFLAGS="$CFLAGS $threadsafe_flag"
1342 LIBS="$LIBS $thread_lib"
1343 AC_TRY_LINK(,[ ],
1344 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1345 AC_MSG_RESULT(no); LIBS=$libs_save_old
1346 )
1347 CFLAGS=$cflags_save
1348 else
1349 AC_MSG_RESULT(no)
1350 fi
1351
1352 dnl check that compiling a simple program still works with the flags
1353 dnl added for Python.
1354 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1355 cflags_save=$CFLAGS
1356 libs_save=$LIBS
1357 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1358 LIBS="$LIBS $PYTHON3_LIBS"
1359 AC_TRY_LINK(,[ ],
1360 AC_MSG_RESULT(yes); python3_ok=yes,
1361 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1362 CFLAGS=$cflags_save
1363 LIBS=$libs_save
1364 if test "$python3_ok" = yes; then
1365 AC_DEFINE(FEAT_PYTHON3)
1366 else
1367 LIBS=$libs_save_old
1368 PYTHON3_SRC=
1369 PYTHON3_OBJ=
1370 PYTHON3_LIBS=
1371 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001372 fi
1373 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001374 else
1375 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001376 fi
1377 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001378 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1379 AC_MSG_ERROR([could not configure python3])
1380 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001381fi
1382
1383AC_SUBST(PYTHON3_CONFDIR)
1384AC_SUBST(PYTHON3_LIBS)
1385AC_SUBST(PYTHON3_CFLAGS)
1386AC_SUBST(PYTHON3_SRC)
1387AC_SUBST(PYTHON3_OBJ)
1388
1389dnl if python2.x and python3.x are enabled one can only link in code
1390dnl with dlopen(), dlsym(), dlclose()
1391if test "$python_ok" = yes && test "$python3_ok" = yes; then
1392 AC_DEFINE(DYNAMIC_PYTHON)
1393 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001394 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001395 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001396 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001397 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001398 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1399 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001400 AC_RUN_IFELSE([
1401 #include <dlfcn.h>
1402 /* If this program fails, then RTLD_GLOBAL is needed.
1403 * RTLD_GLOBAL will be used and then it is not possible to
1404 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001405 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001406 */
1407
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001408 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001409 {
1410 int needed = 0;
1411 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1412 if (pylib != 0)
1413 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001414 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001415 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1416 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1417 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001418 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001419 (*init)();
1420 needed = (*simple)("import termios") == -1;
1421 (*final)();
1422 dlclose(pylib);
1423 }
1424 return !needed;
1425 }
1426
1427 int main(int argc, char** argv)
1428 {
1429 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001430 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001431 not_needed = 1;
1432 return !not_needed;
1433 }],
1434 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001435
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001436 CFLAGS=$cflags_save
1437 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001438
1439 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1440 cflags_save=$CFLAGS
1441 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1442 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001443 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1444 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001445 AC_RUN_IFELSE([
1446 #include <dlfcn.h>
1447 #include <wchar.h>
1448 /* If this program fails, then RTLD_GLOBAL is needed.
1449 * RTLD_GLOBAL will be used and then it is not possible to
1450 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001451 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001452 */
1453
1454 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1455 {
1456 int needed = 0;
1457 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1458 if (pylib != 0)
1459 {
1460 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1461 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1462 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1463 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1464 (*pfx)(prefix);
1465 (*init)();
1466 needed = (*simple)("import termios") == -1;
1467 (*final)();
1468 dlclose(pylib);
1469 }
1470 return !needed;
1471 }
1472
1473 int main(int argc, char** argv)
1474 {
1475 int not_needed = 0;
1476 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1477 not_needed = 1;
1478 return !not_needed;
1479 }],
1480 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1481
1482 CFLAGS=$cflags_save
1483 LDFLAGS=$ldflags_save
1484
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001485 PYTHON_SRC="if_python.c"
1486 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001487 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001488 PYTHON_LIBS=
1489 PYTHON3_SRC="if_python3.c"
1490 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001491 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001492 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001493elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1494 AC_DEFINE(DYNAMIC_PYTHON)
1495 PYTHON_SRC="if_python.c"
1496 PYTHON_OBJ="objects/if_python.o"
1497 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1498 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001499elif test "$python_ok" = yes; then
1500 dnl Check that adding -fPIE works. It may be needed when using a static
1501 dnl Python library.
1502 AC_MSG_CHECKING([if -fPIE can be added for Python])
1503 cflags_save=$CFLAGS
1504 libs_save=$LIBS
1505 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1506 LIBS="$LIBS $PYTHON_LIBS"
1507 AC_TRY_LINK(,[ ],
1508 AC_MSG_RESULT(yes); fpie_ok=yes,
1509 AC_MSG_RESULT(no); fpie_ok=no)
1510 CFLAGS=$cflags_save
1511 LIBS=$libs_save
1512 if test $fpie_ok = yes; then
1513 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1514 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001515elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1516 AC_DEFINE(DYNAMIC_PYTHON3)
1517 PYTHON3_SRC="if_python3.c"
1518 PYTHON3_OBJ="objects/if_python3.o"
1519 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1520 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001521elif test "$python3_ok" = yes; then
1522 dnl Check that adding -fPIE works. It may be needed when using a static
1523 dnl Python library.
1524 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1525 cflags_save=$CFLAGS
1526 libs_save=$LIBS
1527 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1528 LIBS="$LIBS $PYTHON3_LIBS"
1529 AC_TRY_LINK(,[ ],
1530 AC_MSG_RESULT(yes); fpie_ok=yes,
1531 AC_MSG_RESULT(no); fpie_ok=no)
1532 CFLAGS=$cflags_save
1533 LIBS=$libs_save
1534 if test $fpie_ok = yes; then
1535 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1536 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001537fi
1538
Bram Moolenaar071d4272004-06-13 20:20:40 +00001539AC_MSG_CHECKING(--enable-tclinterp argument)
1540AC_ARG_ENABLE(tclinterp,
1541 [ --enable-tclinterp Include Tcl interpreter.], ,
1542 [enable_tclinterp="no"])
1543AC_MSG_RESULT($enable_tclinterp)
1544
1545if test "$enable_tclinterp" = "yes"; then
1546
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001547 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001548 AC_MSG_CHECKING(--with-tclsh argument)
1549 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1550 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001551 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001552 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1553 AC_SUBST(vi_cv_path_tcl)
1554
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001555 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1556 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1557 tclsh_name="tclsh8.4"
1558 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1559 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001560 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001561 tclsh_name="tclsh8.2"
1562 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1563 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001564 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1565 tclsh_name="tclsh8.0"
1566 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1567 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001568 dnl still didn't find it, try without version number
1569 if test "X$vi_cv_path_tcl" = "X"; then
1570 tclsh_name="tclsh"
1571 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1572 fi
1573 if test "X$vi_cv_path_tcl" != "X"; then
1574 AC_MSG_CHECKING(Tcl version)
1575 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1576 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1577 AC_MSG_RESULT($tclver - OK);
1578 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 -`
1579
1580 AC_MSG_CHECKING(for location of Tcl include)
1581 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001582 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 +00001583 else
1584 dnl For Mac OS X 10.3, use the OS-provided framework location
1585 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1586 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001587 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001588 for try in $tclinc; do
1589 if test -f "$try/tcl.h"; then
1590 AC_MSG_RESULT($try/tcl.h)
1591 TCL_INC=$try
1592 break
1593 fi
1594 done
1595 if test -z "$TCL_INC"; then
1596 AC_MSG_RESULT(<not found>)
1597 SKIP_TCL=YES
1598 fi
1599 if test -z "$SKIP_TCL"; then
1600 AC_MSG_CHECKING(for location of tclConfig.sh script)
1601 if test "x$MACOSX" != "xyes"; then
1602 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001603 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001604 else
1605 dnl For Mac OS X 10.3, use the OS-provided framework location
1606 tclcnf="/System/Library/Frameworks/Tcl.framework"
1607 fi
1608 for try in $tclcnf; do
1609 if test -f $try/tclConfig.sh; then
1610 AC_MSG_RESULT($try/tclConfig.sh)
1611 . $try/tclConfig.sh
1612 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1613 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1614 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001615 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001616 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 +00001617 break
1618 fi
1619 done
1620 if test -z "$TCL_LIBS"; then
1621 AC_MSG_RESULT(<not found>)
1622 AC_MSG_CHECKING(for Tcl library by myself)
1623 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001624 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001625 for ext in .so .a ; do
1626 for ver in "" $tclver ; do
1627 for try in $tcllib ; do
1628 trylib=tcl$ver$ext
1629 if test -f $try/lib$trylib ; then
1630 AC_MSG_RESULT($try/lib$trylib)
1631 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1632 if test "`(uname) 2>/dev/null`" = SunOS &&
1633 uname -r | grep '^5' >/dev/null; then
1634 TCL_LIBS="$TCL_LIBS -R $try"
1635 fi
1636 break 3
1637 fi
1638 done
1639 done
1640 done
1641 if test -z "$TCL_LIBS"; then
1642 AC_MSG_RESULT(<not found>)
1643 SKIP_TCL=YES
1644 fi
1645 fi
1646 if test -z "$SKIP_TCL"; then
1647 AC_DEFINE(FEAT_TCL)
1648 TCL_SRC=if_tcl.c
1649 TCL_OBJ=objects/if_tcl.o
1650 TCL_PRO=if_tcl.pro
1651 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1652 fi
1653 fi
1654 else
1655 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1656 fi
1657 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001658 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1659 AC_MSG_ERROR([could not configure Tcl])
1660 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001661fi
1662AC_SUBST(TCL_SRC)
1663AC_SUBST(TCL_OBJ)
1664AC_SUBST(TCL_PRO)
1665AC_SUBST(TCL_CFLAGS)
1666AC_SUBST(TCL_LIBS)
1667
1668AC_MSG_CHECKING(--enable-rubyinterp argument)
1669AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001670 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671 [enable_rubyinterp="no"])
1672AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001673if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001674 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001675 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001676 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1677 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1678 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001679 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001680 if test "X$vi_cv_path_ruby" != "X"; then
1681 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001682 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 +00001683 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001684 AC_MSG_CHECKING(Ruby rbconfig)
1685 ruby_rbconfig="RbConfig"
1686 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1687 ruby_rbconfig="Config"
1688 fi
1689 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001690 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001691 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 +00001692 if test "X$rubyhdrdir" != "X"; then
1693 AC_MSG_RESULT($rubyhdrdir)
1694 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001695 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001696 if test -d "$rubyhdrdir/$rubyarch"; then
1697 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1698 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001699 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001700 if test "X$rubyversion" = "X"; then
1701 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1702 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001703 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001704 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001705 if test "X$rubylibs" != "X"; then
1706 RUBY_LIBS="$rubylibs"
1707 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001708 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1709 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001710 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001711 if test -f "$rubylibdir/$librubya"; then
1712 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001713 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1714 elif test "$librubyarg" = "libruby.a"; then
1715 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1716 librubyarg="-lruby"
1717 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718 fi
1719
1720 if test "X$librubyarg" != "X"; then
1721 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1722 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001723 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001724 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001725 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1726 dnl be included if requested by passing --with-mac-arch to
1727 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001728 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001729 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001730 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1731 LDFLAGS="$rubyldflags $LDFLAGS"
1732 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001733 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001734 fi
1735 RUBY_SRC="if_ruby.c"
1736 RUBY_OBJ="objects/if_ruby.o"
1737 RUBY_PRO="if_ruby.pro"
1738 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001739 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001740 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001741 AC_DEFINE(DYNAMIC_RUBY)
1742 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1743 RUBY_LIBS=
1744 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001746 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001747 fi
1748 else
1749 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1750 fi
1751 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001752
1753 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1754 AC_MSG_ERROR([could not configure Ruby])
1755 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001756fi
1757AC_SUBST(RUBY_SRC)
1758AC_SUBST(RUBY_OBJ)
1759AC_SUBST(RUBY_PRO)
1760AC_SUBST(RUBY_CFLAGS)
1761AC_SUBST(RUBY_LIBS)
1762
1763AC_MSG_CHECKING(--enable-cscope argument)
1764AC_ARG_ENABLE(cscope,
1765 [ --enable-cscope Include cscope interface.], ,
1766 [enable_cscope="no"])
1767AC_MSG_RESULT($enable_cscope)
1768if test "$enable_cscope" = "yes"; then
1769 AC_DEFINE(FEAT_CSCOPE)
1770fi
1771
1772AC_MSG_CHECKING(--enable-workshop argument)
1773AC_ARG_ENABLE(workshop,
1774 [ --enable-workshop Include Sun Visual Workshop support.], ,
1775 [enable_workshop="no"])
1776AC_MSG_RESULT($enable_workshop)
1777if test "$enable_workshop" = "yes"; then
1778 AC_DEFINE(FEAT_SUN_WORKSHOP)
1779 WORKSHOP_SRC="workshop.c integration.c"
1780 AC_SUBST(WORKSHOP_SRC)
1781 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1782 AC_SUBST(WORKSHOP_OBJ)
1783 if test "${enable_gui-xxx}" = xxx; then
1784 enable_gui=motif
1785 fi
1786fi
1787
1788AC_MSG_CHECKING(--disable-netbeans argument)
1789AC_ARG_ENABLE(netbeans,
1790 [ --disable-netbeans Disable NetBeans integration support.],
1791 , [enable_netbeans="yes"])
1792if test "$enable_netbeans" = "yes"; then
1793 AC_MSG_RESULT(no)
1794 dnl On Solaris we need the socket and nsl library.
1795 AC_CHECK_LIB(socket, socket)
1796 AC_CHECK_LIB(nsl, gethostbyname)
1797 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1798 AC_TRY_LINK([
1799#include <stdio.h>
1800#include <stdlib.h>
1801#include <stdarg.h>
1802#include <fcntl.h>
1803#include <netdb.h>
1804#include <netinet/in.h>
1805#include <errno.h>
1806#include <sys/types.h>
1807#include <sys/socket.h>
1808 /* Check bitfields */
1809 struct nbbuf {
1810 unsigned int initDone:1;
1811 ushort signmaplen;
1812 };
1813 ], [
1814 /* Check creating a socket. */
1815 struct sockaddr_in server;
1816 (void)socket(AF_INET, SOCK_STREAM, 0);
1817 (void)htons(100);
1818 (void)gethostbyname("microsoft.com");
1819 if (errno == ECONNREFUSED)
1820 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1821 ],
1822 AC_MSG_RESULT(yes),
1823 AC_MSG_RESULT(no); enable_netbeans="no")
1824else
1825 AC_MSG_RESULT(yes)
1826fi
1827if test "$enable_netbeans" = "yes"; then
1828 AC_DEFINE(FEAT_NETBEANS_INTG)
1829 NETBEANS_SRC="netbeans.c"
1830 AC_SUBST(NETBEANS_SRC)
1831 NETBEANS_OBJ="objects/netbeans.o"
1832 AC_SUBST(NETBEANS_OBJ)
1833fi
1834
1835AC_MSG_CHECKING(--enable-sniff argument)
1836AC_ARG_ENABLE(sniff,
1837 [ --enable-sniff Include Sniff interface.], ,
1838 [enable_sniff="no"])
1839AC_MSG_RESULT($enable_sniff)
1840if test "$enable_sniff" = "yes"; then
1841 AC_DEFINE(FEAT_SNIFF)
1842 SNIFF_SRC="if_sniff.c"
1843 AC_SUBST(SNIFF_SRC)
1844 SNIFF_OBJ="objects/if_sniff.o"
1845 AC_SUBST(SNIFF_OBJ)
1846fi
1847
1848AC_MSG_CHECKING(--enable-multibyte argument)
1849AC_ARG_ENABLE(multibyte,
1850 [ --enable-multibyte Include multibyte editing support.], ,
1851 [enable_multibyte="no"])
1852AC_MSG_RESULT($enable_multibyte)
1853if test "$enable_multibyte" = "yes"; then
1854 AC_DEFINE(FEAT_MBYTE)
1855fi
1856
1857AC_MSG_CHECKING(--enable-hangulinput argument)
1858AC_ARG_ENABLE(hangulinput,
1859 [ --enable-hangulinput Include Hangul input support.], ,
1860 [enable_hangulinput="no"])
1861AC_MSG_RESULT($enable_hangulinput)
1862
1863AC_MSG_CHECKING(--enable-xim argument)
1864AC_ARG_ENABLE(xim,
1865 [ --enable-xim Include XIM input support.],
1866 AC_MSG_RESULT($enable_xim),
1867 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001868
1869AC_MSG_CHECKING(--enable-fontset argument)
1870AC_ARG_ENABLE(fontset,
1871 [ --enable-fontset Include X fontset output support.], ,
1872 [enable_fontset="no"])
1873AC_MSG_RESULT($enable_fontset)
1874dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1875
1876test -z "$with_x" && with_x=yes
1877test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1878if test "$with_x" = no; then
1879 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1880else
1881 dnl Do this check early, so that its failure can override user requests.
1882
1883 AC_PATH_PROG(xmkmfpath, xmkmf)
1884
1885 AC_PATH_XTRA
1886
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001887 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001888 dnl be compiled with a special option.
1889 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001890 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001891 CFLAGS="$CFLAGS -W c,dll"
1892 LDFLAGS="$LDFLAGS -W l,dll"
1893 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1894 fi
1895
1896 dnl On my HPUX system the X include dir is found, but the lib dir not.
1897 dnl This is a desparate try to fix this.
1898
1899 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1900 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1901 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1902 X_LIBS="$X_LIBS -L$x_libraries"
1903 if test "`(uname) 2>/dev/null`" = SunOS &&
1904 uname -r | grep '^5' >/dev/null; then
1905 X_LIBS="$X_LIBS -R $x_libraries"
1906 fi
1907 fi
1908
1909 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1910 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1911 AC_MSG_RESULT(Corrected X includes to $x_includes)
1912 X_CFLAGS="$X_CFLAGS -I$x_includes"
1913 fi
1914
1915 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1916 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1917 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1918 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1919 dnl Same for "-R/usr/lib ".
1920 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1921
1922
1923 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001924 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1925 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001926 AC_MSG_CHECKING(if X11 header files can be found)
1927 cflags_save=$CFLAGS
1928 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001929 AC_TRY_COMPILE([#include <X11/Xlib.h>
1930#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001931 AC_MSG_RESULT(yes),
1932 AC_MSG_RESULT(no); no_x=yes)
1933 CFLAGS=$cflags_save
1934
1935 if test "${no_x-no}" = yes; then
1936 with_x=no
1937 else
1938 AC_DEFINE(HAVE_X11)
1939 X_LIB="-lXt -lX11";
1940 AC_SUBST(X_LIB)
1941
1942 ac_save_LDFLAGS="$LDFLAGS"
1943 LDFLAGS="-L$x_libraries $LDFLAGS"
1944
1945 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1946 dnl For HP-UX 10.20 it must be before -lSM -lICE
1947 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1948 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1949
1950 dnl Some systems need -lnsl -lsocket when testing for ICE.
1951 dnl The check above doesn't do this, try here (again). Also needed to get
1952 dnl them after Xdmcp. link.sh will remove them when not needed.
1953 dnl Check for other function than above to avoid the cached value
1954 AC_CHECK_LIB(ICE, IceOpenConnection,
1955 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1956
1957 dnl Check for -lXpm (needed for some versions of Motif)
1958 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1959 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1960 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1961
1962 dnl Check that the X11 header files don't use implicit declarations
1963 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1964 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001965 dnl -Werror is GCC only, others like Solaris Studio might not like it
1966 if test "$GCC" = yes; then
1967 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1968 else
1969 CFLAGS="$CFLAGS $X_CFLAGS"
1970 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001971 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1972 AC_MSG_RESULT(no),
1973 CFLAGS="$CFLAGS -Wno-implicit-int"
1974 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1975 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1976 AC_MSG_RESULT(test failed)
1977 )
1978 )
1979 CFLAGS=$cflags_save
1980
1981 LDFLAGS="$ac_save_LDFLAGS"
1982
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001983 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1984 AC_CACHE_VAL(ac_cv_small_wchar_t,
1985 [AC_TRY_RUN([
1986#include <X11/Xlib.h>
1987#if STDC_HEADERS
1988# include <stdlib.h>
1989# include <stddef.h>
1990#endif
1991 main()
1992 {
1993 if (sizeof(wchar_t) <= 2)
1994 exit(1);
1995 exit(0);
1996 }],
1997 ac_cv_small_wchar_t="no",
1998 ac_cv_small_wchar_t="yes",
1999 AC_MSG_ERROR(failed to compile test program))])
2000 AC_MSG_RESULT($ac_cv_small_wchar_t)
2001 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2002 AC_DEFINE(SMALL_WCHAR_T)
2003 fi
2004
Bram Moolenaar071d4272004-06-13 20:20:40 +00002005 fi
2006fi
2007
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002008test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002009
2010AC_MSG_CHECKING(--enable-gui argument)
2011AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002012 [ --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 +00002013
2014dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2015dnl Do not use character classes for portability with old tools.
2016enable_gui_canon=`echo "_$enable_gui" | \
2017 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2018
2019dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002020SKIP_GTK2=YES
2021SKIP_GNOME=YES
2022SKIP_MOTIF=YES
2023SKIP_ATHENA=YES
2024SKIP_NEXTAW=YES
2025SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026SKIP_CARBON=YES
2027GUITYPE=NONE
2028
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002029if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002030 SKIP_PHOTON=
2031 case "$enable_gui_canon" in
2032 no) AC_MSG_RESULT(no GUI support)
2033 SKIP_PHOTON=YES ;;
2034 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2035 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2036 photon) AC_MSG_RESULT(Photon GUI support) ;;
2037 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2038 SKIP_PHOTON=YES ;;
2039 esac
2040
2041elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2042 SKIP_CARBON=
2043 case "$enable_gui_canon" in
2044 no) AC_MSG_RESULT(no GUI support)
2045 SKIP_CARBON=YES ;;
2046 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002047 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2048 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002049 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2050 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2051 SKIP_CARBON=YES ;;
2052 esac
2053
2054else
2055
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056 case "$enable_gui_canon" in
2057 no|none) AC_MSG_RESULT(no GUI support) ;;
2058 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002059 SKIP_GTK2=
2060 SKIP_GNOME=
2061 SKIP_MOTIF=
2062 SKIP_ATHENA=
2063 SKIP_NEXTAW=
2064 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002065 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002066 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002067 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2068 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002069 SKIP_GTK2=;;
2070 motif) AC_MSG_RESULT(Motif GUI support)
2071 SKIP_MOTIF=;;
2072 athena) AC_MSG_RESULT(Athena GUI support)
2073 SKIP_ATHENA=;;
2074 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2075 SKIP_NEXTAW=;;
2076 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2077 esac
2078
2079fi
2080
Bram Moolenaar071d4272004-06-13 20:20:40 +00002081if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2082 -a "$enable_gui_canon" != "gnome2"; then
2083 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2084 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002085 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002086 , enable_gtk2_check="yes")
2087 AC_MSG_RESULT($enable_gtk2_check)
2088 if test "x$enable_gtk2_check" = "xno"; then
2089 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002090 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002091 fi
2092fi
2093
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002094if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002095 AC_MSG_CHECKING(whether or not to look for GNOME)
2096 AC_ARG_ENABLE(gnome-check,
2097 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2098 , enable_gnome_check="no")
2099 AC_MSG_RESULT($enable_gnome_check)
2100 if test "x$enable_gnome_check" = "xno"; then
2101 SKIP_GNOME=YES
2102 fi
2103fi
2104
2105if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2106 AC_MSG_CHECKING(whether or not to look for Motif)
2107 AC_ARG_ENABLE(motif-check,
2108 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2109 , enable_motif_check="yes")
2110 AC_MSG_RESULT($enable_motif_check)
2111 if test "x$enable_motif_check" = "xno"; then
2112 SKIP_MOTIF=YES
2113 fi
2114fi
2115
2116if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2117 AC_MSG_CHECKING(whether or not to look for Athena)
2118 AC_ARG_ENABLE(athena-check,
2119 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2120 , enable_athena_check="yes")
2121 AC_MSG_RESULT($enable_athena_check)
2122 if test "x$enable_athena_check" = "xno"; then
2123 SKIP_ATHENA=YES
2124 fi
2125fi
2126
2127if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2128 AC_MSG_CHECKING(whether or not to look for neXtaw)
2129 AC_ARG_ENABLE(nextaw-check,
2130 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2131 , enable_nextaw_check="yes")
2132 AC_MSG_RESULT($enable_nextaw_check);
2133 if test "x$enable_nextaw_check" = "xno"; then
2134 SKIP_NEXTAW=YES
2135 fi
2136fi
2137
2138if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2139 AC_MSG_CHECKING(whether or not to look for Carbon)
2140 AC_ARG_ENABLE(carbon-check,
2141 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2142 , enable_carbon_check="yes")
2143 AC_MSG_RESULT($enable_carbon_check);
2144 if test "x$enable_carbon_check" = "xno"; then
2145 SKIP_CARBON=YES
2146 fi
2147fi
2148
Bram Moolenaar843ee412004-06-30 16:16:41 +00002149
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2151 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002152 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 AC_MSG_RESULT(yes);
2154 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002155 if test "$VIMNAME" = "vim"; then
2156 VIMNAME=Vim
2157 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002158
Bram Moolenaar164fca32010-07-14 13:58:07 +02002159 if test "x$MACARCH" = "xboth"; then
2160 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2161 else
2162 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2163 fi
2164
Bram Moolenaar14716812006-05-04 21:54:08 +00002165 dnl Default install directory is not /usr/local
2166 if test x$prefix = xNONE; then
2167 prefix=/Applications
2168 fi
2169
2170 dnl Sorry for the hard coded default
2171 datadir='${prefix}/Vim.app/Contents/Resources'
2172
Bram Moolenaar071d4272004-06-13 20:20:40 +00002173 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002174 SKIP_GTK2=YES;
2175 SKIP_GNOME=YES;
2176 SKIP_MOTIF=YES;
2177 SKIP_ATHENA=YES;
2178 SKIP_NEXTAW=YES;
2179 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002180 SKIP_CARBON=YES
2181fi
2182
Bram Moolenaar071d4272004-06-13 20:20:40 +00002183dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002184dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002185dnl
2186dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002187dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002188dnl
2189AC_DEFUN(AM_PATH_GTK,
2190[
2191 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2192 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002193 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002194 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2195 no_gtk=""
2196 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2197 && $PKG_CONFIG --exists gtk+-2.0; then
2198 {
2199 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2200 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2201 dnl something like that.
2202 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002203 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002204 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2205 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2206 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2207 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2208 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2209 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2210 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2211 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002212 else
2213 no_gtk=yes
2214 fi
2215
2216 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2217 {
2218 ac_save_CFLAGS="$CFLAGS"
2219 ac_save_LIBS="$LIBS"
2220 CFLAGS="$CFLAGS $GTK_CFLAGS"
2221 LIBS="$LIBS $GTK_LIBS"
2222
2223 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002224 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002225 dnl
2226 rm -f conf.gtktest
2227 AC_TRY_RUN([
2228#include <gtk/gtk.h>
2229#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002230#if STDC_HEADERS
2231# include <stdlib.h>
2232# include <stddef.h>
2233#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002234
2235int
2236main ()
2237{
2238int major, minor, micro;
2239char *tmp_version;
2240
2241system ("touch conf.gtktest");
2242
2243/* HP/UX 9 (%@#!) writes to sscanf strings */
2244tmp_version = g_strdup("$min_gtk_version");
2245if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2246 printf("%s, bad version string\n", "$min_gtk_version");
2247 exit(1);
2248 }
2249
2250if ((gtk_major_version > major) ||
2251 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2252 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2253 (gtk_micro_version >= micro)))
2254{
2255 return 0;
2256}
2257return 1;
2258}
2259],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2260 CFLAGS="$ac_save_CFLAGS"
2261 LIBS="$ac_save_LIBS"
2262 }
2263 fi
2264 if test "x$no_gtk" = x ; then
2265 if test "x$enable_gtktest" = "xyes"; then
2266 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2267 else
2268 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2269 fi
2270 ifelse([$2], , :, [$2])
2271 else
2272 {
2273 AC_MSG_RESULT(no)
2274 GTK_CFLAGS=""
2275 GTK_LIBS=""
2276 ifelse([$3], , :, [$3])
2277 }
2278 fi
2279 }
2280 else
2281 GTK_CFLAGS=""
2282 GTK_LIBS=""
2283 ifelse([$3], , :, [$3])
2284 fi
2285 AC_SUBST(GTK_CFLAGS)
2286 AC_SUBST(GTK_LIBS)
2287 rm -f conf.gtktest
2288])
2289
2290dnl ---------------------------------------------------------------------------
2291dnl gnome
2292dnl ---------------------------------------------------------------------------
2293AC_DEFUN([GNOME_INIT_HOOK],
2294[
2295 AC_SUBST(GNOME_LIBS)
2296 AC_SUBST(GNOME_LIBDIR)
2297 AC_SUBST(GNOME_INCLUDEDIR)
2298
2299 AC_ARG_WITH(gnome-includes,
2300 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2301 [CFLAGS="$CFLAGS -I$withval"]
2302 )
2303
2304 AC_ARG_WITH(gnome-libs,
2305 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2306 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2307 )
2308
2309 AC_ARG_WITH(gnome,
2310 [ --with-gnome Specify prefix for GNOME files],
2311 if test x$withval = xyes; then
2312 want_gnome=yes
2313 ifelse([$1], [], :, [$1])
2314 else
2315 if test "x$withval" = xno; then
2316 want_gnome=no
2317 else
2318 want_gnome=yes
2319 LDFLAGS="$LDFLAGS -L$withval/lib"
2320 CFLAGS="$CFLAGS -I$withval/include"
2321 gnome_prefix=$withval/lib
2322 fi
2323 fi,
2324 want_gnome=yes)
2325
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002326 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002327 {
2328 AC_MSG_CHECKING(for libgnomeui-2.0)
2329 if $PKG_CONFIG --exists libgnomeui-2.0; then
2330 AC_MSG_RESULT(yes)
2331 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2332 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2333 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002334
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002335 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2336 dnl This might not be the right way but it works for me...
2337 AC_MSG_CHECKING(for FreeBSD)
2338 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2339 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002340 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002341 GNOME_LIBS="$GNOME_LIBS -pthread"
2342 else
2343 AC_MSG_RESULT(no)
2344 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002345 $1
2346 else
2347 AC_MSG_RESULT(not found)
2348 if test "x$2" = xfail; then
2349 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2350 fi
2351 fi
2352 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002353 fi
2354])
2355
2356AC_DEFUN([GNOME_INIT],[
2357 GNOME_INIT_HOOK([],fail)
2358])
2359
2360
2361dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002362dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002363dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002364if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002365
2366 AC_MSG_CHECKING(--disable-gtktest argument)
2367 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2368 , enable_gtktest=yes)
2369 if test "x$enable_gtktest" = "xyes" ; then
2370 AC_MSG_RESULT(gtk test enabled)
2371 else
2372 AC_MSG_RESULT(gtk test disabled)
2373 fi
2374
Bram Moolenaar071d4272004-06-13 20:20:40 +00002375 if test "X$PKG_CONFIG" = "X"; then
2376 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2377 fi
2378
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002379 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002380 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2381 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002382 AM_PATH_GTK(2.2.0,
2383 [GUI_LIB_LOC="$GTK_LIBDIR"
2384 GTK_LIBNAME="$GTK_LIBS"
2385 GUI_INC_LOC="$GTK_CFLAGS"], )
2386 if test "x$GTK_CFLAGS" != "x"; then
2387 SKIP_ATHENA=YES
2388 SKIP_NEXTAW=YES
2389 SKIP_MOTIF=YES
2390 GUITYPE=GTK
2391 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002392 fi
2393 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002394 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002395 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2396 || test "0$gtk_minor_version" -ge 2; then
2397 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2398 fi
2399 dnl
2400 dnl if GTK exists, then check for GNOME.
2401 dnl
2402 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002403 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002404 GNOME_INIT_HOOK([have_gnome=yes])
2405 if test "x$have_gnome" = xyes ; then
2406 AC_DEFINE(FEAT_GUI_GNOME)
2407 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2408 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002409 fi
2410 }
2411 fi
2412 fi
2413fi
2414
2415dnl Check for Motif include files location.
2416dnl The LAST one found is used, this makes the highest version to be used,
2417dnl e.g. when Motif1.2 and Motif2.0 are both present.
2418
2419if test -z "$SKIP_MOTIF"; then
2420 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"
2421 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2422 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2423
2424 AC_MSG_CHECKING(for location of Motif GUI includes)
2425 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2426 GUI_INC_LOC=
2427 for try in $gui_includes; do
2428 if test -f "$try/Xm/Xm.h"; then
2429 GUI_INC_LOC=$try
2430 fi
2431 done
2432 if test -n "$GUI_INC_LOC"; then
2433 if test "$GUI_INC_LOC" = /usr/include; then
2434 GUI_INC_LOC=
2435 AC_MSG_RESULT(in default path)
2436 else
2437 AC_MSG_RESULT($GUI_INC_LOC)
2438 fi
2439 else
2440 AC_MSG_RESULT(<not found>)
2441 SKIP_MOTIF=YES
2442 fi
2443fi
2444
2445dnl Check for Motif library files location. In the same order as the include
2446dnl files, to avoid a mixup if several versions are present
2447
2448if test -z "$SKIP_MOTIF"; then
2449 AC_MSG_CHECKING(--with-motif-lib argument)
2450 AC_ARG_WITH(motif-lib,
2451 [ --with-motif-lib=STRING Library for Motif ],
2452 [ MOTIF_LIBNAME="${withval}" ] )
2453
2454 if test -n "$MOTIF_LIBNAME"; then
2455 AC_MSG_RESULT($MOTIF_LIBNAME)
2456 GUI_LIB_LOC=
2457 else
2458 AC_MSG_RESULT(no)
2459
2460 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2461 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2462
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002463 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2464 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002465 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002466 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 +00002467 GUI_LIB_LOC=
2468 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002469 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002470 if test -f "$libtry"; then
2471 GUI_LIB_LOC=$try
2472 fi
2473 done
2474 done
2475 if test -n "$GUI_LIB_LOC"; then
2476 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002477 if test "$GUI_LIB_LOC" = /usr/lib \
2478 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2479 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480 GUI_LIB_LOC=
2481 AC_MSG_RESULT(in default path)
2482 else
2483 if test -n "$GUI_LIB_LOC"; then
2484 AC_MSG_RESULT($GUI_LIB_LOC)
2485 if test "`(uname) 2>/dev/null`" = SunOS &&
2486 uname -r | grep '^5' >/dev/null; then
2487 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2488 fi
2489 fi
2490 fi
2491 MOTIF_LIBNAME=-lXm
2492 else
2493 AC_MSG_RESULT(<not found>)
2494 SKIP_MOTIF=YES
2495 fi
2496 fi
2497fi
2498
2499if test -z "$SKIP_MOTIF"; then
2500 SKIP_ATHENA=YES
2501 SKIP_NEXTAW=YES
2502 GUITYPE=MOTIF
2503 AC_SUBST(MOTIF_LIBNAME)
2504fi
2505
2506dnl Check if the Athena files can be found
2507
2508GUI_X_LIBS=
2509
2510if test -z "$SKIP_ATHENA"; then
2511 AC_MSG_CHECKING(if Athena header files can be found)
2512 cflags_save=$CFLAGS
2513 CFLAGS="$CFLAGS $X_CFLAGS"
2514 AC_TRY_COMPILE([
2515#include <X11/Intrinsic.h>
2516#include <X11/Xaw/Paned.h>], ,
2517 AC_MSG_RESULT(yes),
2518 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2519 CFLAGS=$cflags_save
2520fi
2521
2522if test -z "$SKIP_ATHENA"; then
2523 GUITYPE=ATHENA
2524fi
2525
2526if test -z "$SKIP_NEXTAW"; then
2527 AC_MSG_CHECKING(if neXtaw header files can be found)
2528 cflags_save=$CFLAGS
2529 CFLAGS="$CFLAGS $X_CFLAGS"
2530 AC_TRY_COMPILE([
2531#include <X11/Intrinsic.h>
2532#include <X11/neXtaw/Paned.h>], ,
2533 AC_MSG_RESULT(yes),
2534 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2535 CFLAGS=$cflags_save
2536fi
2537
2538if test -z "$SKIP_NEXTAW"; then
2539 GUITYPE=NEXTAW
2540fi
2541
2542if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2543 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2544 dnl Avoid adding it when it twice
2545 if test -n "$GUI_INC_LOC"; then
2546 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2547 fi
2548 if test -n "$GUI_LIB_LOC"; then
2549 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2550 fi
2551
2552 dnl Check for -lXext and then for -lXmu
2553 ldflags_save=$LDFLAGS
2554 LDFLAGS="$X_LIBS $LDFLAGS"
2555 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2556 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2557 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2558 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2559 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2560 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2561 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2562 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2563 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2564 if test -z "$SKIP_MOTIF"; then
2565 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2566 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2567 fi
2568 LDFLAGS=$ldflags_save
2569
2570 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2571 AC_MSG_CHECKING(for extra X11 defines)
2572 NARROW_PROTO=
2573 rm -fr conftestdir
2574 if mkdir conftestdir; then
2575 cd conftestdir
2576 cat > Imakefile <<'EOF'
2577acfindx:
2578 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2579EOF
2580 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2581 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2582 fi
2583 cd ..
2584 rm -fr conftestdir
2585 fi
2586 if test -z "$NARROW_PROTO"; then
2587 AC_MSG_RESULT(no)
2588 else
2589 AC_MSG_RESULT($NARROW_PROTO)
2590 fi
2591 AC_SUBST(NARROW_PROTO)
2592fi
2593
2594dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2595dnl use the X11 include path
2596if test "$enable_xsmp" = "yes"; then
2597 cppflags_save=$CPPFLAGS
2598 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2599 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2600 CPPFLAGS=$cppflags_save
2601fi
2602
2603
Bram Moolenaare667c952010-07-05 22:57:59 +02002604if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002605 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2606 cppflags_save=$CPPFLAGS
2607 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2608 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2609
2610 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2611 if test ! "$enable_xim" = "no"; then
2612 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2613 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2614 AC_MSG_RESULT(yes),
2615 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2616 fi
2617 CPPFLAGS=$cppflags_save
2618
2619 dnl automatically enable XIM when hangul input isn't enabled
2620 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2621 -a "x$GUITYPE" != "xNONE" ; then
2622 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2623 enable_xim="yes"
2624 fi
2625fi
2626
2627if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2628 cppflags_save=$CPPFLAGS
2629 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002630dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2631 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2632 AC_TRY_COMPILE([
2633#include <X11/Intrinsic.h>
2634#include <X11/Xmu/Editres.h>],
2635 [int i; i = 0;],
2636 AC_MSG_RESULT(yes)
2637 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2638 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639 CPPFLAGS=$cppflags_save
2640fi
2641
2642dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2643if test -z "$SKIP_MOTIF"; then
2644 cppflags_save=$CPPFLAGS
2645 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002646 if test "$zOSUnix" = "yes"; then
2647 xmheader="Xm/Xm.h"
2648 else
2649 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002650 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002651 fi
2652 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002653
Bram Moolenaar77c19352012-06-13 19:19:41 +02002654 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002655 dnl Solaris uses XpmAttributes_21, very annoying.
2656 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2657 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2658 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2659 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2660 )
2661 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002662 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002663 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002664 CPPFLAGS=$cppflags_save
2665fi
2666
2667if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2668 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2669 enable_xim="no"
2670fi
2671if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2672 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2673 enable_fontset="no"
2674fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002675if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002676 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2677 enable_fontset="no"
2678fi
2679
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680if test -z "$SKIP_PHOTON"; then
2681 GUITYPE=PHOTONGUI
2682fi
2683
2684AC_SUBST(GUI_INC_LOC)
2685AC_SUBST(GUI_LIB_LOC)
2686AC_SUBST(GUITYPE)
2687AC_SUBST(GUI_X_LIBS)
2688
2689if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2690 AC_MSG_ERROR([cannot use workshop without Motif])
2691fi
2692
2693dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2694if test "$enable_xim" = "yes"; then
2695 AC_DEFINE(FEAT_XIM)
2696fi
2697if test "$enable_fontset" = "yes"; then
2698 AC_DEFINE(FEAT_XFONTSET)
2699fi
2700
2701
2702dnl ---------------------------------------------------------------------------
2703dnl end of GUI-checking
2704dnl ---------------------------------------------------------------------------
2705
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002706dnl Check for Cygwin, which needs an extra source file if not using X11
2707AC_MSG_CHECKING(for CYGWIN environment)
2708case `uname` in
2709 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2710 AC_MSG_CHECKING(for CYGWIN clipboard support)
2711 if test "x$with_x" = "xno" ; then
2712 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2713 AC_MSG_RESULT(yes)
2714 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2715 else
2716 AC_MSG_RESULT(no - using X11)
2717 fi ;;
2718
2719 *) CYGWIN=no; AC_MSG_RESULT(no);;
2720esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721
2722dnl Only really enable hangul input when GUI and XFONTSET are available
2723if test "$enable_hangulinput" = "yes"; then
2724 if test "x$GUITYPE" = "xNONE"; then
2725 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2726 enable_hangulinput=no
2727 else
2728 AC_DEFINE(FEAT_HANGULIN)
2729 HANGULIN_SRC=hangulin.c
2730 AC_SUBST(HANGULIN_SRC)
2731 HANGULIN_OBJ=objects/hangulin.o
2732 AC_SUBST(HANGULIN_OBJ)
2733 fi
2734fi
2735
2736dnl Checks for libraries and include files.
2737
Bram Moolenaar446cb832008-06-24 21:56:24 +00002738AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2739 [
2740 AC_RUN_IFELSE([[
2741#include "confdefs.h"
2742#include <ctype.h>
2743#if STDC_HEADERS
2744# include <stdlib.h>
2745# include <stddef.h>
2746#endif
2747main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2748 ]],[
2749 vim_cv_toupper_broken=yes
2750 ],[
2751 vim_cv_toupper_broken=no
2752 ],[
2753 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2754 ])])
2755
2756if test "x$vim_cv_toupper_broken" = "xyes" ; then
2757 AC_DEFINE(BROKEN_TOUPPER)
2758fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002759
2760AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002761AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2763 AC_MSG_RESULT(no))
2764
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002765AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2766AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2767 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2768 AC_MSG_RESULT(no))
2769
Bram Moolenaar071d4272004-06-13 20:20:40 +00002770dnl Checks for header files.
2771AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2772dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2773if test "$HAS_ELF" = 1; then
2774 AC_CHECK_LIB(elf, main)
2775fi
2776
2777AC_HEADER_DIRENT
2778
Bram Moolenaar071d4272004-06-13 20:20:40 +00002779dnl If sys/wait.h is not found it might still exist but not be POSIX
2780dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2781if test $ac_cv_header_sys_wait_h = no; then
2782 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2783 AC_TRY_COMPILE([#include <sys/wait.h>],
2784 [union wait xx, yy; xx = yy],
2785 AC_MSG_RESULT(yes)
2786 AC_DEFINE(HAVE_SYS_WAIT_H)
2787 AC_DEFINE(HAVE_UNION_WAIT),
2788 AC_MSG_RESULT(no))
2789fi
2790
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002791AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2792 sys/select.h sys/utsname.h termcap.h fcntl.h \
2793 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2794 termio.h iconv.h inttypes.h langinfo.h math.h \
2795 unistd.h stropts.h errno.h sys/resource.h \
2796 sys/systeminfo.h locale.h sys/stream.h termios.h \
2797 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2798 utime.h sys/param.h libintl.h libgen.h \
2799 util/debug.h util/msg18n.h frame.h sys/acl.h \
2800 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002801
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002802dnl sys/ptem.h depends on sys/stream.h on Solaris
2803AC_CHECK_HEADERS(sys/ptem.h, [], [],
2804[#if defined HAVE_SYS_STREAM_H
2805# include <sys/stream.h>
2806#endif])
2807
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002808dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2809AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2810[#if defined HAVE_SYS_PARAM_H
2811# include <sys/param.h>
2812#endif])
2813
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002814
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002815dnl pthread_np.h may exist but can only be used after including pthread.h
2816AC_MSG_CHECKING([for pthread_np.h])
2817AC_TRY_COMPILE([
2818#include <pthread.h>
2819#include <pthread_np.h>],
2820 [int i; i = 0;],
2821 AC_MSG_RESULT(yes)
2822 AC_DEFINE(HAVE_PTHREAD_NP_H),
2823 AC_MSG_RESULT(no))
2824
Bram Moolenaare344bea2005-09-01 20:46:49 +00002825AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002826if test "x$MACOSX" = "xyes"; then
2827 dnl The strings.h file on OS/X contains a warning and nothing useful.
2828 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2829else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002830
2831dnl Check if strings.h and string.h can both be included when defined.
2832AC_MSG_CHECKING([if strings.h can be included after string.h])
2833cppflags_save=$CPPFLAGS
2834CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2835AC_TRY_COMPILE([
2836#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2837# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2838 /* but don't do it on AIX 5.1 (Uribarri) */
2839#endif
2840#ifdef HAVE_XM_XM_H
2841# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2842#endif
2843#ifdef HAVE_STRING_H
2844# include <string.h>
2845#endif
2846#if defined(HAVE_STRINGS_H)
2847# include <strings.h>
2848#endif
2849 ], [int i; i = 0;],
2850 AC_MSG_RESULT(yes),
2851 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2852 AC_MSG_RESULT(no))
2853CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002854fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002855
2856dnl Checks for typedefs, structures, and compiler characteristics.
2857AC_PROG_GCC_TRADITIONAL
2858AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002859AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002860AC_TYPE_MODE_T
2861AC_TYPE_OFF_T
2862AC_TYPE_PID_T
2863AC_TYPE_SIZE_T
2864AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002865AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002866
Bram Moolenaar071d4272004-06-13 20:20:40 +00002867AC_HEADER_TIME
2868AC_CHECK_TYPE(ino_t, long)
2869AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002870AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002871
2872AC_MSG_CHECKING(for rlim_t)
2873if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2874 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2875else
2876 AC_EGREP_CPP(dnl
2877changequote(<<,>>)dnl
2878<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2879changequote([,]),
2880 [
2881#include <sys/types.h>
2882#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002883# include <stdlib.h>
2884# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002885#endif
2886#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002887# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002888#endif
2889 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2890 AC_MSG_RESULT($ac_cv_type_rlim_t)
2891fi
2892if test $ac_cv_type_rlim_t = no; then
2893 cat >> confdefs.h <<\EOF
2894#define rlim_t unsigned long
2895EOF
2896fi
2897
2898AC_MSG_CHECKING(for stack_t)
2899if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2900 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2901else
2902 AC_EGREP_CPP(stack_t,
2903 [
2904#include <sys/types.h>
2905#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002906# include <stdlib.h>
2907# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908#endif
2909#include <signal.h>
2910 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2911 AC_MSG_RESULT($ac_cv_type_stack_t)
2912fi
2913if test $ac_cv_type_stack_t = no; then
2914 cat >> confdefs.h <<\EOF
2915#define stack_t struct sigaltstack
2916EOF
2917fi
2918
2919dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2920AC_MSG_CHECKING(whether stack_t has an ss_base field)
2921AC_TRY_COMPILE([
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#include <signal.h>
2928#include "confdefs.h"
2929 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2931 AC_MSG_RESULT(no))
2932
2933olibs="$LIBS"
2934AC_MSG_CHECKING(--with-tlib argument)
2935AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2936if test -n "$with_tlib"; then
2937 AC_MSG_RESULT($with_tlib)
2938 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002939 AC_MSG_CHECKING(for linking with $with_tlib library)
2940 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2941 dnl Need to check for tgetent() below.
2942 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002943else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002944 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002945 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2946 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002947 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002948 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002949 dnl Older versions of ncurses have bugs, get a new one!
2950 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002951 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002952 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002953 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2954 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002955 esac
2956 for libname in $tlibs; do
2957 AC_CHECK_LIB(${libname}, tgetent,,)
2958 if test "x$olibs" != "x$LIBS"; then
2959 dnl It's possible that a library is found but it doesn't work
2960 dnl e.g., shared library that cannot be found
2961 dnl compile and run a test program to be sure
2962 AC_TRY_RUN([
2963#ifdef HAVE_TERMCAP_H
2964# include <termcap.h>
2965#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002966#if STDC_HEADERS
2967# include <stdlib.h>
2968# include <stddef.h>
2969#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002970main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2971 res="OK", res="FAIL", res="FAIL")
2972 if test "$res" = "OK"; then
2973 break
2974 fi
2975 AC_MSG_RESULT($libname library is not usable)
2976 LIBS="$olibs"
2977 fi
2978 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002979 if test "x$olibs" = "x$LIBS"; then
2980 AC_MSG_RESULT(no terminal library found)
2981 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002982fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002983
2984if test "x$olibs" = "x$LIBS"; then
2985 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002986 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002987 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2988 AC_MSG_RESULT(yes),
2989 AC_MSG_ERROR([NOT FOUND!
2990 You need to install a terminal library; for example ncurses.
2991 Or specify the name of the library with --with-tlib.]))
2992fi
2993
Bram Moolenaar446cb832008-06-24 21:56:24 +00002994AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2995 [
2996 AC_RUN_IFELSE([[
2997#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002998#ifdef HAVE_TERMCAP_H
2999# include <termcap.h>
3000#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003001#ifdef HAVE_STRING_H
3002# include <string.h>
3003#endif
3004#if STDC_HEADERS
3005# include <stdlib.h>
3006# include <stddef.h>
3007#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003008main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003009{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
3010 ]],[
3011 vim_cv_terminfo=no
3012 ],[
3013 vim_cv_terminfo=yes
3014 ],[
3015 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3016 ])
3017 ])
3018
3019if test "x$vim_cv_terminfo" = "xyes" ; then
3020 AC_DEFINE(TERMINFO)
3021fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003022
3023if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003024 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3025 [
3026 AC_RUN_IFELSE([[
3027#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003028#ifdef HAVE_TERMCAP_H
3029# include <termcap.h>
3030#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003031#if STDC_HEADERS
3032# include <stdlib.h>
3033# include <stddef.h>
3034#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003035main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003036{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
3037 ]],[
3038 vim_cv_tgent=zero
3039 ],[
3040 vim_cv_tgent=non-zero
3041 ],[
3042 AC_MSG_ERROR(failed to compile test program.)
3043 ])
3044 ])
3045
3046 if test "x$vim_cv_tgent" = "xzero" ; then
3047 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3048 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003049fi
3050
3051AC_MSG_CHECKING(whether termcap.h contains ospeed)
3052AC_TRY_LINK([
3053#ifdef HAVE_TERMCAP_H
3054# include <termcap.h>
3055#endif
3056 ], [ospeed = 20000],
3057 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3058 [AC_MSG_RESULT(no)
3059 AC_MSG_CHECKING(whether ospeed can be extern)
3060 AC_TRY_LINK([
3061#ifdef HAVE_TERMCAP_H
3062# include <termcap.h>
3063#endif
3064extern short ospeed;
3065 ], [ospeed = 20000],
3066 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3067 AC_MSG_RESULT(no))]
3068 )
3069
3070AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3071AC_TRY_LINK([
3072#ifdef HAVE_TERMCAP_H
3073# include <termcap.h>
3074#endif
3075 ], [if (UP == 0 && BC == 0) PC = 1],
3076 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3077 [AC_MSG_RESULT(no)
3078 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3079 AC_TRY_LINK([
3080#ifdef HAVE_TERMCAP_H
3081# include <termcap.h>
3082#endif
3083extern char *UP, *BC, PC;
3084 ], [if (UP == 0 && BC == 0) PC = 1],
3085 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3086 AC_MSG_RESULT(no))]
3087 )
3088
3089AC_MSG_CHECKING(whether tputs() uses outfuntype)
3090AC_TRY_COMPILE([
3091#ifdef HAVE_TERMCAP_H
3092# include <termcap.h>
3093#endif
3094 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3095 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3096 AC_MSG_RESULT(no))
3097
3098dnl On some SCO machines sys/select redefines struct timeval
3099AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3100AC_TRY_COMPILE([
3101#include <sys/types.h>
3102#include <sys/time.h>
3103#include <sys/select.h>], ,
3104 AC_MSG_RESULT(yes)
3105 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3106 AC_MSG_RESULT(no))
3107
3108dnl AC_DECL_SYS_SIGLIST
3109
3110dnl Checks for pty.c (copied from screen) ==========================
3111AC_MSG_CHECKING(for /dev/ptc)
3112if test -r /dev/ptc; then
3113 AC_DEFINE(HAVE_DEV_PTC)
3114 AC_MSG_RESULT(yes)
3115else
3116 AC_MSG_RESULT(no)
3117fi
3118
3119AC_MSG_CHECKING(for SVR4 ptys)
3120if test -c /dev/ptmx ; then
3121 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3122 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3123 AC_MSG_RESULT(no))
3124else
3125 AC_MSG_RESULT(no)
3126fi
3127
3128AC_MSG_CHECKING(for ptyranges)
3129if test -d /dev/ptym ; then
3130 pdir='/dev/ptym'
3131else
3132 pdir='/dev'
3133fi
3134dnl SCO uses ptyp%d
3135AC_EGREP_CPP(yes,
3136[#ifdef M_UNIX
3137 yes;
3138#endif
3139 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3140dnl if test -c /dev/ptyp19; then
3141dnl ptys=`echo /dev/ptyp??`
3142dnl else
3143dnl ptys=`echo $pdir/pty??`
3144dnl fi
3145if test "$ptys" != "$pdir/pty??" ; then
3146 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3147 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3148 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3149 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3150 AC_MSG_RESULT([$p0 / $p1])
3151else
3152 AC_MSG_RESULT([don't know])
3153fi
3154
3155dnl **** pty mode/group handling ****
3156dnl
3157dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003158rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003159AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3160 [
3161 AC_RUN_IFELSE([[
3162#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003163#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003164#if STDC_HEADERS
3165# include <stdlib.h>
3166# include <stddef.h>
3167#endif
3168#ifdef HAVE_UNISTD_H
3169#include <unistd.h>
3170#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003171#include <sys/stat.h>
3172#include <stdio.h>
3173main()
3174{
3175 struct stat sb;
3176 char *x,*ttyname();
3177 int om, m;
3178 FILE *fp;
3179
3180 if (!(x = ttyname(0))) exit(1);
3181 if (stat(x, &sb)) exit(1);
3182 om = sb.st_mode;
3183 if (om & 002) exit(0);
3184 m = system("mesg y");
3185 if (m == -1 || m == 127) exit(1);
3186 if (stat(x, &sb)) exit(1);
3187 m = sb.st_mode;
3188 if (chmod(x, om)) exit(1);
3189 if (m & 002) exit(0);
3190 if (sb.st_gid == getgid()) exit(1);
3191 if (!(fp=fopen("conftest_grp", "w")))
3192 exit(1);
3193 fprintf(fp, "%d\n", sb.st_gid);
3194 fclose(fp);
3195 exit(0);
3196}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003197 ]],[
3198 if test -f conftest_grp; then
3199 vim_cv_tty_group=`cat conftest_grp`
3200 if test "x$vim_cv_tty_mode" = "x" ; then
3201 vim_cv_tty_mode=0620
3202 fi
3203 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3204 else
3205 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003206 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003207 fi
3208 ],[
3209 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003210 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003211 ],[
3212 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3213 ])
3214 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003215rm -f conftest_grp
3216
Bram Moolenaar446cb832008-06-24 21:56:24 +00003217if test "x$vim_cv_tty_group" != "xworld" ; then
3218 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3219 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003220 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 +00003221 else
3222 AC_DEFINE(PTYMODE, 0620)
3223 fi
3224fi
3225
Bram Moolenaar071d4272004-06-13 20:20:40 +00003226dnl Checks for library functions. ===================================
3227
3228AC_TYPE_SIGNAL
3229
3230dnl find out what to use at the end of a signal function
3231if test $ac_cv_type_signal = void; then
3232 AC_DEFINE(SIGRETURN, [return])
3233else
3234 AC_DEFINE(SIGRETURN, [return 0])
3235fi
3236
3237dnl check if struct sigcontext is defined (used for SGI only)
3238AC_MSG_CHECKING(for struct sigcontext)
3239AC_TRY_COMPILE([
3240#include <signal.h>
3241test_sig()
3242{
3243 struct sigcontext *scont;
3244 scont = (struct sigcontext *)0;
3245 return 1;
3246} ], ,
3247 AC_MSG_RESULT(yes)
3248 AC_DEFINE(HAVE_SIGCONTEXT),
3249 AC_MSG_RESULT(no))
3250
3251dnl tricky stuff: try to find out if getcwd() is implemented with
3252dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003253AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3254 [
3255 AC_RUN_IFELSE([[
3256#include "confdefs.h"
3257#ifdef HAVE_UNISTD_H
3258#include <unistd.h>
3259#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003260char *dagger[] = { "IFS=pwd", 0 };
3261main()
3262{
3263 char buffer[500];
3264 extern char **environ;
3265 environ = dagger;
3266 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003267}
3268 ]],[
3269 vim_cv_getcwd_broken=no
3270 ],[
3271 vim_cv_getcwd_broken=yes
3272 ],[
3273 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3274 ])
3275 ])
3276
3277if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3278 AC_DEFINE(BAD_GETCWD)
3279fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003280
Bram Moolenaar25153e12010-02-24 14:47:08 +01003281dnl Check for functions in one big call, to reduce the size of configure.
3282dnl Can only be used for functions that do not require any include.
3283AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003284 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003285 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003286 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003287 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003288 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3289 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003290AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003291
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003292dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3293dnl appropriate, so that off_t is 64 bits when needed.
3294AC_SYS_LARGEFILE
3295
Bram Moolenaar071d4272004-06-13 20:20:40 +00003296dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3297AC_MSG_CHECKING(for st_blksize)
3298AC_TRY_COMPILE(
3299[#include <sys/types.h>
3300#include <sys/stat.h>],
3301[ struct stat st;
3302 int n;
3303
3304 stat("/", &st);
3305 n = (int)st.st_blksize;],
3306 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3307 AC_MSG_RESULT(no))
3308
Bram Moolenaar446cb832008-06-24 21:56:24 +00003309AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3310 [
3311 AC_RUN_IFELSE([[
3312#include "confdefs.h"
3313#if STDC_HEADERS
3314# include <stdlib.h>
3315# include <stddef.h>
3316#endif
3317#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003318#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003319main() {struct stat st; exit(stat("configure/", &st) != 0); }
3320 ]],[
3321 vim_cv_stat_ignores_slash=yes
3322 ],[
3323 vim_cv_stat_ignores_slash=no
3324 ],[
3325 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3326 ])
3327 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003328
Bram Moolenaar446cb832008-06-24 21:56:24 +00003329if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3330 AC_DEFINE(STAT_IGNORES_SLASH)
3331fi
3332
Bram Moolenaar071d4272004-06-13 20:20:40 +00003333dnl Link with iconv for charset translation, if not found without library.
3334dnl check for iconv() requires including iconv.h
3335dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3336dnl has been installed.
3337AC_MSG_CHECKING(for iconv_open())
3338save_LIBS="$LIBS"
3339LIBS="$LIBS -liconv"
3340AC_TRY_LINK([
3341#ifdef HAVE_ICONV_H
3342# include <iconv.h>
3343#endif
3344 ], [iconv_open("fr", "to");],
3345 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3346 LIBS="$save_LIBS"
3347 AC_TRY_LINK([
3348#ifdef HAVE_ICONV_H
3349# include <iconv.h>
3350#endif
3351 ], [iconv_open("fr", "to");],
3352 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3353 AC_MSG_RESULT(no)))
3354
3355
3356AC_MSG_CHECKING(for nl_langinfo(CODESET))
3357AC_TRY_LINK([
3358#ifdef HAVE_LANGINFO_H
3359# include <langinfo.h>
3360#endif
3361], [char *cs = nl_langinfo(CODESET);],
3362 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3363 AC_MSG_RESULT(no))
3364
Bram Moolenaar446cb832008-06-24 21:56:24 +00003365dnl Need various functions for floating point support. Only enable
3366dnl floating point when they are all present.
3367AC_CHECK_LIB(m, strtod)
3368AC_MSG_CHECKING([for strtod() and other floating point functions])
3369AC_TRY_LINK([
3370#ifdef HAVE_MATH_H
3371# include <math.h>
3372#endif
3373#if STDC_HEADERS
3374# include <stdlib.h>
3375# include <stddef.h>
3376#endif
3377], [char *s; double d;
3378 d = strtod("1.1", &s);
3379 d = fabs(1.11);
3380 d = ceil(1.11);
3381 d = floor(1.11);
3382 d = log10(1.11);
3383 d = pow(1.11, 2.22);
3384 d = sqrt(1.11);
3385 d = sin(1.11);
3386 d = cos(1.11);
3387 d = atan(1.11);
3388 ],
3389 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3390 AC_MSG_RESULT(no))
3391
Bram Moolenaar071d4272004-06-13 20:20:40 +00003392dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3393dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003394dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003395AC_MSG_CHECKING(--disable-acl argument)
3396AC_ARG_ENABLE(acl,
3397 [ --disable-acl Don't check for ACL support.],
3398 , [enable_acl="yes"])
3399if test "$enable_acl" = "yes"; then
3400AC_MSG_RESULT(no)
3401AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3402 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3403 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3404
3405AC_MSG_CHECKING(for POSIX ACL support)
3406AC_TRY_LINK([
3407#include <sys/types.h>
3408#ifdef HAVE_SYS_ACL_H
3409# include <sys/acl.h>
3410#endif
3411acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3412 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3413 acl_free(acl);],
3414 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3415 AC_MSG_RESULT(no))
3416
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003417AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003418AC_MSG_CHECKING(for Solaris ACL support)
3419AC_TRY_LINK([
3420#ifdef HAVE_SYS_ACL_H
3421# include <sys/acl.h>
3422#endif], [acl("foo", GETACLCNT, 0, NULL);
3423 ],
3424 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003425 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003426
3427AC_MSG_CHECKING(for AIX ACL support)
3428AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003429#if STDC_HEADERS
3430# include <stdlib.h>
3431# include <stddef.h>
3432#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003433#ifdef HAVE_SYS_ACL_H
3434# include <sys/acl.h>
3435#endif
3436#ifdef HAVE_SYS_ACCESS_H
3437# include <sys/access.h>
3438#endif
3439#define _ALL_SOURCE
3440
3441#include <sys/stat.h>
3442
3443int aclsize;
3444struct acl *aclent;], [aclsize = sizeof(struct acl);
3445 aclent = (void *)malloc(aclsize);
3446 statacl("foo", STX_NORMAL, aclent, aclsize);
3447 ],
3448 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3449 AC_MSG_RESULT(no))
3450else
3451 AC_MSG_RESULT(yes)
3452fi
3453
3454AC_MSG_CHECKING(--disable-gpm argument)
3455AC_ARG_ENABLE(gpm,
3456 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3457 [enable_gpm="yes"])
3458
3459if test "$enable_gpm" = "yes"; then
3460 AC_MSG_RESULT(no)
3461 dnl Checking if gpm support can be compiled
3462 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3463 [olibs="$LIBS" ; LIBS="-lgpm"]
3464 AC_TRY_LINK(
3465 [#include <gpm.h>
3466 #include <linux/keyboard.h>],
3467 [Gpm_GetLibVersion(NULL);],
3468 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3469 dnl FEAT_MOUSE_GPM if mouse support is included
3470 [vi_cv_have_gpm=yes],
3471 [vi_cv_have_gpm=no])
3472 [LIBS="$olibs"]
3473 )
3474 if test $vi_cv_have_gpm = yes; then
3475 LIBS="$LIBS -lgpm"
3476 AC_DEFINE(HAVE_GPM)
3477 fi
3478else
3479 AC_MSG_RESULT(yes)
3480fi
3481
Bram Moolenaar446cb832008-06-24 21:56:24 +00003482AC_MSG_CHECKING(--disable-sysmouse argument)
3483AC_ARG_ENABLE(sysmouse,
3484 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3485 [enable_sysmouse="yes"])
3486
3487if test "$enable_sysmouse" = "yes"; then
3488 AC_MSG_RESULT(no)
3489 dnl Checking if sysmouse support can be compiled
3490 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3491 dnl defines FEAT_SYSMOUSE if mouse support is included
3492 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3493 AC_TRY_LINK(
3494 [#include <sys/consio.h>
3495 #include <signal.h>
3496 #include <sys/fbio.h>],
3497 [struct mouse_info mouse;
3498 mouse.operation = MOUSE_MODE;
3499 mouse.operation = MOUSE_SHOW;
3500 mouse.u.mode.mode = 0;
3501 mouse.u.mode.signal = SIGUSR2;],
3502 [vi_cv_have_sysmouse=yes],
3503 [vi_cv_have_sysmouse=no])
3504 )
3505 if test $vi_cv_have_sysmouse = yes; then
3506 AC_DEFINE(HAVE_SYSMOUSE)
3507 fi
3508else
3509 AC_MSG_RESULT(yes)
3510fi
3511
Bram Moolenaarf05da212009-11-17 16:13:15 +00003512dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3513AC_MSG_CHECKING(for FD_CLOEXEC)
3514AC_TRY_COMPILE(
3515[#if HAVE_FCNTL_H
3516# include <fcntl.h>
3517#endif],
3518[ int flag = FD_CLOEXEC;],
3519 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3520 AC_MSG_RESULT(not usable))
3521
Bram Moolenaar071d4272004-06-13 20:20:40 +00003522dnl rename needs to be checked separately to work on Nextstep with cc
3523AC_MSG_CHECKING(for rename)
3524AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3525 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3526 AC_MSG_RESULT(no))
3527
3528dnl sysctl() may exist but not the arguments we use
3529AC_MSG_CHECKING(for sysctl)
3530AC_TRY_COMPILE(
3531[#include <sys/types.h>
3532#include <sys/sysctl.h>],
3533[ int mib[2], r;
3534 size_t len;
3535
3536 mib[0] = CTL_HW;
3537 mib[1] = HW_USERMEM;
3538 len = sizeof(r);
3539 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3540 ],
3541 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3542 AC_MSG_RESULT(not usable))
3543
3544dnl sysinfo() may exist but not be Linux compatible
3545AC_MSG_CHECKING(for sysinfo)
3546AC_TRY_COMPILE(
3547[#include <sys/types.h>
3548#include <sys/sysinfo.h>],
3549[ struct sysinfo sinfo;
3550 int t;
3551
3552 (void)sysinfo(&sinfo);
3553 t = sinfo.totalram;
3554 ],
3555 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3556 AC_MSG_RESULT(not usable))
3557
Bram Moolenaar914572a2007-05-01 11:37:47 +00003558dnl struct sysinfo may have the mem_unit field or not
3559AC_MSG_CHECKING(for sysinfo.mem_unit)
3560AC_TRY_COMPILE(
3561[#include <sys/types.h>
3562#include <sys/sysinfo.h>],
3563[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003564 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003565 ],
3566 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3567 AC_MSG_RESULT(no))
3568
Bram Moolenaar071d4272004-06-13 20:20:40 +00003569dnl sysconf() may exist but not support what we want to use
3570AC_MSG_CHECKING(for sysconf)
3571AC_TRY_COMPILE(
3572[#include <unistd.h>],
3573[ (void)sysconf(_SC_PAGESIZE);
3574 (void)sysconf(_SC_PHYS_PAGES);
3575 ],
3576 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3577 AC_MSG_RESULT(not usable))
3578
Bram Moolenaar914703b2010-05-31 21:59:46 +02003579AC_CHECK_SIZEOF([int])
3580AC_CHECK_SIZEOF([long])
3581AC_CHECK_SIZEOF([time_t])
3582AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003583
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003584dnl Use different names to avoid clashing with other header files.
3585AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3586AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3587
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003588dnl Make sure that uint32_t is really 32 bits unsigned.
3589AC_MSG_CHECKING([uint32_t is 32 bits])
3590AC_TRY_RUN([
3591#ifdef HAVE_STDINT_H
3592# include <stdint.h>
3593#endif
3594#ifdef HAVE_INTTYPES_H
3595# include <inttypes.h>
3596#endif
3597main() {
3598 uint32_t nr1 = (uint32_t)-1;
3599 uint32_t nr2 = (uint32_t)0xffffffffUL;
3600 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3601 exit(0);
3602}],
3603AC_MSG_RESULT(ok),
3604AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003605AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003606
Bram Moolenaar446cb832008-06-24 21:56:24 +00003607dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3608dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3609
Bram Moolenaar071d4272004-06-13 20:20:40 +00003610[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003611#include "confdefs.h"
3612#ifdef HAVE_STRING_H
3613# include <string.h>
3614#endif
3615#if STDC_HEADERS
3616# include <stdlib.h>
3617# include <stddef.h>
3618#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003619main() {
3620 char buf[10];
3621 strcpy(buf, "abcdefghi");
3622 mch_memmove(buf, buf + 2, 3);
3623 if (strncmp(buf, "ababcf", 6))
3624 exit(1);
3625 strcpy(buf, "abcdefghi");
3626 mch_memmove(buf + 2, buf, 3);
3627 if (strncmp(buf, "cdedef", 6))
3628 exit(1);
3629 exit(0); /* libc version works properly. */
3630}']
3631
Bram Moolenaar446cb832008-06-24 21:56:24 +00003632AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3633 [
3634 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3635 [
3636 vim_cv_memmove_handles_overlap=yes
3637 ],[
3638 vim_cv_memmove_handles_overlap=no
3639 ],[
3640 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3641 ])
3642 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003643
Bram Moolenaar446cb832008-06-24 21:56:24 +00003644if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3645 AC_DEFINE(USEMEMMOVE)
3646else
3647 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3648 [
3649 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3650 [
3651 vim_cv_bcopy_handles_overlap=yes
3652 ],[
3653 vim_cv_bcopy_handles_overlap=no
3654 ],[
3655 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3656 ])
3657 ])
3658
3659 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3660 AC_DEFINE(USEBCOPY)
3661 else
3662 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3663 [
3664 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3665 [
3666 vim_cv_memcpy_handles_overlap=yes
3667 ],[
3668 vim_cv_memcpy_handles_overlap=no
3669 ],[
3670 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3671 ])
3672 ])
3673
3674 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3675 AC_DEFINE(USEMEMCPY)
3676 fi
3677 fi
3678fi
3679
Bram Moolenaar071d4272004-06-13 20:20:40 +00003680
3681dnl Check for multibyte locale functions
3682dnl Find out if _Xsetlocale() is supported by libX11.
3683dnl Check if X_LOCALE should be defined.
3684
3685if test "$enable_multibyte" = "yes"; then
3686 cflags_save=$CFLAGS
3687 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003688 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003689 CFLAGS="$CFLAGS -I$x_includes"
3690 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3691 AC_MSG_CHECKING(whether X_LOCALE needed)
3692 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3693 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3694 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3695 AC_MSG_RESULT(no))
3696 fi
3697 CFLAGS=$cflags_save
3698 LDFLAGS=$ldflags_save
3699fi
3700
3701dnl Link with xpg4, it is said to make Korean locale working
3702AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3703
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003704dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003705dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003706dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003707dnl -t for typedefs (many ctags have this)
3708dnl -s for static functions (Elvis ctags only?)
3709dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3710dnl -i+m to test for older Exuberant ctags
3711AC_MSG_CHECKING(how to create tags)
3712test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003713if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003714 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003715elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3716 TAGPRG="exctags -I INIT+ --fields=+S"
3717elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3718 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003719else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003720 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003721 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3722 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3723 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3724 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3725 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3726 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3727 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3728fi
3729test -f tags.save && mv tags.save tags
3730AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3731
3732dnl Check how we can run man with a section number
3733AC_MSG_CHECKING(how to run man with a section nr)
3734MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003735(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 +00003736AC_MSG_RESULT($MANDEF)
3737if test "$MANDEF" = "man -s"; then
3738 AC_DEFINE(USEMAN_S)
3739fi
3740
3741dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003742dnl We take care to base this on an empty LIBS: on some systems libelf would be
3743dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3744dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003745AC_MSG_CHECKING(--disable-nls argument)
3746AC_ARG_ENABLE(nls,
3747 [ --disable-nls Don't support NLS (gettext()).], ,
3748 [enable_nls="yes"])
3749
3750if test "$enable_nls" = "yes"; then
3751 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003752
3753 INSTALL_LANGS=install-languages
3754 AC_SUBST(INSTALL_LANGS)
3755 INSTALL_TOOL_LANGS=install-tool-languages
3756 AC_SUBST(INSTALL_TOOL_LANGS)
3757
Bram Moolenaar071d4272004-06-13 20:20:40 +00003758 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3759 AC_MSG_CHECKING([for NLS])
3760 if test -f po/Makefile; then
3761 have_gettext="no"
3762 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003763 olibs=$LIBS
3764 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003765 AC_TRY_LINK(
3766 [#include <libintl.h>],
3767 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003768 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3769 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003770 AC_TRY_LINK(
3771 [#include <libintl.h>],
3772 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003773 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3774 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003775 AC_MSG_RESULT([gettext() doesn't work]);
3776 LIBS=$olibs))
3777 else
3778 AC_MSG_RESULT([msgfmt not found - disabled]);
3779 fi
3780 if test $have_gettext = "yes"; then
3781 AC_DEFINE(HAVE_GETTEXT)
3782 MAKEMO=yes
3783 AC_SUBST(MAKEMO)
3784 dnl this was added in GNU gettext 0.10.36
3785 AC_CHECK_FUNCS(bind_textdomain_codeset)
3786 dnl _nl_msg_cat_cntr is required for GNU gettext
3787 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3788 AC_TRY_LINK(
3789 [#include <libintl.h>
3790 extern int _nl_msg_cat_cntr;],
3791 [++_nl_msg_cat_cntr;],
3792 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3793 AC_MSG_RESULT([no]))
3794 fi
3795 else
3796 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3797 fi
3798else
3799 AC_MSG_RESULT(yes)
3800fi
3801
3802dnl Check for dynamic linking loader
3803AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3804if test x${DLL} = xdlfcn.h; then
3805 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3806 AC_MSG_CHECKING([for dlopen()])
3807 AC_TRY_LINK(,[
3808 extern void* dlopen();
3809 dlopen();
3810 ],
3811 AC_MSG_RESULT(yes);
3812 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3813 AC_MSG_RESULT(no);
3814 AC_MSG_CHECKING([for dlopen() in -ldl])
3815 olibs=$LIBS
3816 LIBS="$LIBS -ldl"
3817 AC_TRY_LINK(,[
3818 extern void* dlopen();
3819 dlopen();
3820 ],
3821 AC_MSG_RESULT(yes);
3822 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3823 AC_MSG_RESULT(no);
3824 LIBS=$olibs))
3825 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3826 dnl ick :-)
3827 AC_MSG_CHECKING([for dlsym()])
3828 AC_TRY_LINK(,[
3829 extern void* dlsym();
3830 dlsym();
3831 ],
3832 AC_MSG_RESULT(yes);
3833 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3834 AC_MSG_RESULT(no);
3835 AC_MSG_CHECKING([for dlsym() in -ldl])
3836 olibs=$LIBS
3837 LIBS="$LIBS -ldl"
3838 AC_TRY_LINK(,[
3839 extern void* dlsym();
3840 dlsym();
3841 ],
3842 AC_MSG_RESULT(yes);
3843 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3844 AC_MSG_RESULT(no);
3845 LIBS=$olibs))
3846elif test x${DLL} = xdl.h; then
3847 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3848 AC_MSG_CHECKING([for shl_load()])
3849 AC_TRY_LINK(,[
3850 extern void* shl_load();
3851 shl_load();
3852 ],
3853 AC_MSG_RESULT(yes);
3854 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3855 AC_MSG_RESULT(no);
3856 AC_MSG_CHECKING([for shl_load() in -ldld])
3857 olibs=$LIBS
3858 LIBS="$LIBS -ldld"
3859 AC_TRY_LINK(,[
3860 extern void* shl_load();
3861 shl_load();
3862 ],
3863 AC_MSG_RESULT(yes);
3864 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3865 AC_MSG_RESULT(no);
3866 LIBS=$olibs))
3867fi
3868AC_CHECK_HEADERS(setjmp.h)
3869
3870if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3871 dnl -ldl must come after DynaLoader.a
3872 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3873 LIBS=`echo $LIBS | sed s/-ldl//`
3874 PERL_LIBS="$PERL_LIBS -ldl"
3875 fi
3876fi
3877
Bram Moolenaar164fca32010-07-14 13:58:07 +02003878if test "x$MACOSX" = "xyes"; then
3879 AC_MSG_CHECKING(whether we need -framework Cocoa)
3880 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3881 dnl disabled during tiny build)
3882 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3883 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003884 AC_MSG_RESULT(yes)
3885 else
3886 AC_MSG_RESULT(no)
3887 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003888 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3889 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3890 dnl missing Objective-C symbols.
3891 if test "x$features" = "xtiny"; then
3892 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3893 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3894 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003895fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003896if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003897 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003898fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003899
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003900dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3901dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3902dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003903dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3904dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003905DEPEND_CFLAGS_FILTER=
3906if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003907 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003908 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003909 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003910 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003911 AC_MSG_RESULT(yes)
3912 else
3913 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003914 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003915 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3916 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003917 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003918 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003919 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3920 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003921 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 +00003922 AC_MSG_RESULT(yes)
3923 else
3924 AC_MSG_RESULT(no)
3925 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003926fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003927AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003928
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003929dnl link.sh tries to avoid overlinking in a hackish way.
3930dnl At least GNU ld supports --as-needed which provides the same functionality
3931dnl at linker level. Let's use it.
3932AC_MSG_CHECKING(linker --as-needed support)
3933LINK_AS_NEEDED=
3934# Check if linker supports --as-needed and --no-as-needed options
3935if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003936 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003937 LINK_AS_NEEDED=yes
3938fi
3939if test "$LINK_AS_NEEDED" = yes; then
3940 AC_MSG_RESULT(yes)
3941else
3942 AC_MSG_RESULT(no)
3943fi
3944AC_SUBST(LINK_AS_NEEDED)
3945
Bram Moolenaar77c19352012-06-13 19:19:41 +02003946# IBM z/OS reset CFLAGS for config.mk
3947if test "$zOSUnix" = "yes"; then
3948 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3949fi
3950
Bram Moolenaar071d4272004-06-13 20:20:40 +00003951dnl write output files
3952AC_OUTPUT(auto/config.mk:config.mk.in)
3953
3954dnl vim: set sw=2 tw=78 fo+=l: