blob: ed30bedf86a83a1e0b66ee085b3399a1b8980349 [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 Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 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 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 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 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 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 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200309dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200456 AC_MSG_CHECKING(--with-luajit)
457 AC_ARG_WITH(luajit,
458 [ --with-luajit Link with LuaJIT instead of Lua.],
459 [vi_cv_with_luajit="$withval"],
460 [vi_cv_with_luajit="no"])
461 AC_MSG_RESULT($vi_cv_with_luajit)
462
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200463 LUA_INC=
464 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200465 if test "x$vi_cv_with_luajit" != "xno"; then
466 dnl -- try to find LuaJIT executable
467 AC_PATH_PROG(vi_cv_path_luajit, luajit)
468 if test "X$vi_cv_path_luajit" != "X"; then
469 dnl -- find LuaJIT version
470 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
471 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]] .*/\1/'` ])
472 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
473 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
474 vi_cv_path_lua="$vi_cv_path_luajit"
475 vi_cv_version_lua="$vi_cv_version_lua_luajit"
476 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200478 dnl -- try to find Lua executable
479 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
480 if test "X$vi_cv_path_plain_lua" != "X"; then
481 dnl -- find Lua version
482 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
483 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
484 fi
485 vi_cv_path_lua="$vi_cv_path_plain_lua"
486 vi_cv_version_lua="$vi_cv_version_plain_lua"
487 fi
488 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
489 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
490 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
491 AC_MSG_RESULT(yes)
492 LUA_INC=/luajit-$vi_cv_version_luajit
493 fi
494 fi
495 if test "X$LUA_INC" = "X"; then
496 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
497 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
498 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200499 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200500 AC_MSG_RESULT(no)
501 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
502 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
503 AC_MSG_RESULT(yes)
504 LUA_INC=/lua$vi_cv_version_lua
505 else
506 AC_MSG_RESULT(no)
507 vi_cv_path_lua_pfx=
508 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200509 fi
510 fi
511 fi
512
513 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200514 if test "x$vi_cv_with_luajit" != "xno"; then
515 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
516 if test "X$multiarch" != "X"; then
517 lib_multiarch="lib/${multiarch}"
518 else
519 lib_multiarch="lib"
520 fi
521 if test "X$vi_cv_version_lua" = "X"; then
522 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
523 else
524 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
525 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200527 if test "X$LUA_INC" != "X"; then
528 dnl Test alternate location using version
529 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
530 else
531 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
532 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200533 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200534 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200535 lua_ok="yes"
536 else
537 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
538 libs_save=$LIBS
539 LIBS="$LIBS $LUA_LIBS"
540 AC_TRY_LINK(,[ ],
541 AC_MSG_RESULT(yes); lua_ok="yes",
542 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
543 LIBS=$libs_save
544 fi
545 if test "x$lua_ok" = "xyes"; then
546 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
547 LUA_SRC="if_lua.c"
548 LUA_OBJ="objects/if_lua.o"
549 LUA_PRO="if_lua.pro"
550 AC_DEFINE(FEAT_LUA)
551 fi
552 if test "$enable_luainterp" = "dynamic"; then
553 if test "x$vi_cv_with_luajit" != "xno"; then
554 luajit="jit"
555 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200556 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
557 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
558 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200559 if test "x$MACOSX" = "xyes"; then
560 ext="dylib"
561 indexes=""
562 else
563 ext="so"
564 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
565 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
566 if test "X$multiarch" != "X"; then
567 lib_multiarch="lib/${multiarch}"
568 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200569 fi
570 dnl Determine the sover for the current version, but fallback to
571 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200572 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200573 for subdir in "${lib_multiarch}" lib64 lib; do
574 if test -z "$subdir"; then
575 continue
576 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200577 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
578 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
579 for i in $indexes ""; do
580 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200581 sover2="$i"
582 break 3
583 fi
584 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100585 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200586 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200587 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200588 if test "X$sover" = "X"; then
589 AC_MSG_RESULT(no)
590 lua_ok="no"
591 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
592 else
593 AC_MSG_RESULT(yes)
594 lua_ok="yes"
595 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
596 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200597 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200598 AC_DEFINE(DYNAMIC_LUA)
599 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200600 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200601 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200602 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
603 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
604 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
605 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
606 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
607 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200608 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200609 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100610 AC_MSG_ERROR([could not configure lua])
611 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200612 AC_SUBST(LUA_SRC)
613 AC_SUBST(LUA_OBJ)
614 AC_SUBST(LUA_PRO)
615 AC_SUBST(LUA_LIBS)
616 AC_SUBST(LUA_CFLAGS)
617fi
618
619
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000620dnl Check for MzScheme feature.
621AC_MSG_CHECKING(--enable-mzschemeinterp argument)
622AC_ARG_ENABLE(mzschemeinterp,
623 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
624 [enable_mzschemeinterp="no"])
625AC_MSG_RESULT($enable_mzschemeinterp)
626
627if test "$enable_mzschemeinterp" = "yes"; then
628 dnl -- find the mzscheme executable
629 AC_SUBST(vi_cv_path_mzscheme)
630
631 AC_MSG_CHECKING(--with-plthome argument)
632 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000633 [ --with-plthome=PLTHOME Use PLTHOME.],
634 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000635 with_plthome="";AC_MSG_RESULT("no"))
636
637 if test "X$with_plthome" != "X"; then
638 vi_cv_path_mzscheme_pfx="$with_plthome"
639 else
640 AC_MSG_CHECKING(PLTHOME environment var)
641 if test "X$PLTHOME" != "X"; then
642 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000643 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000644 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000645 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000646 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000647 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000648
649 dnl resolve symbolic link, the executable is often elsewhere and there
650 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000651 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000652 lsout=`ls -l $vi_cv_path_mzscheme`
653 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
654 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
655 fi
656 fi
657
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000658 if test "X$vi_cv_path_mzscheme" != "X"; then
659 dnl -- find where MzScheme thinks it was installed
660 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000661 dnl different versions of MzScheme differ in command line processing
662 dnl use universal approach
663 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000664 (build-path (call-with-values \
665 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000666 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
667 dnl Remove a trailing slash
668 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
669 sed -e 's+/$++'` ])
670 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000671 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000672 fi
673 fi
674
Bram Moolenaard7afed32007-05-06 13:26:41 +0000675 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000676 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
677 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
678 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000679 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
680 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000681 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000682 AC_MSG_RESULT(no)
683 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000684 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000685 AC_MSG_RESULT(yes)
686 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000687 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000688 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100689 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
690 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000691 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100692 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000693 else
694 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100695 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
696 if test -f /usr/include/plt/scheme.h; then
697 AC_MSG_RESULT(yes)
698 SCHEME_INC=/usr/include/plt
699 else
700 AC_MSG_RESULT(no)
701 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
702 if test -f /usr/include/racket/scheme.h; then
703 AC_MSG_RESULT(yes)
704 SCHEME_INC=/usr/include/racket
705 else
706 AC_MSG_RESULT(no)
707 vi_cv_path_mzscheme_pfx=
708 fi
709 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000710 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000711 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000712 fi
713 fi
714
715 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000716 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100717 MZSCHEME_LIBS="-framework Racket"
718 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000719 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
720 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
721 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100722 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
723 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
724 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
725 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
726 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
727 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000728 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 +0000729 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000730 dnl Using shared objects
731 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
732 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
733 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100734 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
735 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
736 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
737 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
738 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000739 else
740 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
741 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000742 if test "$GCC" = yes; then
743 dnl Make Vim remember the path to the library. For when it's not in
744 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000745 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000746 elif test "`(uname) 2>/dev/null`" = SunOS &&
747 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000748 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000749 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000750 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100751
752 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000753 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100754 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100755 else
756 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100757 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
758 else
759 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
760 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100761 else
762 if test -d $vi_cv_path_mzscheme_pfx/collects; then
763 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
764 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100765 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100766 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000767 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100768 if test "X$SCHEME_COLLECTS" != "X" ; then
769 AC_MSG_RESULT(${SCHEME_COLLECTS})
770 else
771 AC_MSG_RESULT(not found)
772 fi
773
774 AC_MSG_CHECKING(for mzscheme_base.c)
775 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000776 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100777 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100778 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100779 MZSCHEME_EXTRA="mzscheme_base.c"
780 fi
781 fi
782 if test "X$MZSCHEME_EXTRA" != "X" ; then
783 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000784 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
785 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100786 AC_MSG_RESULT(needed)
787 else
788 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000789 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100790
Bram Moolenaar9e902192013-07-17 18:58:11 +0200791 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
792 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
793
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000794 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100795 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200796
797 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
798 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
799 cflags_save=$CFLAGS
800 libs_save=$LIBS
801 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
802 LIBS="$LIBS $MZSCHEME_LIBS"
803 AC_TRY_LINK(,[ ],
804 AC_MSG_RESULT(yes); mzs_ok=yes,
805 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
806 CFLAGS=$cflags_save
807 LIBS=$libs_save
808 if test $mzs_ok = yes; then
809 MZSCHEME_SRC="if_mzsch.c"
810 MZSCHEME_OBJ="objects/if_mzsch.o"
811 MZSCHEME_PRO="if_mzsch.pro"
812 AC_DEFINE(FEAT_MZSCHEME)
813 else
814 MZSCHEME_CFLAGS=
815 MZSCHEME_LIBS=
816 MZSCHEME_EXTRA=
817 MZSCHEME_MZC=
818 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000819 fi
820 AC_SUBST(MZSCHEME_SRC)
821 AC_SUBST(MZSCHEME_OBJ)
822 AC_SUBST(MZSCHEME_PRO)
823 AC_SUBST(MZSCHEME_LIBS)
824 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000825 AC_SUBST(MZSCHEME_EXTRA)
826 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000827fi
828
829
Bram Moolenaar071d4272004-06-13 20:20:40 +0000830AC_MSG_CHECKING(--enable-perlinterp argument)
831AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200832 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833 [enable_perlinterp="no"])
834AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200835if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000836 AC_SUBST(vi_cv_path_perl)
837 AC_PATH_PROG(vi_cv_path_perl, perl)
838 if test "X$vi_cv_path_perl" != "X"; then
839 AC_MSG_CHECKING(Perl version)
840 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
841 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200842 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000843 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
844 badthreads=no
845 else
846 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
847 eval `$vi_cv_path_perl -V:use5005threads`
848 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
849 badthreads=no
850 else
851 badthreads=yes
852 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
853 fi
854 else
855 badthreads=yes
856 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
857 fi
858 fi
859 if test $badthreads = no; then
860 AC_MSG_RESULT(OK)
861 eval `$vi_cv_path_perl -V:shrpenv`
862 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
863 shrpenv=""
864 fi
865 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
866 AC_SUBST(vi_cv_perllib)
867 dnl Remove "-fno-something", it breaks using cproto.
868 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
869 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
870 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
871 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
872 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
873 -e 's/-bE:perl.exp//' -e 's/-lc //'`
874 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
875 dnl a test in configure may fail because of that.
876 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
877 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
878
879 dnl check that compiling a simple program still works with the flags
880 dnl added for Perl.
881 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
882 cflags_save=$CFLAGS
883 libs_save=$LIBS
884 ldflags_save=$LDFLAGS
885 CFLAGS="$CFLAGS $perlcppflags"
886 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200887 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000888 LDFLAGS="$perlldflags $LDFLAGS"
889 AC_TRY_LINK(,[ ],
890 AC_MSG_RESULT(yes); perl_ok=yes,
891 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
892 CFLAGS=$cflags_save
893 LIBS=$libs_save
894 LDFLAGS=$ldflags_save
895 if test $perl_ok = yes; then
896 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000897 dnl remove -pipe and -Wxxx, it confuses cproto
898 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899 fi
900 if test "X$perlldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200901 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$perlldflags\"`" = "X"; then
902 LDFLAGS="$perlldflags $LDFLAGS"
903 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000904 fi
905 PERL_LIBS=$perllibs
906 PERL_SRC="auto/if_perl.c if_perlsfio.c"
907 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
908 PERL_PRO="if_perl.pro if_perlsfio.pro"
909 AC_DEFINE(FEAT_PERL)
910 fi
911 fi
912 else
913 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
914 fi
915 fi
916
917 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000918 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000919 dir=/System/Library/Perl
920 darwindir=$dir/darwin
921 if test -d $darwindir; then
922 PERL=/usr/bin/perl
923 else
924 dnl Mac OS X 10.3
925 dir=/System/Library/Perl/5.8.1
926 darwindir=$dir/darwin-thread-multi-2level
927 if test -d $darwindir; then
928 PERL=/usr/bin/perl
929 fi
930 fi
931 if test -n "$PERL"; then
932 PERL_DIR="$dir"
933 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
934 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
935 PERL_LIBS="-L$darwindir/CORE -lperl"
936 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200937 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
938 dnl be included if requested by passing --with-mac-arch to
939 dnl configure, so strip these flags first (if present)
940 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
941 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 +0000942 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200943 if test "$enable_perlinterp" = "dynamic"; then
944 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
945 AC_DEFINE(DYNAMIC_PERL)
946 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
947 fi
948 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100949
950 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
951 AC_MSG_ERROR([could not configure perl])
952 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000953fi
954AC_SUBST(shrpenv)
955AC_SUBST(PERL_SRC)
956AC_SUBST(PERL_OBJ)
957AC_SUBST(PERL_PRO)
958AC_SUBST(PERL_CFLAGS)
959AC_SUBST(PERL_LIBS)
960
961AC_MSG_CHECKING(--enable-pythoninterp argument)
962AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200963 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000964 [enable_pythoninterp="no"])
965AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200966if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100968 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000969 if test "X$vi_cv_path_python" != "X"; then
970
971 dnl -- get its version number
972 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
973 [[vi_cv_var_python_version=`
974 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
975 ]])
976
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200977 dnl -- it must be at least version 2.3
978 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000979 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +0200980 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000981 then
982 AC_MSG_RESULT(yep)
983
984 dnl -- find where python thinks it was installed
985 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
986 [ vi_cv_path_python_pfx=`
987 ${vi_cv_path_python} -c \
988 "import sys; print sys.prefix"` ])
989
990 dnl -- and where it thinks it runs
991 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
992 [ vi_cv_path_python_epfx=`
993 ${vi_cv_path_python} -c \
994 "import sys; print sys.exec_prefix"` ])
995
996 dnl -- python's internal library path
997
998 AC_CACHE_VAL(vi_cv_path_pythonpath,
999 [ vi_cv_path_pythonpath=`
1000 unset PYTHONPATH;
1001 ${vi_cv_path_python} -c \
1002 "import sys, string; print string.join(sys.path,':')"` ])
1003
1004 dnl -- where the Python implementation library archives are
1005
1006 AC_ARG_WITH(python-config-dir,
1007 [ --with-python-config-dir=PATH Python's config directory],
1008 [ vi_cv_path_python_conf="${withval}" ] )
1009
1010 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1011 [
1012 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001013 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1014 if test -d "$d" && test -f "$d/config.c"; then
1015 vi_cv_path_python_conf="$d"
1016 else
1017 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1018 for subdir in lib64 lib share; do
1019 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1020 if test -d "$d" && test -f "$d/config.c"; then
1021 vi_cv_path_python_conf="$d"
1022 fi
1023 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001024 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001025 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001026 ])
1027
1028 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1029
1030 if test "X$PYTHON_CONFDIR" = "X"; then
1031 AC_MSG_RESULT([can't find it!])
1032 else
1033
1034 dnl -- we need to examine Python's config/Makefile too
1035 dnl see what the interpreter is built from
1036 AC_CACHE_VAL(vi_cv_path_python_plibs,
1037 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001038 pwd=`pwd`
1039 tmp_mkf="$pwd/config-PyMake$$"
1040 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001041__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001042 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001043 @echo "python_LIBS='$(LIBS)'"
1044 @echo "python_SYSLIBS='$(SYSLIBS)'"
1045 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001046 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001047 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001048eof
1049 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001050 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1051 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001052 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1053 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1054 vi_cv_path_python_plibs="-framework Python"
1055 else
1056 if test "${vi_cv_var_python_version}" = "1.4"; then
1057 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1058 else
1059 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1060 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001061 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 +00001062 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1063 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1064 fi
1065 ])
1066
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001067 if test "X$python_DLLLIBRARY" != "X"; then
1068 python_INSTSONAME="$python_DLLLIBRARY"
1069 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001070 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1071 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001072 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 +00001073 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001074 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 +00001075 fi
1076 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001077 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001078 if test "${vi_cv_var_python_version}" = "1.4"; then
1079 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1080 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001081 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 +00001082
1083 dnl On FreeBSD linking with "-pthread" is required to use threads.
1084 dnl _THREAD_SAFE must be used for compiling then.
1085 dnl The "-pthread" is added to $LIBS, so that the following check for
1086 dnl sigaltstack() will look in libc_r (it's there in libc!).
1087 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1088 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1089 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1090 AC_MSG_CHECKING([if -pthread should be used])
1091 threadsafe_flag=
1092 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001093 dnl if test "x$MACOSX" != "xyes"; then
1094 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001095 test "$GCC" = yes && threadsafe_flag="-pthread"
1096 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1097 threadsafe_flag="-D_THREAD_SAFE"
1098 thread_lib="-pthread"
1099 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001100 if test "`(uname) 2>/dev/null`" = SunOS; then
1101 threadsafe_flag="-pthreads"
1102 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001103 fi
1104 libs_save_old=$LIBS
1105 if test -n "$threadsafe_flag"; then
1106 cflags_save=$CFLAGS
1107 CFLAGS="$CFLAGS $threadsafe_flag"
1108 LIBS="$LIBS $thread_lib"
1109 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001110 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001111 AC_MSG_RESULT(no); LIBS=$libs_save_old
1112 )
1113 CFLAGS=$cflags_save
1114 else
1115 AC_MSG_RESULT(no)
1116 fi
1117
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001118 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001119 dnl added for Python.
1120 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1121 cflags_save=$CFLAGS
1122 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001123 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001124 LIBS="$LIBS $PYTHON_LIBS"
1125 AC_TRY_LINK(,[ ],
1126 AC_MSG_RESULT(yes); python_ok=yes,
1127 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1128 CFLAGS=$cflags_save
1129 LIBS=$libs_save
1130 if test $python_ok = yes; then
1131 AC_DEFINE(FEAT_PYTHON)
1132 else
1133 LIBS=$libs_save_old
1134 PYTHON_SRC=
1135 PYTHON_OBJ=
1136 PYTHON_LIBS=
1137 PYTHON_CFLAGS=
1138 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001139 fi
1140 else
1141 AC_MSG_RESULT(too old)
1142 fi
1143 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001144
1145 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1146 AC_MSG_ERROR([could not configure python])
1147 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001148fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001149
Bram Moolenaar071d4272004-06-13 20:20:40 +00001150AC_SUBST(PYTHON_CONFDIR)
1151AC_SUBST(PYTHON_LIBS)
1152AC_SUBST(PYTHON_GETPATH_CFLAGS)
1153AC_SUBST(PYTHON_CFLAGS)
1154AC_SUBST(PYTHON_SRC)
1155AC_SUBST(PYTHON_OBJ)
1156
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001157
1158AC_MSG_CHECKING(--enable-python3interp argument)
1159AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001160 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001161 [enable_python3interp="no"])
1162AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001163if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001164 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001165 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001166 if test "X$vi_cv_path_python3" != "X"; then
1167
1168 dnl -- get its version number
1169 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1170 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001171 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001172 ]])
1173
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001174 dnl -- it must be at least version 3
1175 AC_MSG_CHECKING(Python is 3.0 or better)
1176 if ${vi_cv_path_python3} -c \
1177 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1178 then
1179 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001180
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001181 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1182 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001183 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001184 vi_cv_var_python3_abiflags=
1185 if ${vi_cv_path_python3} -c \
1186 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1187 then
1188 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1189 "import sys; print(sys.abiflags)"`
1190 fi ])
1191
1192 dnl -- find where python3 thinks it was installed
1193 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1194 [ vi_cv_path_python3_pfx=`
1195 ${vi_cv_path_python3} -c \
1196 "import sys; print(sys.prefix)"` ])
1197
1198 dnl -- and where it thinks it runs
1199 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1200 [ vi_cv_path_python3_epfx=`
1201 ${vi_cv_path_python3} -c \
1202 "import sys; print(sys.exec_prefix)"` ])
1203
1204 dnl -- python3's internal library path
1205
1206 AC_CACHE_VAL(vi_cv_path_python3path,
1207 [ vi_cv_path_python3path=`
1208 unset PYTHONPATH;
1209 ${vi_cv_path_python3} -c \
1210 "import sys, string; print(':'.join(sys.path))"` ])
1211
1212 dnl -- where the Python implementation library archives are
1213
1214 AC_ARG_WITH(python3-config-dir,
1215 [ --with-python3-config-dir=PATH Python's config directory],
1216 [ vi_cv_path_python3_conf="${withval}" ] )
1217
1218 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1219 [
1220 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001221 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001222 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1223 if test -d "$d" && test -f "$d/config.c"; then
1224 vi_cv_path_python3_conf="$d"
1225 else
1226 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1227 for subdir in lib64 lib share; do
1228 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1229 if test -d "$d" && test -f "$d/config.c"; then
1230 vi_cv_path_python3_conf="$d"
1231 fi
1232 done
1233 done
1234 fi
1235 ])
1236
1237 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1238
1239 if test "X$PYTHON3_CONFDIR" = "X"; then
1240 AC_MSG_RESULT([can't find it!])
1241 else
1242
1243 dnl -- we need to examine Python's config/Makefile too
1244 dnl see what the interpreter is built from
1245 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1246 [
1247 pwd=`pwd`
1248 tmp_mkf="$pwd/config-PyMake$$"
1249 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001250__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001251 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001252 @echo "python3_LIBS='$(LIBS)'"
1253 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001254 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001255 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001256eof
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001257 dnl -- delete the lines from make about Entering/Leaving directory
1258 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1259 rm -f -- "${tmp_mkf}"
1260 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1261 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1262 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1263 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1264 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1265 ])
1266
1267 if test "X$python3_DLLLIBRARY" != "X"; then
1268 python3_INSTSONAME="$python3_DLLLIBRARY"
1269 fi
1270 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1271 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001272 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 +02001273 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001274 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 +02001275 fi
1276 PYTHON3_SRC="if_python3.c"
1277 PYTHON3_OBJ="objects/if_python3.o"
1278
1279 dnl On FreeBSD linking with "-pthread" is required to use threads.
1280 dnl _THREAD_SAFE must be used for compiling then.
1281 dnl The "-pthread" is added to $LIBS, so that the following check for
1282 dnl sigaltstack() will look in libc_r (it's there in libc!).
1283 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1284 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1285 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1286 AC_MSG_CHECKING([if -pthread should be used])
1287 threadsafe_flag=
1288 thread_lib=
1289 dnl if test "x$MACOSX" != "xyes"; then
1290 if test "`(uname) 2>/dev/null`" != Darwin; then
1291 test "$GCC" = yes && threadsafe_flag="-pthread"
1292 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1293 threadsafe_flag="-D_THREAD_SAFE"
1294 thread_lib="-pthread"
1295 fi
1296 if test "`(uname) 2>/dev/null`" = SunOS; then
1297 threadsafe_flag="-pthreads"
1298 fi
1299 fi
1300 libs_save_old=$LIBS
1301 if test -n "$threadsafe_flag"; then
1302 cflags_save=$CFLAGS
1303 CFLAGS="$CFLAGS $threadsafe_flag"
1304 LIBS="$LIBS $thread_lib"
1305 AC_TRY_LINK(,[ ],
1306 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1307 AC_MSG_RESULT(no); LIBS=$libs_save_old
1308 )
1309 CFLAGS=$cflags_save
1310 else
1311 AC_MSG_RESULT(no)
1312 fi
1313
1314 dnl check that compiling a simple program still works with the flags
1315 dnl added for Python.
1316 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1317 cflags_save=$CFLAGS
1318 libs_save=$LIBS
1319 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1320 LIBS="$LIBS $PYTHON3_LIBS"
1321 AC_TRY_LINK(,[ ],
1322 AC_MSG_RESULT(yes); python3_ok=yes,
1323 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1324 CFLAGS=$cflags_save
1325 LIBS=$libs_save
1326 if test "$python3_ok" = yes; then
1327 AC_DEFINE(FEAT_PYTHON3)
1328 else
1329 LIBS=$libs_save_old
1330 PYTHON3_SRC=
1331 PYTHON3_OBJ=
1332 PYTHON3_LIBS=
1333 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001334 fi
1335 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001336 else
1337 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001338 fi
1339 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001340 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1341 AC_MSG_ERROR([could not configure python3])
1342 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001343fi
1344
1345AC_SUBST(PYTHON3_CONFDIR)
1346AC_SUBST(PYTHON3_LIBS)
1347AC_SUBST(PYTHON3_CFLAGS)
1348AC_SUBST(PYTHON3_SRC)
1349AC_SUBST(PYTHON3_OBJ)
1350
1351dnl if python2.x and python3.x are enabled one can only link in code
1352dnl with dlopen(), dlsym(), dlclose()
1353if test "$python_ok" = yes && test "$python3_ok" = yes; then
1354 AC_DEFINE(DYNAMIC_PYTHON)
1355 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001356 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001357 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001358 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001359 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001360 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1361 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001362 AC_RUN_IFELSE([
1363 #include <dlfcn.h>
1364 /* If this program fails, then RTLD_GLOBAL is needed.
1365 * RTLD_GLOBAL will be used and then it is not possible to
1366 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001367 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001368 */
1369
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001370 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001371 {
1372 int needed = 0;
1373 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1374 if (pylib != 0)
1375 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001376 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001377 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1378 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1379 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001380 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001381 (*init)();
1382 needed = (*simple)("import termios") == -1;
1383 (*final)();
1384 dlclose(pylib);
1385 }
1386 return !needed;
1387 }
1388
1389 int main(int argc, char** argv)
1390 {
1391 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001392 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001393 not_needed = 1;
1394 return !not_needed;
1395 }],
1396 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001397
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001398 CFLAGS=$cflags_save
1399 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001400
1401 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1402 cflags_save=$CFLAGS
1403 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1404 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001405 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1406 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001407 AC_RUN_IFELSE([
1408 #include <dlfcn.h>
1409 #include <wchar.h>
1410 /* If this program fails, then RTLD_GLOBAL is needed.
1411 * RTLD_GLOBAL will be used and then it is not possible to
1412 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001413 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001414 */
1415
1416 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1417 {
1418 int needed = 0;
1419 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1420 if (pylib != 0)
1421 {
1422 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1423 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1424 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1425 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1426 (*pfx)(prefix);
1427 (*init)();
1428 needed = (*simple)("import termios") == -1;
1429 (*final)();
1430 dlclose(pylib);
1431 }
1432 return !needed;
1433 }
1434
1435 int main(int argc, char** argv)
1436 {
1437 int not_needed = 0;
1438 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1439 not_needed = 1;
1440 return !not_needed;
1441 }],
1442 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1443
1444 CFLAGS=$cflags_save
1445 LDFLAGS=$ldflags_save
1446
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001447 PYTHON_SRC="if_python.c"
1448 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001449 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001450 PYTHON_LIBS=
1451 PYTHON3_SRC="if_python3.c"
1452 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001453 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001454 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001455elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1456 AC_DEFINE(DYNAMIC_PYTHON)
1457 PYTHON_SRC="if_python.c"
1458 PYTHON_OBJ="objects/if_python.o"
1459 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1460 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001461elif test "$python_ok" = yes; then
1462 dnl Check that adding -fPIE works. It may be needed when using a static
1463 dnl Python library.
1464 AC_MSG_CHECKING([if -fPIE can be added for Python])
1465 cflags_save=$CFLAGS
1466 libs_save=$LIBS
1467 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1468 LIBS="$LIBS $PYTHON_LIBS"
1469 AC_TRY_LINK(,[ ],
1470 AC_MSG_RESULT(yes); fpie_ok=yes,
1471 AC_MSG_RESULT(no); fpie_ok=no)
1472 CFLAGS=$cflags_save
1473 LIBS=$libs_save
1474 if test $fpie_ok = yes; then
1475 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1476 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001477elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1478 AC_DEFINE(DYNAMIC_PYTHON3)
1479 PYTHON3_SRC="if_python3.c"
1480 PYTHON3_OBJ="objects/if_python3.o"
1481 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1482 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001483elif test "$python3_ok" = yes; then
1484 dnl Check that adding -fPIE works. It may be needed when using a static
1485 dnl Python library.
1486 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1487 cflags_save=$CFLAGS
1488 libs_save=$LIBS
1489 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1490 LIBS="$LIBS $PYTHON3_LIBS"
1491 AC_TRY_LINK(,[ ],
1492 AC_MSG_RESULT(yes); fpie_ok=yes,
1493 AC_MSG_RESULT(no); fpie_ok=no)
1494 CFLAGS=$cflags_save
1495 LIBS=$libs_save
1496 if test $fpie_ok = yes; then
1497 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1498 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001499fi
1500
Bram Moolenaar071d4272004-06-13 20:20:40 +00001501AC_MSG_CHECKING(--enable-tclinterp argument)
1502AC_ARG_ENABLE(tclinterp,
1503 [ --enable-tclinterp Include Tcl interpreter.], ,
1504 [enable_tclinterp="no"])
1505AC_MSG_RESULT($enable_tclinterp)
1506
1507if test "$enable_tclinterp" = "yes"; then
1508
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001509 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001510 AC_MSG_CHECKING(--with-tclsh argument)
1511 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1512 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001513 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001514 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1515 AC_SUBST(vi_cv_path_tcl)
1516
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001517 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1518 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1519 tclsh_name="tclsh8.4"
1520 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1521 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001522 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001523 tclsh_name="tclsh8.2"
1524 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1525 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001526 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1527 tclsh_name="tclsh8.0"
1528 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1529 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001530 dnl still didn't find it, try without version number
1531 if test "X$vi_cv_path_tcl" = "X"; then
1532 tclsh_name="tclsh"
1533 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1534 fi
1535 if test "X$vi_cv_path_tcl" != "X"; then
1536 AC_MSG_CHECKING(Tcl version)
1537 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1538 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1539 AC_MSG_RESULT($tclver - OK);
1540 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 -`
1541
1542 AC_MSG_CHECKING(for location of Tcl include)
1543 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001544 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 +00001545 else
1546 dnl For Mac OS X 10.3, use the OS-provided framework location
1547 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1548 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001549 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001550 for try in $tclinc; do
1551 if test -f "$try/tcl.h"; then
1552 AC_MSG_RESULT($try/tcl.h)
1553 TCL_INC=$try
1554 break
1555 fi
1556 done
1557 if test -z "$TCL_INC"; then
1558 AC_MSG_RESULT(<not found>)
1559 SKIP_TCL=YES
1560 fi
1561 if test -z "$SKIP_TCL"; then
1562 AC_MSG_CHECKING(for location of tclConfig.sh script)
1563 if test "x$MACOSX" != "xyes"; then
1564 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001565 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001566 else
1567 dnl For Mac OS X 10.3, use the OS-provided framework location
1568 tclcnf="/System/Library/Frameworks/Tcl.framework"
1569 fi
1570 for try in $tclcnf; do
1571 if test -f $try/tclConfig.sh; then
1572 AC_MSG_RESULT($try/tclConfig.sh)
1573 . $try/tclConfig.sh
1574 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1575 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1576 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001577 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001578 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 +00001579 break
1580 fi
1581 done
1582 if test -z "$TCL_LIBS"; then
1583 AC_MSG_RESULT(<not found>)
1584 AC_MSG_CHECKING(for Tcl library by myself)
1585 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001586 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001587 for ext in .so .a ; do
1588 for ver in "" $tclver ; do
1589 for try in $tcllib ; do
1590 trylib=tcl$ver$ext
1591 if test -f $try/lib$trylib ; then
1592 AC_MSG_RESULT($try/lib$trylib)
1593 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1594 if test "`(uname) 2>/dev/null`" = SunOS &&
1595 uname -r | grep '^5' >/dev/null; then
1596 TCL_LIBS="$TCL_LIBS -R $try"
1597 fi
1598 break 3
1599 fi
1600 done
1601 done
1602 done
1603 if test -z "$TCL_LIBS"; then
1604 AC_MSG_RESULT(<not found>)
1605 SKIP_TCL=YES
1606 fi
1607 fi
1608 if test -z "$SKIP_TCL"; then
1609 AC_DEFINE(FEAT_TCL)
1610 TCL_SRC=if_tcl.c
1611 TCL_OBJ=objects/if_tcl.o
1612 TCL_PRO=if_tcl.pro
1613 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1614 fi
1615 fi
1616 else
1617 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1618 fi
1619 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001620 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1621 AC_MSG_ERROR([could not configure Tcl])
1622 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001623fi
1624AC_SUBST(TCL_SRC)
1625AC_SUBST(TCL_OBJ)
1626AC_SUBST(TCL_PRO)
1627AC_SUBST(TCL_CFLAGS)
1628AC_SUBST(TCL_LIBS)
1629
1630AC_MSG_CHECKING(--enable-rubyinterp argument)
1631AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001632 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001633 [enable_rubyinterp="no"])
1634AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001635if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001636 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001637 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001638 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1639 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1640 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001641 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001642 if test "X$vi_cv_path_ruby" != "X"; then
1643 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001644 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 +00001645 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001646 AC_MSG_CHECKING(Ruby rbconfig)
1647 ruby_rbconfig="RbConfig"
1648 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1649 ruby_rbconfig="Config"
1650 fi
1651 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001652 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001653 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 +00001654 if test "X$rubyhdrdir" != "X"; then
1655 AC_MSG_RESULT($rubyhdrdir)
1656 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001657 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001658 if test -d "$rubyhdrdir/$rubyarch"; then
1659 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1660 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001661 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001662 if test "X$rubyversion" = "X"; then
1663 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1664 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001665 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001666 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001667 if test "X$rubylibs" != "X"; then
1668 RUBY_LIBS="$rubylibs"
1669 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001670 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1671 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001672 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001673 if test -f "$rubylibdir/$librubya"; then
1674 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001675 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1676 elif test "$librubyarg" = "libruby.a"; then
1677 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1678 librubyarg="-lruby"
1679 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001680 fi
1681
1682 if test "X$librubyarg" != "X"; then
1683 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1684 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001685 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001686 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001687 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1688 dnl be included if requested by passing --with-mac-arch to
1689 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001690 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001691 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001692 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1693 LDFLAGS="$rubyldflags $LDFLAGS"
1694 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001695 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001696 fi
1697 RUBY_SRC="if_ruby.c"
1698 RUBY_OBJ="objects/if_ruby.o"
1699 RUBY_PRO="if_ruby.pro"
1700 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001701 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001702 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001703 AC_DEFINE(DYNAMIC_RUBY)
1704 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1705 RUBY_LIBS=
1706 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001707 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001708 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001709 fi
1710 else
1711 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1712 fi
1713 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001714
1715 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1716 AC_MSG_ERROR([could not configure Ruby])
1717 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718fi
1719AC_SUBST(RUBY_SRC)
1720AC_SUBST(RUBY_OBJ)
1721AC_SUBST(RUBY_PRO)
1722AC_SUBST(RUBY_CFLAGS)
1723AC_SUBST(RUBY_LIBS)
1724
1725AC_MSG_CHECKING(--enable-cscope argument)
1726AC_ARG_ENABLE(cscope,
1727 [ --enable-cscope Include cscope interface.], ,
1728 [enable_cscope="no"])
1729AC_MSG_RESULT($enable_cscope)
1730if test "$enable_cscope" = "yes"; then
1731 AC_DEFINE(FEAT_CSCOPE)
1732fi
1733
1734AC_MSG_CHECKING(--enable-workshop argument)
1735AC_ARG_ENABLE(workshop,
1736 [ --enable-workshop Include Sun Visual Workshop support.], ,
1737 [enable_workshop="no"])
1738AC_MSG_RESULT($enable_workshop)
1739if test "$enable_workshop" = "yes"; then
1740 AC_DEFINE(FEAT_SUN_WORKSHOP)
1741 WORKSHOP_SRC="workshop.c integration.c"
1742 AC_SUBST(WORKSHOP_SRC)
1743 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1744 AC_SUBST(WORKSHOP_OBJ)
1745 if test "${enable_gui-xxx}" = xxx; then
1746 enable_gui=motif
1747 fi
1748fi
1749
1750AC_MSG_CHECKING(--disable-netbeans argument)
1751AC_ARG_ENABLE(netbeans,
1752 [ --disable-netbeans Disable NetBeans integration support.],
1753 , [enable_netbeans="yes"])
1754if test "$enable_netbeans" = "yes"; then
1755 AC_MSG_RESULT(no)
1756 dnl On Solaris we need the socket and nsl library.
1757 AC_CHECK_LIB(socket, socket)
1758 AC_CHECK_LIB(nsl, gethostbyname)
1759 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1760 AC_TRY_LINK([
1761#include <stdio.h>
1762#include <stdlib.h>
1763#include <stdarg.h>
1764#include <fcntl.h>
1765#include <netdb.h>
1766#include <netinet/in.h>
1767#include <errno.h>
1768#include <sys/types.h>
1769#include <sys/socket.h>
1770 /* Check bitfields */
1771 struct nbbuf {
1772 unsigned int initDone:1;
1773 ushort signmaplen;
1774 };
1775 ], [
1776 /* Check creating a socket. */
1777 struct sockaddr_in server;
1778 (void)socket(AF_INET, SOCK_STREAM, 0);
1779 (void)htons(100);
1780 (void)gethostbyname("microsoft.com");
1781 if (errno == ECONNREFUSED)
1782 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1783 ],
1784 AC_MSG_RESULT(yes),
1785 AC_MSG_RESULT(no); enable_netbeans="no")
1786else
1787 AC_MSG_RESULT(yes)
1788fi
1789if test "$enable_netbeans" = "yes"; then
1790 AC_DEFINE(FEAT_NETBEANS_INTG)
1791 NETBEANS_SRC="netbeans.c"
1792 AC_SUBST(NETBEANS_SRC)
1793 NETBEANS_OBJ="objects/netbeans.o"
1794 AC_SUBST(NETBEANS_OBJ)
1795fi
1796
1797AC_MSG_CHECKING(--enable-sniff argument)
1798AC_ARG_ENABLE(sniff,
1799 [ --enable-sniff Include Sniff interface.], ,
1800 [enable_sniff="no"])
1801AC_MSG_RESULT($enable_sniff)
1802if test "$enable_sniff" = "yes"; then
1803 AC_DEFINE(FEAT_SNIFF)
1804 SNIFF_SRC="if_sniff.c"
1805 AC_SUBST(SNIFF_SRC)
1806 SNIFF_OBJ="objects/if_sniff.o"
1807 AC_SUBST(SNIFF_OBJ)
1808fi
1809
1810AC_MSG_CHECKING(--enable-multibyte argument)
1811AC_ARG_ENABLE(multibyte,
1812 [ --enable-multibyte Include multibyte editing support.], ,
1813 [enable_multibyte="no"])
1814AC_MSG_RESULT($enable_multibyte)
1815if test "$enable_multibyte" = "yes"; then
1816 AC_DEFINE(FEAT_MBYTE)
1817fi
1818
1819AC_MSG_CHECKING(--enable-hangulinput argument)
1820AC_ARG_ENABLE(hangulinput,
1821 [ --enable-hangulinput Include Hangul input support.], ,
1822 [enable_hangulinput="no"])
1823AC_MSG_RESULT($enable_hangulinput)
1824
1825AC_MSG_CHECKING(--enable-xim argument)
1826AC_ARG_ENABLE(xim,
1827 [ --enable-xim Include XIM input support.],
1828 AC_MSG_RESULT($enable_xim),
1829 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001830
1831AC_MSG_CHECKING(--enable-fontset argument)
1832AC_ARG_ENABLE(fontset,
1833 [ --enable-fontset Include X fontset output support.], ,
1834 [enable_fontset="no"])
1835AC_MSG_RESULT($enable_fontset)
1836dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1837
1838test -z "$with_x" && with_x=yes
1839test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1840if test "$with_x" = no; then
1841 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1842else
1843 dnl Do this check early, so that its failure can override user requests.
1844
1845 AC_PATH_PROG(xmkmfpath, xmkmf)
1846
1847 AC_PATH_XTRA
1848
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001849 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001850 dnl be compiled with a special option.
1851 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001852 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001853 CFLAGS="$CFLAGS -W c,dll"
1854 LDFLAGS="$LDFLAGS -W l,dll"
1855 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1856 fi
1857
1858 dnl On my HPUX system the X include dir is found, but the lib dir not.
1859 dnl This is a desparate try to fix this.
1860
1861 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1862 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1863 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1864 X_LIBS="$X_LIBS -L$x_libraries"
1865 if test "`(uname) 2>/dev/null`" = SunOS &&
1866 uname -r | grep '^5' >/dev/null; then
1867 X_LIBS="$X_LIBS -R $x_libraries"
1868 fi
1869 fi
1870
1871 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1872 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1873 AC_MSG_RESULT(Corrected X includes to $x_includes)
1874 X_CFLAGS="$X_CFLAGS -I$x_includes"
1875 fi
1876
1877 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1878 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1879 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1880 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1881 dnl Same for "-R/usr/lib ".
1882 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1883
1884
1885 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001886 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1887 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001888 AC_MSG_CHECKING(if X11 header files can be found)
1889 cflags_save=$CFLAGS
1890 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001891 AC_TRY_COMPILE([#include <X11/Xlib.h>
1892#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001893 AC_MSG_RESULT(yes),
1894 AC_MSG_RESULT(no); no_x=yes)
1895 CFLAGS=$cflags_save
1896
1897 if test "${no_x-no}" = yes; then
1898 with_x=no
1899 else
1900 AC_DEFINE(HAVE_X11)
1901 X_LIB="-lXt -lX11";
1902 AC_SUBST(X_LIB)
1903
1904 ac_save_LDFLAGS="$LDFLAGS"
1905 LDFLAGS="-L$x_libraries $LDFLAGS"
1906
1907 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1908 dnl For HP-UX 10.20 it must be before -lSM -lICE
1909 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1910 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1911
1912 dnl Some systems need -lnsl -lsocket when testing for ICE.
1913 dnl The check above doesn't do this, try here (again). Also needed to get
1914 dnl them after Xdmcp. link.sh will remove them when not needed.
1915 dnl Check for other function than above to avoid the cached value
1916 AC_CHECK_LIB(ICE, IceOpenConnection,
1917 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1918
1919 dnl Check for -lXpm (needed for some versions of Motif)
1920 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1921 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1922 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1923
1924 dnl Check that the X11 header files don't use implicit declarations
1925 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1926 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001927 dnl -Werror is GCC only, others like Solaris Studio might not like it
1928 if test "$GCC" = yes; then
1929 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1930 else
1931 CFLAGS="$CFLAGS $X_CFLAGS"
1932 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001933 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1934 AC_MSG_RESULT(no),
1935 CFLAGS="$CFLAGS -Wno-implicit-int"
1936 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1937 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1938 AC_MSG_RESULT(test failed)
1939 )
1940 )
1941 CFLAGS=$cflags_save
1942
1943 LDFLAGS="$ac_save_LDFLAGS"
1944
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001945 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1946 AC_CACHE_VAL(ac_cv_small_wchar_t,
1947 [AC_TRY_RUN([
1948#include <X11/Xlib.h>
1949#if STDC_HEADERS
1950# include <stdlib.h>
1951# include <stddef.h>
1952#endif
1953 main()
1954 {
1955 if (sizeof(wchar_t) <= 2)
1956 exit(1);
1957 exit(0);
1958 }],
1959 ac_cv_small_wchar_t="no",
1960 ac_cv_small_wchar_t="yes",
1961 AC_MSG_ERROR(failed to compile test program))])
1962 AC_MSG_RESULT($ac_cv_small_wchar_t)
1963 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1964 AC_DEFINE(SMALL_WCHAR_T)
1965 fi
1966
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967 fi
1968fi
1969
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001970test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001971
1972AC_MSG_CHECKING(--enable-gui argument)
1973AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001974 [ --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 +00001975
1976dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1977dnl Do not use character classes for portability with old tools.
1978enable_gui_canon=`echo "_$enable_gui" | \
1979 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1980
1981dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001982SKIP_GTK2=YES
1983SKIP_GNOME=YES
1984SKIP_MOTIF=YES
1985SKIP_ATHENA=YES
1986SKIP_NEXTAW=YES
1987SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001988SKIP_CARBON=YES
1989GUITYPE=NONE
1990
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001991if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001992 SKIP_PHOTON=
1993 case "$enable_gui_canon" in
1994 no) AC_MSG_RESULT(no GUI support)
1995 SKIP_PHOTON=YES ;;
1996 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1997 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1998 photon) AC_MSG_RESULT(Photon GUI support) ;;
1999 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2000 SKIP_PHOTON=YES ;;
2001 esac
2002
2003elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2004 SKIP_CARBON=
2005 case "$enable_gui_canon" in
2006 no) AC_MSG_RESULT(no GUI support)
2007 SKIP_CARBON=YES ;;
2008 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002009 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2010 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002011 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2012 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2013 SKIP_CARBON=YES ;;
2014 esac
2015
2016else
2017
Bram Moolenaar071d4272004-06-13 20:20:40 +00002018 case "$enable_gui_canon" in
2019 no|none) AC_MSG_RESULT(no GUI support) ;;
2020 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002021 SKIP_GTK2=
2022 SKIP_GNOME=
2023 SKIP_MOTIF=
2024 SKIP_ATHENA=
2025 SKIP_NEXTAW=
2026 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002027 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002028 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002029 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2030 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002031 SKIP_GTK2=;;
2032 motif) AC_MSG_RESULT(Motif GUI support)
2033 SKIP_MOTIF=;;
2034 athena) AC_MSG_RESULT(Athena GUI support)
2035 SKIP_ATHENA=;;
2036 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2037 SKIP_NEXTAW=;;
2038 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2039 esac
2040
2041fi
2042
Bram Moolenaar071d4272004-06-13 20:20:40 +00002043if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2044 -a "$enable_gui_canon" != "gnome2"; then
2045 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2046 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002047 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002048 , enable_gtk2_check="yes")
2049 AC_MSG_RESULT($enable_gtk2_check)
2050 if test "x$enable_gtk2_check" = "xno"; then
2051 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002052 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002053 fi
2054fi
2055
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002056if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002057 AC_MSG_CHECKING(whether or not to look for GNOME)
2058 AC_ARG_ENABLE(gnome-check,
2059 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2060 , enable_gnome_check="no")
2061 AC_MSG_RESULT($enable_gnome_check)
2062 if test "x$enable_gnome_check" = "xno"; then
2063 SKIP_GNOME=YES
2064 fi
2065fi
2066
2067if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2068 AC_MSG_CHECKING(whether or not to look for Motif)
2069 AC_ARG_ENABLE(motif-check,
2070 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2071 , enable_motif_check="yes")
2072 AC_MSG_RESULT($enable_motif_check)
2073 if test "x$enable_motif_check" = "xno"; then
2074 SKIP_MOTIF=YES
2075 fi
2076fi
2077
2078if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2079 AC_MSG_CHECKING(whether or not to look for Athena)
2080 AC_ARG_ENABLE(athena-check,
2081 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2082 , enable_athena_check="yes")
2083 AC_MSG_RESULT($enable_athena_check)
2084 if test "x$enable_athena_check" = "xno"; then
2085 SKIP_ATHENA=YES
2086 fi
2087fi
2088
2089if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2090 AC_MSG_CHECKING(whether or not to look for neXtaw)
2091 AC_ARG_ENABLE(nextaw-check,
2092 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2093 , enable_nextaw_check="yes")
2094 AC_MSG_RESULT($enable_nextaw_check);
2095 if test "x$enable_nextaw_check" = "xno"; then
2096 SKIP_NEXTAW=YES
2097 fi
2098fi
2099
2100if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2101 AC_MSG_CHECKING(whether or not to look for Carbon)
2102 AC_ARG_ENABLE(carbon-check,
2103 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2104 , enable_carbon_check="yes")
2105 AC_MSG_RESULT($enable_carbon_check);
2106 if test "x$enable_carbon_check" = "xno"; then
2107 SKIP_CARBON=YES
2108 fi
2109fi
2110
Bram Moolenaar843ee412004-06-30 16:16:41 +00002111
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2113 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002114 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002115 AC_MSG_RESULT(yes);
2116 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002117 if test "$VIMNAME" = "vim"; then
2118 VIMNAME=Vim
2119 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002120
Bram Moolenaar164fca32010-07-14 13:58:07 +02002121 if test "x$MACARCH" = "xboth"; then
2122 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2123 else
2124 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2125 fi
2126
Bram Moolenaar14716812006-05-04 21:54:08 +00002127 dnl Default install directory is not /usr/local
2128 if test x$prefix = xNONE; then
2129 prefix=/Applications
2130 fi
2131
2132 dnl Sorry for the hard coded default
2133 datadir='${prefix}/Vim.app/Contents/Resources'
2134
Bram Moolenaar071d4272004-06-13 20:20:40 +00002135 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002136 SKIP_GTK2=YES;
2137 SKIP_GNOME=YES;
2138 SKIP_MOTIF=YES;
2139 SKIP_ATHENA=YES;
2140 SKIP_NEXTAW=YES;
2141 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142 SKIP_CARBON=YES
2143fi
2144
Bram Moolenaar071d4272004-06-13 20:20:40 +00002145dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002146dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002147dnl
2148dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002149dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150dnl
2151AC_DEFUN(AM_PATH_GTK,
2152[
2153 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2154 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002155 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002156 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2157 no_gtk=""
2158 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2159 && $PKG_CONFIG --exists gtk+-2.0; then
2160 {
2161 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2162 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2163 dnl something like that.
2164 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002165 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002166 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2167 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2168 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2169 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2170 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2171 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2172 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2173 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002174 else
2175 no_gtk=yes
2176 fi
2177
2178 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2179 {
2180 ac_save_CFLAGS="$CFLAGS"
2181 ac_save_LIBS="$LIBS"
2182 CFLAGS="$CFLAGS $GTK_CFLAGS"
2183 LIBS="$LIBS $GTK_LIBS"
2184
2185 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002186 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002187 dnl
2188 rm -f conf.gtktest
2189 AC_TRY_RUN([
2190#include <gtk/gtk.h>
2191#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002192#if STDC_HEADERS
2193# include <stdlib.h>
2194# include <stddef.h>
2195#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002196
2197int
2198main ()
2199{
2200int major, minor, micro;
2201char *tmp_version;
2202
2203system ("touch conf.gtktest");
2204
2205/* HP/UX 9 (%@#!) writes to sscanf strings */
2206tmp_version = g_strdup("$min_gtk_version");
2207if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2208 printf("%s, bad version string\n", "$min_gtk_version");
2209 exit(1);
2210 }
2211
2212if ((gtk_major_version > major) ||
2213 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2214 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2215 (gtk_micro_version >= micro)))
2216{
2217 return 0;
2218}
2219return 1;
2220}
2221],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2222 CFLAGS="$ac_save_CFLAGS"
2223 LIBS="$ac_save_LIBS"
2224 }
2225 fi
2226 if test "x$no_gtk" = x ; then
2227 if test "x$enable_gtktest" = "xyes"; then
2228 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2229 else
2230 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2231 fi
2232 ifelse([$2], , :, [$2])
2233 else
2234 {
2235 AC_MSG_RESULT(no)
2236 GTK_CFLAGS=""
2237 GTK_LIBS=""
2238 ifelse([$3], , :, [$3])
2239 }
2240 fi
2241 }
2242 else
2243 GTK_CFLAGS=""
2244 GTK_LIBS=""
2245 ifelse([$3], , :, [$3])
2246 fi
2247 AC_SUBST(GTK_CFLAGS)
2248 AC_SUBST(GTK_LIBS)
2249 rm -f conf.gtktest
2250])
2251
2252dnl ---------------------------------------------------------------------------
2253dnl gnome
2254dnl ---------------------------------------------------------------------------
2255AC_DEFUN([GNOME_INIT_HOOK],
2256[
2257 AC_SUBST(GNOME_LIBS)
2258 AC_SUBST(GNOME_LIBDIR)
2259 AC_SUBST(GNOME_INCLUDEDIR)
2260
2261 AC_ARG_WITH(gnome-includes,
2262 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2263 [CFLAGS="$CFLAGS -I$withval"]
2264 )
2265
2266 AC_ARG_WITH(gnome-libs,
2267 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2268 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2269 )
2270
2271 AC_ARG_WITH(gnome,
2272 [ --with-gnome Specify prefix for GNOME files],
2273 if test x$withval = xyes; then
2274 want_gnome=yes
2275 ifelse([$1], [], :, [$1])
2276 else
2277 if test "x$withval" = xno; then
2278 want_gnome=no
2279 else
2280 want_gnome=yes
2281 LDFLAGS="$LDFLAGS -L$withval/lib"
2282 CFLAGS="$CFLAGS -I$withval/include"
2283 gnome_prefix=$withval/lib
2284 fi
2285 fi,
2286 want_gnome=yes)
2287
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002288 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002289 {
2290 AC_MSG_CHECKING(for libgnomeui-2.0)
2291 if $PKG_CONFIG --exists libgnomeui-2.0; then
2292 AC_MSG_RESULT(yes)
2293 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2294 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2295 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002296
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002297 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2298 dnl This might not be the right way but it works for me...
2299 AC_MSG_CHECKING(for FreeBSD)
2300 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2301 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002302 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002303 GNOME_LIBS="$GNOME_LIBS -pthread"
2304 else
2305 AC_MSG_RESULT(no)
2306 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002307 $1
2308 else
2309 AC_MSG_RESULT(not found)
2310 if test "x$2" = xfail; then
2311 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2312 fi
2313 fi
2314 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002315 fi
2316])
2317
2318AC_DEFUN([GNOME_INIT],[
2319 GNOME_INIT_HOOK([],fail)
2320])
2321
2322
2323dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002324dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002325dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002326if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002327
2328 AC_MSG_CHECKING(--disable-gtktest argument)
2329 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2330 , enable_gtktest=yes)
2331 if test "x$enable_gtktest" = "xyes" ; then
2332 AC_MSG_RESULT(gtk test enabled)
2333 else
2334 AC_MSG_RESULT(gtk test disabled)
2335 fi
2336
Bram Moolenaar071d4272004-06-13 20:20:40 +00002337 if test "X$PKG_CONFIG" = "X"; then
2338 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2339 fi
2340
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002341 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002342 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2343 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002344 AM_PATH_GTK(2.2.0,
2345 [GUI_LIB_LOC="$GTK_LIBDIR"
2346 GTK_LIBNAME="$GTK_LIBS"
2347 GUI_INC_LOC="$GTK_CFLAGS"], )
2348 if test "x$GTK_CFLAGS" != "x"; then
2349 SKIP_ATHENA=YES
2350 SKIP_NEXTAW=YES
2351 SKIP_MOTIF=YES
2352 GUITYPE=GTK
2353 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002354 fi
2355 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002356 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002357 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2358 || test "0$gtk_minor_version" -ge 2; then
2359 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2360 fi
2361 dnl
2362 dnl if GTK exists, then check for GNOME.
2363 dnl
2364 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002365 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002366 GNOME_INIT_HOOK([have_gnome=yes])
2367 if test "x$have_gnome" = xyes ; then
2368 AC_DEFINE(FEAT_GUI_GNOME)
2369 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2370 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002371 fi
2372 }
2373 fi
2374 fi
2375fi
2376
2377dnl Check for Motif include files location.
2378dnl The LAST one found is used, this makes the highest version to be used,
2379dnl e.g. when Motif1.2 and Motif2.0 are both present.
2380
2381if test -z "$SKIP_MOTIF"; then
2382 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"
2383 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2384 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2385
2386 AC_MSG_CHECKING(for location of Motif GUI includes)
2387 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2388 GUI_INC_LOC=
2389 for try in $gui_includes; do
2390 if test -f "$try/Xm/Xm.h"; then
2391 GUI_INC_LOC=$try
2392 fi
2393 done
2394 if test -n "$GUI_INC_LOC"; then
2395 if test "$GUI_INC_LOC" = /usr/include; then
2396 GUI_INC_LOC=
2397 AC_MSG_RESULT(in default path)
2398 else
2399 AC_MSG_RESULT($GUI_INC_LOC)
2400 fi
2401 else
2402 AC_MSG_RESULT(<not found>)
2403 SKIP_MOTIF=YES
2404 fi
2405fi
2406
2407dnl Check for Motif library files location. In the same order as the include
2408dnl files, to avoid a mixup if several versions are present
2409
2410if test -z "$SKIP_MOTIF"; then
2411 AC_MSG_CHECKING(--with-motif-lib argument)
2412 AC_ARG_WITH(motif-lib,
2413 [ --with-motif-lib=STRING Library for Motif ],
2414 [ MOTIF_LIBNAME="${withval}" ] )
2415
2416 if test -n "$MOTIF_LIBNAME"; then
2417 AC_MSG_RESULT($MOTIF_LIBNAME)
2418 GUI_LIB_LOC=
2419 else
2420 AC_MSG_RESULT(no)
2421
2422 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2423 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2424
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002425 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2426 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002427 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002428 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 +00002429 GUI_LIB_LOC=
2430 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002431 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002432 if test -f "$libtry"; then
2433 GUI_LIB_LOC=$try
2434 fi
2435 done
2436 done
2437 if test -n "$GUI_LIB_LOC"; then
2438 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002439 if test "$GUI_LIB_LOC" = /usr/lib \
2440 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2441 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002442 GUI_LIB_LOC=
2443 AC_MSG_RESULT(in default path)
2444 else
2445 if test -n "$GUI_LIB_LOC"; then
2446 AC_MSG_RESULT($GUI_LIB_LOC)
2447 if test "`(uname) 2>/dev/null`" = SunOS &&
2448 uname -r | grep '^5' >/dev/null; then
2449 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2450 fi
2451 fi
2452 fi
2453 MOTIF_LIBNAME=-lXm
2454 else
2455 AC_MSG_RESULT(<not found>)
2456 SKIP_MOTIF=YES
2457 fi
2458 fi
2459fi
2460
2461if test -z "$SKIP_MOTIF"; then
2462 SKIP_ATHENA=YES
2463 SKIP_NEXTAW=YES
2464 GUITYPE=MOTIF
2465 AC_SUBST(MOTIF_LIBNAME)
2466fi
2467
2468dnl Check if the Athena files can be found
2469
2470GUI_X_LIBS=
2471
2472if test -z "$SKIP_ATHENA"; then
2473 AC_MSG_CHECKING(if Athena header files can be found)
2474 cflags_save=$CFLAGS
2475 CFLAGS="$CFLAGS $X_CFLAGS"
2476 AC_TRY_COMPILE([
2477#include <X11/Intrinsic.h>
2478#include <X11/Xaw/Paned.h>], ,
2479 AC_MSG_RESULT(yes),
2480 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2481 CFLAGS=$cflags_save
2482fi
2483
2484if test -z "$SKIP_ATHENA"; then
2485 GUITYPE=ATHENA
2486fi
2487
2488if test -z "$SKIP_NEXTAW"; then
2489 AC_MSG_CHECKING(if neXtaw header files can be found)
2490 cflags_save=$CFLAGS
2491 CFLAGS="$CFLAGS $X_CFLAGS"
2492 AC_TRY_COMPILE([
2493#include <X11/Intrinsic.h>
2494#include <X11/neXtaw/Paned.h>], ,
2495 AC_MSG_RESULT(yes),
2496 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2497 CFLAGS=$cflags_save
2498fi
2499
2500if test -z "$SKIP_NEXTAW"; then
2501 GUITYPE=NEXTAW
2502fi
2503
2504if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2505 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2506 dnl Avoid adding it when it twice
2507 if test -n "$GUI_INC_LOC"; then
2508 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2509 fi
2510 if test -n "$GUI_LIB_LOC"; then
2511 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2512 fi
2513
2514 dnl Check for -lXext and then for -lXmu
2515 ldflags_save=$LDFLAGS
2516 LDFLAGS="$X_LIBS $LDFLAGS"
2517 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2518 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2519 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2520 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2521 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2522 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2523 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2524 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2525 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2526 if test -z "$SKIP_MOTIF"; then
2527 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2528 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2529 fi
2530 LDFLAGS=$ldflags_save
2531
2532 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2533 AC_MSG_CHECKING(for extra X11 defines)
2534 NARROW_PROTO=
2535 rm -fr conftestdir
2536 if mkdir conftestdir; then
2537 cd conftestdir
2538 cat > Imakefile <<'EOF'
2539acfindx:
2540 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2541EOF
2542 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2543 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2544 fi
2545 cd ..
2546 rm -fr conftestdir
2547 fi
2548 if test -z "$NARROW_PROTO"; then
2549 AC_MSG_RESULT(no)
2550 else
2551 AC_MSG_RESULT($NARROW_PROTO)
2552 fi
2553 AC_SUBST(NARROW_PROTO)
2554fi
2555
2556dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2557dnl use the X11 include path
2558if test "$enable_xsmp" = "yes"; then
2559 cppflags_save=$CPPFLAGS
2560 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2561 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2562 CPPFLAGS=$cppflags_save
2563fi
2564
2565
Bram Moolenaare667c952010-07-05 22:57:59 +02002566if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002567 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2568 cppflags_save=$CPPFLAGS
2569 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2570 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2571
2572 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2573 if test ! "$enable_xim" = "no"; then
2574 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2575 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2576 AC_MSG_RESULT(yes),
2577 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2578 fi
2579 CPPFLAGS=$cppflags_save
2580
2581 dnl automatically enable XIM when hangul input isn't enabled
2582 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2583 -a "x$GUITYPE" != "xNONE" ; then
2584 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2585 enable_xim="yes"
2586 fi
2587fi
2588
2589if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2590 cppflags_save=$CPPFLAGS
2591 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002592dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2593 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2594 AC_TRY_COMPILE([
2595#include <X11/Intrinsic.h>
2596#include <X11/Xmu/Editres.h>],
2597 [int i; i = 0;],
2598 AC_MSG_RESULT(yes)
2599 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2600 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002601 CPPFLAGS=$cppflags_save
2602fi
2603
2604dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2605if test -z "$SKIP_MOTIF"; then
2606 cppflags_save=$CPPFLAGS
2607 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002608 if test "$zOSUnix" = "yes"; then
2609 xmheader="Xm/Xm.h"
2610 else
2611 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002612 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002613 fi
2614 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002615
Bram Moolenaar77c19352012-06-13 19:19:41 +02002616 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002617 dnl Solaris uses XpmAttributes_21, very annoying.
2618 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2619 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2620 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2621 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2622 )
2623 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002624 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002625 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002626 CPPFLAGS=$cppflags_save
2627fi
2628
2629if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2630 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2631 enable_xim="no"
2632fi
2633if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2634 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2635 enable_fontset="no"
2636fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002637if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002638 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2639 enable_fontset="no"
2640fi
2641
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642if test -z "$SKIP_PHOTON"; then
2643 GUITYPE=PHOTONGUI
2644fi
2645
2646AC_SUBST(GUI_INC_LOC)
2647AC_SUBST(GUI_LIB_LOC)
2648AC_SUBST(GUITYPE)
2649AC_SUBST(GUI_X_LIBS)
2650
2651if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2652 AC_MSG_ERROR([cannot use workshop without Motif])
2653fi
2654
2655dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2656if test "$enable_xim" = "yes"; then
2657 AC_DEFINE(FEAT_XIM)
2658fi
2659if test "$enable_fontset" = "yes"; then
2660 AC_DEFINE(FEAT_XFONTSET)
2661fi
2662
2663
2664dnl ---------------------------------------------------------------------------
2665dnl end of GUI-checking
2666dnl ---------------------------------------------------------------------------
2667
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002668dnl Check for Cygwin, which needs an extra source file if not using X11
2669AC_MSG_CHECKING(for CYGWIN environment)
2670case `uname` in
2671 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2672 AC_MSG_CHECKING(for CYGWIN clipboard support)
2673 if test "x$with_x" = "xno" ; then
2674 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2675 AC_MSG_RESULT(yes)
2676 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2677 else
2678 AC_MSG_RESULT(no - using X11)
2679 fi ;;
2680
2681 *) CYGWIN=no; AC_MSG_RESULT(no);;
2682esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002683
2684dnl Only really enable hangul input when GUI and XFONTSET are available
2685if test "$enable_hangulinput" = "yes"; then
2686 if test "x$GUITYPE" = "xNONE"; then
2687 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2688 enable_hangulinput=no
2689 else
2690 AC_DEFINE(FEAT_HANGULIN)
2691 HANGULIN_SRC=hangulin.c
2692 AC_SUBST(HANGULIN_SRC)
2693 HANGULIN_OBJ=objects/hangulin.o
2694 AC_SUBST(HANGULIN_OBJ)
2695 fi
2696fi
2697
2698dnl Checks for libraries and include files.
2699
Bram Moolenaar446cb832008-06-24 21:56:24 +00002700AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2701 [
2702 AC_RUN_IFELSE([[
2703#include "confdefs.h"
2704#include <ctype.h>
2705#if STDC_HEADERS
2706# include <stdlib.h>
2707# include <stddef.h>
2708#endif
2709main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2710 ]],[
2711 vim_cv_toupper_broken=yes
2712 ],[
2713 vim_cv_toupper_broken=no
2714 ],[
2715 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2716 ])])
2717
2718if test "x$vim_cv_toupper_broken" = "xyes" ; then
2719 AC_DEFINE(BROKEN_TOUPPER)
2720fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721
2722AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002723AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002724 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2725 AC_MSG_RESULT(no))
2726
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002727AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2728AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2729 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2730 AC_MSG_RESULT(no))
2731
Bram Moolenaar071d4272004-06-13 20:20:40 +00002732dnl Checks for header files.
2733AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2734dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2735if test "$HAS_ELF" = 1; then
2736 AC_CHECK_LIB(elf, main)
2737fi
2738
2739AC_HEADER_DIRENT
2740
Bram Moolenaar071d4272004-06-13 20:20:40 +00002741dnl If sys/wait.h is not found it might still exist but not be POSIX
2742dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2743if test $ac_cv_header_sys_wait_h = no; then
2744 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2745 AC_TRY_COMPILE([#include <sys/wait.h>],
2746 [union wait xx, yy; xx = yy],
2747 AC_MSG_RESULT(yes)
2748 AC_DEFINE(HAVE_SYS_WAIT_H)
2749 AC_DEFINE(HAVE_UNION_WAIT),
2750 AC_MSG_RESULT(no))
2751fi
2752
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002753AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2754 sys/select.h sys/utsname.h termcap.h fcntl.h \
2755 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2756 termio.h iconv.h inttypes.h langinfo.h math.h \
2757 unistd.h stropts.h errno.h sys/resource.h \
2758 sys/systeminfo.h locale.h sys/stream.h termios.h \
2759 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2760 utime.h sys/param.h libintl.h libgen.h \
2761 util/debug.h util/msg18n.h frame.h sys/acl.h \
2762 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002763
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002764dnl sys/ptem.h depends on sys/stream.h on Solaris
2765AC_CHECK_HEADERS(sys/ptem.h, [], [],
2766[#if defined HAVE_SYS_STREAM_H
2767# include <sys/stream.h>
2768#endif])
2769
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002770dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2771AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2772[#if defined HAVE_SYS_PARAM_H
2773# include <sys/param.h>
2774#endif])
2775
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002776
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002777dnl pthread_np.h may exist but can only be used after including pthread.h
2778AC_MSG_CHECKING([for pthread_np.h])
2779AC_TRY_COMPILE([
2780#include <pthread.h>
2781#include <pthread_np.h>],
2782 [int i; i = 0;],
2783 AC_MSG_RESULT(yes)
2784 AC_DEFINE(HAVE_PTHREAD_NP_H),
2785 AC_MSG_RESULT(no))
2786
Bram Moolenaare344bea2005-09-01 20:46:49 +00002787AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002788if test "x$MACOSX" = "xyes"; then
2789 dnl The strings.h file on OS/X contains a warning and nothing useful.
2790 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2791else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002792
2793dnl Check if strings.h and string.h can both be included when defined.
2794AC_MSG_CHECKING([if strings.h can be included after string.h])
2795cppflags_save=$CPPFLAGS
2796CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2797AC_TRY_COMPILE([
2798#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2799# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2800 /* but don't do it on AIX 5.1 (Uribarri) */
2801#endif
2802#ifdef HAVE_XM_XM_H
2803# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2804#endif
2805#ifdef HAVE_STRING_H
2806# include <string.h>
2807#endif
2808#if defined(HAVE_STRINGS_H)
2809# include <strings.h>
2810#endif
2811 ], [int i; i = 0;],
2812 AC_MSG_RESULT(yes),
2813 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2814 AC_MSG_RESULT(no))
2815CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002816fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002817
2818dnl Checks for typedefs, structures, and compiler characteristics.
2819AC_PROG_GCC_TRADITIONAL
2820AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002821AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002822AC_TYPE_MODE_T
2823AC_TYPE_OFF_T
2824AC_TYPE_PID_T
2825AC_TYPE_SIZE_T
2826AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002827AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002828
Bram Moolenaar071d4272004-06-13 20:20:40 +00002829AC_HEADER_TIME
2830AC_CHECK_TYPE(ino_t, long)
2831AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002832AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002833
2834AC_MSG_CHECKING(for rlim_t)
2835if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2836 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2837else
2838 AC_EGREP_CPP(dnl
2839changequote(<<,>>)dnl
2840<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2841changequote([,]),
2842 [
2843#include <sys/types.h>
2844#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002845# include <stdlib.h>
2846# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002847#endif
2848#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002849# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850#endif
2851 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2852 AC_MSG_RESULT($ac_cv_type_rlim_t)
2853fi
2854if test $ac_cv_type_rlim_t = no; then
2855 cat >> confdefs.h <<\EOF
2856#define rlim_t unsigned long
2857EOF
2858fi
2859
2860AC_MSG_CHECKING(for stack_t)
2861if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2862 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2863else
2864 AC_EGREP_CPP(stack_t,
2865 [
2866#include <sys/types.h>
2867#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002868# include <stdlib.h>
2869# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002870#endif
2871#include <signal.h>
2872 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2873 AC_MSG_RESULT($ac_cv_type_stack_t)
2874fi
2875if test $ac_cv_type_stack_t = no; then
2876 cat >> confdefs.h <<\EOF
2877#define stack_t struct sigaltstack
2878EOF
2879fi
2880
2881dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2882AC_MSG_CHECKING(whether stack_t has an ss_base field)
2883AC_TRY_COMPILE([
2884#include <sys/types.h>
2885#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002886# include <stdlib.h>
2887# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002888#endif
2889#include <signal.h>
2890#include "confdefs.h"
2891 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2892 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2893 AC_MSG_RESULT(no))
2894
2895olibs="$LIBS"
2896AC_MSG_CHECKING(--with-tlib argument)
2897AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2898if test -n "$with_tlib"; then
2899 AC_MSG_RESULT($with_tlib)
2900 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002901 AC_MSG_CHECKING(for linking with $with_tlib library)
2902 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2903 dnl Need to check for tgetent() below.
2904 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002905else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002906 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002907 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2908 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002909 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002910 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002911 dnl Older versions of ncurses have bugs, get a new one!
2912 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002913 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002914 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002915 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2916 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002917 esac
2918 for libname in $tlibs; do
2919 AC_CHECK_LIB(${libname}, tgetent,,)
2920 if test "x$olibs" != "x$LIBS"; then
2921 dnl It's possible that a library is found but it doesn't work
2922 dnl e.g., shared library that cannot be found
2923 dnl compile and run a test program to be sure
2924 AC_TRY_RUN([
2925#ifdef HAVE_TERMCAP_H
2926# include <termcap.h>
2927#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002928#if STDC_HEADERS
2929# include <stdlib.h>
2930# include <stddef.h>
2931#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002932main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2933 res="OK", res="FAIL", res="FAIL")
2934 if test "$res" = "OK"; then
2935 break
2936 fi
2937 AC_MSG_RESULT($libname library is not usable)
2938 LIBS="$olibs"
2939 fi
2940 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002941 if test "x$olibs" = "x$LIBS"; then
2942 AC_MSG_RESULT(no terminal library found)
2943 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002944fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002945
2946if test "x$olibs" = "x$LIBS"; then
2947 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002948 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002949 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2950 AC_MSG_RESULT(yes),
2951 AC_MSG_ERROR([NOT FOUND!
2952 You need to install a terminal library; for example ncurses.
2953 Or specify the name of the library with --with-tlib.]))
2954fi
2955
Bram Moolenaar446cb832008-06-24 21:56:24 +00002956AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2957 [
2958 AC_RUN_IFELSE([[
2959#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002960#ifdef HAVE_TERMCAP_H
2961# include <termcap.h>
2962#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002963#ifdef HAVE_STRING_H
2964# include <string.h>
2965#endif
2966#if STDC_HEADERS
2967# include <stdlib.h>
2968# include <stddef.h>
2969#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002970main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002971{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2972 ]],[
2973 vim_cv_terminfo=no
2974 ],[
2975 vim_cv_terminfo=yes
2976 ],[
2977 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2978 ])
2979 ])
2980
2981if test "x$vim_cv_terminfo" = "xyes" ; then
2982 AC_DEFINE(TERMINFO)
2983fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002984
2985if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002986 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2987 [
2988 AC_RUN_IFELSE([[
2989#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002990#ifdef HAVE_TERMCAP_H
2991# include <termcap.h>
2992#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002993#if STDC_HEADERS
2994# include <stdlib.h>
2995# include <stddef.h>
2996#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002997main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002998{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2999 ]],[
3000 vim_cv_tgent=zero
3001 ],[
3002 vim_cv_tgent=non-zero
3003 ],[
3004 AC_MSG_ERROR(failed to compile test program.)
3005 ])
3006 ])
3007
3008 if test "x$vim_cv_tgent" = "xzero" ; then
3009 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3010 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011fi
3012
3013AC_MSG_CHECKING(whether termcap.h contains ospeed)
3014AC_TRY_LINK([
3015#ifdef HAVE_TERMCAP_H
3016# include <termcap.h>
3017#endif
3018 ], [ospeed = 20000],
3019 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3020 [AC_MSG_RESULT(no)
3021 AC_MSG_CHECKING(whether ospeed can be extern)
3022 AC_TRY_LINK([
3023#ifdef HAVE_TERMCAP_H
3024# include <termcap.h>
3025#endif
3026extern short ospeed;
3027 ], [ospeed = 20000],
3028 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3029 AC_MSG_RESULT(no))]
3030 )
3031
3032AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3033AC_TRY_LINK([
3034#ifdef HAVE_TERMCAP_H
3035# include <termcap.h>
3036#endif
3037 ], [if (UP == 0 && BC == 0) PC = 1],
3038 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3039 [AC_MSG_RESULT(no)
3040 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3041 AC_TRY_LINK([
3042#ifdef HAVE_TERMCAP_H
3043# include <termcap.h>
3044#endif
3045extern char *UP, *BC, PC;
3046 ], [if (UP == 0 && BC == 0) PC = 1],
3047 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3048 AC_MSG_RESULT(no))]
3049 )
3050
3051AC_MSG_CHECKING(whether tputs() uses outfuntype)
3052AC_TRY_COMPILE([
3053#ifdef HAVE_TERMCAP_H
3054# include <termcap.h>
3055#endif
3056 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3057 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3058 AC_MSG_RESULT(no))
3059
3060dnl On some SCO machines sys/select redefines struct timeval
3061AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3062AC_TRY_COMPILE([
3063#include <sys/types.h>
3064#include <sys/time.h>
3065#include <sys/select.h>], ,
3066 AC_MSG_RESULT(yes)
3067 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3068 AC_MSG_RESULT(no))
3069
3070dnl AC_DECL_SYS_SIGLIST
3071
3072dnl Checks for pty.c (copied from screen) ==========================
3073AC_MSG_CHECKING(for /dev/ptc)
3074if test -r /dev/ptc; then
3075 AC_DEFINE(HAVE_DEV_PTC)
3076 AC_MSG_RESULT(yes)
3077else
3078 AC_MSG_RESULT(no)
3079fi
3080
3081AC_MSG_CHECKING(for SVR4 ptys)
3082if test -c /dev/ptmx ; then
3083 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3084 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3085 AC_MSG_RESULT(no))
3086else
3087 AC_MSG_RESULT(no)
3088fi
3089
3090AC_MSG_CHECKING(for ptyranges)
3091if test -d /dev/ptym ; then
3092 pdir='/dev/ptym'
3093else
3094 pdir='/dev'
3095fi
3096dnl SCO uses ptyp%d
3097AC_EGREP_CPP(yes,
3098[#ifdef M_UNIX
3099 yes;
3100#endif
3101 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3102dnl if test -c /dev/ptyp19; then
3103dnl ptys=`echo /dev/ptyp??`
3104dnl else
3105dnl ptys=`echo $pdir/pty??`
3106dnl fi
3107if test "$ptys" != "$pdir/pty??" ; then
3108 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3109 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3110 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3111 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3112 AC_MSG_RESULT([$p0 / $p1])
3113else
3114 AC_MSG_RESULT([don't know])
3115fi
3116
3117dnl **** pty mode/group handling ****
3118dnl
3119dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003120rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003121AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3122 [
3123 AC_RUN_IFELSE([[
3124#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003125#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003126#if STDC_HEADERS
3127# include <stdlib.h>
3128# include <stddef.h>
3129#endif
3130#ifdef HAVE_UNISTD_H
3131#include <unistd.h>
3132#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133#include <sys/stat.h>
3134#include <stdio.h>
3135main()
3136{
3137 struct stat sb;
3138 char *x,*ttyname();
3139 int om, m;
3140 FILE *fp;
3141
3142 if (!(x = ttyname(0))) exit(1);
3143 if (stat(x, &sb)) exit(1);
3144 om = sb.st_mode;
3145 if (om & 002) exit(0);
3146 m = system("mesg y");
3147 if (m == -1 || m == 127) exit(1);
3148 if (stat(x, &sb)) exit(1);
3149 m = sb.st_mode;
3150 if (chmod(x, om)) exit(1);
3151 if (m & 002) exit(0);
3152 if (sb.st_gid == getgid()) exit(1);
3153 if (!(fp=fopen("conftest_grp", "w")))
3154 exit(1);
3155 fprintf(fp, "%d\n", sb.st_gid);
3156 fclose(fp);
3157 exit(0);
3158}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003159 ]],[
3160 if test -f conftest_grp; then
3161 vim_cv_tty_group=`cat conftest_grp`
3162 if test "x$vim_cv_tty_mode" = "x" ; then
3163 vim_cv_tty_mode=0620
3164 fi
3165 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3166 else
3167 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003168 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003169 fi
3170 ],[
3171 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003172 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003173 ],[
3174 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3175 ])
3176 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003177rm -f conftest_grp
3178
Bram Moolenaar446cb832008-06-24 21:56:24 +00003179if test "x$vim_cv_tty_group" != "xworld" ; then
3180 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3181 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003182 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 +00003183 else
3184 AC_DEFINE(PTYMODE, 0620)
3185 fi
3186fi
3187
Bram Moolenaar071d4272004-06-13 20:20:40 +00003188dnl Checks for library functions. ===================================
3189
3190AC_TYPE_SIGNAL
3191
3192dnl find out what to use at the end of a signal function
3193if test $ac_cv_type_signal = void; then
3194 AC_DEFINE(SIGRETURN, [return])
3195else
3196 AC_DEFINE(SIGRETURN, [return 0])
3197fi
3198
3199dnl check if struct sigcontext is defined (used for SGI only)
3200AC_MSG_CHECKING(for struct sigcontext)
3201AC_TRY_COMPILE([
3202#include <signal.h>
3203test_sig()
3204{
3205 struct sigcontext *scont;
3206 scont = (struct sigcontext *)0;
3207 return 1;
3208} ], ,
3209 AC_MSG_RESULT(yes)
3210 AC_DEFINE(HAVE_SIGCONTEXT),
3211 AC_MSG_RESULT(no))
3212
3213dnl tricky stuff: try to find out if getcwd() is implemented with
3214dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003215AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3216 [
3217 AC_RUN_IFELSE([[
3218#include "confdefs.h"
3219#ifdef HAVE_UNISTD_H
3220#include <unistd.h>
3221#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003222char *dagger[] = { "IFS=pwd", 0 };
3223main()
3224{
3225 char buffer[500];
3226 extern char **environ;
3227 environ = dagger;
3228 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003229}
3230 ]],[
3231 vim_cv_getcwd_broken=no
3232 ],[
3233 vim_cv_getcwd_broken=yes
3234 ],[
3235 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3236 ])
3237 ])
3238
3239if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3240 AC_DEFINE(BAD_GETCWD)
3241fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003242
Bram Moolenaar25153e12010-02-24 14:47:08 +01003243dnl Check for functions in one big call, to reduce the size of configure.
3244dnl Can only be used for functions that do not require any include.
3245AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003246 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003247 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003248 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003249 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003250 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3251 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003252AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003253
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003254dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3255dnl appropriate, so that off_t is 64 bits when needed.
3256AC_SYS_LARGEFILE
3257
Bram Moolenaar071d4272004-06-13 20:20:40 +00003258dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3259AC_MSG_CHECKING(for st_blksize)
3260AC_TRY_COMPILE(
3261[#include <sys/types.h>
3262#include <sys/stat.h>],
3263[ struct stat st;
3264 int n;
3265
3266 stat("/", &st);
3267 n = (int)st.st_blksize;],
3268 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3269 AC_MSG_RESULT(no))
3270
Bram Moolenaar446cb832008-06-24 21:56:24 +00003271AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3272 [
3273 AC_RUN_IFELSE([[
3274#include "confdefs.h"
3275#if STDC_HEADERS
3276# include <stdlib.h>
3277# include <stddef.h>
3278#endif
3279#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003280#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003281main() {struct stat st; exit(stat("configure/", &st) != 0); }
3282 ]],[
3283 vim_cv_stat_ignores_slash=yes
3284 ],[
3285 vim_cv_stat_ignores_slash=no
3286 ],[
3287 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3288 ])
3289 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003290
Bram Moolenaar446cb832008-06-24 21:56:24 +00003291if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3292 AC_DEFINE(STAT_IGNORES_SLASH)
3293fi
3294
Bram Moolenaar071d4272004-06-13 20:20:40 +00003295dnl Link with iconv for charset translation, if not found without library.
3296dnl check for iconv() requires including iconv.h
3297dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3298dnl has been installed.
3299AC_MSG_CHECKING(for iconv_open())
3300save_LIBS="$LIBS"
3301LIBS="$LIBS -liconv"
3302AC_TRY_LINK([
3303#ifdef HAVE_ICONV_H
3304# include <iconv.h>
3305#endif
3306 ], [iconv_open("fr", "to");],
3307 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3308 LIBS="$save_LIBS"
3309 AC_TRY_LINK([
3310#ifdef HAVE_ICONV_H
3311# include <iconv.h>
3312#endif
3313 ], [iconv_open("fr", "to");],
3314 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3315 AC_MSG_RESULT(no)))
3316
3317
3318AC_MSG_CHECKING(for nl_langinfo(CODESET))
3319AC_TRY_LINK([
3320#ifdef HAVE_LANGINFO_H
3321# include <langinfo.h>
3322#endif
3323], [char *cs = nl_langinfo(CODESET);],
3324 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3325 AC_MSG_RESULT(no))
3326
Bram Moolenaar446cb832008-06-24 21:56:24 +00003327dnl Need various functions for floating point support. Only enable
3328dnl floating point when they are all present.
3329AC_CHECK_LIB(m, strtod)
3330AC_MSG_CHECKING([for strtod() and other floating point functions])
3331AC_TRY_LINK([
3332#ifdef HAVE_MATH_H
3333# include <math.h>
3334#endif
3335#if STDC_HEADERS
3336# include <stdlib.h>
3337# include <stddef.h>
3338#endif
3339], [char *s; double d;
3340 d = strtod("1.1", &s);
3341 d = fabs(1.11);
3342 d = ceil(1.11);
3343 d = floor(1.11);
3344 d = log10(1.11);
3345 d = pow(1.11, 2.22);
3346 d = sqrt(1.11);
3347 d = sin(1.11);
3348 d = cos(1.11);
3349 d = atan(1.11);
3350 ],
3351 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3352 AC_MSG_RESULT(no))
3353
Bram Moolenaar071d4272004-06-13 20:20:40 +00003354dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3355dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003356dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003357AC_MSG_CHECKING(--disable-acl argument)
3358AC_ARG_ENABLE(acl,
3359 [ --disable-acl Don't check for ACL support.],
3360 , [enable_acl="yes"])
3361if test "$enable_acl" = "yes"; then
3362AC_MSG_RESULT(no)
3363AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3364 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3365 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3366
3367AC_MSG_CHECKING(for POSIX ACL support)
3368AC_TRY_LINK([
3369#include <sys/types.h>
3370#ifdef HAVE_SYS_ACL_H
3371# include <sys/acl.h>
3372#endif
3373acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3374 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3375 acl_free(acl);],
3376 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3377 AC_MSG_RESULT(no))
3378
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003379AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003380AC_MSG_CHECKING(for Solaris ACL support)
3381AC_TRY_LINK([
3382#ifdef HAVE_SYS_ACL_H
3383# include <sys/acl.h>
3384#endif], [acl("foo", GETACLCNT, 0, NULL);
3385 ],
3386 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003387 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003388
3389AC_MSG_CHECKING(for AIX ACL support)
3390AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003391#if STDC_HEADERS
3392# include <stdlib.h>
3393# include <stddef.h>
3394#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003395#ifdef HAVE_SYS_ACL_H
3396# include <sys/acl.h>
3397#endif
3398#ifdef HAVE_SYS_ACCESS_H
3399# include <sys/access.h>
3400#endif
3401#define _ALL_SOURCE
3402
3403#include <sys/stat.h>
3404
3405int aclsize;
3406struct acl *aclent;], [aclsize = sizeof(struct acl);
3407 aclent = (void *)malloc(aclsize);
3408 statacl("foo", STX_NORMAL, aclent, aclsize);
3409 ],
3410 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3411 AC_MSG_RESULT(no))
3412else
3413 AC_MSG_RESULT(yes)
3414fi
3415
3416AC_MSG_CHECKING(--disable-gpm argument)
3417AC_ARG_ENABLE(gpm,
3418 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3419 [enable_gpm="yes"])
3420
3421if test "$enable_gpm" = "yes"; then
3422 AC_MSG_RESULT(no)
3423 dnl Checking if gpm support can be compiled
3424 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3425 [olibs="$LIBS" ; LIBS="-lgpm"]
3426 AC_TRY_LINK(
3427 [#include <gpm.h>
3428 #include <linux/keyboard.h>],
3429 [Gpm_GetLibVersion(NULL);],
3430 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3431 dnl FEAT_MOUSE_GPM if mouse support is included
3432 [vi_cv_have_gpm=yes],
3433 [vi_cv_have_gpm=no])
3434 [LIBS="$olibs"]
3435 )
3436 if test $vi_cv_have_gpm = yes; then
3437 LIBS="$LIBS -lgpm"
3438 AC_DEFINE(HAVE_GPM)
3439 fi
3440else
3441 AC_MSG_RESULT(yes)
3442fi
3443
Bram Moolenaar446cb832008-06-24 21:56:24 +00003444AC_MSG_CHECKING(--disable-sysmouse argument)
3445AC_ARG_ENABLE(sysmouse,
3446 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3447 [enable_sysmouse="yes"])
3448
3449if test "$enable_sysmouse" = "yes"; then
3450 AC_MSG_RESULT(no)
3451 dnl Checking if sysmouse support can be compiled
3452 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3453 dnl defines FEAT_SYSMOUSE if mouse support is included
3454 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3455 AC_TRY_LINK(
3456 [#include <sys/consio.h>
3457 #include <signal.h>
3458 #include <sys/fbio.h>],
3459 [struct mouse_info mouse;
3460 mouse.operation = MOUSE_MODE;
3461 mouse.operation = MOUSE_SHOW;
3462 mouse.u.mode.mode = 0;
3463 mouse.u.mode.signal = SIGUSR2;],
3464 [vi_cv_have_sysmouse=yes],
3465 [vi_cv_have_sysmouse=no])
3466 )
3467 if test $vi_cv_have_sysmouse = yes; then
3468 AC_DEFINE(HAVE_SYSMOUSE)
3469 fi
3470else
3471 AC_MSG_RESULT(yes)
3472fi
3473
Bram Moolenaarf05da212009-11-17 16:13:15 +00003474dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3475AC_MSG_CHECKING(for FD_CLOEXEC)
3476AC_TRY_COMPILE(
3477[#if HAVE_FCNTL_H
3478# include <fcntl.h>
3479#endif],
3480[ int flag = FD_CLOEXEC;],
3481 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3482 AC_MSG_RESULT(not usable))
3483
Bram Moolenaar071d4272004-06-13 20:20:40 +00003484dnl rename needs to be checked separately to work on Nextstep with cc
3485AC_MSG_CHECKING(for rename)
3486AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3487 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3488 AC_MSG_RESULT(no))
3489
3490dnl sysctl() may exist but not the arguments we use
3491AC_MSG_CHECKING(for sysctl)
3492AC_TRY_COMPILE(
3493[#include <sys/types.h>
3494#include <sys/sysctl.h>],
3495[ int mib[2], r;
3496 size_t len;
3497
3498 mib[0] = CTL_HW;
3499 mib[1] = HW_USERMEM;
3500 len = sizeof(r);
3501 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3502 ],
3503 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3504 AC_MSG_RESULT(not usable))
3505
3506dnl sysinfo() may exist but not be Linux compatible
3507AC_MSG_CHECKING(for sysinfo)
3508AC_TRY_COMPILE(
3509[#include <sys/types.h>
3510#include <sys/sysinfo.h>],
3511[ struct sysinfo sinfo;
3512 int t;
3513
3514 (void)sysinfo(&sinfo);
3515 t = sinfo.totalram;
3516 ],
3517 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3518 AC_MSG_RESULT(not usable))
3519
Bram Moolenaar914572a2007-05-01 11:37:47 +00003520dnl struct sysinfo may have the mem_unit field or not
3521AC_MSG_CHECKING(for sysinfo.mem_unit)
3522AC_TRY_COMPILE(
3523[#include <sys/types.h>
3524#include <sys/sysinfo.h>],
3525[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003526 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003527 ],
3528 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3529 AC_MSG_RESULT(no))
3530
Bram Moolenaar071d4272004-06-13 20:20:40 +00003531dnl sysconf() may exist but not support what we want to use
3532AC_MSG_CHECKING(for sysconf)
3533AC_TRY_COMPILE(
3534[#include <unistd.h>],
3535[ (void)sysconf(_SC_PAGESIZE);
3536 (void)sysconf(_SC_PHYS_PAGES);
3537 ],
3538 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3539 AC_MSG_RESULT(not usable))
3540
Bram Moolenaar914703b2010-05-31 21:59:46 +02003541AC_CHECK_SIZEOF([int])
3542AC_CHECK_SIZEOF([long])
3543AC_CHECK_SIZEOF([time_t])
3544AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003545
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003546dnl Make sure that uint32_t is really 32 bits unsigned.
3547AC_MSG_CHECKING([uint32_t is 32 bits])
3548AC_TRY_RUN([
3549#ifdef HAVE_STDINT_H
3550# include <stdint.h>
3551#endif
3552#ifdef HAVE_INTTYPES_H
3553# include <inttypes.h>
3554#endif
3555main() {
3556 uint32_t nr1 = (uint32_t)-1;
3557 uint32_t nr2 = (uint32_t)0xffffffffUL;
3558 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3559 exit(0);
3560}],
3561AC_MSG_RESULT(ok),
3562AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003563AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003564
Bram Moolenaar446cb832008-06-24 21:56:24 +00003565dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3566dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3567
Bram Moolenaar071d4272004-06-13 20:20:40 +00003568[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003569#include "confdefs.h"
3570#ifdef HAVE_STRING_H
3571# include <string.h>
3572#endif
3573#if STDC_HEADERS
3574# include <stdlib.h>
3575# include <stddef.h>
3576#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003577main() {
3578 char buf[10];
3579 strcpy(buf, "abcdefghi");
3580 mch_memmove(buf, buf + 2, 3);
3581 if (strncmp(buf, "ababcf", 6))
3582 exit(1);
3583 strcpy(buf, "abcdefghi");
3584 mch_memmove(buf + 2, buf, 3);
3585 if (strncmp(buf, "cdedef", 6))
3586 exit(1);
3587 exit(0); /* libc version works properly. */
3588}']
3589
Bram Moolenaar446cb832008-06-24 21:56:24 +00003590AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3591 [
3592 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3593 [
3594 vim_cv_memmove_handles_overlap=yes
3595 ],[
3596 vim_cv_memmove_handles_overlap=no
3597 ],[
3598 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3599 ])
3600 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003601
Bram Moolenaar446cb832008-06-24 21:56:24 +00003602if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3603 AC_DEFINE(USEMEMMOVE)
3604else
3605 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3606 [
3607 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3608 [
3609 vim_cv_bcopy_handles_overlap=yes
3610 ],[
3611 vim_cv_bcopy_handles_overlap=no
3612 ],[
3613 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3614 ])
3615 ])
3616
3617 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3618 AC_DEFINE(USEBCOPY)
3619 else
3620 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3621 [
3622 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3623 [
3624 vim_cv_memcpy_handles_overlap=yes
3625 ],[
3626 vim_cv_memcpy_handles_overlap=no
3627 ],[
3628 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3629 ])
3630 ])
3631
3632 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3633 AC_DEFINE(USEMEMCPY)
3634 fi
3635 fi
3636fi
3637
Bram Moolenaar071d4272004-06-13 20:20:40 +00003638
3639dnl Check for multibyte locale functions
3640dnl Find out if _Xsetlocale() is supported by libX11.
3641dnl Check if X_LOCALE should be defined.
3642
3643if test "$enable_multibyte" = "yes"; then
3644 cflags_save=$CFLAGS
3645 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003646 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003647 CFLAGS="$CFLAGS -I$x_includes"
3648 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3649 AC_MSG_CHECKING(whether X_LOCALE needed)
3650 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3651 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3652 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3653 AC_MSG_RESULT(no))
3654 fi
3655 CFLAGS=$cflags_save
3656 LDFLAGS=$ldflags_save
3657fi
3658
3659dnl Link with xpg4, it is said to make Korean locale working
3660AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3661
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003662dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003663dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003664dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003665dnl -t for typedefs (many ctags have this)
3666dnl -s for static functions (Elvis ctags only?)
3667dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3668dnl -i+m to test for older Exuberant ctags
3669AC_MSG_CHECKING(how to create tags)
3670test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003671if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003672 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003673elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3674 TAGPRG="exctags -I INIT+ --fields=+S"
3675elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3676 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003677else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003678 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003679 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3680 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3681 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3682 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3683 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3684 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3685 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3686fi
3687test -f tags.save && mv tags.save tags
3688AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3689
3690dnl Check how we can run man with a section number
3691AC_MSG_CHECKING(how to run man with a section nr)
3692MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003693(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 +00003694AC_MSG_RESULT($MANDEF)
3695if test "$MANDEF" = "man -s"; then
3696 AC_DEFINE(USEMAN_S)
3697fi
3698
3699dnl Check if gettext() is working and if it needs -lintl
3700AC_MSG_CHECKING(--disable-nls argument)
3701AC_ARG_ENABLE(nls,
3702 [ --disable-nls Don't support NLS (gettext()).], ,
3703 [enable_nls="yes"])
3704
3705if test "$enable_nls" = "yes"; then
3706 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003707
3708 INSTALL_LANGS=install-languages
3709 AC_SUBST(INSTALL_LANGS)
3710 INSTALL_TOOL_LANGS=install-tool-languages
3711 AC_SUBST(INSTALL_TOOL_LANGS)
3712
Bram Moolenaar071d4272004-06-13 20:20:40 +00003713 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3714 AC_MSG_CHECKING([for NLS])
3715 if test -f po/Makefile; then
3716 have_gettext="no"
3717 if test -n "$MSGFMT"; then
3718 AC_TRY_LINK(
3719 [#include <libintl.h>],
3720 [gettext("Test");],
3721 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3722 olibs=$LIBS
3723 LIBS="$LIBS -lintl"
3724 AC_TRY_LINK(
3725 [#include <libintl.h>],
3726 [gettext("Test");],
3727 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3728 AC_MSG_RESULT([gettext() doesn't work]);
3729 LIBS=$olibs))
3730 else
3731 AC_MSG_RESULT([msgfmt not found - disabled]);
3732 fi
3733 if test $have_gettext = "yes"; then
3734 AC_DEFINE(HAVE_GETTEXT)
3735 MAKEMO=yes
3736 AC_SUBST(MAKEMO)
3737 dnl this was added in GNU gettext 0.10.36
3738 AC_CHECK_FUNCS(bind_textdomain_codeset)
3739 dnl _nl_msg_cat_cntr is required for GNU gettext
3740 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3741 AC_TRY_LINK(
3742 [#include <libintl.h>
3743 extern int _nl_msg_cat_cntr;],
3744 [++_nl_msg_cat_cntr;],
3745 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3746 AC_MSG_RESULT([no]))
3747 fi
3748 else
3749 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3750 fi
3751else
3752 AC_MSG_RESULT(yes)
3753fi
3754
3755dnl Check for dynamic linking loader
3756AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3757if test x${DLL} = xdlfcn.h; then
3758 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3759 AC_MSG_CHECKING([for dlopen()])
3760 AC_TRY_LINK(,[
3761 extern void* dlopen();
3762 dlopen();
3763 ],
3764 AC_MSG_RESULT(yes);
3765 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3766 AC_MSG_RESULT(no);
3767 AC_MSG_CHECKING([for dlopen() in -ldl])
3768 olibs=$LIBS
3769 LIBS="$LIBS -ldl"
3770 AC_TRY_LINK(,[
3771 extern void* dlopen();
3772 dlopen();
3773 ],
3774 AC_MSG_RESULT(yes);
3775 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3776 AC_MSG_RESULT(no);
3777 LIBS=$olibs))
3778 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3779 dnl ick :-)
3780 AC_MSG_CHECKING([for dlsym()])
3781 AC_TRY_LINK(,[
3782 extern void* dlsym();
3783 dlsym();
3784 ],
3785 AC_MSG_RESULT(yes);
3786 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3787 AC_MSG_RESULT(no);
3788 AC_MSG_CHECKING([for dlsym() in -ldl])
3789 olibs=$LIBS
3790 LIBS="$LIBS -ldl"
3791 AC_TRY_LINK(,[
3792 extern void* dlsym();
3793 dlsym();
3794 ],
3795 AC_MSG_RESULT(yes);
3796 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3797 AC_MSG_RESULT(no);
3798 LIBS=$olibs))
3799elif test x${DLL} = xdl.h; then
3800 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3801 AC_MSG_CHECKING([for shl_load()])
3802 AC_TRY_LINK(,[
3803 extern void* shl_load();
3804 shl_load();
3805 ],
3806 AC_MSG_RESULT(yes);
3807 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3808 AC_MSG_RESULT(no);
3809 AC_MSG_CHECKING([for shl_load() in -ldld])
3810 olibs=$LIBS
3811 LIBS="$LIBS -ldld"
3812 AC_TRY_LINK(,[
3813 extern void* shl_load();
3814 shl_load();
3815 ],
3816 AC_MSG_RESULT(yes);
3817 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3818 AC_MSG_RESULT(no);
3819 LIBS=$olibs))
3820fi
3821AC_CHECK_HEADERS(setjmp.h)
3822
3823if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3824 dnl -ldl must come after DynaLoader.a
3825 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3826 LIBS=`echo $LIBS | sed s/-ldl//`
3827 PERL_LIBS="$PERL_LIBS -ldl"
3828 fi
3829fi
3830
Bram Moolenaar164fca32010-07-14 13:58:07 +02003831if test "x$MACOSX" = "xyes"; then
3832 AC_MSG_CHECKING(whether we need -framework Cocoa)
3833 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3834 dnl disabled during tiny build)
3835 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3836 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003837 AC_MSG_RESULT(yes)
3838 else
3839 AC_MSG_RESULT(no)
3840 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003841 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3842 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3843 dnl missing Objective-C symbols.
3844 if test "x$features" = "xtiny"; then
3845 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3846 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3847 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003848fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003849if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003850 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003851fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003852
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003853dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3854dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3855dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003856dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3857dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003858DEPEND_CFLAGS_FILTER=
3859if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003860 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003861 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003862 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003863 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003864 AC_MSG_RESULT(yes)
3865 else
3866 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003867 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003868 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3869 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003870 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003871 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003872 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3873 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003874 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 +00003875 AC_MSG_RESULT(yes)
3876 else
3877 AC_MSG_RESULT(no)
3878 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003879fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003880AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003881
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003882dnl link.sh tries to avoid overlinking in a hackish way.
3883dnl At least GNU ld supports --as-needed which provides the same functionality
3884dnl at linker level. Let's use it.
3885AC_MSG_CHECKING(linker --as-needed support)
3886LINK_AS_NEEDED=
3887# Check if linker supports --as-needed and --no-as-needed options
3888if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003889 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003890 LINK_AS_NEEDED=yes
3891fi
3892if test "$LINK_AS_NEEDED" = yes; then
3893 AC_MSG_RESULT(yes)
3894else
3895 AC_MSG_RESULT(no)
3896fi
3897AC_SUBST(LINK_AS_NEEDED)
3898
Bram Moolenaar77c19352012-06-13 19:19:41 +02003899# IBM z/OS reset CFLAGS for config.mk
3900if test "$zOSUnix" = "yes"; then
3901 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3902fi
3903
Bram Moolenaar071d4272004-06-13 20:20:40 +00003904dnl write output files
3905AC_OUTPUT(auto/config.mk:config.mk.in)
3906
3907dnl vim: set sw=2 tw=78 fo+=l: