blob: c20b198da8631ec0ca62d2e9ff78fa75c4a782e2 [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 Moolenaar165641d2010-02-17 16:23:09 +01001662 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001663 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001664 if test "X$rubylibs" != "X"; then
1665 RUBY_LIBS="$rubylibs"
1666 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001667 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1668 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001669 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001670 if test -f "$rubylibdir/$librubya"; then
1671 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001672 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1673 elif test "$librubyarg" = "libruby.a"; then
1674 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1675 librubyarg="-lruby"
1676 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001677 fi
1678
1679 if test "X$librubyarg" != "X"; then
1680 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1681 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001682 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001683 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001684 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1685 dnl be included if requested by passing --with-mac-arch to
1686 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001687 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001688 if test "X$rubyldflags" != "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001689 if test "X`echo \"$LDFLAGS\" | grep -F -e \"$rubyldflags\"`" = "X"; then
1690 LDFLAGS="$rubyldflags $LDFLAGS"
1691 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001692 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001693 fi
1694 RUBY_SRC="if_ruby.c"
1695 RUBY_OBJ="objects/if_ruby.o"
1696 RUBY_PRO="if_ruby.pro"
1697 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001698 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001699 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001700 AC_DEFINE(DYNAMIC_RUBY)
1701 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1702 RUBY_LIBS=
1703 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001704 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001705 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 fi
1707 else
1708 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1709 fi
1710 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001711
1712 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1713 AC_MSG_ERROR([could not configure Ruby])
1714 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715fi
1716AC_SUBST(RUBY_SRC)
1717AC_SUBST(RUBY_OBJ)
1718AC_SUBST(RUBY_PRO)
1719AC_SUBST(RUBY_CFLAGS)
1720AC_SUBST(RUBY_LIBS)
1721
1722AC_MSG_CHECKING(--enable-cscope argument)
1723AC_ARG_ENABLE(cscope,
1724 [ --enable-cscope Include cscope interface.], ,
1725 [enable_cscope="no"])
1726AC_MSG_RESULT($enable_cscope)
1727if test "$enable_cscope" = "yes"; then
1728 AC_DEFINE(FEAT_CSCOPE)
1729fi
1730
1731AC_MSG_CHECKING(--enable-workshop argument)
1732AC_ARG_ENABLE(workshop,
1733 [ --enable-workshop Include Sun Visual Workshop support.], ,
1734 [enable_workshop="no"])
1735AC_MSG_RESULT($enable_workshop)
1736if test "$enable_workshop" = "yes"; then
1737 AC_DEFINE(FEAT_SUN_WORKSHOP)
1738 WORKSHOP_SRC="workshop.c integration.c"
1739 AC_SUBST(WORKSHOP_SRC)
1740 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1741 AC_SUBST(WORKSHOP_OBJ)
1742 if test "${enable_gui-xxx}" = xxx; then
1743 enable_gui=motif
1744 fi
1745fi
1746
1747AC_MSG_CHECKING(--disable-netbeans argument)
1748AC_ARG_ENABLE(netbeans,
1749 [ --disable-netbeans Disable NetBeans integration support.],
1750 , [enable_netbeans="yes"])
1751if test "$enable_netbeans" = "yes"; then
1752 AC_MSG_RESULT(no)
1753 dnl On Solaris we need the socket and nsl library.
1754 AC_CHECK_LIB(socket, socket)
1755 AC_CHECK_LIB(nsl, gethostbyname)
1756 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1757 AC_TRY_LINK([
1758#include <stdio.h>
1759#include <stdlib.h>
1760#include <stdarg.h>
1761#include <fcntl.h>
1762#include <netdb.h>
1763#include <netinet/in.h>
1764#include <errno.h>
1765#include <sys/types.h>
1766#include <sys/socket.h>
1767 /* Check bitfields */
1768 struct nbbuf {
1769 unsigned int initDone:1;
1770 ushort signmaplen;
1771 };
1772 ], [
1773 /* Check creating a socket. */
1774 struct sockaddr_in server;
1775 (void)socket(AF_INET, SOCK_STREAM, 0);
1776 (void)htons(100);
1777 (void)gethostbyname("microsoft.com");
1778 if (errno == ECONNREFUSED)
1779 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1780 ],
1781 AC_MSG_RESULT(yes),
1782 AC_MSG_RESULT(no); enable_netbeans="no")
1783else
1784 AC_MSG_RESULT(yes)
1785fi
1786if test "$enable_netbeans" = "yes"; then
1787 AC_DEFINE(FEAT_NETBEANS_INTG)
1788 NETBEANS_SRC="netbeans.c"
1789 AC_SUBST(NETBEANS_SRC)
1790 NETBEANS_OBJ="objects/netbeans.o"
1791 AC_SUBST(NETBEANS_OBJ)
1792fi
1793
1794AC_MSG_CHECKING(--enable-sniff argument)
1795AC_ARG_ENABLE(sniff,
1796 [ --enable-sniff Include Sniff interface.], ,
1797 [enable_sniff="no"])
1798AC_MSG_RESULT($enable_sniff)
1799if test "$enable_sniff" = "yes"; then
1800 AC_DEFINE(FEAT_SNIFF)
1801 SNIFF_SRC="if_sniff.c"
1802 AC_SUBST(SNIFF_SRC)
1803 SNIFF_OBJ="objects/if_sniff.o"
1804 AC_SUBST(SNIFF_OBJ)
1805fi
1806
1807AC_MSG_CHECKING(--enable-multibyte argument)
1808AC_ARG_ENABLE(multibyte,
1809 [ --enable-multibyte Include multibyte editing support.], ,
1810 [enable_multibyte="no"])
1811AC_MSG_RESULT($enable_multibyte)
1812if test "$enable_multibyte" = "yes"; then
1813 AC_DEFINE(FEAT_MBYTE)
1814fi
1815
1816AC_MSG_CHECKING(--enable-hangulinput argument)
1817AC_ARG_ENABLE(hangulinput,
1818 [ --enable-hangulinput Include Hangul input support.], ,
1819 [enable_hangulinput="no"])
1820AC_MSG_RESULT($enable_hangulinput)
1821
1822AC_MSG_CHECKING(--enable-xim argument)
1823AC_ARG_ENABLE(xim,
1824 [ --enable-xim Include XIM input support.],
1825 AC_MSG_RESULT($enable_xim),
1826 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827
1828AC_MSG_CHECKING(--enable-fontset argument)
1829AC_ARG_ENABLE(fontset,
1830 [ --enable-fontset Include X fontset output support.], ,
1831 [enable_fontset="no"])
1832AC_MSG_RESULT($enable_fontset)
1833dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1834
1835test -z "$with_x" && with_x=yes
1836test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1837if test "$with_x" = no; then
1838 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1839else
1840 dnl Do this check early, so that its failure can override user requests.
1841
1842 AC_PATH_PROG(xmkmfpath, xmkmf)
1843
1844 AC_PATH_XTRA
1845
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001846 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001847 dnl be compiled with a special option.
1848 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001849 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001850 CFLAGS="$CFLAGS -W c,dll"
1851 LDFLAGS="$LDFLAGS -W l,dll"
1852 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1853 fi
1854
1855 dnl On my HPUX system the X include dir is found, but the lib dir not.
1856 dnl This is a desparate try to fix this.
1857
1858 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1859 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1860 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1861 X_LIBS="$X_LIBS -L$x_libraries"
1862 if test "`(uname) 2>/dev/null`" = SunOS &&
1863 uname -r | grep '^5' >/dev/null; then
1864 X_LIBS="$X_LIBS -R $x_libraries"
1865 fi
1866 fi
1867
1868 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1869 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1870 AC_MSG_RESULT(Corrected X includes to $x_includes)
1871 X_CFLAGS="$X_CFLAGS -I$x_includes"
1872 fi
1873
1874 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1875 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1876 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1877 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1878 dnl Same for "-R/usr/lib ".
1879 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1880
1881
1882 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001883 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1884 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001885 AC_MSG_CHECKING(if X11 header files can be found)
1886 cflags_save=$CFLAGS
1887 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001888 AC_TRY_COMPILE([#include <X11/Xlib.h>
1889#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001890 AC_MSG_RESULT(yes),
1891 AC_MSG_RESULT(no); no_x=yes)
1892 CFLAGS=$cflags_save
1893
1894 if test "${no_x-no}" = yes; then
1895 with_x=no
1896 else
1897 AC_DEFINE(HAVE_X11)
1898 X_LIB="-lXt -lX11";
1899 AC_SUBST(X_LIB)
1900
1901 ac_save_LDFLAGS="$LDFLAGS"
1902 LDFLAGS="-L$x_libraries $LDFLAGS"
1903
1904 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1905 dnl For HP-UX 10.20 it must be before -lSM -lICE
1906 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1907 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1908
1909 dnl Some systems need -lnsl -lsocket when testing for ICE.
1910 dnl The check above doesn't do this, try here (again). Also needed to get
1911 dnl them after Xdmcp. link.sh will remove them when not needed.
1912 dnl Check for other function than above to avoid the cached value
1913 AC_CHECK_LIB(ICE, IceOpenConnection,
1914 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1915
1916 dnl Check for -lXpm (needed for some versions of Motif)
1917 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1918 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1919 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1920
1921 dnl Check that the X11 header files don't use implicit declarations
1922 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1923 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02001924 dnl -Werror is GCC only, others like Solaris Studio might not like it
1925 if test "$GCC" = yes; then
1926 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1927 else
1928 CFLAGS="$CFLAGS $X_CFLAGS"
1929 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001930 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1931 AC_MSG_RESULT(no),
1932 CFLAGS="$CFLAGS -Wno-implicit-int"
1933 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1934 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1935 AC_MSG_RESULT(test failed)
1936 )
1937 )
1938 CFLAGS=$cflags_save
1939
1940 LDFLAGS="$ac_save_LDFLAGS"
1941
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001942 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1943 AC_CACHE_VAL(ac_cv_small_wchar_t,
1944 [AC_TRY_RUN([
1945#include <X11/Xlib.h>
1946#if STDC_HEADERS
1947# include <stdlib.h>
1948# include <stddef.h>
1949#endif
1950 main()
1951 {
1952 if (sizeof(wchar_t) <= 2)
1953 exit(1);
1954 exit(0);
1955 }],
1956 ac_cv_small_wchar_t="no",
1957 ac_cv_small_wchar_t="yes",
1958 AC_MSG_ERROR(failed to compile test program))])
1959 AC_MSG_RESULT($ac_cv_small_wchar_t)
1960 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1961 AC_DEFINE(SMALL_WCHAR_T)
1962 fi
1963
Bram Moolenaar071d4272004-06-13 20:20:40 +00001964 fi
1965fi
1966
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001967test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001968
1969AC_MSG_CHECKING(--enable-gui argument)
1970AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001971 [ --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 +00001972
1973dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1974dnl Do not use character classes for portability with old tools.
1975enable_gui_canon=`echo "_$enable_gui" | \
1976 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1977
1978dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001979SKIP_GTK2=YES
1980SKIP_GNOME=YES
1981SKIP_MOTIF=YES
1982SKIP_ATHENA=YES
1983SKIP_NEXTAW=YES
1984SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001985SKIP_CARBON=YES
1986GUITYPE=NONE
1987
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001988if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001989 SKIP_PHOTON=
1990 case "$enable_gui_canon" in
1991 no) AC_MSG_RESULT(no GUI support)
1992 SKIP_PHOTON=YES ;;
1993 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1994 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1995 photon) AC_MSG_RESULT(Photon GUI support) ;;
1996 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1997 SKIP_PHOTON=YES ;;
1998 esac
1999
2000elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2001 SKIP_CARBON=
2002 case "$enable_gui_canon" in
2003 no) AC_MSG_RESULT(no GUI support)
2004 SKIP_CARBON=YES ;;
2005 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002006 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2007 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002008 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2009 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2010 SKIP_CARBON=YES ;;
2011 esac
2012
2013else
2014
Bram Moolenaar071d4272004-06-13 20:20:40 +00002015 case "$enable_gui_canon" in
2016 no|none) AC_MSG_RESULT(no GUI support) ;;
2017 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002018 SKIP_GTK2=
2019 SKIP_GNOME=
2020 SKIP_MOTIF=
2021 SKIP_ATHENA=
2022 SKIP_NEXTAW=
2023 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002025 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002026 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2027 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002028 SKIP_GTK2=;;
2029 motif) AC_MSG_RESULT(Motif GUI support)
2030 SKIP_MOTIF=;;
2031 athena) AC_MSG_RESULT(Athena GUI support)
2032 SKIP_ATHENA=;;
2033 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2034 SKIP_NEXTAW=;;
2035 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2036 esac
2037
2038fi
2039
Bram Moolenaar071d4272004-06-13 20:20:40 +00002040if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2041 -a "$enable_gui_canon" != "gnome2"; then
2042 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2043 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002044 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002045 , enable_gtk2_check="yes")
2046 AC_MSG_RESULT($enable_gtk2_check)
2047 if test "x$enable_gtk2_check" = "xno"; then
2048 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002049 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002050 fi
2051fi
2052
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002053if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002054 AC_MSG_CHECKING(whether or not to look for GNOME)
2055 AC_ARG_ENABLE(gnome-check,
2056 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2057 , enable_gnome_check="no")
2058 AC_MSG_RESULT($enable_gnome_check)
2059 if test "x$enable_gnome_check" = "xno"; then
2060 SKIP_GNOME=YES
2061 fi
2062fi
2063
2064if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2065 AC_MSG_CHECKING(whether or not to look for Motif)
2066 AC_ARG_ENABLE(motif-check,
2067 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2068 , enable_motif_check="yes")
2069 AC_MSG_RESULT($enable_motif_check)
2070 if test "x$enable_motif_check" = "xno"; then
2071 SKIP_MOTIF=YES
2072 fi
2073fi
2074
2075if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2076 AC_MSG_CHECKING(whether or not to look for Athena)
2077 AC_ARG_ENABLE(athena-check,
2078 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2079 , enable_athena_check="yes")
2080 AC_MSG_RESULT($enable_athena_check)
2081 if test "x$enable_athena_check" = "xno"; then
2082 SKIP_ATHENA=YES
2083 fi
2084fi
2085
2086if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2087 AC_MSG_CHECKING(whether or not to look for neXtaw)
2088 AC_ARG_ENABLE(nextaw-check,
2089 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2090 , enable_nextaw_check="yes")
2091 AC_MSG_RESULT($enable_nextaw_check);
2092 if test "x$enable_nextaw_check" = "xno"; then
2093 SKIP_NEXTAW=YES
2094 fi
2095fi
2096
2097if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2098 AC_MSG_CHECKING(whether or not to look for Carbon)
2099 AC_ARG_ENABLE(carbon-check,
2100 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2101 , enable_carbon_check="yes")
2102 AC_MSG_RESULT($enable_carbon_check);
2103 if test "x$enable_carbon_check" = "xno"; then
2104 SKIP_CARBON=YES
2105 fi
2106fi
2107
Bram Moolenaar843ee412004-06-30 16:16:41 +00002108
Bram Moolenaar071d4272004-06-13 20:20:40 +00002109if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2110 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002111 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112 AC_MSG_RESULT(yes);
2113 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002114 if test "$VIMNAME" = "vim"; then
2115 VIMNAME=Vim
2116 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002117
Bram Moolenaar164fca32010-07-14 13:58:07 +02002118 if test "x$MACARCH" = "xboth"; then
2119 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2120 else
2121 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2122 fi
2123
Bram Moolenaar14716812006-05-04 21:54:08 +00002124 dnl Default install directory is not /usr/local
2125 if test x$prefix = xNONE; then
2126 prefix=/Applications
2127 fi
2128
2129 dnl Sorry for the hard coded default
2130 datadir='${prefix}/Vim.app/Contents/Resources'
2131
Bram Moolenaar071d4272004-06-13 20:20:40 +00002132 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002133 SKIP_GTK2=YES;
2134 SKIP_GNOME=YES;
2135 SKIP_MOTIF=YES;
2136 SKIP_ATHENA=YES;
2137 SKIP_NEXTAW=YES;
2138 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002139 SKIP_CARBON=YES
2140fi
2141
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002143dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144dnl
2145dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002146dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002147dnl
2148AC_DEFUN(AM_PATH_GTK,
2149[
2150 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2151 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002152 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2154 no_gtk=""
2155 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2156 && $PKG_CONFIG --exists gtk+-2.0; then
2157 {
2158 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2159 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2160 dnl something like that.
2161 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002162 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002163 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2164 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2165 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2166 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2167 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2168 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2169 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2170 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002171 else
2172 no_gtk=yes
2173 fi
2174
2175 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2176 {
2177 ac_save_CFLAGS="$CFLAGS"
2178 ac_save_LIBS="$LIBS"
2179 CFLAGS="$CFLAGS $GTK_CFLAGS"
2180 LIBS="$LIBS $GTK_LIBS"
2181
2182 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002183 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184 dnl
2185 rm -f conf.gtktest
2186 AC_TRY_RUN([
2187#include <gtk/gtk.h>
2188#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002189#if STDC_HEADERS
2190# include <stdlib.h>
2191# include <stddef.h>
2192#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002193
2194int
2195main ()
2196{
2197int major, minor, micro;
2198char *tmp_version;
2199
2200system ("touch conf.gtktest");
2201
2202/* HP/UX 9 (%@#!) writes to sscanf strings */
2203tmp_version = g_strdup("$min_gtk_version");
2204if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2205 printf("%s, bad version string\n", "$min_gtk_version");
2206 exit(1);
2207 }
2208
2209if ((gtk_major_version > major) ||
2210 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2211 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2212 (gtk_micro_version >= micro)))
2213{
2214 return 0;
2215}
2216return 1;
2217}
2218],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2219 CFLAGS="$ac_save_CFLAGS"
2220 LIBS="$ac_save_LIBS"
2221 }
2222 fi
2223 if test "x$no_gtk" = x ; then
2224 if test "x$enable_gtktest" = "xyes"; then
2225 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2226 else
2227 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2228 fi
2229 ifelse([$2], , :, [$2])
2230 else
2231 {
2232 AC_MSG_RESULT(no)
2233 GTK_CFLAGS=""
2234 GTK_LIBS=""
2235 ifelse([$3], , :, [$3])
2236 }
2237 fi
2238 }
2239 else
2240 GTK_CFLAGS=""
2241 GTK_LIBS=""
2242 ifelse([$3], , :, [$3])
2243 fi
2244 AC_SUBST(GTK_CFLAGS)
2245 AC_SUBST(GTK_LIBS)
2246 rm -f conf.gtktest
2247])
2248
2249dnl ---------------------------------------------------------------------------
2250dnl gnome
2251dnl ---------------------------------------------------------------------------
2252AC_DEFUN([GNOME_INIT_HOOK],
2253[
2254 AC_SUBST(GNOME_LIBS)
2255 AC_SUBST(GNOME_LIBDIR)
2256 AC_SUBST(GNOME_INCLUDEDIR)
2257
2258 AC_ARG_WITH(gnome-includes,
2259 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2260 [CFLAGS="$CFLAGS -I$withval"]
2261 )
2262
2263 AC_ARG_WITH(gnome-libs,
2264 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2265 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2266 )
2267
2268 AC_ARG_WITH(gnome,
2269 [ --with-gnome Specify prefix for GNOME files],
2270 if test x$withval = xyes; then
2271 want_gnome=yes
2272 ifelse([$1], [], :, [$1])
2273 else
2274 if test "x$withval" = xno; then
2275 want_gnome=no
2276 else
2277 want_gnome=yes
2278 LDFLAGS="$LDFLAGS -L$withval/lib"
2279 CFLAGS="$CFLAGS -I$withval/include"
2280 gnome_prefix=$withval/lib
2281 fi
2282 fi,
2283 want_gnome=yes)
2284
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002285 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002286 {
2287 AC_MSG_CHECKING(for libgnomeui-2.0)
2288 if $PKG_CONFIG --exists libgnomeui-2.0; then
2289 AC_MSG_RESULT(yes)
2290 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2291 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2292 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002293
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002294 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2295 dnl This might not be the right way but it works for me...
2296 AC_MSG_CHECKING(for FreeBSD)
2297 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2298 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002299 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002300 GNOME_LIBS="$GNOME_LIBS -pthread"
2301 else
2302 AC_MSG_RESULT(no)
2303 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002304 $1
2305 else
2306 AC_MSG_RESULT(not found)
2307 if test "x$2" = xfail; then
2308 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2309 fi
2310 fi
2311 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002312 fi
2313])
2314
2315AC_DEFUN([GNOME_INIT],[
2316 GNOME_INIT_HOOK([],fail)
2317])
2318
2319
2320dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002321dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002322dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002323if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002324
2325 AC_MSG_CHECKING(--disable-gtktest argument)
2326 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2327 , enable_gtktest=yes)
2328 if test "x$enable_gtktest" = "xyes" ; then
2329 AC_MSG_RESULT(gtk test enabled)
2330 else
2331 AC_MSG_RESULT(gtk test disabled)
2332 fi
2333
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334 if test "X$PKG_CONFIG" = "X"; then
2335 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2336 fi
2337
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002338 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002339 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2340 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002341 AM_PATH_GTK(2.2.0,
2342 [GUI_LIB_LOC="$GTK_LIBDIR"
2343 GTK_LIBNAME="$GTK_LIBS"
2344 GUI_INC_LOC="$GTK_CFLAGS"], )
2345 if test "x$GTK_CFLAGS" != "x"; then
2346 SKIP_ATHENA=YES
2347 SKIP_NEXTAW=YES
2348 SKIP_MOTIF=YES
2349 GUITYPE=GTK
2350 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002351 fi
2352 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002353 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002354 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2355 || test "0$gtk_minor_version" -ge 2; then
2356 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2357 fi
2358 dnl
2359 dnl if GTK exists, then check for GNOME.
2360 dnl
2361 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002362 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002363 GNOME_INIT_HOOK([have_gnome=yes])
2364 if test "x$have_gnome" = xyes ; then
2365 AC_DEFINE(FEAT_GUI_GNOME)
2366 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2367 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002368 fi
2369 }
2370 fi
2371 fi
2372fi
2373
2374dnl Check for Motif include files location.
2375dnl The LAST one found is used, this makes the highest version to be used,
2376dnl e.g. when Motif1.2 and Motif2.0 are both present.
2377
2378if test -z "$SKIP_MOTIF"; then
2379 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"
2380 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2381 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2382
2383 AC_MSG_CHECKING(for location of Motif GUI includes)
2384 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2385 GUI_INC_LOC=
2386 for try in $gui_includes; do
2387 if test -f "$try/Xm/Xm.h"; then
2388 GUI_INC_LOC=$try
2389 fi
2390 done
2391 if test -n "$GUI_INC_LOC"; then
2392 if test "$GUI_INC_LOC" = /usr/include; then
2393 GUI_INC_LOC=
2394 AC_MSG_RESULT(in default path)
2395 else
2396 AC_MSG_RESULT($GUI_INC_LOC)
2397 fi
2398 else
2399 AC_MSG_RESULT(<not found>)
2400 SKIP_MOTIF=YES
2401 fi
2402fi
2403
2404dnl Check for Motif library files location. In the same order as the include
2405dnl files, to avoid a mixup if several versions are present
2406
2407if test -z "$SKIP_MOTIF"; then
2408 AC_MSG_CHECKING(--with-motif-lib argument)
2409 AC_ARG_WITH(motif-lib,
2410 [ --with-motif-lib=STRING Library for Motif ],
2411 [ MOTIF_LIBNAME="${withval}" ] )
2412
2413 if test -n "$MOTIF_LIBNAME"; then
2414 AC_MSG_RESULT($MOTIF_LIBNAME)
2415 GUI_LIB_LOC=
2416 else
2417 AC_MSG_RESULT(no)
2418
2419 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2420 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2421
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002422 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2423 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002424 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002425 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 +00002426 GUI_LIB_LOC=
2427 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002428 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002429 if test -f "$libtry"; then
2430 GUI_LIB_LOC=$try
2431 fi
2432 done
2433 done
2434 if test -n "$GUI_LIB_LOC"; then
2435 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002436 if test "$GUI_LIB_LOC" = /usr/lib \
2437 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2438 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002439 GUI_LIB_LOC=
2440 AC_MSG_RESULT(in default path)
2441 else
2442 if test -n "$GUI_LIB_LOC"; then
2443 AC_MSG_RESULT($GUI_LIB_LOC)
2444 if test "`(uname) 2>/dev/null`" = SunOS &&
2445 uname -r | grep '^5' >/dev/null; then
2446 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2447 fi
2448 fi
2449 fi
2450 MOTIF_LIBNAME=-lXm
2451 else
2452 AC_MSG_RESULT(<not found>)
2453 SKIP_MOTIF=YES
2454 fi
2455 fi
2456fi
2457
2458if test -z "$SKIP_MOTIF"; then
2459 SKIP_ATHENA=YES
2460 SKIP_NEXTAW=YES
2461 GUITYPE=MOTIF
2462 AC_SUBST(MOTIF_LIBNAME)
2463fi
2464
2465dnl Check if the Athena files can be found
2466
2467GUI_X_LIBS=
2468
2469if test -z "$SKIP_ATHENA"; then
2470 AC_MSG_CHECKING(if Athena header files can be found)
2471 cflags_save=$CFLAGS
2472 CFLAGS="$CFLAGS $X_CFLAGS"
2473 AC_TRY_COMPILE([
2474#include <X11/Intrinsic.h>
2475#include <X11/Xaw/Paned.h>], ,
2476 AC_MSG_RESULT(yes),
2477 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2478 CFLAGS=$cflags_save
2479fi
2480
2481if test -z "$SKIP_ATHENA"; then
2482 GUITYPE=ATHENA
2483fi
2484
2485if test -z "$SKIP_NEXTAW"; then
2486 AC_MSG_CHECKING(if neXtaw header files can be found)
2487 cflags_save=$CFLAGS
2488 CFLAGS="$CFLAGS $X_CFLAGS"
2489 AC_TRY_COMPILE([
2490#include <X11/Intrinsic.h>
2491#include <X11/neXtaw/Paned.h>], ,
2492 AC_MSG_RESULT(yes),
2493 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2494 CFLAGS=$cflags_save
2495fi
2496
2497if test -z "$SKIP_NEXTAW"; then
2498 GUITYPE=NEXTAW
2499fi
2500
2501if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2502 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2503 dnl Avoid adding it when it twice
2504 if test -n "$GUI_INC_LOC"; then
2505 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2506 fi
2507 if test -n "$GUI_LIB_LOC"; then
2508 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2509 fi
2510
2511 dnl Check for -lXext and then for -lXmu
2512 ldflags_save=$LDFLAGS
2513 LDFLAGS="$X_LIBS $LDFLAGS"
2514 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2515 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2516 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2517 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2518 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2519 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2520 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2521 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2522 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2523 if test -z "$SKIP_MOTIF"; then
2524 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2525 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2526 fi
2527 LDFLAGS=$ldflags_save
2528
2529 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2530 AC_MSG_CHECKING(for extra X11 defines)
2531 NARROW_PROTO=
2532 rm -fr conftestdir
2533 if mkdir conftestdir; then
2534 cd conftestdir
2535 cat > Imakefile <<'EOF'
2536acfindx:
2537 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2538EOF
2539 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2540 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2541 fi
2542 cd ..
2543 rm -fr conftestdir
2544 fi
2545 if test -z "$NARROW_PROTO"; then
2546 AC_MSG_RESULT(no)
2547 else
2548 AC_MSG_RESULT($NARROW_PROTO)
2549 fi
2550 AC_SUBST(NARROW_PROTO)
2551fi
2552
2553dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2554dnl use the X11 include path
2555if test "$enable_xsmp" = "yes"; then
2556 cppflags_save=$CPPFLAGS
2557 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2558 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2559 CPPFLAGS=$cppflags_save
2560fi
2561
2562
Bram Moolenaare667c952010-07-05 22:57:59 +02002563if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002564 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2565 cppflags_save=$CPPFLAGS
2566 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2567 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2568
2569 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2570 if test ! "$enable_xim" = "no"; then
2571 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2572 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2573 AC_MSG_RESULT(yes),
2574 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2575 fi
2576 CPPFLAGS=$cppflags_save
2577
2578 dnl automatically enable XIM when hangul input isn't enabled
2579 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2580 -a "x$GUITYPE" != "xNONE" ; then
2581 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2582 enable_xim="yes"
2583 fi
2584fi
2585
2586if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2587 cppflags_save=$CPPFLAGS
2588 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002589dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2590 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2591 AC_TRY_COMPILE([
2592#include <X11/Intrinsic.h>
2593#include <X11/Xmu/Editres.h>],
2594 [int i; i = 0;],
2595 AC_MSG_RESULT(yes)
2596 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2597 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002598 CPPFLAGS=$cppflags_save
2599fi
2600
2601dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2602if test -z "$SKIP_MOTIF"; then
2603 cppflags_save=$CPPFLAGS
2604 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002605 if test "$zOSUnix" = "yes"; then
2606 xmheader="Xm/Xm.h"
2607 else
2608 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002609 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002610 fi
2611 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002612
Bram Moolenaar77c19352012-06-13 19:19:41 +02002613 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002614 dnl Solaris uses XpmAttributes_21, very annoying.
2615 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2616 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2617 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2618 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2619 )
2620 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002621 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002622 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623 CPPFLAGS=$cppflags_save
2624fi
2625
2626if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2627 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2628 enable_xim="no"
2629fi
2630if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2631 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2632 enable_fontset="no"
2633fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002634if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002635 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2636 enable_fontset="no"
2637fi
2638
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639if test -z "$SKIP_PHOTON"; then
2640 GUITYPE=PHOTONGUI
2641fi
2642
2643AC_SUBST(GUI_INC_LOC)
2644AC_SUBST(GUI_LIB_LOC)
2645AC_SUBST(GUITYPE)
2646AC_SUBST(GUI_X_LIBS)
2647
2648if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2649 AC_MSG_ERROR([cannot use workshop without Motif])
2650fi
2651
2652dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2653if test "$enable_xim" = "yes"; then
2654 AC_DEFINE(FEAT_XIM)
2655fi
2656if test "$enable_fontset" = "yes"; then
2657 AC_DEFINE(FEAT_XFONTSET)
2658fi
2659
2660
2661dnl ---------------------------------------------------------------------------
2662dnl end of GUI-checking
2663dnl ---------------------------------------------------------------------------
2664
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002665dnl Check for Cygwin, which needs an extra source file if not using X11
2666AC_MSG_CHECKING(for CYGWIN environment)
2667case `uname` in
2668 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2669 AC_MSG_CHECKING(for CYGWIN clipboard support)
2670 if test "x$with_x" = "xno" ; then
2671 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2672 AC_MSG_RESULT(yes)
2673 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2674 else
2675 AC_MSG_RESULT(no - using X11)
2676 fi ;;
2677
2678 *) CYGWIN=no; AC_MSG_RESULT(no);;
2679esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002680
2681dnl Only really enable hangul input when GUI and XFONTSET are available
2682if test "$enable_hangulinput" = "yes"; then
2683 if test "x$GUITYPE" = "xNONE"; then
2684 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2685 enable_hangulinput=no
2686 else
2687 AC_DEFINE(FEAT_HANGULIN)
2688 HANGULIN_SRC=hangulin.c
2689 AC_SUBST(HANGULIN_SRC)
2690 HANGULIN_OBJ=objects/hangulin.o
2691 AC_SUBST(HANGULIN_OBJ)
2692 fi
2693fi
2694
2695dnl Checks for libraries and include files.
2696
Bram Moolenaar446cb832008-06-24 21:56:24 +00002697AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2698 [
2699 AC_RUN_IFELSE([[
2700#include "confdefs.h"
2701#include <ctype.h>
2702#if STDC_HEADERS
2703# include <stdlib.h>
2704# include <stddef.h>
2705#endif
2706main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2707 ]],[
2708 vim_cv_toupper_broken=yes
2709 ],[
2710 vim_cv_toupper_broken=no
2711 ],[
2712 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2713 ])])
2714
2715if test "x$vim_cv_toupper_broken" = "xyes" ; then
2716 AC_DEFINE(BROKEN_TOUPPER)
2717fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002718
2719AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002720AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2722 AC_MSG_RESULT(no))
2723
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002724AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2725AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2726 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2727 AC_MSG_RESULT(no))
2728
Bram Moolenaar071d4272004-06-13 20:20:40 +00002729dnl Checks for header files.
2730AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2731dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2732if test "$HAS_ELF" = 1; then
2733 AC_CHECK_LIB(elf, main)
2734fi
2735
2736AC_HEADER_DIRENT
2737
Bram Moolenaar071d4272004-06-13 20:20:40 +00002738dnl If sys/wait.h is not found it might still exist but not be POSIX
2739dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2740if test $ac_cv_header_sys_wait_h = no; then
2741 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2742 AC_TRY_COMPILE([#include <sys/wait.h>],
2743 [union wait xx, yy; xx = yy],
2744 AC_MSG_RESULT(yes)
2745 AC_DEFINE(HAVE_SYS_WAIT_H)
2746 AC_DEFINE(HAVE_UNION_WAIT),
2747 AC_MSG_RESULT(no))
2748fi
2749
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002750AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2751 sys/select.h sys/utsname.h termcap.h fcntl.h \
2752 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2753 termio.h iconv.h inttypes.h langinfo.h math.h \
2754 unistd.h stropts.h errno.h sys/resource.h \
2755 sys/systeminfo.h locale.h sys/stream.h termios.h \
2756 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2757 utime.h sys/param.h libintl.h libgen.h \
2758 util/debug.h util/msg18n.h frame.h sys/acl.h \
2759 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002760
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002761dnl sys/ptem.h depends on sys/stream.h on Solaris
2762AC_CHECK_HEADERS(sys/ptem.h, [], [],
2763[#if defined HAVE_SYS_STREAM_H
2764# include <sys/stream.h>
2765#endif])
2766
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002767dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2768AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2769[#if defined HAVE_SYS_PARAM_H
2770# include <sys/param.h>
2771#endif])
2772
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002773
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002774dnl pthread_np.h may exist but can only be used after including pthread.h
2775AC_MSG_CHECKING([for pthread_np.h])
2776AC_TRY_COMPILE([
2777#include <pthread.h>
2778#include <pthread_np.h>],
2779 [int i; i = 0;],
2780 AC_MSG_RESULT(yes)
2781 AC_DEFINE(HAVE_PTHREAD_NP_H),
2782 AC_MSG_RESULT(no))
2783
Bram Moolenaare344bea2005-09-01 20:46:49 +00002784AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002785if test "x$MACOSX" = "xyes"; then
2786 dnl The strings.h file on OS/X contains a warning and nothing useful.
2787 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2788else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002789
2790dnl Check if strings.h and string.h can both be included when defined.
2791AC_MSG_CHECKING([if strings.h can be included after string.h])
2792cppflags_save=$CPPFLAGS
2793CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2794AC_TRY_COMPILE([
2795#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2796# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2797 /* but don't do it on AIX 5.1 (Uribarri) */
2798#endif
2799#ifdef HAVE_XM_XM_H
2800# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2801#endif
2802#ifdef HAVE_STRING_H
2803# include <string.h>
2804#endif
2805#if defined(HAVE_STRINGS_H)
2806# include <strings.h>
2807#endif
2808 ], [int i; i = 0;],
2809 AC_MSG_RESULT(yes),
2810 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2811 AC_MSG_RESULT(no))
2812CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002813fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002814
2815dnl Checks for typedefs, structures, and compiler characteristics.
2816AC_PROG_GCC_TRADITIONAL
2817AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002818AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002819AC_TYPE_MODE_T
2820AC_TYPE_OFF_T
2821AC_TYPE_PID_T
2822AC_TYPE_SIZE_T
2823AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002824AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002825
Bram Moolenaar071d4272004-06-13 20:20:40 +00002826AC_HEADER_TIME
2827AC_CHECK_TYPE(ino_t, long)
2828AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002829AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002830
2831AC_MSG_CHECKING(for rlim_t)
2832if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2833 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2834else
2835 AC_EGREP_CPP(dnl
2836changequote(<<,>>)dnl
2837<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2838changequote([,]),
2839 [
2840#include <sys/types.h>
2841#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002842# include <stdlib.h>
2843# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002844#endif
2845#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002846# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002847#endif
2848 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2849 AC_MSG_RESULT($ac_cv_type_rlim_t)
2850fi
2851if test $ac_cv_type_rlim_t = no; then
2852 cat >> confdefs.h <<\EOF
2853#define rlim_t unsigned long
2854EOF
2855fi
2856
2857AC_MSG_CHECKING(for stack_t)
2858if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2859 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2860else
2861 AC_EGREP_CPP(stack_t,
2862 [
2863#include <sys/types.h>
2864#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002865# include <stdlib.h>
2866# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002867#endif
2868#include <signal.h>
2869 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2870 AC_MSG_RESULT($ac_cv_type_stack_t)
2871fi
2872if test $ac_cv_type_stack_t = no; then
2873 cat >> confdefs.h <<\EOF
2874#define stack_t struct sigaltstack
2875EOF
2876fi
2877
2878dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2879AC_MSG_CHECKING(whether stack_t has an ss_base field)
2880AC_TRY_COMPILE([
2881#include <sys/types.h>
2882#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002883# include <stdlib.h>
2884# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002885#endif
2886#include <signal.h>
2887#include "confdefs.h"
2888 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2889 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2890 AC_MSG_RESULT(no))
2891
2892olibs="$LIBS"
2893AC_MSG_CHECKING(--with-tlib argument)
2894AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2895if test -n "$with_tlib"; then
2896 AC_MSG_RESULT($with_tlib)
2897 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002898 AC_MSG_CHECKING(for linking with $with_tlib library)
2899 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2900 dnl Need to check for tgetent() below.
2901 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002902else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002903 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002904 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2905 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002906 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002907 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908 dnl Older versions of ncurses have bugs, get a new one!
2909 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002910 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002911 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002912 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2913 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002914 esac
2915 for libname in $tlibs; do
2916 AC_CHECK_LIB(${libname}, tgetent,,)
2917 if test "x$olibs" != "x$LIBS"; then
2918 dnl It's possible that a library is found but it doesn't work
2919 dnl e.g., shared library that cannot be found
2920 dnl compile and run a test program to be sure
2921 AC_TRY_RUN([
2922#ifdef HAVE_TERMCAP_H
2923# include <termcap.h>
2924#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002925#if STDC_HEADERS
2926# include <stdlib.h>
2927# include <stddef.h>
2928#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002929main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2930 res="OK", res="FAIL", res="FAIL")
2931 if test "$res" = "OK"; then
2932 break
2933 fi
2934 AC_MSG_RESULT($libname library is not usable)
2935 LIBS="$olibs"
2936 fi
2937 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002938 if test "x$olibs" = "x$LIBS"; then
2939 AC_MSG_RESULT(no terminal library found)
2940 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002941fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002942
2943if test "x$olibs" = "x$LIBS"; then
2944 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002945 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002946 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2947 AC_MSG_RESULT(yes),
2948 AC_MSG_ERROR([NOT FOUND!
2949 You need to install a terminal library; for example ncurses.
2950 Or specify the name of the library with --with-tlib.]))
2951fi
2952
Bram Moolenaar446cb832008-06-24 21:56:24 +00002953AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2954 [
2955 AC_RUN_IFELSE([[
2956#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957#ifdef HAVE_TERMCAP_H
2958# include <termcap.h>
2959#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002960#ifdef HAVE_STRING_H
2961# include <string.h>
2962#endif
2963#if STDC_HEADERS
2964# include <stdlib.h>
2965# include <stddef.h>
2966#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002967main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002968{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2969 ]],[
2970 vim_cv_terminfo=no
2971 ],[
2972 vim_cv_terminfo=yes
2973 ],[
2974 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2975 ])
2976 ])
2977
2978if test "x$vim_cv_terminfo" = "xyes" ; then
2979 AC_DEFINE(TERMINFO)
2980fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002981
2982if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002983 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2984 [
2985 AC_RUN_IFELSE([[
2986#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002987#ifdef HAVE_TERMCAP_H
2988# include <termcap.h>
2989#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002990#if STDC_HEADERS
2991# include <stdlib.h>
2992# include <stddef.h>
2993#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002994main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002995{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2996 ]],[
2997 vim_cv_tgent=zero
2998 ],[
2999 vim_cv_tgent=non-zero
3000 ],[
3001 AC_MSG_ERROR(failed to compile test program.)
3002 ])
3003 ])
3004
3005 if test "x$vim_cv_tgent" = "xzero" ; then
3006 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3007 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003008fi
3009
3010AC_MSG_CHECKING(whether termcap.h contains ospeed)
3011AC_TRY_LINK([
3012#ifdef HAVE_TERMCAP_H
3013# include <termcap.h>
3014#endif
3015 ], [ospeed = 20000],
3016 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3017 [AC_MSG_RESULT(no)
3018 AC_MSG_CHECKING(whether ospeed can be extern)
3019 AC_TRY_LINK([
3020#ifdef HAVE_TERMCAP_H
3021# include <termcap.h>
3022#endif
3023extern short ospeed;
3024 ], [ospeed = 20000],
3025 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3026 AC_MSG_RESULT(no))]
3027 )
3028
3029AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3030AC_TRY_LINK([
3031#ifdef HAVE_TERMCAP_H
3032# include <termcap.h>
3033#endif
3034 ], [if (UP == 0 && BC == 0) PC = 1],
3035 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3036 [AC_MSG_RESULT(no)
3037 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3038 AC_TRY_LINK([
3039#ifdef HAVE_TERMCAP_H
3040# include <termcap.h>
3041#endif
3042extern char *UP, *BC, PC;
3043 ], [if (UP == 0 && BC == 0) PC = 1],
3044 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3045 AC_MSG_RESULT(no))]
3046 )
3047
3048AC_MSG_CHECKING(whether tputs() uses outfuntype)
3049AC_TRY_COMPILE([
3050#ifdef HAVE_TERMCAP_H
3051# include <termcap.h>
3052#endif
3053 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3054 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3055 AC_MSG_RESULT(no))
3056
3057dnl On some SCO machines sys/select redefines struct timeval
3058AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3059AC_TRY_COMPILE([
3060#include <sys/types.h>
3061#include <sys/time.h>
3062#include <sys/select.h>], ,
3063 AC_MSG_RESULT(yes)
3064 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3065 AC_MSG_RESULT(no))
3066
3067dnl AC_DECL_SYS_SIGLIST
3068
3069dnl Checks for pty.c (copied from screen) ==========================
3070AC_MSG_CHECKING(for /dev/ptc)
3071if test -r /dev/ptc; then
3072 AC_DEFINE(HAVE_DEV_PTC)
3073 AC_MSG_RESULT(yes)
3074else
3075 AC_MSG_RESULT(no)
3076fi
3077
3078AC_MSG_CHECKING(for SVR4 ptys)
3079if test -c /dev/ptmx ; then
3080 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3081 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3082 AC_MSG_RESULT(no))
3083else
3084 AC_MSG_RESULT(no)
3085fi
3086
3087AC_MSG_CHECKING(for ptyranges)
3088if test -d /dev/ptym ; then
3089 pdir='/dev/ptym'
3090else
3091 pdir='/dev'
3092fi
3093dnl SCO uses ptyp%d
3094AC_EGREP_CPP(yes,
3095[#ifdef M_UNIX
3096 yes;
3097#endif
3098 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3099dnl if test -c /dev/ptyp19; then
3100dnl ptys=`echo /dev/ptyp??`
3101dnl else
3102dnl ptys=`echo $pdir/pty??`
3103dnl fi
3104if test "$ptys" != "$pdir/pty??" ; then
3105 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3106 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3107 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3108 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3109 AC_MSG_RESULT([$p0 / $p1])
3110else
3111 AC_MSG_RESULT([don't know])
3112fi
3113
3114dnl **** pty mode/group handling ****
3115dnl
3116dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003117rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003118AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3119 [
3120 AC_RUN_IFELSE([[
3121#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003122#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003123#if STDC_HEADERS
3124# include <stdlib.h>
3125# include <stddef.h>
3126#endif
3127#ifdef HAVE_UNISTD_H
3128#include <unistd.h>
3129#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003130#include <sys/stat.h>
3131#include <stdio.h>
3132main()
3133{
3134 struct stat sb;
3135 char *x,*ttyname();
3136 int om, m;
3137 FILE *fp;
3138
3139 if (!(x = ttyname(0))) exit(1);
3140 if (stat(x, &sb)) exit(1);
3141 om = sb.st_mode;
3142 if (om & 002) exit(0);
3143 m = system("mesg y");
3144 if (m == -1 || m == 127) exit(1);
3145 if (stat(x, &sb)) exit(1);
3146 m = sb.st_mode;
3147 if (chmod(x, om)) exit(1);
3148 if (m & 002) exit(0);
3149 if (sb.st_gid == getgid()) exit(1);
3150 if (!(fp=fopen("conftest_grp", "w")))
3151 exit(1);
3152 fprintf(fp, "%d\n", sb.st_gid);
3153 fclose(fp);
3154 exit(0);
3155}
Bram Moolenaar446cb832008-06-24 21:56:24 +00003156 ]],[
3157 if test -f conftest_grp; then
3158 vim_cv_tty_group=`cat conftest_grp`
3159 if test "x$vim_cv_tty_mode" = "x" ; then
3160 vim_cv_tty_mode=0620
3161 fi
3162 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3163 else
3164 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003165 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003166 fi
3167 ],[
3168 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003169 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003170 ],[
3171 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3172 ])
3173 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003174rm -f conftest_grp
3175
Bram Moolenaar446cb832008-06-24 21:56:24 +00003176if test "x$vim_cv_tty_group" != "xworld" ; then
3177 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3178 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003179 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 +00003180 else
3181 AC_DEFINE(PTYMODE, 0620)
3182 fi
3183fi
3184
Bram Moolenaar071d4272004-06-13 20:20:40 +00003185dnl Checks for library functions. ===================================
3186
3187AC_TYPE_SIGNAL
3188
3189dnl find out what to use at the end of a signal function
3190if test $ac_cv_type_signal = void; then
3191 AC_DEFINE(SIGRETURN, [return])
3192else
3193 AC_DEFINE(SIGRETURN, [return 0])
3194fi
3195
3196dnl check if struct sigcontext is defined (used for SGI only)
3197AC_MSG_CHECKING(for struct sigcontext)
3198AC_TRY_COMPILE([
3199#include <signal.h>
3200test_sig()
3201{
3202 struct sigcontext *scont;
3203 scont = (struct sigcontext *)0;
3204 return 1;
3205} ], ,
3206 AC_MSG_RESULT(yes)
3207 AC_DEFINE(HAVE_SIGCONTEXT),
3208 AC_MSG_RESULT(no))
3209
3210dnl tricky stuff: try to find out if getcwd() is implemented with
3211dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003212AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3213 [
3214 AC_RUN_IFELSE([[
3215#include "confdefs.h"
3216#ifdef HAVE_UNISTD_H
3217#include <unistd.h>
3218#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003219char *dagger[] = { "IFS=pwd", 0 };
3220main()
3221{
3222 char buffer[500];
3223 extern char **environ;
3224 environ = dagger;
3225 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003226}
3227 ]],[
3228 vim_cv_getcwd_broken=no
3229 ],[
3230 vim_cv_getcwd_broken=yes
3231 ],[
3232 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3233 ])
3234 ])
3235
3236if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3237 AC_DEFINE(BAD_GETCWD)
3238fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003239
Bram Moolenaar25153e12010-02-24 14:47:08 +01003240dnl Check for functions in one big call, to reduce the size of configure.
3241dnl Can only be used for functions that do not require any include.
3242AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003243 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003244 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003245 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003246 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003247 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3248 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003249AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003250
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003251dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3252dnl appropriate, so that off_t is 64 bits when needed.
3253AC_SYS_LARGEFILE
3254
Bram Moolenaar071d4272004-06-13 20:20:40 +00003255dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3256AC_MSG_CHECKING(for st_blksize)
3257AC_TRY_COMPILE(
3258[#include <sys/types.h>
3259#include <sys/stat.h>],
3260[ struct stat st;
3261 int n;
3262
3263 stat("/", &st);
3264 n = (int)st.st_blksize;],
3265 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3266 AC_MSG_RESULT(no))
3267
Bram Moolenaar446cb832008-06-24 21:56:24 +00003268AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3269 [
3270 AC_RUN_IFELSE([[
3271#include "confdefs.h"
3272#if STDC_HEADERS
3273# include <stdlib.h>
3274# include <stddef.h>
3275#endif
3276#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003277#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003278main() {struct stat st; exit(stat("configure/", &st) != 0); }
3279 ]],[
3280 vim_cv_stat_ignores_slash=yes
3281 ],[
3282 vim_cv_stat_ignores_slash=no
3283 ],[
3284 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3285 ])
3286 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003287
Bram Moolenaar446cb832008-06-24 21:56:24 +00003288if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3289 AC_DEFINE(STAT_IGNORES_SLASH)
3290fi
3291
Bram Moolenaar071d4272004-06-13 20:20:40 +00003292dnl Link with iconv for charset translation, if not found without library.
3293dnl check for iconv() requires including iconv.h
3294dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3295dnl has been installed.
3296AC_MSG_CHECKING(for iconv_open())
3297save_LIBS="$LIBS"
3298LIBS="$LIBS -liconv"
3299AC_TRY_LINK([
3300#ifdef HAVE_ICONV_H
3301# include <iconv.h>
3302#endif
3303 ], [iconv_open("fr", "to");],
3304 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3305 LIBS="$save_LIBS"
3306 AC_TRY_LINK([
3307#ifdef HAVE_ICONV_H
3308# include <iconv.h>
3309#endif
3310 ], [iconv_open("fr", "to");],
3311 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3312 AC_MSG_RESULT(no)))
3313
3314
3315AC_MSG_CHECKING(for nl_langinfo(CODESET))
3316AC_TRY_LINK([
3317#ifdef HAVE_LANGINFO_H
3318# include <langinfo.h>
3319#endif
3320], [char *cs = nl_langinfo(CODESET);],
3321 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3322 AC_MSG_RESULT(no))
3323
Bram Moolenaar446cb832008-06-24 21:56:24 +00003324dnl Need various functions for floating point support. Only enable
3325dnl floating point when they are all present.
3326AC_CHECK_LIB(m, strtod)
3327AC_MSG_CHECKING([for strtod() and other floating point functions])
3328AC_TRY_LINK([
3329#ifdef HAVE_MATH_H
3330# include <math.h>
3331#endif
3332#if STDC_HEADERS
3333# include <stdlib.h>
3334# include <stddef.h>
3335#endif
3336], [char *s; double d;
3337 d = strtod("1.1", &s);
3338 d = fabs(1.11);
3339 d = ceil(1.11);
3340 d = floor(1.11);
3341 d = log10(1.11);
3342 d = pow(1.11, 2.22);
3343 d = sqrt(1.11);
3344 d = sin(1.11);
3345 d = cos(1.11);
3346 d = atan(1.11);
3347 ],
3348 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3349 AC_MSG_RESULT(no))
3350
Bram Moolenaar071d4272004-06-13 20:20:40 +00003351dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3352dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003353dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003354AC_MSG_CHECKING(--disable-acl argument)
3355AC_ARG_ENABLE(acl,
3356 [ --disable-acl Don't check for ACL support.],
3357 , [enable_acl="yes"])
3358if test "$enable_acl" = "yes"; then
3359AC_MSG_RESULT(no)
3360AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3361 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3362 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3363
3364AC_MSG_CHECKING(for POSIX ACL support)
3365AC_TRY_LINK([
3366#include <sys/types.h>
3367#ifdef HAVE_SYS_ACL_H
3368# include <sys/acl.h>
3369#endif
3370acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3371 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3372 acl_free(acl);],
3373 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3374 AC_MSG_RESULT(no))
3375
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003376AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003377AC_MSG_CHECKING(for Solaris ACL support)
3378AC_TRY_LINK([
3379#ifdef HAVE_SYS_ACL_H
3380# include <sys/acl.h>
3381#endif], [acl("foo", GETACLCNT, 0, NULL);
3382 ],
3383 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003384 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003385
3386AC_MSG_CHECKING(for AIX ACL support)
3387AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003388#if STDC_HEADERS
3389# include <stdlib.h>
3390# include <stddef.h>
3391#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003392#ifdef HAVE_SYS_ACL_H
3393# include <sys/acl.h>
3394#endif
3395#ifdef HAVE_SYS_ACCESS_H
3396# include <sys/access.h>
3397#endif
3398#define _ALL_SOURCE
3399
3400#include <sys/stat.h>
3401
3402int aclsize;
3403struct acl *aclent;], [aclsize = sizeof(struct acl);
3404 aclent = (void *)malloc(aclsize);
3405 statacl("foo", STX_NORMAL, aclent, aclsize);
3406 ],
3407 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3408 AC_MSG_RESULT(no))
3409else
3410 AC_MSG_RESULT(yes)
3411fi
3412
3413AC_MSG_CHECKING(--disable-gpm argument)
3414AC_ARG_ENABLE(gpm,
3415 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3416 [enable_gpm="yes"])
3417
3418if test "$enable_gpm" = "yes"; then
3419 AC_MSG_RESULT(no)
3420 dnl Checking if gpm support can be compiled
3421 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3422 [olibs="$LIBS" ; LIBS="-lgpm"]
3423 AC_TRY_LINK(
3424 [#include <gpm.h>
3425 #include <linux/keyboard.h>],
3426 [Gpm_GetLibVersion(NULL);],
3427 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3428 dnl FEAT_MOUSE_GPM if mouse support is included
3429 [vi_cv_have_gpm=yes],
3430 [vi_cv_have_gpm=no])
3431 [LIBS="$olibs"]
3432 )
3433 if test $vi_cv_have_gpm = yes; then
3434 LIBS="$LIBS -lgpm"
3435 AC_DEFINE(HAVE_GPM)
3436 fi
3437else
3438 AC_MSG_RESULT(yes)
3439fi
3440
Bram Moolenaar446cb832008-06-24 21:56:24 +00003441AC_MSG_CHECKING(--disable-sysmouse argument)
3442AC_ARG_ENABLE(sysmouse,
3443 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3444 [enable_sysmouse="yes"])
3445
3446if test "$enable_sysmouse" = "yes"; then
3447 AC_MSG_RESULT(no)
3448 dnl Checking if sysmouse support can be compiled
3449 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3450 dnl defines FEAT_SYSMOUSE if mouse support is included
3451 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3452 AC_TRY_LINK(
3453 [#include <sys/consio.h>
3454 #include <signal.h>
3455 #include <sys/fbio.h>],
3456 [struct mouse_info mouse;
3457 mouse.operation = MOUSE_MODE;
3458 mouse.operation = MOUSE_SHOW;
3459 mouse.u.mode.mode = 0;
3460 mouse.u.mode.signal = SIGUSR2;],
3461 [vi_cv_have_sysmouse=yes],
3462 [vi_cv_have_sysmouse=no])
3463 )
3464 if test $vi_cv_have_sysmouse = yes; then
3465 AC_DEFINE(HAVE_SYSMOUSE)
3466 fi
3467else
3468 AC_MSG_RESULT(yes)
3469fi
3470
Bram Moolenaarf05da212009-11-17 16:13:15 +00003471dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3472AC_MSG_CHECKING(for FD_CLOEXEC)
3473AC_TRY_COMPILE(
3474[#if HAVE_FCNTL_H
3475# include <fcntl.h>
3476#endif],
3477[ int flag = FD_CLOEXEC;],
3478 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3479 AC_MSG_RESULT(not usable))
3480
Bram Moolenaar071d4272004-06-13 20:20:40 +00003481dnl rename needs to be checked separately to work on Nextstep with cc
3482AC_MSG_CHECKING(for rename)
3483AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3484 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3485 AC_MSG_RESULT(no))
3486
3487dnl sysctl() may exist but not the arguments we use
3488AC_MSG_CHECKING(for sysctl)
3489AC_TRY_COMPILE(
3490[#include <sys/types.h>
3491#include <sys/sysctl.h>],
3492[ int mib[2], r;
3493 size_t len;
3494
3495 mib[0] = CTL_HW;
3496 mib[1] = HW_USERMEM;
3497 len = sizeof(r);
3498 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3499 ],
3500 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3501 AC_MSG_RESULT(not usable))
3502
3503dnl sysinfo() may exist but not be Linux compatible
3504AC_MSG_CHECKING(for sysinfo)
3505AC_TRY_COMPILE(
3506[#include <sys/types.h>
3507#include <sys/sysinfo.h>],
3508[ struct sysinfo sinfo;
3509 int t;
3510
3511 (void)sysinfo(&sinfo);
3512 t = sinfo.totalram;
3513 ],
3514 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3515 AC_MSG_RESULT(not usable))
3516
Bram Moolenaar914572a2007-05-01 11:37:47 +00003517dnl struct sysinfo may have the mem_unit field or not
3518AC_MSG_CHECKING(for sysinfo.mem_unit)
3519AC_TRY_COMPILE(
3520[#include <sys/types.h>
3521#include <sys/sysinfo.h>],
3522[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003523 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003524 ],
3525 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3526 AC_MSG_RESULT(no))
3527
Bram Moolenaar071d4272004-06-13 20:20:40 +00003528dnl sysconf() may exist but not support what we want to use
3529AC_MSG_CHECKING(for sysconf)
3530AC_TRY_COMPILE(
3531[#include <unistd.h>],
3532[ (void)sysconf(_SC_PAGESIZE);
3533 (void)sysconf(_SC_PHYS_PAGES);
3534 ],
3535 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3536 AC_MSG_RESULT(not usable))
3537
Bram Moolenaar914703b2010-05-31 21:59:46 +02003538AC_CHECK_SIZEOF([int])
3539AC_CHECK_SIZEOF([long])
3540AC_CHECK_SIZEOF([time_t])
3541AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003542
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003543dnl Make sure that uint32_t is really 32 bits unsigned.
3544AC_MSG_CHECKING([uint32_t is 32 bits])
3545AC_TRY_RUN([
3546#ifdef HAVE_STDINT_H
3547# include <stdint.h>
3548#endif
3549#ifdef HAVE_INTTYPES_H
3550# include <inttypes.h>
3551#endif
3552main() {
3553 uint32_t nr1 = (uint32_t)-1;
3554 uint32_t nr2 = (uint32_t)0xffffffffUL;
3555 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3556 exit(0);
3557}],
3558AC_MSG_RESULT(ok),
3559AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003560AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003561
Bram Moolenaar446cb832008-06-24 21:56:24 +00003562dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3563dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3564
Bram Moolenaar071d4272004-06-13 20:20:40 +00003565[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003566#include "confdefs.h"
3567#ifdef HAVE_STRING_H
3568# include <string.h>
3569#endif
3570#if STDC_HEADERS
3571# include <stdlib.h>
3572# include <stddef.h>
3573#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003574main() {
3575 char buf[10];
3576 strcpy(buf, "abcdefghi");
3577 mch_memmove(buf, buf + 2, 3);
3578 if (strncmp(buf, "ababcf", 6))
3579 exit(1);
3580 strcpy(buf, "abcdefghi");
3581 mch_memmove(buf + 2, buf, 3);
3582 if (strncmp(buf, "cdedef", 6))
3583 exit(1);
3584 exit(0); /* libc version works properly. */
3585}']
3586
Bram Moolenaar446cb832008-06-24 21:56:24 +00003587AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3588 [
3589 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3590 [
3591 vim_cv_memmove_handles_overlap=yes
3592 ],[
3593 vim_cv_memmove_handles_overlap=no
3594 ],[
3595 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3596 ])
3597 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003598
Bram Moolenaar446cb832008-06-24 21:56:24 +00003599if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3600 AC_DEFINE(USEMEMMOVE)
3601else
3602 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3603 [
3604 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3605 [
3606 vim_cv_bcopy_handles_overlap=yes
3607 ],[
3608 vim_cv_bcopy_handles_overlap=no
3609 ],[
3610 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3611 ])
3612 ])
3613
3614 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3615 AC_DEFINE(USEBCOPY)
3616 else
3617 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3618 [
3619 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3620 [
3621 vim_cv_memcpy_handles_overlap=yes
3622 ],[
3623 vim_cv_memcpy_handles_overlap=no
3624 ],[
3625 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3626 ])
3627 ])
3628
3629 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3630 AC_DEFINE(USEMEMCPY)
3631 fi
3632 fi
3633fi
3634
Bram Moolenaar071d4272004-06-13 20:20:40 +00003635
3636dnl Check for multibyte locale functions
3637dnl Find out if _Xsetlocale() is supported by libX11.
3638dnl Check if X_LOCALE should be defined.
3639
3640if test "$enable_multibyte" = "yes"; then
3641 cflags_save=$CFLAGS
3642 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003643 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003644 CFLAGS="$CFLAGS -I$x_includes"
3645 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3646 AC_MSG_CHECKING(whether X_LOCALE needed)
3647 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3648 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3649 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3650 AC_MSG_RESULT(no))
3651 fi
3652 CFLAGS=$cflags_save
3653 LDFLAGS=$ldflags_save
3654fi
3655
3656dnl Link with xpg4, it is said to make Korean locale working
3657AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3658
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003659dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003660dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003661dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003662dnl -t for typedefs (many ctags have this)
3663dnl -s for static functions (Elvis ctags only?)
3664dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3665dnl -i+m to test for older Exuberant ctags
3666AC_MSG_CHECKING(how to create tags)
3667test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003668if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003669 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003670elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3671 TAGPRG="exctags -I INIT+ --fields=+S"
3672elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3673 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003674else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003675 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003676 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3677 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3678 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3679 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3680 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3681 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3682 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3683fi
3684test -f tags.save && mv tags.save tags
3685AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3686
3687dnl Check how we can run man with a section number
3688AC_MSG_CHECKING(how to run man with a section nr)
3689MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003690(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 +00003691AC_MSG_RESULT($MANDEF)
3692if test "$MANDEF" = "man -s"; then
3693 AC_DEFINE(USEMAN_S)
3694fi
3695
3696dnl Check if gettext() is working and if it needs -lintl
3697AC_MSG_CHECKING(--disable-nls argument)
3698AC_ARG_ENABLE(nls,
3699 [ --disable-nls Don't support NLS (gettext()).], ,
3700 [enable_nls="yes"])
3701
3702if test "$enable_nls" = "yes"; then
3703 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003704
3705 INSTALL_LANGS=install-languages
3706 AC_SUBST(INSTALL_LANGS)
3707 INSTALL_TOOL_LANGS=install-tool-languages
3708 AC_SUBST(INSTALL_TOOL_LANGS)
3709
Bram Moolenaar071d4272004-06-13 20:20:40 +00003710 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3711 AC_MSG_CHECKING([for NLS])
3712 if test -f po/Makefile; then
3713 have_gettext="no"
3714 if test -n "$MSGFMT"; then
3715 AC_TRY_LINK(
3716 [#include <libintl.h>],
3717 [gettext("Test");],
3718 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3719 olibs=$LIBS
3720 LIBS="$LIBS -lintl"
3721 AC_TRY_LINK(
3722 [#include <libintl.h>],
3723 [gettext("Test");],
3724 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3725 AC_MSG_RESULT([gettext() doesn't work]);
3726 LIBS=$olibs))
3727 else
3728 AC_MSG_RESULT([msgfmt not found - disabled]);
3729 fi
3730 if test $have_gettext = "yes"; then
3731 AC_DEFINE(HAVE_GETTEXT)
3732 MAKEMO=yes
3733 AC_SUBST(MAKEMO)
3734 dnl this was added in GNU gettext 0.10.36
3735 AC_CHECK_FUNCS(bind_textdomain_codeset)
3736 dnl _nl_msg_cat_cntr is required for GNU gettext
3737 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3738 AC_TRY_LINK(
3739 [#include <libintl.h>
3740 extern int _nl_msg_cat_cntr;],
3741 [++_nl_msg_cat_cntr;],
3742 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3743 AC_MSG_RESULT([no]))
3744 fi
3745 else
3746 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3747 fi
3748else
3749 AC_MSG_RESULT(yes)
3750fi
3751
3752dnl Check for dynamic linking loader
3753AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3754if test x${DLL} = xdlfcn.h; then
3755 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3756 AC_MSG_CHECKING([for dlopen()])
3757 AC_TRY_LINK(,[
3758 extern void* dlopen();
3759 dlopen();
3760 ],
3761 AC_MSG_RESULT(yes);
3762 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3763 AC_MSG_RESULT(no);
3764 AC_MSG_CHECKING([for dlopen() in -ldl])
3765 olibs=$LIBS
3766 LIBS="$LIBS -ldl"
3767 AC_TRY_LINK(,[
3768 extern void* dlopen();
3769 dlopen();
3770 ],
3771 AC_MSG_RESULT(yes);
3772 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3773 AC_MSG_RESULT(no);
3774 LIBS=$olibs))
3775 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3776 dnl ick :-)
3777 AC_MSG_CHECKING([for dlsym()])
3778 AC_TRY_LINK(,[
3779 extern void* dlsym();
3780 dlsym();
3781 ],
3782 AC_MSG_RESULT(yes);
3783 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3784 AC_MSG_RESULT(no);
3785 AC_MSG_CHECKING([for dlsym() in -ldl])
3786 olibs=$LIBS
3787 LIBS="$LIBS -ldl"
3788 AC_TRY_LINK(,[
3789 extern void* dlsym();
3790 dlsym();
3791 ],
3792 AC_MSG_RESULT(yes);
3793 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3794 AC_MSG_RESULT(no);
3795 LIBS=$olibs))
3796elif test x${DLL} = xdl.h; then
3797 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3798 AC_MSG_CHECKING([for shl_load()])
3799 AC_TRY_LINK(,[
3800 extern void* shl_load();
3801 shl_load();
3802 ],
3803 AC_MSG_RESULT(yes);
3804 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3805 AC_MSG_RESULT(no);
3806 AC_MSG_CHECKING([for shl_load() in -ldld])
3807 olibs=$LIBS
3808 LIBS="$LIBS -ldld"
3809 AC_TRY_LINK(,[
3810 extern void* shl_load();
3811 shl_load();
3812 ],
3813 AC_MSG_RESULT(yes);
3814 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3815 AC_MSG_RESULT(no);
3816 LIBS=$olibs))
3817fi
3818AC_CHECK_HEADERS(setjmp.h)
3819
3820if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3821 dnl -ldl must come after DynaLoader.a
3822 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3823 LIBS=`echo $LIBS | sed s/-ldl//`
3824 PERL_LIBS="$PERL_LIBS -ldl"
3825 fi
3826fi
3827
Bram Moolenaar164fca32010-07-14 13:58:07 +02003828if test "x$MACOSX" = "xyes"; then
3829 AC_MSG_CHECKING(whether we need -framework Cocoa)
3830 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3831 dnl disabled during tiny build)
3832 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3833 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003834 AC_MSG_RESULT(yes)
3835 else
3836 AC_MSG_RESULT(no)
3837 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003838 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3839 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3840 dnl missing Objective-C symbols.
3841 if test "x$features" = "xtiny"; then
3842 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3843 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3844 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003845fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003846if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003847 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003848fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003849
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003850dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3851dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3852dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003853dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3854dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003855DEPEND_CFLAGS_FILTER=
3856if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003857 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003858 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003859 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003860 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003861 AC_MSG_RESULT(yes)
3862 else
3863 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003864 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003865 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3866 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003867 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003868 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003869 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3870 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003871 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 +00003872 AC_MSG_RESULT(yes)
3873 else
3874 AC_MSG_RESULT(no)
3875 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003876fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003877AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003878
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003879dnl link.sh tries to avoid overlinking in a hackish way.
3880dnl At least GNU ld supports --as-needed which provides the same functionality
3881dnl at linker level. Let's use it.
3882AC_MSG_CHECKING(linker --as-needed support)
3883LINK_AS_NEEDED=
3884# Check if linker supports --as-needed and --no-as-needed options
3885if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003886 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003887 LINK_AS_NEEDED=yes
3888fi
3889if test "$LINK_AS_NEEDED" = yes; then
3890 AC_MSG_RESULT(yes)
3891else
3892 AC_MSG_RESULT(no)
3893fi
3894AC_SUBST(LINK_AS_NEEDED)
3895
Bram Moolenaar77c19352012-06-13 19:19:41 +02003896# IBM z/OS reset CFLAGS for config.mk
3897if test "$zOSUnix" = "yes"; then
3898 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3899fi
3900
Bram Moolenaar071d4272004-06-13 20:20:40 +00003901dnl write output files
3902AC_OUTPUT(auto/config.mk:config.mk.in)
3903
3904dnl vim: set sw=2 tw=78 fo+=l: