blob: 3d53a43fc1685a63adc0fe956fce5c7ff9df9a96 [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 Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_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
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200458 dnl -- try to find Lua executable
459 AC_PATH_PROG(vi_cv_path_lua, lua)
460 if test "X$vi_cv_path_lua" != "X"; then
461 dnl -- find Lua version
462 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
463 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
464 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200465 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
466 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200467 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200468 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200469 AC_MSG_RESULT(no)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200470 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
471 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
472 AC_MSG_RESULT(yes)
473 LUA_INC=/lua$vi_cv_version_lua
474 else
475 AC_MSG_RESULT(no)
476 vi_cv_path_lua_pfx=
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200482 if test "X$LUA_INC" != "X"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200494 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
495 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
496 else
497 dnl Determine the SONAME for the current version, but fallback to
498 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100499 for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
500 for i in 0 1 2 3 4 5 6 7 8 9; do
501 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
502 LUA_SONAME=".$i"
503 break
504 fi
505 done
506 vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200507 done
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200508 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200509 AC_DEFINE(DYNAMIC_LUA)
510 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200511 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200512 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200513 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100514 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
515 AC_MSG_ERROR([could not configure lua])
516 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200517 AC_SUBST(LUA_SRC)
518 AC_SUBST(LUA_OBJ)
519 AC_SUBST(LUA_PRO)
520 AC_SUBST(LUA_LIBS)
521 AC_SUBST(LUA_CFLAGS)
522fi
523
524
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000525dnl Check for MzScheme feature.
526AC_MSG_CHECKING(--enable-mzschemeinterp argument)
527AC_ARG_ENABLE(mzschemeinterp,
528 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
529 [enable_mzschemeinterp="no"])
530AC_MSG_RESULT($enable_mzschemeinterp)
531
532if test "$enable_mzschemeinterp" = "yes"; then
533 dnl -- find the mzscheme executable
534 AC_SUBST(vi_cv_path_mzscheme)
535
536 AC_MSG_CHECKING(--with-plthome argument)
537 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000538 [ --with-plthome=PLTHOME Use PLTHOME.],
539 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000540 with_plthome="";AC_MSG_RESULT("no"))
541
542 if test "X$with_plthome" != "X"; then
543 vi_cv_path_mzscheme_pfx="$with_plthome"
544 else
545 AC_MSG_CHECKING(PLTHOME environment var)
546 if test "X$PLTHOME" != "X"; then
547 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000548 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000549 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000550 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000551 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000552 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000553
554 dnl resolve symbolic link, the executable is often elsewhere and there
555 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000556 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000557 lsout=`ls -l $vi_cv_path_mzscheme`
558 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
559 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
560 fi
561 fi
562
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000563 if test "X$vi_cv_path_mzscheme" != "X"; then
564 dnl -- find where MzScheme thinks it was installed
565 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000566 dnl different versions of MzScheme differ in command line processing
567 dnl use universal approach
568 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000569 (build-path (call-with-values \
570 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000571 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
572 dnl Remove a trailing slash
573 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
574 sed -e 's+/$++'` ])
575 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000576 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000577 fi
578 fi
579
Bram Moolenaard7afed32007-05-06 13:26:41 +0000580 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000581 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
582 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
583 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000584 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
585 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000586 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000587 AC_MSG_RESULT(no)
588 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000590 AC_MSG_RESULT(yes)
591 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000592 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000593 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100594 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
595 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000596 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100597 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000598 else
599 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100600 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
601 if test -f /usr/include/plt/scheme.h; then
602 AC_MSG_RESULT(yes)
603 SCHEME_INC=/usr/include/plt
604 else
605 AC_MSG_RESULT(no)
606 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
607 if test -f /usr/include/racket/scheme.h; then
608 AC_MSG_RESULT(yes)
609 SCHEME_INC=/usr/include/racket
610 else
611 AC_MSG_RESULT(no)
612 vi_cv_path_mzscheme_pfx=
613 fi
614 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000615 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000616 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000617 fi
618 fi
619
620 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000621 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100622 MZSCHEME_LIBS="-framework Racket"
623 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
625 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
626 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100627 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
628 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
629 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
630 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
631 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
632 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000633 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 +0000634 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000635 dnl Using shared objects
636 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
638 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100639 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
640 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
641 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
642 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
643 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000644 else
645 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
646 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000647 if test "$GCC" = yes; then
648 dnl Make Vim remember the path to the library. For when it's not in
649 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000650 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000651 elif test "`(uname) 2>/dev/null`" = SunOS &&
652 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000653 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000654 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000655 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100656
657 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000658 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100659 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100660 else
661 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100662 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
663 else
664 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
665 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100666 else
667 if test -d $vi_cv_path_mzscheme_pfx/collects; then
668 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
669 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100670 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100671 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000672 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100673 if test "X$SCHEME_COLLECTS" != "X" ; then
674 AC_MSG_RESULT(${SCHEME_COLLECTS})
675 else
676 AC_MSG_RESULT(not found)
677 fi
678
679 AC_MSG_CHECKING(for mzscheme_base.c)
680 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000681 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100682 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100683 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100684 MZSCHEME_EXTRA="mzscheme_base.c"
685 fi
686 fi
687 if test "X$MZSCHEME_EXTRA" != "X" ; then
688 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000689 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
690 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100691 AC_MSG_RESULT(needed)
692 else
693 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000694 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100695
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000696 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100697 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000698 MZSCHEME_SRC="if_mzsch.c"
699 MZSCHEME_OBJ="objects/if_mzsch.o"
700 MZSCHEME_PRO="if_mzsch.pro"
701 AC_DEFINE(FEAT_MZSCHEME)
702 fi
703 AC_SUBST(MZSCHEME_SRC)
704 AC_SUBST(MZSCHEME_OBJ)
705 AC_SUBST(MZSCHEME_PRO)
706 AC_SUBST(MZSCHEME_LIBS)
707 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000708 AC_SUBST(MZSCHEME_EXTRA)
709 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000710fi
711
712
Bram Moolenaar071d4272004-06-13 20:20:40 +0000713AC_MSG_CHECKING(--enable-perlinterp argument)
714AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200715 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000716 [enable_perlinterp="no"])
717AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200718if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000719 AC_SUBST(vi_cv_path_perl)
720 AC_PATH_PROG(vi_cv_path_perl, perl)
721 if test "X$vi_cv_path_perl" != "X"; then
722 AC_MSG_CHECKING(Perl version)
723 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
724 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200725 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000726 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
727 badthreads=no
728 else
729 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
730 eval `$vi_cv_path_perl -V:use5005threads`
731 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
732 badthreads=no
733 else
734 badthreads=yes
735 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
736 fi
737 else
738 badthreads=yes
739 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
740 fi
741 fi
742 if test $badthreads = no; then
743 AC_MSG_RESULT(OK)
744 eval `$vi_cv_path_perl -V:shrpenv`
745 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
746 shrpenv=""
747 fi
748 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
749 AC_SUBST(vi_cv_perllib)
750 dnl Remove "-fno-something", it breaks using cproto.
751 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
752 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
753 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
754 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
755 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
756 -e 's/-bE:perl.exp//' -e 's/-lc //'`
757 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
758 dnl a test in configure may fail because of that.
759 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
760 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
761
762 dnl check that compiling a simple program still works with the flags
763 dnl added for Perl.
764 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
765 cflags_save=$CFLAGS
766 libs_save=$LIBS
767 ldflags_save=$LDFLAGS
768 CFLAGS="$CFLAGS $perlcppflags"
769 LIBS="$LIBS $perllibs"
770 LDFLAGS="$perlldflags $LDFLAGS"
771 AC_TRY_LINK(,[ ],
772 AC_MSG_RESULT(yes); perl_ok=yes,
773 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
774 CFLAGS=$cflags_save
775 LIBS=$libs_save
776 LDFLAGS=$ldflags_save
777 if test $perl_ok = yes; then
778 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000779 dnl remove -pipe and -Wxxx, it confuses cproto
780 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000781 fi
782 if test "X$perlldflags" != "X"; then
783 LDFLAGS="$perlldflags $LDFLAGS"
784 fi
785 PERL_LIBS=$perllibs
786 PERL_SRC="auto/if_perl.c if_perlsfio.c"
787 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
788 PERL_PRO="if_perl.pro if_perlsfio.pro"
789 AC_DEFINE(FEAT_PERL)
790 fi
791 fi
792 else
793 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
794 fi
795 fi
796
797 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000798 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000799 dir=/System/Library/Perl
800 darwindir=$dir/darwin
801 if test -d $darwindir; then
802 PERL=/usr/bin/perl
803 else
804 dnl Mac OS X 10.3
805 dir=/System/Library/Perl/5.8.1
806 darwindir=$dir/darwin-thread-multi-2level
807 if test -d $darwindir; then
808 PERL=/usr/bin/perl
809 fi
810 fi
811 if test -n "$PERL"; then
812 PERL_DIR="$dir"
813 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
814 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
815 PERL_LIBS="-L$darwindir/CORE -lperl"
816 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200817 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
818 dnl be included if requested by passing --with-mac-arch to
819 dnl configure, so strip these flags first (if present)
820 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
821 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 +0000822 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200823 if test "$enable_perlinterp" = "dynamic"; then
824 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
825 AC_DEFINE(DYNAMIC_PERL)
826 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
827 fi
828 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100829
830 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
831 AC_MSG_ERROR([could not configure perl])
832 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833fi
834AC_SUBST(shrpenv)
835AC_SUBST(PERL_SRC)
836AC_SUBST(PERL_OBJ)
837AC_SUBST(PERL_PRO)
838AC_SUBST(PERL_CFLAGS)
839AC_SUBST(PERL_LIBS)
840
841AC_MSG_CHECKING(--enable-pythoninterp argument)
842AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200843 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000844 [enable_pythoninterp="no"])
845AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200846if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000847 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +0100848 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000849 if test "X$vi_cv_path_python" != "X"; then
850
851 dnl -- get its version number
852 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
853 [[vi_cv_var_python_version=`
854 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
855 ]])
856
857 dnl -- it must be at least version 1.4
858 AC_MSG_CHECKING(Python is 1.4 or better)
859 if ${vi_cv_path_python} -c \
860 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
861 then
862 AC_MSG_RESULT(yep)
863
864 dnl -- find where python thinks it was installed
865 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
866 [ vi_cv_path_python_pfx=`
867 ${vi_cv_path_python} -c \
868 "import sys; print sys.prefix"` ])
869
870 dnl -- and where it thinks it runs
871 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
872 [ vi_cv_path_python_epfx=`
873 ${vi_cv_path_python} -c \
874 "import sys; print sys.exec_prefix"` ])
875
876 dnl -- python's internal library path
877
878 AC_CACHE_VAL(vi_cv_path_pythonpath,
879 [ vi_cv_path_pythonpath=`
880 unset PYTHONPATH;
881 ${vi_cv_path_python} -c \
882 "import sys, string; print string.join(sys.path,':')"` ])
883
884 dnl -- where the Python implementation library archives are
885
886 AC_ARG_WITH(python-config-dir,
887 [ --with-python-config-dir=PATH Python's config directory],
888 [ vi_cv_path_python_conf="${withval}" ] )
889
890 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
891 [
892 vi_cv_path_python_conf=
893 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000894 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000895 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
896 if test -d "$d" && test -f "$d/config.c"; then
897 vi_cv_path_python_conf="$d"
898 fi
899 done
900 done
901 ])
902
903 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
904
905 if test "X$PYTHON_CONFDIR" = "X"; then
906 AC_MSG_RESULT([can't find it!])
907 else
908
909 dnl -- we need to examine Python's config/Makefile too
910 dnl see what the interpreter is built from
911 AC_CACHE_VAL(vi_cv_path_python_plibs,
912 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000913 pwd=`pwd`
914 tmp_mkf="$pwd/config-PyMake$$"
915 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000916__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200917 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000918 @echo "python_LIBS='$(LIBS)'"
919 @echo "python_SYSLIBS='$(SYSLIBS)'"
920 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200921 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200922 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000923eof
924 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000925 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
926 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000927 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
928 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
929 vi_cv_path_python_plibs="-framework Python"
930 else
931 if test "${vi_cv_var_python_version}" = "1.4"; then
932 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
933 else
934 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
935 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200936 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 +0000937 dnl remove -ltermcap, it can conflict with an earlier -lncurses
938 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
939 fi
940 ])
941
Bram Moolenaarf94a13c2012-09-21 13:26:49 +0200942 if test "X$python_DLLLIBRARY" != "X"; then
943 python_INSTSONAME="$python_DLLLIBRARY"
944 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000945 PYTHON_LIBS="${vi_cv_path_python_plibs}"
946 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100947 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 +0000948 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100949 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 +0000950 fi
951 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +0200952 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000953 if test "${vi_cv_var_python_version}" = "1.4"; then
954 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
955 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100956 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 +0000957
958 dnl On FreeBSD linking with "-pthread" is required to use threads.
959 dnl _THREAD_SAFE must be used for compiling then.
960 dnl The "-pthread" is added to $LIBS, so that the following check for
961 dnl sigaltstack() will look in libc_r (it's there in libc!).
962 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
963 dnl will then define target-specific defines, e.g., -D_REENTRANT.
964 dnl Don't do this for Mac OSX, -pthread will generate a warning.
965 AC_MSG_CHECKING([if -pthread should be used])
966 threadsafe_flag=
967 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000968 dnl if test "x$MACOSX" != "xyes"; then
969 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000970 test "$GCC" = yes && threadsafe_flag="-pthread"
971 if test "`(uname) 2>/dev/null`" = FreeBSD; then
972 threadsafe_flag="-D_THREAD_SAFE"
973 thread_lib="-pthread"
974 fi
975 fi
976 libs_save_old=$LIBS
977 if test -n "$threadsafe_flag"; then
978 cflags_save=$CFLAGS
979 CFLAGS="$CFLAGS $threadsafe_flag"
980 LIBS="$LIBS $thread_lib"
981 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200982 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000983 AC_MSG_RESULT(no); LIBS=$libs_save_old
984 )
985 CFLAGS=$cflags_save
986 else
987 AC_MSG_RESULT(no)
988 fi
989
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200990 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000991 dnl added for Python.
992 AC_MSG_CHECKING([if compile and link flags for Python are sane])
993 cflags_save=$CFLAGS
994 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200995 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000996 LIBS="$LIBS $PYTHON_LIBS"
997 AC_TRY_LINK(,[ ],
998 AC_MSG_RESULT(yes); python_ok=yes,
999 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1000 CFLAGS=$cflags_save
1001 LIBS=$libs_save
1002 if test $python_ok = yes; then
1003 AC_DEFINE(FEAT_PYTHON)
1004 else
1005 LIBS=$libs_save_old
1006 PYTHON_SRC=
1007 PYTHON_OBJ=
1008 PYTHON_LIBS=
1009 PYTHON_CFLAGS=
1010 fi
1011
1012 fi
1013 else
1014 AC_MSG_RESULT(too old)
1015 fi
1016 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001017
1018 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1019 AC_MSG_ERROR([could not configure python])
1020 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001021fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001022
Bram Moolenaar071d4272004-06-13 20:20:40 +00001023AC_SUBST(PYTHON_CONFDIR)
1024AC_SUBST(PYTHON_LIBS)
1025AC_SUBST(PYTHON_GETPATH_CFLAGS)
1026AC_SUBST(PYTHON_CFLAGS)
1027AC_SUBST(PYTHON_SRC)
1028AC_SUBST(PYTHON_OBJ)
1029
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001030
1031AC_MSG_CHECKING(--enable-python3interp argument)
1032AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001033 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001034 [enable_python3interp="no"])
1035AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001036if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001037 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001038 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001039 if test "X$vi_cv_path_python3" != "X"; then
1040
1041 dnl -- get its version number
1042 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1043 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001044 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001045 ]])
1046
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001047 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1048 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1049 [
1050 vi_cv_var_python3_abiflags=
1051 if ${vi_cv_path_python3} -c \
1052 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1053 then
1054 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1055 "import sys; print(sys.abiflags)"`
1056 fi ])
1057
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001058 dnl -- find where python3 thinks it was installed
1059 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1060 [ vi_cv_path_python3_pfx=`
1061 ${vi_cv_path_python3} -c \
1062 "import sys; print(sys.prefix)"` ])
1063
1064 dnl -- and where it thinks it runs
1065 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1066 [ vi_cv_path_python3_epfx=`
1067 ${vi_cv_path_python3} -c \
1068 "import sys; print(sys.exec_prefix)"` ])
1069
1070 dnl -- python3's internal library path
1071
1072 AC_CACHE_VAL(vi_cv_path_python3path,
1073 [ vi_cv_path_python3path=`
1074 unset PYTHONPATH;
1075 ${vi_cv_path_python3} -c \
1076 "import sys, string; print(':'.join(sys.path))"` ])
1077
1078 dnl -- where the Python implementation library archives are
1079
1080 AC_ARG_WITH(python3-config-dir,
1081 [ --with-python3-config-dir=PATH Python's config directory],
1082 [ vi_cv_path_python3_conf="${withval}" ] )
1083
1084 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1085 [
1086 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001087 config_dir="config"
1088 if test "${vi_cv_var_python3_abiflags}" != ""; then
1089 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1090 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001091 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001092 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001093 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001094 if test -d "$d" && test -f "$d/config.c"; then
1095 vi_cv_path_python3_conf="$d"
1096 fi
1097 done
1098 done
1099 ])
1100
1101 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1102
1103 if test "X$PYTHON3_CONFDIR" = "X"; then
1104 AC_MSG_RESULT([can't find it!])
1105 else
1106
1107 dnl -- we need to examine Python's config/Makefile too
1108 dnl see what the interpreter is built from
1109 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1110 [
1111 pwd=`pwd`
1112 tmp_mkf="$pwd/config-PyMake$$"
1113 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1114__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001115 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001116 @echo "python3_LIBS='$(LIBS)'"
1117 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001118 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001119 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001120eof
1121 dnl -- delete the lines from make about Entering/Leaving directory
1122 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1123 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001124 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001125 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001126 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1127 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1128 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1129 ])
1130
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001131 if test "X$python3_DLLLIBRARY" != "X"; then
1132 python3_INSTSONAME="$python3_DLLLIBRARY"
1133 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001134 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1135 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001136 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 Moolenaarbd5e15f2010-07-17 21:19:38 +02001137 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001138 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 Moolenaarbd5e15f2010-07-17 21:19:38 +02001139 fi
1140 PYTHON3_SRC="if_python3.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001141 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001142
1143 dnl On FreeBSD linking with "-pthread" is required to use threads.
1144 dnl _THREAD_SAFE must be used for compiling then.
1145 dnl The "-pthread" is added to $LIBS, so that the following check for
1146 dnl sigaltstack() will look in libc_r (it's there in libc!).
1147 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1148 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1149 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1150 AC_MSG_CHECKING([if -pthread should be used])
1151 threadsafe_flag=
1152 thread_lib=
1153 dnl if test "x$MACOSX" != "xyes"; then
1154 if test "`(uname) 2>/dev/null`" != Darwin; then
1155 test "$GCC" = yes && threadsafe_flag="-pthread"
1156 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1157 threadsafe_flag="-D_THREAD_SAFE"
1158 thread_lib="-pthread"
1159 fi
1160 fi
1161 libs_save_old=$LIBS
1162 if test -n "$threadsafe_flag"; then
1163 cflags_save=$CFLAGS
1164 CFLAGS="$CFLAGS $threadsafe_flag"
1165 LIBS="$LIBS $thread_lib"
1166 AC_TRY_LINK(,[ ],
1167 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1168 AC_MSG_RESULT(no); LIBS=$libs_save_old
1169 )
1170 CFLAGS=$cflags_save
1171 else
1172 AC_MSG_RESULT(no)
1173 fi
1174
1175 dnl check that compiling a simple program still works with the flags
1176 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001177 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001178 cflags_save=$CFLAGS
1179 libs_save=$LIBS
1180 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1181 LIBS="$LIBS $PYTHON3_LIBS"
1182 AC_TRY_LINK(,[ ],
1183 AC_MSG_RESULT(yes); python3_ok=yes,
1184 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1185 CFLAGS=$cflags_save
1186 LIBS=$libs_save
1187 if test "$python3_ok" = yes; then
1188 AC_DEFINE(FEAT_PYTHON3)
1189 else
1190 LIBS=$libs_save_old
1191 PYTHON3_SRC=
1192 PYTHON3_OBJ=
1193 PYTHON3_LIBS=
1194 PYTHON3_CFLAGS=
1195 fi
1196 fi
1197 fi
1198fi
1199
1200AC_SUBST(PYTHON3_CONFDIR)
1201AC_SUBST(PYTHON3_LIBS)
1202AC_SUBST(PYTHON3_CFLAGS)
1203AC_SUBST(PYTHON3_SRC)
1204AC_SUBST(PYTHON3_OBJ)
1205
1206dnl if python2.x and python3.x are enabled one can only link in code
1207dnl with dlopen(), dlsym(), dlclose()
1208if test "$python_ok" = yes && test "$python3_ok" = yes; then
1209 AC_DEFINE(DYNAMIC_PYTHON)
1210 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001211 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001212 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001213 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001214 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001215 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1216 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001217 AC_RUN_IFELSE([
1218 #include <dlfcn.h>
1219 /* If this program fails, then RTLD_GLOBAL is needed.
1220 * RTLD_GLOBAL will be used and then it is not possible to
1221 * have both python versions enabled in the same vim instance.
1222 * Only the first pyhton version used will be switched on.
1223 */
1224
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001225 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001226 {
1227 int needed = 0;
1228 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1229 if (pylib != 0)
1230 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001231 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001232 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1233 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1234 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001235 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001236 (*init)();
1237 needed = (*simple)("import termios") == -1;
1238 (*final)();
1239 dlclose(pylib);
1240 }
1241 return !needed;
1242 }
1243
1244 int main(int argc, char** argv)
1245 {
1246 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001247 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001248 not_needed = 1;
1249 return !not_needed;
1250 }],
1251 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001252
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001253 CFLAGS=$cflags_save
1254 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001255
1256 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1257 cflags_save=$CFLAGS
1258 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1259 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001260 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1261 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001262 AC_RUN_IFELSE([
1263 #include <dlfcn.h>
1264 #include <wchar.h>
1265 /* If this program fails, then RTLD_GLOBAL is needed.
1266 * RTLD_GLOBAL will be used and then it is not possible to
1267 * have both python versions enabled in the same vim instance.
1268 * Only the first pyhton version used will be switched on.
1269 */
1270
1271 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1272 {
1273 int needed = 0;
1274 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1275 if (pylib != 0)
1276 {
1277 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1278 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1279 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1280 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1281 (*pfx)(prefix);
1282 (*init)();
1283 needed = (*simple)("import termios") == -1;
1284 (*final)();
1285 dlclose(pylib);
1286 }
1287 return !needed;
1288 }
1289
1290 int main(int argc, char** argv)
1291 {
1292 int not_needed = 0;
1293 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1294 not_needed = 1;
1295 return !not_needed;
1296 }],
1297 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1298
1299 CFLAGS=$cflags_save
1300 LDFLAGS=$ldflags_save
1301
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001302 PYTHON_SRC="if_python.c"
1303 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001304 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001305 PYTHON_LIBS=
1306 PYTHON3_SRC="if_python3.c"
1307 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001308 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001309 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001310elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1311 AC_DEFINE(DYNAMIC_PYTHON)
1312 PYTHON_SRC="if_python.c"
1313 PYTHON_OBJ="objects/if_python.o"
1314 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1315 PYTHON_LIBS=
1316elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1317 AC_DEFINE(DYNAMIC_PYTHON3)
1318 PYTHON3_SRC="if_python3.c"
1319 PYTHON3_OBJ="objects/if_python3.o"
1320 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1321 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001322fi
1323
Bram Moolenaar071d4272004-06-13 20:20:40 +00001324AC_MSG_CHECKING(--enable-tclinterp argument)
1325AC_ARG_ENABLE(tclinterp,
1326 [ --enable-tclinterp Include Tcl interpreter.], ,
1327 [enable_tclinterp="no"])
1328AC_MSG_RESULT($enable_tclinterp)
1329
1330if test "$enable_tclinterp" = "yes"; then
1331
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001332 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001333 AC_MSG_CHECKING(--with-tclsh argument)
1334 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1335 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001336 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001337 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1338 AC_SUBST(vi_cv_path_tcl)
1339
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001340 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1341 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1342 tclsh_name="tclsh8.4"
1343 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1344 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001345 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 tclsh_name="tclsh8.2"
1347 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1348 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001349 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1350 tclsh_name="tclsh8.0"
1351 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1352 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001353 dnl still didn't find it, try without version number
1354 if test "X$vi_cv_path_tcl" = "X"; then
1355 tclsh_name="tclsh"
1356 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1357 fi
1358 if test "X$vi_cv_path_tcl" != "X"; then
1359 AC_MSG_CHECKING(Tcl version)
1360 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1361 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1362 AC_MSG_RESULT($tclver - OK);
1363 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 -`
1364
1365 AC_MSG_CHECKING(for location of Tcl include)
1366 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001367 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 +00001368 else
1369 dnl For Mac OS X 10.3, use the OS-provided framework location
1370 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1371 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001372 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001373 for try in $tclinc; do
1374 if test -f "$try/tcl.h"; then
1375 AC_MSG_RESULT($try/tcl.h)
1376 TCL_INC=$try
1377 break
1378 fi
1379 done
1380 if test -z "$TCL_INC"; then
1381 AC_MSG_RESULT(<not found>)
1382 SKIP_TCL=YES
1383 fi
1384 if test -z "$SKIP_TCL"; then
1385 AC_MSG_CHECKING(for location of tclConfig.sh script)
1386 if test "x$MACOSX" != "xyes"; then
1387 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001388 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001389 else
1390 dnl For Mac OS X 10.3, use the OS-provided framework location
1391 tclcnf="/System/Library/Frameworks/Tcl.framework"
1392 fi
1393 for try in $tclcnf; do
1394 if test -f $try/tclConfig.sh; then
1395 AC_MSG_RESULT($try/tclConfig.sh)
1396 . $try/tclConfig.sh
1397 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1398 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1399 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001400 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001401 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 +00001402 break
1403 fi
1404 done
1405 if test -z "$TCL_LIBS"; then
1406 AC_MSG_RESULT(<not found>)
1407 AC_MSG_CHECKING(for Tcl library by myself)
1408 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001409 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001410 for ext in .so .a ; do
1411 for ver in "" $tclver ; do
1412 for try in $tcllib ; do
1413 trylib=tcl$ver$ext
1414 if test -f $try/lib$trylib ; then
1415 AC_MSG_RESULT($try/lib$trylib)
1416 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1417 if test "`(uname) 2>/dev/null`" = SunOS &&
1418 uname -r | grep '^5' >/dev/null; then
1419 TCL_LIBS="$TCL_LIBS -R $try"
1420 fi
1421 break 3
1422 fi
1423 done
1424 done
1425 done
1426 if test -z "$TCL_LIBS"; then
1427 AC_MSG_RESULT(<not found>)
1428 SKIP_TCL=YES
1429 fi
1430 fi
1431 if test -z "$SKIP_TCL"; then
1432 AC_DEFINE(FEAT_TCL)
1433 TCL_SRC=if_tcl.c
1434 TCL_OBJ=objects/if_tcl.o
1435 TCL_PRO=if_tcl.pro
1436 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1437 fi
1438 fi
1439 else
1440 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1441 fi
1442 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001443 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1444 AC_MSG_ERROR([could not configure Tcl])
1445 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001446fi
1447AC_SUBST(TCL_SRC)
1448AC_SUBST(TCL_OBJ)
1449AC_SUBST(TCL_PRO)
1450AC_SUBST(TCL_CFLAGS)
1451AC_SUBST(TCL_LIBS)
1452
1453AC_MSG_CHECKING(--enable-rubyinterp argument)
1454AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001455 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001456 [enable_rubyinterp="no"])
1457AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001458if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001459 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001460 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001461 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1462 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1463 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001464 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 if test "X$vi_cv_path_ruby" != "X"; then
1466 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001467 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 +00001468 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001469 AC_MSG_CHECKING(Ruby rbconfig)
1470 ruby_rbconfig="RbConfig"
1471 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1472 ruby_rbconfig="Config"
1473 fi
1474 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001475 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001476 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 +00001477 if test "X$rubyhdrdir" != "X"; then
1478 AC_MSG_RESULT($rubyhdrdir)
1479 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar81398892012-10-03 21:09:35 +02001480 rubyarch=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['arch']]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001481 if test -d "$rubyhdrdir/$rubyarch"; then
1482 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1483 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001484 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar165641d2010-02-17 16:23:09 +01001485 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001486 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001487 if test "X$rubylibs" != "X"; then
1488 RUBY_LIBS="$rubylibs"
1489 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001490 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1491 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
1492 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001493 if test -f "$rubylibdir/$librubya"; then
1494 librubyarg="$librubyarg"
1495 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1496 elif test "$librubyarg" = "libruby.a"; then
1497 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1498 librubyarg="-lruby"
1499 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001500 fi
1501
1502 if test "X$librubyarg" != "X"; then
1503 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1504 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001505 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001506 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001507 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1508 dnl be included if requested by passing --with-mac-arch to
1509 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001510 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001511 if test "X$rubyldflags" != "X"; then
1512 LDFLAGS="$rubyldflags $LDFLAGS"
1513 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001514 fi
1515 RUBY_SRC="if_ruby.c"
1516 RUBY_OBJ="objects/if_ruby.o"
1517 RUBY_PRO="if_ruby.pro"
1518 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001519 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001520 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001521 AC_DEFINE(DYNAMIC_RUBY)
1522 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1523 RUBY_LIBS=
1524 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001525 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001526 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001527 fi
1528 else
1529 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1530 fi
1531 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001532
1533 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1534 AC_MSG_ERROR([could not configure Ruby])
1535 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001536fi
1537AC_SUBST(RUBY_SRC)
1538AC_SUBST(RUBY_OBJ)
1539AC_SUBST(RUBY_PRO)
1540AC_SUBST(RUBY_CFLAGS)
1541AC_SUBST(RUBY_LIBS)
1542
1543AC_MSG_CHECKING(--enable-cscope argument)
1544AC_ARG_ENABLE(cscope,
1545 [ --enable-cscope Include cscope interface.], ,
1546 [enable_cscope="no"])
1547AC_MSG_RESULT($enable_cscope)
1548if test "$enable_cscope" = "yes"; then
1549 AC_DEFINE(FEAT_CSCOPE)
1550fi
1551
1552AC_MSG_CHECKING(--enable-workshop argument)
1553AC_ARG_ENABLE(workshop,
1554 [ --enable-workshop Include Sun Visual Workshop support.], ,
1555 [enable_workshop="no"])
1556AC_MSG_RESULT($enable_workshop)
1557if test "$enable_workshop" = "yes"; then
1558 AC_DEFINE(FEAT_SUN_WORKSHOP)
1559 WORKSHOP_SRC="workshop.c integration.c"
1560 AC_SUBST(WORKSHOP_SRC)
1561 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1562 AC_SUBST(WORKSHOP_OBJ)
1563 if test "${enable_gui-xxx}" = xxx; then
1564 enable_gui=motif
1565 fi
1566fi
1567
1568AC_MSG_CHECKING(--disable-netbeans argument)
1569AC_ARG_ENABLE(netbeans,
1570 [ --disable-netbeans Disable NetBeans integration support.],
1571 , [enable_netbeans="yes"])
1572if test "$enable_netbeans" = "yes"; then
1573 AC_MSG_RESULT(no)
1574 dnl On Solaris we need the socket and nsl library.
1575 AC_CHECK_LIB(socket, socket)
1576 AC_CHECK_LIB(nsl, gethostbyname)
1577 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1578 AC_TRY_LINK([
1579#include <stdio.h>
1580#include <stdlib.h>
1581#include <stdarg.h>
1582#include <fcntl.h>
1583#include <netdb.h>
1584#include <netinet/in.h>
1585#include <errno.h>
1586#include <sys/types.h>
1587#include <sys/socket.h>
1588 /* Check bitfields */
1589 struct nbbuf {
1590 unsigned int initDone:1;
1591 ushort signmaplen;
1592 };
1593 ], [
1594 /* Check creating a socket. */
1595 struct sockaddr_in server;
1596 (void)socket(AF_INET, SOCK_STREAM, 0);
1597 (void)htons(100);
1598 (void)gethostbyname("microsoft.com");
1599 if (errno == ECONNREFUSED)
1600 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1601 ],
1602 AC_MSG_RESULT(yes),
1603 AC_MSG_RESULT(no); enable_netbeans="no")
1604else
1605 AC_MSG_RESULT(yes)
1606fi
1607if test "$enable_netbeans" = "yes"; then
1608 AC_DEFINE(FEAT_NETBEANS_INTG)
1609 NETBEANS_SRC="netbeans.c"
1610 AC_SUBST(NETBEANS_SRC)
1611 NETBEANS_OBJ="objects/netbeans.o"
1612 AC_SUBST(NETBEANS_OBJ)
1613fi
1614
1615AC_MSG_CHECKING(--enable-sniff argument)
1616AC_ARG_ENABLE(sniff,
1617 [ --enable-sniff Include Sniff interface.], ,
1618 [enable_sniff="no"])
1619AC_MSG_RESULT($enable_sniff)
1620if test "$enable_sniff" = "yes"; then
1621 AC_DEFINE(FEAT_SNIFF)
1622 SNIFF_SRC="if_sniff.c"
1623 AC_SUBST(SNIFF_SRC)
1624 SNIFF_OBJ="objects/if_sniff.o"
1625 AC_SUBST(SNIFF_OBJ)
1626fi
1627
1628AC_MSG_CHECKING(--enable-multibyte argument)
1629AC_ARG_ENABLE(multibyte,
1630 [ --enable-multibyte Include multibyte editing support.], ,
1631 [enable_multibyte="no"])
1632AC_MSG_RESULT($enable_multibyte)
1633if test "$enable_multibyte" = "yes"; then
1634 AC_DEFINE(FEAT_MBYTE)
1635fi
1636
1637AC_MSG_CHECKING(--enable-hangulinput argument)
1638AC_ARG_ENABLE(hangulinput,
1639 [ --enable-hangulinput Include Hangul input support.], ,
1640 [enable_hangulinput="no"])
1641AC_MSG_RESULT($enable_hangulinput)
1642
1643AC_MSG_CHECKING(--enable-xim argument)
1644AC_ARG_ENABLE(xim,
1645 [ --enable-xim Include XIM input support.],
1646 AC_MSG_RESULT($enable_xim),
1647 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001648
1649AC_MSG_CHECKING(--enable-fontset argument)
1650AC_ARG_ENABLE(fontset,
1651 [ --enable-fontset Include X fontset output support.], ,
1652 [enable_fontset="no"])
1653AC_MSG_RESULT($enable_fontset)
1654dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1655
1656test -z "$with_x" && with_x=yes
1657test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1658if test "$with_x" = no; then
1659 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1660else
1661 dnl Do this check early, so that its failure can override user requests.
1662
1663 AC_PATH_PROG(xmkmfpath, xmkmf)
1664
1665 AC_PATH_XTRA
1666
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001667 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001668 dnl be compiled with a special option.
1669 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001670 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671 CFLAGS="$CFLAGS -W c,dll"
1672 LDFLAGS="$LDFLAGS -W l,dll"
1673 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1674 fi
1675
1676 dnl On my HPUX system the X include dir is found, but the lib dir not.
1677 dnl This is a desparate try to fix this.
1678
1679 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1680 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1681 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1682 X_LIBS="$X_LIBS -L$x_libraries"
1683 if test "`(uname) 2>/dev/null`" = SunOS &&
1684 uname -r | grep '^5' >/dev/null; then
1685 X_LIBS="$X_LIBS -R $x_libraries"
1686 fi
1687 fi
1688
1689 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1690 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1691 AC_MSG_RESULT(Corrected X includes to $x_includes)
1692 X_CFLAGS="$X_CFLAGS -I$x_includes"
1693 fi
1694
1695 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1696 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1697 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1698 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1699 dnl Same for "-R/usr/lib ".
1700 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1701
1702
1703 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001704 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1705 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 AC_MSG_CHECKING(if X11 header files can be found)
1707 cflags_save=$CFLAGS
1708 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001709 AC_TRY_COMPILE([#include <X11/Xlib.h>
1710#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001711 AC_MSG_RESULT(yes),
1712 AC_MSG_RESULT(no); no_x=yes)
1713 CFLAGS=$cflags_save
1714
1715 if test "${no_x-no}" = yes; then
1716 with_x=no
1717 else
1718 AC_DEFINE(HAVE_X11)
1719 X_LIB="-lXt -lX11";
1720 AC_SUBST(X_LIB)
1721
1722 ac_save_LDFLAGS="$LDFLAGS"
1723 LDFLAGS="-L$x_libraries $LDFLAGS"
1724
1725 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1726 dnl For HP-UX 10.20 it must be before -lSM -lICE
1727 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1728 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1729
1730 dnl Some systems need -lnsl -lsocket when testing for ICE.
1731 dnl The check above doesn't do this, try here (again). Also needed to get
1732 dnl them after Xdmcp. link.sh will remove them when not needed.
1733 dnl Check for other function than above to avoid the cached value
1734 AC_CHECK_LIB(ICE, IceOpenConnection,
1735 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1736
1737 dnl Check for -lXpm (needed for some versions of Motif)
1738 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1739 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1740 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1741
1742 dnl Check that the X11 header files don't use implicit declarations
1743 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1744 cflags_save=$CFLAGS
1745 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1746 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1747 AC_MSG_RESULT(no),
1748 CFLAGS="$CFLAGS -Wno-implicit-int"
1749 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1750 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1751 AC_MSG_RESULT(test failed)
1752 )
1753 )
1754 CFLAGS=$cflags_save
1755
1756 LDFLAGS="$ac_save_LDFLAGS"
1757
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001758 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1759 AC_CACHE_VAL(ac_cv_small_wchar_t,
1760 [AC_TRY_RUN([
1761#include <X11/Xlib.h>
1762#if STDC_HEADERS
1763# include <stdlib.h>
1764# include <stddef.h>
1765#endif
1766 main()
1767 {
1768 if (sizeof(wchar_t) <= 2)
1769 exit(1);
1770 exit(0);
1771 }],
1772 ac_cv_small_wchar_t="no",
1773 ac_cv_small_wchar_t="yes",
1774 AC_MSG_ERROR(failed to compile test program))])
1775 AC_MSG_RESULT($ac_cv_small_wchar_t)
1776 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1777 AC_DEFINE(SMALL_WCHAR_T)
1778 fi
1779
Bram Moolenaar071d4272004-06-13 20:20:40 +00001780 fi
1781fi
1782
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001783test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001784
1785AC_MSG_CHECKING(--enable-gui argument)
1786AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001787 [ --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 +00001788
1789dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1790dnl Do not use character classes for portability with old tools.
1791enable_gui_canon=`echo "_$enable_gui" | \
1792 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1793
1794dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795SKIP_GTK2=YES
1796SKIP_GNOME=YES
1797SKIP_MOTIF=YES
1798SKIP_ATHENA=YES
1799SKIP_NEXTAW=YES
1800SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001801SKIP_CARBON=YES
1802GUITYPE=NONE
1803
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001804if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805 SKIP_PHOTON=
1806 case "$enable_gui_canon" in
1807 no) AC_MSG_RESULT(no GUI support)
1808 SKIP_PHOTON=YES ;;
1809 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1810 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1811 photon) AC_MSG_RESULT(Photon GUI support) ;;
1812 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1813 SKIP_PHOTON=YES ;;
1814 esac
1815
1816elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1817 SKIP_CARBON=
1818 case "$enable_gui_canon" in
1819 no) AC_MSG_RESULT(no GUI support)
1820 SKIP_CARBON=YES ;;
1821 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001822 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1823 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001824 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1825 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1826 SKIP_CARBON=YES ;;
1827 esac
1828
1829else
1830
Bram Moolenaar071d4272004-06-13 20:20:40 +00001831 case "$enable_gui_canon" in
1832 no|none) AC_MSG_RESULT(no GUI support) ;;
1833 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834 SKIP_GTK2=
1835 SKIP_GNOME=
1836 SKIP_MOTIF=
1837 SKIP_ATHENA=
1838 SKIP_NEXTAW=
1839 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001841 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1843 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844 SKIP_GTK2=;;
1845 motif) AC_MSG_RESULT(Motif GUI support)
1846 SKIP_MOTIF=;;
1847 athena) AC_MSG_RESULT(Athena GUI support)
1848 SKIP_ATHENA=;;
1849 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1850 SKIP_NEXTAW=;;
1851 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1852 esac
1853
1854fi
1855
Bram Moolenaar071d4272004-06-13 20:20:40 +00001856if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1857 -a "$enable_gui_canon" != "gnome2"; then
1858 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1859 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001860 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001861 , enable_gtk2_check="yes")
1862 AC_MSG_RESULT($enable_gtk2_check)
1863 if test "x$enable_gtk2_check" = "xno"; then
1864 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001865 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001866 fi
1867fi
1868
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001869if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001870 AC_MSG_CHECKING(whether or not to look for GNOME)
1871 AC_ARG_ENABLE(gnome-check,
1872 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1873 , enable_gnome_check="no")
1874 AC_MSG_RESULT($enable_gnome_check)
1875 if test "x$enable_gnome_check" = "xno"; then
1876 SKIP_GNOME=YES
1877 fi
1878fi
1879
1880if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1881 AC_MSG_CHECKING(whether or not to look for Motif)
1882 AC_ARG_ENABLE(motif-check,
1883 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1884 , enable_motif_check="yes")
1885 AC_MSG_RESULT($enable_motif_check)
1886 if test "x$enable_motif_check" = "xno"; then
1887 SKIP_MOTIF=YES
1888 fi
1889fi
1890
1891if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1892 AC_MSG_CHECKING(whether or not to look for Athena)
1893 AC_ARG_ENABLE(athena-check,
1894 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1895 , enable_athena_check="yes")
1896 AC_MSG_RESULT($enable_athena_check)
1897 if test "x$enable_athena_check" = "xno"; then
1898 SKIP_ATHENA=YES
1899 fi
1900fi
1901
1902if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1903 AC_MSG_CHECKING(whether or not to look for neXtaw)
1904 AC_ARG_ENABLE(nextaw-check,
1905 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1906 , enable_nextaw_check="yes")
1907 AC_MSG_RESULT($enable_nextaw_check);
1908 if test "x$enable_nextaw_check" = "xno"; then
1909 SKIP_NEXTAW=YES
1910 fi
1911fi
1912
1913if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1914 AC_MSG_CHECKING(whether or not to look for Carbon)
1915 AC_ARG_ENABLE(carbon-check,
1916 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1917 , enable_carbon_check="yes")
1918 AC_MSG_RESULT($enable_carbon_check);
1919 if test "x$enable_carbon_check" = "xno"; then
1920 SKIP_CARBON=YES
1921 fi
1922fi
1923
Bram Moolenaar843ee412004-06-30 16:16:41 +00001924
Bram Moolenaar071d4272004-06-13 20:20:40 +00001925if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1926 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001927 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001928 AC_MSG_RESULT(yes);
1929 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001930 if test "$VIMNAME" = "vim"; then
1931 VIMNAME=Vim
1932 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001933
Bram Moolenaar164fca32010-07-14 13:58:07 +02001934 if test "x$MACARCH" = "xboth"; then
1935 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1936 else
1937 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1938 fi
1939
Bram Moolenaar14716812006-05-04 21:54:08 +00001940 dnl Default install directory is not /usr/local
1941 if test x$prefix = xNONE; then
1942 prefix=/Applications
1943 fi
1944
1945 dnl Sorry for the hard coded default
1946 datadir='${prefix}/Vim.app/Contents/Resources'
1947
Bram Moolenaar071d4272004-06-13 20:20:40 +00001948 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949 SKIP_GTK2=YES;
1950 SKIP_GNOME=YES;
1951 SKIP_MOTIF=YES;
1952 SKIP_ATHENA=YES;
1953 SKIP_NEXTAW=YES;
1954 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001955 SKIP_CARBON=YES
1956fi
1957
Bram Moolenaar071d4272004-06-13 20:20:40 +00001958dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001959dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001960dnl
1961dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001962dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001963dnl
1964AC_DEFUN(AM_PATH_GTK,
1965[
1966 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1967 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001968 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001969 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1970 no_gtk=""
1971 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1972 && $PKG_CONFIG --exists gtk+-2.0; then
1973 {
1974 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1975 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1976 dnl something like that.
1977 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001978 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001979 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1980 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1981 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1982 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1983 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1984 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1985 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1986 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987 else
1988 no_gtk=yes
1989 fi
1990
1991 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1992 {
1993 ac_save_CFLAGS="$CFLAGS"
1994 ac_save_LIBS="$LIBS"
1995 CFLAGS="$CFLAGS $GTK_CFLAGS"
1996 LIBS="$LIBS $GTK_LIBS"
1997
1998 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001999 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002000 dnl
2001 rm -f conf.gtktest
2002 AC_TRY_RUN([
2003#include <gtk/gtk.h>
2004#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002005#if STDC_HEADERS
2006# include <stdlib.h>
2007# include <stddef.h>
2008#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002009
2010int
2011main ()
2012{
2013int major, minor, micro;
2014char *tmp_version;
2015
2016system ("touch conf.gtktest");
2017
2018/* HP/UX 9 (%@#!) writes to sscanf strings */
2019tmp_version = g_strdup("$min_gtk_version");
2020if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2021 printf("%s, bad version string\n", "$min_gtk_version");
2022 exit(1);
2023 }
2024
2025if ((gtk_major_version > major) ||
2026 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2027 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2028 (gtk_micro_version >= micro)))
2029{
2030 return 0;
2031}
2032return 1;
2033}
2034],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2035 CFLAGS="$ac_save_CFLAGS"
2036 LIBS="$ac_save_LIBS"
2037 }
2038 fi
2039 if test "x$no_gtk" = x ; then
2040 if test "x$enable_gtktest" = "xyes"; then
2041 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2042 else
2043 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2044 fi
2045 ifelse([$2], , :, [$2])
2046 else
2047 {
2048 AC_MSG_RESULT(no)
2049 GTK_CFLAGS=""
2050 GTK_LIBS=""
2051 ifelse([$3], , :, [$3])
2052 }
2053 fi
2054 }
2055 else
2056 GTK_CFLAGS=""
2057 GTK_LIBS=""
2058 ifelse([$3], , :, [$3])
2059 fi
2060 AC_SUBST(GTK_CFLAGS)
2061 AC_SUBST(GTK_LIBS)
2062 rm -f conf.gtktest
2063])
2064
2065dnl ---------------------------------------------------------------------------
2066dnl gnome
2067dnl ---------------------------------------------------------------------------
2068AC_DEFUN([GNOME_INIT_HOOK],
2069[
2070 AC_SUBST(GNOME_LIBS)
2071 AC_SUBST(GNOME_LIBDIR)
2072 AC_SUBST(GNOME_INCLUDEDIR)
2073
2074 AC_ARG_WITH(gnome-includes,
2075 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2076 [CFLAGS="$CFLAGS -I$withval"]
2077 )
2078
2079 AC_ARG_WITH(gnome-libs,
2080 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2081 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2082 )
2083
2084 AC_ARG_WITH(gnome,
2085 [ --with-gnome Specify prefix for GNOME files],
2086 if test x$withval = xyes; then
2087 want_gnome=yes
2088 ifelse([$1], [], :, [$1])
2089 else
2090 if test "x$withval" = xno; then
2091 want_gnome=no
2092 else
2093 want_gnome=yes
2094 LDFLAGS="$LDFLAGS -L$withval/lib"
2095 CFLAGS="$CFLAGS -I$withval/include"
2096 gnome_prefix=$withval/lib
2097 fi
2098 fi,
2099 want_gnome=yes)
2100
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002101 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002102 {
2103 AC_MSG_CHECKING(for libgnomeui-2.0)
2104 if $PKG_CONFIG --exists libgnomeui-2.0; then
2105 AC_MSG_RESULT(yes)
2106 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2107 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2108 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002109
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002110 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2111 dnl This might not be the right way but it works for me...
2112 AC_MSG_CHECKING(for FreeBSD)
2113 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2114 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002115 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002116 GNOME_LIBS="$GNOME_LIBS -pthread"
2117 else
2118 AC_MSG_RESULT(no)
2119 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 $1
2121 else
2122 AC_MSG_RESULT(not found)
2123 if test "x$2" = xfail; then
2124 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2125 fi
2126 fi
2127 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002128 fi
2129])
2130
2131AC_DEFUN([GNOME_INIT],[
2132 GNOME_INIT_HOOK([],fail)
2133])
2134
2135
2136dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002137dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002138dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002139if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002140
2141 AC_MSG_CHECKING(--disable-gtktest argument)
2142 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2143 , enable_gtktest=yes)
2144 if test "x$enable_gtktest" = "xyes" ; then
2145 AC_MSG_RESULT(gtk test enabled)
2146 else
2147 AC_MSG_RESULT(gtk test disabled)
2148 fi
2149
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150 if test "X$PKG_CONFIG" = "X"; then
2151 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2152 fi
2153
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002154 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002155 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2156 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002157 AM_PATH_GTK(2.2.0,
2158 [GUI_LIB_LOC="$GTK_LIBDIR"
2159 GTK_LIBNAME="$GTK_LIBS"
2160 GUI_INC_LOC="$GTK_CFLAGS"], )
2161 if test "x$GTK_CFLAGS" != "x"; then
2162 SKIP_ATHENA=YES
2163 SKIP_NEXTAW=YES
2164 SKIP_MOTIF=YES
2165 GUITYPE=GTK
2166 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167 fi
2168 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002169 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002170 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2171 || test "0$gtk_minor_version" -ge 2; then
2172 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2173 fi
2174 dnl
2175 dnl if GTK exists, then check for GNOME.
2176 dnl
2177 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002178 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002179 GNOME_INIT_HOOK([have_gnome=yes])
2180 if test "x$have_gnome" = xyes ; then
2181 AC_DEFINE(FEAT_GUI_GNOME)
2182 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2183 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002184 fi
2185 }
2186 fi
2187 fi
2188fi
2189
2190dnl Check for Motif include files location.
2191dnl The LAST one found is used, this makes the highest version to be used,
2192dnl e.g. when Motif1.2 and Motif2.0 are both present.
2193
2194if test -z "$SKIP_MOTIF"; then
2195 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"
2196 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2197 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2198
2199 AC_MSG_CHECKING(for location of Motif GUI includes)
2200 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2201 GUI_INC_LOC=
2202 for try in $gui_includes; do
2203 if test -f "$try/Xm/Xm.h"; then
2204 GUI_INC_LOC=$try
2205 fi
2206 done
2207 if test -n "$GUI_INC_LOC"; then
2208 if test "$GUI_INC_LOC" = /usr/include; then
2209 GUI_INC_LOC=
2210 AC_MSG_RESULT(in default path)
2211 else
2212 AC_MSG_RESULT($GUI_INC_LOC)
2213 fi
2214 else
2215 AC_MSG_RESULT(<not found>)
2216 SKIP_MOTIF=YES
2217 fi
2218fi
2219
2220dnl Check for Motif library files location. In the same order as the include
2221dnl files, to avoid a mixup if several versions are present
2222
2223if test -z "$SKIP_MOTIF"; then
2224 AC_MSG_CHECKING(--with-motif-lib argument)
2225 AC_ARG_WITH(motif-lib,
2226 [ --with-motif-lib=STRING Library for Motif ],
2227 [ MOTIF_LIBNAME="${withval}" ] )
2228
2229 if test -n "$MOTIF_LIBNAME"; then
2230 AC_MSG_RESULT($MOTIF_LIBNAME)
2231 GUI_LIB_LOC=
2232 else
2233 AC_MSG_RESULT(no)
2234
2235 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2236 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2237
2238 AC_MSG_CHECKING(for location of Motif GUI libs)
2239 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
2240 GUI_LIB_LOC=
2241 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002242 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243 if test -f "$libtry"; then
2244 GUI_LIB_LOC=$try
2245 fi
2246 done
2247 done
2248 if test -n "$GUI_LIB_LOC"; then
2249 dnl Remove /usr/lib, it causes trouble on some systems
2250 if test "$GUI_LIB_LOC" = /usr/lib; then
2251 GUI_LIB_LOC=
2252 AC_MSG_RESULT(in default path)
2253 else
2254 if test -n "$GUI_LIB_LOC"; then
2255 AC_MSG_RESULT($GUI_LIB_LOC)
2256 if test "`(uname) 2>/dev/null`" = SunOS &&
2257 uname -r | grep '^5' >/dev/null; then
2258 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2259 fi
2260 fi
2261 fi
2262 MOTIF_LIBNAME=-lXm
2263 else
2264 AC_MSG_RESULT(<not found>)
2265 SKIP_MOTIF=YES
2266 fi
2267 fi
2268fi
2269
2270if test -z "$SKIP_MOTIF"; then
2271 SKIP_ATHENA=YES
2272 SKIP_NEXTAW=YES
2273 GUITYPE=MOTIF
2274 AC_SUBST(MOTIF_LIBNAME)
2275fi
2276
2277dnl Check if the Athena files can be found
2278
2279GUI_X_LIBS=
2280
2281if test -z "$SKIP_ATHENA"; then
2282 AC_MSG_CHECKING(if Athena header files can be found)
2283 cflags_save=$CFLAGS
2284 CFLAGS="$CFLAGS $X_CFLAGS"
2285 AC_TRY_COMPILE([
2286#include <X11/Intrinsic.h>
2287#include <X11/Xaw/Paned.h>], ,
2288 AC_MSG_RESULT(yes),
2289 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2290 CFLAGS=$cflags_save
2291fi
2292
2293if test -z "$SKIP_ATHENA"; then
2294 GUITYPE=ATHENA
2295fi
2296
2297if test -z "$SKIP_NEXTAW"; then
2298 AC_MSG_CHECKING(if neXtaw header files can be found)
2299 cflags_save=$CFLAGS
2300 CFLAGS="$CFLAGS $X_CFLAGS"
2301 AC_TRY_COMPILE([
2302#include <X11/Intrinsic.h>
2303#include <X11/neXtaw/Paned.h>], ,
2304 AC_MSG_RESULT(yes),
2305 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2306 CFLAGS=$cflags_save
2307fi
2308
2309if test -z "$SKIP_NEXTAW"; then
2310 GUITYPE=NEXTAW
2311fi
2312
2313if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2314 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2315 dnl Avoid adding it when it twice
2316 if test -n "$GUI_INC_LOC"; then
2317 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2318 fi
2319 if test -n "$GUI_LIB_LOC"; then
2320 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2321 fi
2322
2323 dnl Check for -lXext and then for -lXmu
2324 ldflags_save=$LDFLAGS
2325 LDFLAGS="$X_LIBS $LDFLAGS"
2326 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2327 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2328 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2329 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2330 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2331 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2332 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2333 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2334 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2335 if test -z "$SKIP_MOTIF"; then
2336 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2337 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2338 fi
2339 LDFLAGS=$ldflags_save
2340
2341 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2342 AC_MSG_CHECKING(for extra X11 defines)
2343 NARROW_PROTO=
2344 rm -fr conftestdir
2345 if mkdir conftestdir; then
2346 cd conftestdir
2347 cat > Imakefile <<'EOF'
2348acfindx:
2349 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2350EOF
2351 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2352 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2353 fi
2354 cd ..
2355 rm -fr conftestdir
2356 fi
2357 if test -z "$NARROW_PROTO"; then
2358 AC_MSG_RESULT(no)
2359 else
2360 AC_MSG_RESULT($NARROW_PROTO)
2361 fi
2362 AC_SUBST(NARROW_PROTO)
2363fi
2364
2365dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2366dnl use the X11 include path
2367if test "$enable_xsmp" = "yes"; then
2368 cppflags_save=$CPPFLAGS
2369 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2370 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2371 CPPFLAGS=$cppflags_save
2372fi
2373
2374
Bram Moolenaare667c952010-07-05 22:57:59 +02002375if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2377 cppflags_save=$CPPFLAGS
2378 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2379 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2380
2381 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2382 if test ! "$enable_xim" = "no"; then
2383 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2384 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2385 AC_MSG_RESULT(yes),
2386 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2387 fi
2388 CPPFLAGS=$cppflags_save
2389
2390 dnl automatically enable XIM when hangul input isn't enabled
2391 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2392 -a "x$GUITYPE" != "xNONE" ; then
2393 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2394 enable_xim="yes"
2395 fi
2396fi
2397
2398if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2399 cppflags_save=$CPPFLAGS
2400 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002401dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2402 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2403 AC_TRY_COMPILE([
2404#include <X11/Intrinsic.h>
2405#include <X11/Xmu/Editres.h>],
2406 [int i; i = 0;],
2407 AC_MSG_RESULT(yes)
2408 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2409 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002410 CPPFLAGS=$cppflags_save
2411fi
2412
2413dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2414if test -z "$SKIP_MOTIF"; then
2415 cppflags_save=$CPPFLAGS
2416 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002417 if test "$zOSUnix" = "yes"; then
2418 xmheader="Xm/Xm.h"
2419 else
2420 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2421 Xm/UnhighlightT.h Xm/Notebook.h"
2422 fi
2423 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002424
Bram Moolenaar77c19352012-06-13 19:19:41 +02002425 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002426 dnl Solaris uses XpmAttributes_21, very annoying.
2427 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2428 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2429 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2430 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2431 )
2432 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002433 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002434 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002435 CPPFLAGS=$cppflags_save
2436fi
2437
2438if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2439 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2440 enable_xim="no"
2441fi
2442if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2443 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2444 enable_fontset="no"
2445fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002446if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002447 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2448 enable_fontset="no"
2449fi
2450
Bram Moolenaar071d4272004-06-13 20:20:40 +00002451if test -z "$SKIP_PHOTON"; then
2452 GUITYPE=PHOTONGUI
2453fi
2454
2455AC_SUBST(GUI_INC_LOC)
2456AC_SUBST(GUI_LIB_LOC)
2457AC_SUBST(GUITYPE)
2458AC_SUBST(GUI_X_LIBS)
2459
2460if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2461 AC_MSG_ERROR([cannot use workshop without Motif])
2462fi
2463
2464dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2465if test "$enable_xim" = "yes"; then
2466 AC_DEFINE(FEAT_XIM)
2467fi
2468if test "$enable_fontset" = "yes"; then
2469 AC_DEFINE(FEAT_XFONTSET)
2470fi
2471
2472
2473dnl ---------------------------------------------------------------------------
2474dnl end of GUI-checking
2475dnl ---------------------------------------------------------------------------
2476
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002477dnl Check for Cygwin, which needs an extra source file if not using X11
2478AC_MSG_CHECKING(for CYGWIN environment)
2479case `uname` in
2480 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2481 AC_MSG_CHECKING(for CYGWIN clipboard support)
2482 if test "x$with_x" = "xno" ; then
2483 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2484 AC_MSG_RESULT(yes)
2485 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2486 else
2487 AC_MSG_RESULT(no - using X11)
2488 fi ;;
2489
2490 *) CYGWIN=no; AC_MSG_RESULT(no);;
2491esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002492
2493dnl Only really enable hangul input when GUI and XFONTSET are available
2494if test "$enable_hangulinput" = "yes"; then
2495 if test "x$GUITYPE" = "xNONE"; then
2496 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2497 enable_hangulinput=no
2498 else
2499 AC_DEFINE(FEAT_HANGULIN)
2500 HANGULIN_SRC=hangulin.c
2501 AC_SUBST(HANGULIN_SRC)
2502 HANGULIN_OBJ=objects/hangulin.o
2503 AC_SUBST(HANGULIN_OBJ)
2504 fi
2505fi
2506
2507dnl Checks for libraries and include files.
2508
Bram Moolenaar446cb832008-06-24 21:56:24 +00002509AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2510 [
2511 AC_RUN_IFELSE([[
2512#include "confdefs.h"
2513#include <ctype.h>
2514#if STDC_HEADERS
2515# include <stdlib.h>
2516# include <stddef.h>
2517#endif
2518main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2519 ]],[
2520 vim_cv_toupper_broken=yes
2521 ],[
2522 vim_cv_toupper_broken=no
2523 ],[
2524 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2525 ])])
2526
2527if test "x$vim_cv_toupper_broken" = "xyes" ; then
2528 AC_DEFINE(BROKEN_TOUPPER)
2529fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002530
2531AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002532AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002533 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2534 AC_MSG_RESULT(no))
2535
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002536AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2537AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2538 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2539 AC_MSG_RESULT(no))
2540
Bram Moolenaar071d4272004-06-13 20:20:40 +00002541dnl Checks for header files.
2542AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2543dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2544if test "$HAS_ELF" = 1; then
2545 AC_CHECK_LIB(elf, main)
2546fi
2547
2548AC_HEADER_DIRENT
2549
Bram Moolenaar071d4272004-06-13 20:20:40 +00002550dnl If sys/wait.h is not found it might still exist but not be POSIX
2551dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2552if test $ac_cv_header_sys_wait_h = no; then
2553 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2554 AC_TRY_COMPILE([#include <sys/wait.h>],
2555 [union wait xx, yy; xx = yy],
2556 AC_MSG_RESULT(yes)
2557 AC_DEFINE(HAVE_SYS_WAIT_H)
2558 AC_DEFINE(HAVE_UNION_WAIT),
2559 AC_MSG_RESULT(no))
2560fi
2561
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002562AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2563 sys/select.h sys/utsname.h termcap.h fcntl.h \
2564 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2565 termio.h iconv.h inttypes.h langinfo.h math.h \
2566 unistd.h stropts.h errno.h sys/resource.h \
2567 sys/systeminfo.h locale.h sys/stream.h termios.h \
2568 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2569 utime.h sys/param.h libintl.h libgen.h \
2570 util/debug.h util/msg18n.h frame.h sys/acl.h \
2571 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002573dnl sys/ptem.h depends on sys/stream.h on Solaris
2574AC_CHECK_HEADERS(sys/ptem.h, [], [],
2575[#if defined HAVE_SYS_STREAM_H
2576# include <sys/stream.h>
2577#endif])
2578
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002579dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2580AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2581[#if defined HAVE_SYS_PARAM_H
2582# include <sys/param.h>
2583#endif])
2584
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002585
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002586dnl pthread_np.h may exist but can only be used after including pthread.h
2587AC_MSG_CHECKING([for pthread_np.h])
2588AC_TRY_COMPILE([
2589#include <pthread.h>
2590#include <pthread_np.h>],
2591 [int i; i = 0;],
2592 AC_MSG_RESULT(yes)
2593 AC_DEFINE(HAVE_PTHREAD_NP_H),
2594 AC_MSG_RESULT(no))
2595
Bram Moolenaare344bea2005-09-01 20:46:49 +00002596AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002597if test "x$MACOSX" = "xyes"; then
2598 dnl The strings.h file on OS/X contains a warning and nothing useful.
2599 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2600else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002601
2602dnl Check if strings.h and string.h can both be included when defined.
2603AC_MSG_CHECKING([if strings.h can be included after string.h])
2604cppflags_save=$CPPFLAGS
2605CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2606AC_TRY_COMPILE([
2607#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2608# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2609 /* but don't do it on AIX 5.1 (Uribarri) */
2610#endif
2611#ifdef HAVE_XM_XM_H
2612# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2613#endif
2614#ifdef HAVE_STRING_H
2615# include <string.h>
2616#endif
2617#if defined(HAVE_STRINGS_H)
2618# include <strings.h>
2619#endif
2620 ], [int i; i = 0;],
2621 AC_MSG_RESULT(yes),
2622 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2623 AC_MSG_RESULT(no))
2624CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002625fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002626
2627dnl Checks for typedefs, structures, and compiler characteristics.
2628AC_PROG_GCC_TRADITIONAL
2629AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002630AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002631AC_TYPE_MODE_T
2632AC_TYPE_OFF_T
2633AC_TYPE_PID_T
2634AC_TYPE_SIZE_T
2635AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002636AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002637
Bram Moolenaar071d4272004-06-13 20:20:40 +00002638AC_HEADER_TIME
2639AC_CHECK_TYPE(ino_t, long)
2640AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002641AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642
2643AC_MSG_CHECKING(for rlim_t)
2644if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2645 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2646else
2647 AC_EGREP_CPP(dnl
2648changequote(<<,>>)dnl
2649<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2650changequote([,]),
2651 [
2652#include <sys/types.h>
2653#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002654# include <stdlib.h>
2655# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002656#endif
2657#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002658# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002659#endif
2660 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2661 AC_MSG_RESULT($ac_cv_type_rlim_t)
2662fi
2663if test $ac_cv_type_rlim_t = no; then
2664 cat >> confdefs.h <<\EOF
2665#define rlim_t unsigned long
2666EOF
2667fi
2668
2669AC_MSG_CHECKING(for stack_t)
2670if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2671 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2672else
2673 AC_EGREP_CPP(stack_t,
2674 [
2675#include <sys/types.h>
2676#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002677# include <stdlib.h>
2678# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002679#endif
2680#include <signal.h>
2681 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2682 AC_MSG_RESULT($ac_cv_type_stack_t)
2683fi
2684if test $ac_cv_type_stack_t = no; then
2685 cat >> confdefs.h <<\EOF
2686#define stack_t struct sigaltstack
2687EOF
2688fi
2689
2690dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2691AC_MSG_CHECKING(whether stack_t has an ss_base field)
2692AC_TRY_COMPILE([
2693#include <sys/types.h>
2694#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002695# include <stdlib.h>
2696# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002697#endif
2698#include <signal.h>
2699#include "confdefs.h"
2700 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2701 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2702 AC_MSG_RESULT(no))
2703
2704olibs="$LIBS"
2705AC_MSG_CHECKING(--with-tlib argument)
2706AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2707if test -n "$with_tlib"; then
2708 AC_MSG_RESULT($with_tlib)
2709 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002710 AC_MSG_CHECKING(for linking with $with_tlib library)
2711 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2712 dnl Need to check for tgetent() below.
2713 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002714else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002715 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002716 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2717 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002718 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002719 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002720 dnl Older versions of ncurses have bugs, get a new one!
2721 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002722 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002723 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002724 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2725 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002726 esac
2727 for libname in $tlibs; do
2728 AC_CHECK_LIB(${libname}, tgetent,,)
2729 if test "x$olibs" != "x$LIBS"; then
2730 dnl It's possible that a library is found but it doesn't work
2731 dnl e.g., shared library that cannot be found
2732 dnl compile and run a test program to be sure
2733 AC_TRY_RUN([
2734#ifdef HAVE_TERMCAP_H
2735# include <termcap.h>
2736#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002737#if STDC_HEADERS
2738# include <stdlib.h>
2739# include <stddef.h>
2740#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002741main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2742 res="OK", res="FAIL", res="FAIL")
2743 if test "$res" = "OK"; then
2744 break
2745 fi
2746 AC_MSG_RESULT($libname library is not usable)
2747 LIBS="$olibs"
2748 fi
2749 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002750 if test "x$olibs" = "x$LIBS"; then
2751 AC_MSG_RESULT(no terminal library found)
2752 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002753fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002754
2755if test "x$olibs" = "x$LIBS"; then
2756 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002757 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002758 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2759 AC_MSG_RESULT(yes),
2760 AC_MSG_ERROR([NOT FOUND!
2761 You need to install a terminal library; for example ncurses.
2762 Or specify the name of the library with --with-tlib.]))
2763fi
2764
Bram Moolenaar446cb832008-06-24 21:56:24 +00002765AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2766 [
2767 AC_RUN_IFELSE([[
2768#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002769#ifdef HAVE_TERMCAP_H
2770# include <termcap.h>
2771#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002772#ifdef HAVE_STRING_H
2773# include <string.h>
2774#endif
2775#if STDC_HEADERS
2776# include <stdlib.h>
2777# include <stddef.h>
2778#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002779main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002780{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2781 ]],[
2782 vim_cv_terminfo=no
2783 ],[
2784 vim_cv_terminfo=yes
2785 ],[
2786 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2787 ])
2788 ])
2789
2790if test "x$vim_cv_terminfo" = "xyes" ; then
2791 AC_DEFINE(TERMINFO)
2792fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002793
2794if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002795 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2796 [
2797 AC_RUN_IFELSE([[
2798#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002799#ifdef HAVE_TERMCAP_H
2800# include <termcap.h>
2801#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002802#if STDC_HEADERS
2803# include <stdlib.h>
2804# include <stddef.h>
2805#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002806main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002807{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2808 ]],[
2809 vim_cv_tgent=zero
2810 ],[
2811 vim_cv_tgent=non-zero
2812 ],[
2813 AC_MSG_ERROR(failed to compile test program.)
2814 ])
2815 ])
2816
2817 if test "x$vim_cv_tgent" = "xzero" ; then
2818 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2819 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820fi
2821
2822AC_MSG_CHECKING(whether termcap.h contains ospeed)
2823AC_TRY_LINK([
2824#ifdef HAVE_TERMCAP_H
2825# include <termcap.h>
2826#endif
2827 ], [ospeed = 20000],
2828 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2829 [AC_MSG_RESULT(no)
2830 AC_MSG_CHECKING(whether ospeed can be extern)
2831 AC_TRY_LINK([
2832#ifdef HAVE_TERMCAP_H
2833# include <termcap.h>
2834#endif
2835extern short ospeed;
2836 ], [ospeed = 20000],
2837 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2838 AC_MSG_RESULT(no))]
2839 )
2840
2841AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2842AC_TRY_LINK([
2843#ifdef HAVE_TERMCAP_H
2844# include <termcap.h>
2845#endif
2846 ], [if (UP == 0 && BC == 0) PC = 1],
2847 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2848 [AC_MSG_RESULT(no)
2849 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2850 AC_TRY_LINK([
2851#ifdef HAVE_TERMCAP_H
2852# include <termcap.h>
2853#endif
2854extern char *UP, *BC, PC;
2855 ], [if (UP == 0 && BC == 0) PC = 1],
2856 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2857 AC_MSG_RESULT(no))]
2858 )
2859
2860AC_MSG_CHECKING(whether tputs() uses outfuntype)
2861AC_TRY_COMPILE([
2862#ifdef HAVE_TERMCAP_H
2863# include <termcap.h>
2864#endif
2865 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2866 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2867 AC_MSG_RESULT(no))
2868
2869dnl On some SCO machines sys/select redefines struct timeval
2870AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2871AC_TRY_COMPILE([
2872#include <sys/types.h>
2873#include <sys/time.h>
2874#include <sys/select.h>], ,
2875 AC_MSG_RESULT(yes)
2876 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2877 AC_MSG_RESULT(no))
2878
2879dnl AC_DECL_SYS_SIGLIST
2880
2881dnl Checks for pty.c (copied from screen) ==========================
2882AC_MSG_CHECKING(for /dev/ptc)
2883if test -r /dev/ptc; then
2884 AC_DEFINE(HAVE_DEV_PTC)
2885 AC_MSG_RESULT(yes)
2886else
2887 AC_MSG_RESULT(no)
2888fi
2889
2890AC_MSG_CHECKING(for SVR4 ptys)
2891if test -c /dev/ptmx ; then
2892 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2893 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2894 AC_MSG_RESULT(no))
2895else
2896 AC_MSG_RESULT(no)
2897fi
2898
2899AC_MSG_CHECKING(for ptyranges)
2900if test -d /dev/ptym ; then
2901 pdir='/dev/ptym'
2902else
2903 pdir='/dev'
2904fi
2905dnl SCO uses ptyp%d
2906AC_EGREP_CPP(yes,
2907[#ifdef M_UNIX
2908 yes;
2909#endif
2910 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2911dnl if test -c /dev/ptyp19; then
2912dnl ptys=`echo /dev/ptyp??`
2913dnl else
2914dnl ptys=`echo $pdir/pty??`
2915dnl fi
2916if test "$ptys" != "$pdir/pty??" ; then
2917 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2918 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2919 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2920 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2921 AC_MSG_RESULT([$p0 / $p1])
2922else
2923 AC_MSG_RESULT([don't know])
2924fi
2925
2926dnl **** pty mode/group handling ****
2927dnl
2928dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002929rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002930AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2931 [
2932 AC_RUN_IFELSE([[
2933#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002934#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002935#if STDC_HEADERS
2936# include <stdlib.h>
2937# include <stddef.h>
2938#endif
2939#ifdef HAVE_UNISTD_H
2940#include <unistd.h>
2941#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002942#include <sys/stat.h>
2943#include <stdio.h>
2944main()
2945{
2946 struct stat sb;
2947 char *x,*ttyname();
2948 int om, m;
2949 FILE *fp;
2950
2951 if (!(x = ttyname(0))) exit(1);
2952 if (stat(x, &sb)) exit(1);
2953 om = sb.st_mode;
2954 if (om & 002) exit(0);
2955 m = system("mesg y");
2956 if (m == -1 || m == 127) exit(1);
2957 if (stat(x, &sb)) exit(1);
2958 m = sb.st_mode;
2959 if (chmod(x, om)) exit(1);
2960 if (m & 002) exit(0);
2961 if (sb.st_gid == getgid()) exit(1);
2962 if (!(fp=fopen("conftest_grp", "w")))
2963 exit(1);
2964 fprintf(fp, "%d\n", sb.st_gid);
2965 fclose(fp);
2966 exit(0);
2967}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002968 ]],[
2969 if test -f conftest_grp; then
2970 vim_cv_tty_group=`cat conftest_grp`
2971 if test "x$vim_cv_tty_mode" = "x" ; then
2972 vim_cv_tty_mode=0620
2973 fi
2974 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2975 else
2976 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002977 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002978 fi
2979 ],[
2980 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002981 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002982 ],[
2983 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2984 ])
2985 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002986rm -f conftest_grp
2987
Bram Moolenaar446cb832008-06-24 21:56:24 +00002988if test "x$vim_cv_tty_group" != "xworld" ; then
2989 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2990 if test "x$vim_cv_tty_mode" = "x" ; then
2991 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 (propably 0620)])
2992 else
2993 AC_DEFINE(PTYMODE, 0620)
2994 fi
2995fi
2996
Bram Moolenaar071d4272004-06-13 20:20:40 +00002997dnl Checks for library functions. ===================================
2998
2999AC_TYPE_SIGNAL
3000
3001dnl find out what to use at the end of a signal function
3002if test $ac_cv_type_signal = void; then
3003 AC_DEFINE(SIGRETURN, [return])
3004else
3005 AC_DEFINE(SIGRETURN, [return 0])
3006fi
3007
3008dnl check if struct sigcontext is defined (used for SGI only)
3009AC_MSG_CHECKING(for struct sigcontext)
3010AC_TRY_COMPILE([
3011#include <signal.h>
3012test_sig()
3013{
3014 struct sigcontext *scont;
3015 scont = (struct sigcontext *)0;
3016 return 1;
3017} ], ,
3018 AC_MSG_RESULT(yes)
3019 AC_DEFINE(HAVE_SIGCONTEXT),
3020 AC_MSG_RESULT(no))
3021
3022dnl tricky stuff: try to find out if getcwd() is implemented with
3023dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003024AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3025 [
3026 AC_RUN_IFELSE([[
3027#include "confdefs.h"
3028#ifdef HAVE_UNISTD_H
3029#include <unistd.h>
3030#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031char *dagger[] = { "IFS=pwd", 0 };
3032main()
3033{
3034 char buffer[500];
3035 extern char **environ;
3036 environ = dagger;
3037 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003038}
3039 ]],[
3040 vim_cv_getcwd_broken=no
3041 ],[
3042 vim_cv_getcwd_broken=yes
3043 ],[
3044 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3045 ])
3046 ])
3047
3048if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3049 AC_DEFINE(BAD_GETCWD)
3050fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003051
Bram Moolenaar25153e12010-02-24 14:47:08 +01003052dnl Check for functions in one big call, to reduce the size of configure.
3053dnl Can only be used for functions that do not require any include.
3054AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003055 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003056 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003057 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003058 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003059 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3060 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003061AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003062
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003063dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3064dnl appropriate, so that off_t is 64 bits when needed.
3065AC_SYS_LARGEFILE
3066
Bram Moolenaar071d4272004-06-13 20:20:40 +00003067dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3068AC_MSG_CHECKING(for st_blksize)
3069AC_TRY_COMPILE(
3070[#include <sys/types.h>
3071#include <sys/stat.h>],
3072[ struct stat st;
3073 int n;
3074
3075 stat("/", &st);
3076 n = (int)st.st_blksize;],
3077 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3078 AC_MSG_RESULT(no))
3079
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3081 [
3082 AC_RUN_IFELSE([[
3083#include "confdefs.h"
3084#if STDC_HEADERS
3085# include <stdlib.h>
3086# include <stddef.h>
3087#endif
3088#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003090main() {struct stat st; exit(stat("configure/", &st) != 0); }
3091 ]],[
3092 vim_cv_stat_ignores_slash=yes
3093 ],[
3094 vim_cv_stat_ignores_slash=no
3095 ],[
3096 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3097 ])
3098 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003099
Bram Moolenaar446cb832008-06-24 21:56:24 +00003100if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3101 AC_DEFINE(STAT_IGNORES_SLASH)
3102fi
3103
Bram Moolenaar071d4272004-06-13 20:20:40 +00003104dnl Link with iconv for charset translation, if not found without library.
3105dnl check for iconv() requires including iconv.h
3106dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3107dnl has been installed.
3108AC_MSG_CHECKING(for iconv_open())
3109save_LIBS="$LIBS"
3110LIBS="$LIBS -liconv"
3111AC_TRY_LINK([
3112#ifdef HAVE_ICONV_H
3113# include <iconv.h>
3114#endif
3115 ], [iconv_open("fr", "to");],
3116 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3117 LIBS="$save_LIBS"
3118 AC_TRY_LINK([
3119#ifdef HAVE_ICONV_H
3120# include <iconv.h>
3121#endif
3122 ], [iconv_open("fr", "to");],
3123 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3124 AC_MSG_RESULT(no)))
3125
3126
3127AC_MSG_CHECKING(for nl_langinfo(CODESET))
3128AC_TRY_LINK([
3129#ifdef HAVE_LANGINFO_H
3130# include <langinfo.h>
3131#endif
3132], [char *cs = nl_langinfo(CODESET);],
3133 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3134 AC_MSG_RESULT(no))
3135
Bram Moolenaar446cb832008-06-24 21:56:24 +00003136dnl Need various functions for floating point support. Only enable
3137dnl floating point when they are all present.
3138AC_CHECK_LIB(m, strtod)
3139AC_MSG_CHECKING([for strtod() and other floating point functions])
3140AC_TRY_LINK([
3141#ifdef HAVE_MATH_H
3142# include <math.h>
3143#endif
3144#if STDC_HEADERS
3145# include <stdlib.h>
3146# include <stddef.h>
3147#endif
3148], [char *s; double d;
3149 d = strtod("1.1", &s);
3150 d = fabs(1.11);
3151 d = ceil(1.11);
3152 d = floor(1.11);
3153 d = log10(1.11);
3154 d = pow(1.11, 2.22);
3155 d = sqrt(1.11);
3156 d = sin(1.11);
3157 d = cos(1.11);
3158 d = atan(1.11);
3159 ],
3160 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3161 AC_MSG_RESULT(no))
3162
Bram Moolenaar071d4272004-06-13 20:20:40 +00003163dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3164dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003165dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003166AC_MSG_CHECKING(--disable-acl argument)
3167AC_ARG_ENABLE(acl,
3168 [ --disable-acl Don't check for ACL support.],
3169 , [enable_acl="yes"])
3170if test "$enable_acl" = "yes"; then
3171AC_MSG_RESULT(no)
3172AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3173 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3174 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3175
3176AC_MSG_CHECKING(for POSIX ACL support)
3177AC_TRY_LINK([
3178#include <sys/types.h>
3179#ifdef HAVE_SYS_ACL_H
3180# include <sys/acl.h>
3181#endif
3182acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3183 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3184 acl_free(acl);],
3185 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3186 AC_MSG_RESULT(no))
3187
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003188AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003189AC_MSG_CHECKING(for Solaris ACL support)
3190AC_TRY_LINK([
3191#ifdef HAVE_SYS_ACL_H
3192# include <sys/acl.h>
3193#endif], [acl("foo", GETACLCNT, 0, NULL);
3194 ],
3195 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003196 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003197
3198AC_MSG_CHECKING(for AIX ACL support)
3199AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003200#if STDC_HEADERS
3201# include <stdlib.h>
3202# include <stddef.h>
3203#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003204#ifdef HAVE_SYS_ACL_H
3205# include <sys/acl.h>
3206#endif
3207#ifdef HAVE_SYS_ACCESS_H
3208# include <sys/access.h>
3209#endif
3210#define _ALL_SOURCE
3211
3212#include <sys/stat.h>
3213
3214int aclsize;
3215struct acl *aclent;], [aclsize = sizeof(struct acl);
3216 aclent = (void *)malloc(aclsize);
3217 statacl("foo", STX_NORMAL, aclent, aclsize);
3218 ],
3219 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3220 AC_MSG_RESULT(no))
3221else
3222 AC_MSG_RESULT(yes)
3223fi
3224
3225AC_MSG_CHECKING(--disable-gpm argument)
3226AC_ARG_ENABLE(gpm,
3227 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3228 [enable_gpm="yes"])
3229
3230if test "$enable_gpm" = "yes"; then
3231 AC_MSG_RESULT(no)
3232 dnl Checking if gpm support can be compiled
3233 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3234 [olibs="$LIBS" ; LIBS="-lgpm"]
3235 AC_TRY_LINK(
3236 [#include <gpm.h>
3237 #include <linux/keyboard.h>],
3238 [Gpm_GetLibVersion(NULL);],
3239 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3240 dnl FEAT_MOUSE_GPM if mouse support is included
3241 [vi_cv_have_gpm=yes],
3242 [vi_cv_have_gpm=no])
3243 [LIBS="$olibs"]
3244 )
3245 if test $vi_cv_have_gpm = yes; then
3246 LIBS="$LIBS -lgpm"
3247 AC_DEFINE(HAVE_GPM)
3248 fi
3249else
3250 AC_MSG_RESULT(yes)
3251fi
3252
Bram Moolenaar446cb832008-06-24 21:56:24 +00003253AC_MSG_CHECKING(--disable-sysmouse argument)
3254AC_ARG_ENABLE(sysmouse,
3255 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3256 [enable_sysmouse="yes"])
3257
3258if test "$enable_sysmouse" = "yes"; then
3259 AC_MSG_RESULT(no)
3260 dnl Checking if sysmouse support can be compiled
3261 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3262 dnl defines FEAT_SYSMOUSE if mouse support is included
3263 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3264 AC_TRY_LINK(
3265 [#include <sys/consio.h>
3266 #include <signal.h>
3267 #include <sys/fbio.h>],
3268 [struct mouse_info mouse;
3269 mouse.operation = MOUSE_MODE;
3270 mouse.operation = MOUSE_SHOW;
3271 mouse.u.mode.mode = 0;
3272 mouse.u.mode.signal = SIGUSR2;],
3273 [vi_cv_have_sysmouse=yes],
3274 [vi_cv_have_sysmouse=no])
3275 )
3276 if test $vi_cv_have_sysmouse = yes; then
3277 AC_DEFINE(HAVE_SYSMOUSE)
3278 fi
3279else
3280 AC_MSG_RESULT(yes)
3281fi
3282
Bram Moolenaarf05da212009-11-17 16:13:15 +00003283dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3284AC_MSG_CHECKING(for FD_CLOEXEC)
3285AC_TRY_COMPILE(
3286[#if HAVE_FCNTL_H
3287# include <fcntl.h>
3288#endif],
3289[ int flag = FD_CLOEXEC;],
3290 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3291 AC_MSG_RESULT(not usable))
3292
Bram Moolenaar071d4272004-06-13 20:20:40 +00003293dnl rename needs to be checked separately to work on Nextstep with cc
3294AC_MSG_CHECKING(for rename)
3295AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3296 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3297 AC_MSG_RESULT(no))
3298
3299dnl sysctl() may exist but not the arguments we use
3300AC_MSG_CHECKING(for sysctl)
3301AC_TRY_COMPILE(
3302[#include <sys/types.h>
3303#include <sys/sysctl.h>],
3304[ int mib[2], r;
3305 size_t len;
3306
3307 mib[0] = CTL_HW;
3308 mib[1] = HW_USERMEM;
3309 len = sizeof(r);
3310 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3311 ],
3312 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3313 AC_MSG_RESULT(not usable))
3314
3315dnl sysinfo() may exist but not be Linux compatible
3316AC_MSG_CHECKING(for sysinfo)
3317AC_TRY_COMPILE(
3318[#include <sys/types.h>
3319#include <sys/sysinfo.h>],
3320[ struct sysinfo sinfo;
3321 int t;
3322
3323 (void)sysinfo(&sinfo);
3324 t = sinfo.totalram;
3325 ],
3326 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3327 AC_MSG_RESULT(not usable))
3328
Bram Moolenaar914572a2007-05-01 11:37:47 +00003329dnl struct sysinfo may have the mem_unit field or not
3330AC_MSG_CHECKING(for sysinfo.mem_unit)
3331AC_TRY_COMPILE(
3332[#include <sys/types.h>
3333#include <sys/sysinfo.h>],
3334[ struct sysinfo sinfo;
3335 sinfo.mem_unit = 1;
3336 ],
3337 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3338 AC_MSG_RESULT(no))
3339
Bram Moolenaar071d4272004-06-13 20:20:40 +00003340dnl sysconf() may exist but not support what we want to use
3341AC_MSG_CHECKING(for sysconf)
3342AC_TRY_COMPILE(
3343[#include <unistd.h>],
3344[ (void)sysconf(_SC_PAGESIZE);
3345 (void)sysconf(_SC_PHYS_PAGES);
3346 ],
3347 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3348 AC_MSG_RESULT(not usable))
3349
Bram Moolenaar914703b2010-05-31 21:59:46 +02003350AC_CHECK_SIZEOF([int])
3351AC_CHECK_SIZEOF([long])
3352AC_CHECK_SIZEOF([time_t])
3353AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003354
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003355dnl Make sure that uint32_t is really 32 bits unsigned.
3356AC_MSG_CHECKING([uint32_t is 32 bits])
3357AC_TRY_RUN([
3358#ifdef HAVE_STDINT_H
3359# include <stdint.h>
3360#endif
3361#ifdef HAVE_INTTYPES_H
3362# include <inttypes.h>
3363#endif
3364main() {
3365 uint32_t nr1 = (uint32_t)-1;
3366 uint32_t nr2 = (uint32_t)0xffffffffUL;
3367 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3368 exit(0);
3369}],
3370AC_MSG_RESULT(ok),
3371AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003372AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003373
Bram Moolenaar446cb832008-06-24 21:56:24 +00003374dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3375dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3376
Bram Moolenaar071d4272004-06-13 20:20:40 +00003377[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003378#include "confdefs.h"
3379#ifdef HAVE_STRING_H
3380# include <string.h>
3381#endif
3382#if STDC_HEADERS
3383# include <stdlib.h>
3384# include <stddef.h>
3385#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386main() {
3387 char buf[10];
3388 strcpy(buf, "abcdefghi");
3389 mch_memmove(buf, buf + 2, 3);
3390 if (strncmp(buf, "ababcf", 6))
3391 exit(1);
3392 strcpy(buf, "abcdefghi");
3393 mch_memmove(buf + 2, buf, 3);
3394 if (strncmp(buf, "cdedef", 6))
3395 exit(1);
3396 exit(0); /* libc version works properly. */
3397}']
3398
Bram Moolenaar446cb832008-06-24 21:56:24 +00003399AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3400 [
3401 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3402 [
3403 vim_cv_memmove_handles_overlap=yes
3404 ],[
3405 vim_cv_memmove_handles_overlap=no
3406 ],[
3407 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3408 ])
3409 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003410
Bram Moolenaar446cb832008-06-24 21:56:24 +00003411if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3412 AC_DEFINE(USEMEMMOVE)
3413else
3414 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3415 [
3416 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3417 [
3418 vim_cv_bcopy_handles_overlap=yes
3419 ],[
3420 vim_cv_bcopy_handles_overlap=no
3421 ],[
3422 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3423 ])
3424 ])
3425
3426 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3427 AC_DEFINE(USEBCOPY)
3428 else
3429 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3430 [
3431 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3432 [
3433 vim_cv_memcpy_handles_overlap=yes
3434 ],[
3435 vim_cv_memcpy_handles_overlap=no
3436 ],[
3437 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3438 ])
3439 ])
3440
3441 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3442 AC_DEFINE(USEMEMCPY)
3443 fi
3444 fi
3445fi
3446
Bram Moolenaar071d4272004-06-13 20:20:40 +00003447
3448dnl Check for multibyte locale functions
3449dnl Find out if _Xsetlocale() is supported by libX11.
3450dnl Check if X_LOCALE should be defined.
3451
3452if test "$enable_multibyte" = "yes"; then
3453 cflags_save=$CFLAGS
3454 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003455 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003456 CFLAGS="$CFLAGS -I$x_includes"
3457 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3458 AC_MSG_CHECKING(whether X_LOCALE needed)
3459 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3460 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3461 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3462 AC_MSG_RESULT(no))
3463 fi
3464 CFLAGS=$cflags_save
3465 LDFLAGS=$ldflags_save
3466fi
3467
3468dnl Link with xpg4, it is said to make Korean locale working
3469AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3470
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003471dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003472dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003473dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003474dnl -t for typedefs (many ctags have this)
3475dnl -s for static functions (Elvis ctags only?)
3476dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3477dnl -i+m to test for older Exuberant ctags
3478AC_MSG_CHECKING(how to create tags)
3479test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003480if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003481 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003482elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3483 TAGPRG="exctags -I INIT+ --fields=+S"
3484elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3485 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003486else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003487 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003488 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3489 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3490 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3491 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3492 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3493 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3494 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3495fi
3496test -f tags.save && mv tags.save tags
3497AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3498
3499dnl Check how we can run man with a section number
3500AC_MSG_CHECKING(how to run man with a section nr)
3501MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003502(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 +00003503AC_MSG_RESULT($MANDEF)
3504if test "$MANDEF" = "man -s"; then
3505 AC_DEFINE(USEMAN_S)
3506fi
3507
3508dnl Check if gettext() is working and if it needs -lintl
3509AC_MSG_CHECKING(--disable-nls argument)
3510AC_ARG_ENABLE(nls,
3511 [ --disable-nls Don't support NLS (gettext()).], ,
3512 [enable_nls="yes"])
3513
3514if test "$enable_nls" = "yes"; then
3515 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003516
3517 INSTALL_LANGS=install-languages
3518 AC_SUBST(INSTALL_LANGS)
3519 INSTALL_TOOL_LANGS=install-tool-languages
3520 AC_SUBST(INSTALL_TOOL_LANGS)
3521
Bram Moolenaar071d4272004-06-13 20:20:40 +00003522 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3523 AC_MSG_CHECKING([for NLS])
3524 if test -f po/Makefile; then
3525 have_gettext="no"
3526 if test -n "$MSGFMT"; then
3527 AC_TRY_LINK(
3528 [#include <libintl.h>],
3529 [gettext("Test");],
3530 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3531 olibs=$LIBS
3532 LIBS="$LIBS -lintl"
3533 AC_TRY_LINK(
3534 [#include <libintl.h>],
3535 [gettext("Test");],
3536 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3537 AC_MSG_RESULT([gettext() doesn't work]);
3538 LIBS=$olibs))
3539 else
3540 AC_MSG_RESULT([msgfmt not found - disabled]);
3541 fi
3542 if test $have_gettext = "yes"; then
3543 AC_DEFINE(HAVE_GETTEXT)
3544 MAKEMO=yes
3545 AC_SUBST(MAKEMO)
3546 dnl this was added in GNU gettext 0.10.36
3547 AC_CHECK_FUNCS(bind_textdomain_codeset)
3548 dnl _nl_msg_cat_cntr is required for GNU gettext
3549 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3550 AC_TRY_LINK(
3551 [#include <libintl.h>
3552 extern int _nl_msg_cat_cntr;],
3553 [++_nl_msg_cat_cntr;],
3554 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3555 AC_MSG_RESULT([no]))
3556 fi
3557 else
3558 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3559 fi
3560else
3561 AC_MSG_RESULT(yes)
3562fi
3563
3564dnl Check for dynamic linking loader
3565AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3566if test x${DLL} = xdlfcn.h; then
3567 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3568 AC_MSG_CHECKING([for dlopen()])
3569 AC_TRY_LINK(,[
3570 extern void* dlopen();
3571 dlopen();
3572 ],
3573 AC_MSG_RESULT(yes);
3574 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3575 AC_MSG_RESULT(no);
3576 AC_MSG_CHECKING([for dlopen() in -ldl])
3577 olibs=$LIBS
3578 LIBS="$LIBS -ldl"
3579 AC_TRY_LINK(,[
3580 extern void* dlopen();
3581 dlopen();
3582 ],
3583 AC_MSG_RESULT(yes);
3584 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3585 AC_MSG_RESULT(no);
3586 LIBS=$olibs))
3587 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3588 dnl ick :-)
3589 AC_MSG_CHECKING([for dlsym()])
3590 AC_TRY_LINK(,[
3591 extern void* dlsym();
3592 dlsym();
3593 ],
3594 AC_MSG_RESULT(yes);
3595 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3596 AC_MSG_RESULT(no);
3597 AC_MSG_CHECKING([for dlsym() in -ldl])
3598 olibs=$LIBS
3599 LIBS="$LIBS -ldl"
3600 AC_TRY_LINK(,[
3601 extern void* dlsym();
3602 dlsym();
3603 ],
3604 AC_MSG_RESULT(yes);
3605 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3606 AC_MSG_RESULT(no);
3607 LIBS=$olibs))
3608elif test x${DLL} = xdl.h; then
3609 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3610 AC_MSG_CHECKING([for shl_load()])
3611 AC_TRY_LINK(,[
3612 extern void* shl_load();
3613 shl_load();
3614 ],
3615 AC_MSG_RESULT(yes);
3616 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3617 AC_MSG_RESULT(no);
3618 AC_MSG_CHECKING([for shl_load() in -ldld])
3619 olibs=$LIBS
3620 LIBS="$LIBS -ldld"
3621 AC_TRY_LINK(,[
3622 extern void* shl_load();
3623 shl_load();
3624 ],
3625 AC_MSG_RESULT(yes);
3626 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3627 AC_MSG_RESULT(no);
3628 LIBS=$olibs))
3629fi
3630AC_CHECK_HEADERS(setjmp.h)
3631
3632if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3633 dnl -ldl must come after DynaLoader.a
3634 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3635 LIBS=`echo $LIBS | sed s/-ldl//`
3636 PERL_LIBS="$PERL_LIBS -ldl"
3637 fi
3638fi
3639
Bram Moolenaar164fca32010-07-14 13:58:07 +02003640if test "x$MACOSX" = "xyes"; then
3641 AC_MSG_CHECKING(whether we need -framework Cocoa)
3642 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3643 dnl disabled during tiny build)
3644 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3645 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003646 AC_MSG_RESULT(yes)
3647 else
3648 AC_MSG_RESULT(no)
3649 fi
3650fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003651if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003652 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003653fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003654
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003655dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3656dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3657dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003658dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3659dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003660DEPEND_CFLAGS_FILTER=
3661if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003662 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003663 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003664 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003665 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003666 AC_MSG_RESULT(yes)
3667 else
3668 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003669 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003670 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3671 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003672 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003673 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003674 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3675 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003676 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003677 AC_MSG_RESULT(yes)
3678 else
3679 AC_MSG_RESULT(no)
3680 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003681fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003682AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003683
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003684dnl link.sh tries to avoid overlinking in a hackish way.
3685dnl At least GNU ld supports --as-needed which provides the same functionality
3686dnl at linker level. Let's use it.
3687AC_MSG_CHECKING(linker --as-needed support)
3688LINK_AS_NEEDED=
3689# Check if linker supports --as-needed and --no-as-needed options
3690if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3691 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3692 LINK_AS_NEEDED=yes
3693fi
3694if test "$LINK_AS_NEEDED" = yes; then
3695 AC_MSG_RESULT(yes)
3696else
3697 AC_MSG_RESULT(no)
3698fi
3699AC_SUBST(LINK_AS_NEEDED)
3700
Bram Moolenaar77c19352012-06-13 19:19:41 +02003701# IBM z/OS reset CFLAGS for config.mk
3702if test "$zOSUnix" = "yes"; then
3703 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3704fi
3705
Bram Moolenaar071d4272004-06-13 20:20:40 +00003706dnl write output files
3707AC_OUTPUT(auto/config.mk:config.mk.in)
3708
3709dnl vim: set sw=2 tw=78 fo+=l: