blob: 3ab8c52cca57842e5a70c609d06224233f83d29b [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 Moolenaar071d4272004-06-13 20:20:40 +000031dnl Set default value for CFLAGS if none is defined or it's empty
32if test -z "$CFLAGS"; then
33 CFLAGS="-O"
34 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
35fi
36if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000037 dnl method that should work for nearly all versions
38 gccversion=`"$CC" -dumpversion`
39 if test "x$gccversion" = "x"; then
40 dnl old method; fall-back for when -dumpversion doesn't work
41 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
42 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000043 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
44 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000045 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000046 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
47 else
48 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
49 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
50 CFLAGS="$CFLAGS -fno-strength-reduce"
51 fi
52 fi
53fi
54
Bram Moolenaar446cb832008-06-24 21:56:24 +000055dnl If configure thinks we are cross compiling, there might be something
56dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000057if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000058 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000059fi
60
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000061dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
62dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000063test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
64
65if test -f ./toolcheck; then
66 AC_CHECKING(for buggy tools)
67 sh ./toolcheck 1>&AC_FD_MSG
68fi
69
70OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
71
72dnl Check for BeOS, which needs an extra source file
73AC_MSG_CHECKING(for BeOS)
74case `uname` in
75 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
76 BEOS=yes; AC_MSG_RESULT(yes);;
77 *) BEOS=no; AC_MSG_RESULT(no);;
78esac
79
80dnl If QNX is found, assume we don't want to use Xphoton
81dnl unless it was specifically asked for (--with-x)
82AC_MSG_CHECKING(for QNX)
83case `uname` in
84 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
85 test -z "$with_x" && with_x=no
86 QNX=yes; AC_MSG_RESULT(yes);;
87 *) QNX=no; AC_MSG_RESULT(no);;
88esac
89
90dnl Check for Darwin and MacOS X
91dnl We do a check for MacOS X in the very beginning because there
92dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +000093AC_MSG_CHECKING([for Darwin (Mac OS X)])
94if test "`(uname) 2>/dev/null`" = Darwin; then
95 AC_MSG_RESULT(yes)
96
97 AC_MSG_CHECKING(--disable-darwin argument)
98 AC_ARG_ENABLE(darwin,
99 [ --disable-darwin Disable Darwin (Mac OS X) support.],
100 , [enable_darwin="yes"])
101 if test "$enable_darwin" = "yes"; then
102 AC_MSG_RESULT(no)
103 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200104 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105 AC_MSG_RESULT(yes)
106 else
107 AC_MSG_RESULT([no, Darwin support disabled])
108 enable_darwin=no
109 fi
110 else
111 AC_MSG_RESULT([yes, Darwin support excluded])
112 fi
113
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000114 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000115 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000116 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000117 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000118
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100119 AC_MSG_CHECKING(--with-developer-dir argument)
120 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
121 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
122 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
123
124 if test "x$DEVELOPER_DIR" = "x"; then
125 AC_PATH_PROG(XCODE_SELECT, xcode-select)
126 if test "x$XCODE_SELECT" != "x"; then
127 AC_MSG_CHECKING(for developer dir using xcode-select)
128 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
129 AC_MSG_RESULT([$DEVELOPER_DIR])
130 else
131 DEVELOPER_DIR=/Developer
132 fi
133 fi
134
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000135 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000136 AC_MSG_CHECKING(for 10.4 universal SDK)
137 dnl There is a terrible inconsistency (but we appear to get away with it):
138 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
139 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
140 dnl tests using the preprocessor are actually done with the wrong header
141 dnl files. $LDFLAGS is set at the end, because configure uses it together
142 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000143 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000144 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100146 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000147 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000148 AC_MSG_RESULT(found, will make universal binary),
149
150 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000151 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000152 AC_MSG_CHECKING(if Intel architecture is supported)
153 CPPFLAGS="$CPPFLAGS -arch i386"
154 LDFLAGS="$save_ldflags -arch i386"
155 AC_TRY_LINK([ ], [ ],
156 AC_MSG_RESULT(yes); MACARCH="intel",
157 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000158 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000159 CPPFLAGS="$save_cppflags -arch ppc"
160 LDFLAGS="$save_ldflags -arch ppc"))
161 elif test "x$MACARCH" = "xintel"; then
162 CPPFLAGS="$CPPFLAGS -arch intel"
163 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000164 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000165 CPPFLAGS="$CPPFLAGS -arch ppc"
166 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000167 fi
168
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169 if test "$enable_darwin" = "yes"; then
170 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200171 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000172 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000173 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000174 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000175
176 dnl If Carbon is found, assume we don't want X11
177 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000178 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
180 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200181 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 +0000182 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183 fi
184 fi
185 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000186
Bram Moolenaardb552d602006-03-23 22:59:57 +0000187 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000188 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000189 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000190 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
191 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
192 fi
193
Bram Moolenaar071d4272004-06-13 20:20:40 +0000194else
195 AC_MSG_RESULT(no)
196fi
197
198AC_SUBST(OS_EXTRA_SRC)
199AC_SUBST(OS_EXTRA_OBJ)
200
201dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
202dnl Only when the directory exists and it wasn't there yet.
203dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000204dnl Skip all of this when cross-compiling.
205if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000206 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000207 have_local_include=''
208 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000209 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
210 --without-local-dir do not search /usr/local for local libraries.], [
211 local_dir="$withval"
212 case "$withval" in
213 */*) ;;
214 no)
215 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200216 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000217 have_local_lib=yes
218 ;;
219 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
220 esac
221 AC_MSG_RESULT($local_dir)
222 ], [
223 local_dir=/usr/local
224 AC_MSG_RESULT(Defaulting to $local_dir)
225 ])
226 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000227 echo 'void f(){}' > conftest.c
228 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000229 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
230 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000231 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000233 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
234 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 +0000235 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000236 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 fi
238 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
240 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 +0000241 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000242 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244 fi
245fi
246
247AC_MSG_CHECKING(--with-vim-name argument)
248AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
249 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000250 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251AC_SUBST(VIMNAME)
252AC_MSG_CHECKING(--with-ex-name argument)
253AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
254 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
255 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
256AC_SUBST(EXNAME)
257AC_MSG_CHECKING(--with-view-name argument)
258AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
259 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
260 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
261AC_SUBST(VIEWNAME)
262
263AC_MSG_CHECKING(--with-global-runtime argument)
264AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
265 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
266 AC_MSG_RESULT(no))
267
268AC_MSG_CHECKING(--with-modified-by argument)
269AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
271 AC_MSG_RESULT(no))
272
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200273dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274AC_MSG_CHECKING(if character set is EBCDIC)
275AC_TRY_COMPILE([ ],
276[ /* TryCompile function for CharSet.
277 Treat any failure as ASCII for compatibility with existing art.
278 Use compile-time rather than run-time tests for cross-compiler
279 tolerance. */
280#if '0'!=240
281make an error "Character set is not EBCDIC"
282#endif ],
283[ # TryCompile action if true
284cf_cv_ebcdic=yes ],
285[ # TryCompile action if false
286cf_cv_ebcdic=no])
287# end of TryCompile ])
288# end of CacheVal CvEbcdic
289AC_MSG_RESULT($cf_cv_ebcdic)
290case "$cf_cv_ebcdic" in #(vi
291 yes) AC_DEFINE(EBCDIC)
292 line_break='"\\n"'
293 ;;
294 *) line_break='"\\012"';;
295esac
296AC_SUBST(line_break)
297
298if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200299dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
300AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200302 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303 dnl If using cc the environment variable _CC_CCMODE must be
304 dnl set to "1", so that some compiler extensions are enabled.
305 dnl If using c89 the environment variable is named _CC_C89MODE.
306 dnl Note: compile with c89 never tested.
307 if test "$CC" = "cc"; then
308 ccm="$_CC_CCMODE"
309 ccn="CC"
310 else
311 if test "$CC" = "c89"; then
312 ccm="$_CC_C89MODE"
313 ccn="C89"
314 else
315 ccm=1
316 fi
317 fi
318 if test "$ccm" != "1"; then
319 echo ""
320 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200321 echo " On z/OS Unix, the environment variable"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000322 echo " __CC_${ccn}MODE must be set to \"1\"!"
323 echo " Do:"
324 echo " export _CC_${ccn}MODE=1"
325 echo " and then call configure again."
326 echo "------------------------------------------"
327 exit 1
328 fi
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200329 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
330 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331 AC_MSG_RESULT(yes)
332 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200333 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334 AC_MSG_RESULT(no)
335 ;;
336esac
337fi
338
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339dnl Set QUOTESED. Needs additional backslashes on zOS
340if test "$zOSUnix" = "yes"; then
341 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
342else
343 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
344fi
345AC_SUBST(QUOTESED)
346
347
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000348dnl Link with -lselinux for SELinux stuff; if not found
349AC_MSG_CHECKING(--disable-selinux argument)
350AC_ARG_ENABLE(selinux,
351 [ --disable-selinux Don't check for SELinux support.],
352 , enable_selinux="yes")
353if test "$enable_selinux" = "yes"; then
354 AC_MSG_RESULT(no)
355 AC_CHECK_LIB(selinux, is_selinux_enabled,
356 [LIBS="$LIBS -lselinux"
357 AC_DEFINE(HAVE_SELINUX)])
358else
359 AC_MSG_RESULT(yes)
360fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000361
362dnl Check user requested features.
363
364AC_MSG_CHECKING(--with-features argument)
365AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
366 features="$withval"; AC_MSG_RESULT($features),
367 features="normal"; AC_MSG_RESULT(Defaulting to normal))
368
369dovimdiff=""
370dogvimdiff=""
371case "$features" in
372 tiny) AC_DEFINE(FEAT_TINY) ;;
373 small) AC_DEFINE(FEAT_SMALL) ;;
374 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
375 dogvimdiff="installgvimdiff" ;;
376 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
377 dogvimdiff="installgvimdiff" ;;
378 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
379 dogvimdiff="installgvimdiff" ;;
380 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
381esac
382
383AC_SUBST(dovimdiff)
384AC_SUBST(dogvimdiff)
385
386AC_MSG_CHECKING(--with-compiledby argument)
387AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
388 compiledby="$withval"; AC_MSG_RESULT($withval),
389 compiledby=""; AC_MSG_RESULT(no))
390AC_SUBST(compiledby)
391
392AC_MSG_CHECKING(--disable-xsmp argument)
393AC_ARG_ENABLE(xsmp,
394 [ --disable-xsmp Disable XSMP session management],
395 , enable_xsmp="yes")
396
397if test "$enable_xsmp" = "yes"; then
398 AC_MSG_RESULT(no)
399 AC_MSG_CHECKING(--disable-xsmp-interact argument)
400 AC_ARG_ENABLE(xsmp-interact,
401 [ --disable-xsmp-interact Disable XSMP interaction],
402 , enable_xsmp_interact="yes")
403 if test "$enable_xsmp_interact" = "yes"; then
404 AC_MSG_RESULT(no)
405 AC_DEFINE(USE_XSMP_INTERACT)
406 else
407 AC_MSG_RESULT(yes)
408 fi
409else
410 AC_MSG_RESULT(yes)
411fi
412
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200413dnl Check for Lua feature.
414AC_MSG_CHECKING(--enable-luainterp argument)
415AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200416 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200417 [enable_luainterp="no"])
418AC_MSG_RESULT($enable_luainterp)
419
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200420if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200421 dnl -- find the lua executable
422 AC_SUBST(vi_cv_path_lua)
423
424 AC_MSG_CHECKING(--with-lua-prefix argument)
425 AC_ARG_WITH(lua_prefix,
426 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
427 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200428 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200429
430 if test "X$with_lua_prefix" != "X"; then
431 vi_cv_path_lua_pfx="$with_lua_prefix"
432 else
433 AC_MSG_CHECKING(LUA_PREFIX environment var)
434 if test "X$LUA_PREFIX" != "X"; then
435 AC_MSG_RESULT("$LUA_PREFIX")
436 vi_cv_path_lua_pfx="$LUA_PREFIX"
437 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200438 AC_MSG_RESULT([not set, default to /usr])
439 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200440 fi
441 fi
442
443 LUA_INC=
444 if test "X$vi_cv_path_lua_pfx" != "X"; then
445 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
446 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200447 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200448 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200449 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200450 dnl -- try to find Lua executable
451 AC_PATH_PROG(vi_cv_path_lua, lua)
452 if test "X$vi_cv_path_lua" != "X"; then
453 dnl -- find Lua version
454 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200455 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200456 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
457 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200458 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200459 LUA_INC=/lua$vi_cv_version_lua
460 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200461 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200462 vi_cv_path_lua_pfx=
463 fi
464 fi
465 fi
466 fi
467
468 if test "X$vi_cv_path_lua_pfx" != "X"; then
469 if test "X$vi_cv_version_lua" != "X"; then
470 dnl Test alternate location using version
471 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
472 else
473 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
474 fi
475 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
476 LUA_SRC="if_lua.c"
477 LUA_OBJ="objects/if_lua.o"
478 LUA_PRO="if_lua.pro"
479 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200480 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar8220a682010-07-25 13:12:49 +0200481 dnl Determine the SONAME for the current version, but fallback to
482 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
483 for i in 0 1 2 3 4 5 6 7 8 9; do
484 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
485 LUA_SONAME=".$i"
486 break
487 fi
488 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200489 AC_DEFINE(DYNAMIC_LUA)
490 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200491 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 fi
494 AC_SUBST(LUA_SRC)
495 AC_SUBST(LUA_OBJ)
496 AC_SUBST(LUA_PRO)
497 AC_SUBST(LUA_LIBS)
498 AC_SUBST(LUA_CFLAGS)
499fi
500
501
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000502dnl Check for MzScheme feature.
503AC_MSG_CHECKING(--enable-mzschemeinterp argument)
504AC_ARG_ENABLE(mzschemeinterp,
505 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
506 [enable_mzschemeinterp="no"])
507AC_MSG_RESULT($enable_mzschemeinterp)
508
509if test "$enable_mzschemeinterp" = "yes"; then
510 dnl -- find the mzscheme executable
511 AC_SUBST(vi_cv_path_mzscheme)
512
513 AC_MSG_CHECKING(--with-plthome argument)
514 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000515 [ --with-plthome=PLTHOME Use PLTHOME.],
516 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000517 with_plthome="";AC_MSG_RESULT("no"))
518
519 if test "X$with_plthome" != "X"; then
520 vi_cv_path_mzscheme_pfx="$with_plthome"
521 else
522 AC_MSG_CHECKING(PLTHOME environment var)
523 if test "X$PLTHOME" != "X"; then
524 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000525 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000526 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000527 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000528 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000529 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000530
531 dnl resolve symbolic link, the executable is often elsewhere and there
532 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000533 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534 lsout=`ls -l $vi_cv_path_mzscheme`
535 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
536 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
537 fi
538 fi
539
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000540 if test "X$vi_cv_path_mzscheme" != "X"; then
541 dnl -- find where MzScheme thinks it was installed
542 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 dnl different versions of MzScheme differ in command line processing
544 dnl use universal approach
545 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 (build-path (call-with-values \
547 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000548 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
549 dnl Remove a trailing slash
550 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
551 sed -e 's+/$++'` ])
552 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000553 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000554 fi
555 fi
556
Bram Moolenaard7afed32007-05-06 13:26:41 +0000557 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
559 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
560 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000561 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
562 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000563 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 AC_MSG_RESULT(no)
565 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000566 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000567 AC_MSG_RESULT(yes)
568 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000569 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000570 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100571 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
572 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000573 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100574 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 else
576 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100577 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
578 if test -f /usr/include/plt/scheme.h; then
579 AC_MSG_RESULT(yes)
580 SCHEME_INC=/usr/include/plt
581 else
582 AC_MSG_RESULT(no)
583 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
584 if test -f /usr/include/racket/scheme.h; then
585 AC_MSG_RESULT(yes)
586 SCHEME_INC=/usr/include/racket
587 else
588 AC_MSG_RESULT(no)
589 vi_cv_path_mzscheme_pfx=
590 fi
591 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000592 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000593 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000594 fi
595 fi
596
597 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000598 if test "x$MACOSX" = "xyes"; then
599 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000600 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
601 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
602 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
604 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
605 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
606 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
607 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
608 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000609 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 +0000610 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000611 dnl Using shared objects
612 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
613 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
614 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100615 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
616 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
617 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
618 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
619 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000620 else
621 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
622 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000623 if test "$GCC" = yes; then
624 dnl Make Vim remember the path to the library. For when it's not in
625 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000626 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000627 elif test "`(uname) 2>/dev/null`" = SunOS &&
628 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000629 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000630 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000631 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000632 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
633 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100634 else
635 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
636 SCHEME_COLLECTS=lib/racket/
637 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000638 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000639 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000640 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100641 else
642 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
643 MZSCHEME_EXTRA="mzscheme_base.c"
644 fi
645 fi
646 if test "X$MZSCHEME_EXTRA" != "X" ; then
647 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000648 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
649 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
650 fi
651 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000652 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000653 MZSCHEME_SRC="if_mzsch.c"
654 MZSCHEME_OBJ="objects/if_mzsch.o"
655 MZSCHEME_PRO="if_mzsch.pro"
656 AC_DEFINE(FEAT_MZSCHEME)
657 fi
658 AC_SUBST(MZSCHEME_SRC)
659 AC_SUBST(MZSCHEME_OBJ)
660 AC_SUBST(MZSCHEME_PRO)
661 AC_SUBST(MZSCHEME_LIBS)
662 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000663 AC_SUBST(MZSCHEME_EXTRA)
664 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000665fi
666
667
Bram Moolenaar071d4272004-06-13 20:20:40 +0000668AC_MSG_CHECKING(--enable-perlinterp argument)
669AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200670 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000671 [enable_perlinterp="no"])
672AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200673if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000674 AC_SUBST(vi_cv_path_perl)
675 AC_PATH_PROG(vi_cv_path_perl, perl)
676 if test "X$vi_cv_path_perl" != "X"; then
677 AC_MSG_CHECKING(Perl version)
678 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
679 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200680 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000681 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
682 badthreads=no
683 else
684 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
685 eval `$vi_cv_path_perl -V:use5005threads`
686 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
687 badthreads=no
688 else
689 badthreads=yes
690 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
691 fi
692 else
693 badthreads=yes
694 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
695 fi
696 fi
697 if test $badthreads = no; then
698 AC_MSG_RESULT(OK)
699 eval `$vi_cv_path_perl -V:shrpenv`
700 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
701 shrpenv=""
702 fi
703 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
704 AC_SUBST(vi_cv_perllib)
705 dnl Remove "-fno-something", it breaks using cproto.
706 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
707 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
708 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
709 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
710 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
711 -e 's/-bE:perl.exp//' -e 's/-lc //'`
712 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
713 dnl a test in configure may fail because of that.
714 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
715 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
716
717 dnl check that compiling a simple program still works with the flags
718 dnl added for Perl.
719 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
720 cflags_save=$CFLAGS
721 libs_save=$LIBS
722 ldflags_save=$LDFLAGS
723 CFLAGS="$CFLAGS $perlcppflags"
724 LIBS="$LIBS $perllibs"
725 LDFLAGS="$perlldflags $LDFLAGS"
726 AC_TRY_LINK(,[ ],
727 AC_MSG_RESULT(yes); perl_ok=yes,
728 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
729 CFLAGS=$cflags_save
730 LIBS=$libs_save
731 LDFLAGS=$ldflags_save
732 if test $perl_ok = yes; then
733 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 dnl remove -pipe and -Wxxx, it confuses cproto
735 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 fi
737 if test "X$perlldflags" != "X"; then
738 LDFLAGS="$perlldflags $LDFLAGS"
739 fi
740 PERL_LIBS=$perllibs
741 PERL_SRC="auto/if_perl.c if_perlsfio.c"
742 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
743 PERL_PRO="if_perl.pro if_perlsfio.pro"
744 AC_DEFINE(FEAT_PERL)
745 fi
746 fi
747 else
748 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
749 fi
750 fi
751
752 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000753 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000754 dir=/System/Library/Perl
755 darwindir=$dir/darwin
756 if test -d $darwindir; then
757 PERL=/usr/bin/perl
758 else
759 dnl Mac OS X 10.3
760 dir=/System/Library/Perl/5.8.1
761 darwindir=$dir/darwin-thread-multi-2level
762 if test -d $darwindir; then
763 PERL=/usr/bin/perl
764 fi
765 fi
766 if test -n "$PERL"; then
767 PERL_DIR="$dir"
768 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
769 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
770 PERL_LIBS="-L$darwindir/CORE -lperl"
771 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200772 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
773 dnl be included if requested by passing --with-mac-arch to
774 dnl configure, so strip these flags first (if present)
775 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
776 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 +0000777 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200778 if test "$enable_perlinterp" = "dynamic"; then
779 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
780 AC_DEFINE(DYNAMIC_PERL)
781 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
782 fi
783 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000784fi
785AC_SUBST(shrpenv)
786AC_SUBST(PERL_SRC)
787AC_SUBST(PERL_OBJ)
788AC_SUBST(PERL_PRO)
789AC_SUBST(PERL_CFLAGS)
790AC_SUBST(PERL_LIBS)
791
792AC_MSG_CHECKING(--enable-pythoninterp argument)
793AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200794 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000795 [enable_pythoninterp="no"])
796AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200797if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000798 dnl -- find the python executable
799 AC_PATH_PROG(vi_cv_path_python, python)
800 if test "X$vi_cv_path_python" != "X"; then
801
802 dnl -- get its version number
803 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
804 [[vi_cv_var_python_version=`
805 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
806 ]])
807
808 dnl -- it must be at least version 1.4
809 AC_MSG_CHECKING(Python is 1.4 or better)
810 if ${vi_cv_path_python} -c \
811 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
812 then
813 AC_MSG_RESULT(yep)
814
815 dnl -- find where python thinks it was installed
816 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
817 [ vi_cv_path_python_pfx=`
818 ${vi_cv_path_python} -c \
819 "import sys; print sys.prefix"` ])
820
821 dnl -- and where it thinks it runs
822 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
823 [ vi_cv_path_python_epfx=`
824 ${vi_cv_path_python} -c \
825 "import sys; print sys.exec_prefix"` ])
826
827 dnl -- python's internal library path
828
829 AC_CACHE_VAL(vi_cv_path_pythonpath,
830 [ vi_cv_path_pythonpath=`
831 unset PYTHONPATH;
832 ${vi_cv_path_python} -c \
833 "import sys, string; print string.join(sys.path,':')"` ])
834
835 dnl -- where the Python implementation library archives are
836
837 AC_ARG_WITH(python-config-dir,
838 [ --with-python-config-dir=PATH Python's config directory],
839 [ vi_cv_path_python_conf="${withval}" ] )
840
841 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
842 [
843 vi_cv_path_python_conf=
844 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000845 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000846 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
847 if test -d "$d" && test -f "$d/config.c"; then
848 vi_cv_path_python_conf="$d"
849 fi
850 done
851 done
852 ])
853
854 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
855
856 if test "X$PYTHON_CONFDIR" = "X"; then
857 AC_MSG_RESULT([can't find it!])
858 else
859
860 dnl -- we need to examine Python's config/Makefile too
861 dnl see what the interpreter is built from
862 AC_CACHE_VAL(vi_cv_path_python_plibs,
863 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000864 pwd=`pwd`
865 tmp_mkf="$pwd/config-PyMake$$"
866 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000867__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200868 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000869 @echo "python_LIBS='$(LIBS)'"
870 @echo "python_SYSLIBS='$(SYSLIBS)'"
871 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200872 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000873eof
874 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000875 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
876 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000877 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
878 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
879 vi_cv_path_python_plibs="-framework Python"
880 else
881 if test "${vi_cv_var_python_version}" = "1.4"; then
882 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
883 else
884 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
885 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200886 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 +0000887 dnl remove -ltermcap, it can conflict with an earlier -lncurses
888 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
889 fi
890 ])
891
892 PYTHON_LIBS="${vi_cv_path_python_plibs}"
893 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100894 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 +0000895 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100896 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 +0000897 fi
898 PYTHON_SRC="if_python.c"
899 dnl For Mac OSX 10.2 config.o is included in the Python library.
900 if test "x$MACOSX" = "xyes"; then
901 PYTHON_OBJ="objects/if_python.o"
902 else
903 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
904 fi
905 if test "${vi_cv_var_python_version}" = "1.4"; then
906 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
907 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100908 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 +0000909
910 dnl On FreeBSD linking with "-pthread" is required to use threads.
911 dnl _THREAD_SAFE must be used for compiling then.
912 dnl The "-pthread" is added to $LIBS, so that the following check for
913 dnl sigaltstack() will look in libc_r (it's there in libc!).
914 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
915 dnl will then define target-specific defines, e.g., -D_REENTRANT.
916 dnl Don't do this for Mac OSX, -pthread will generate a warning.
917 AC_MSG_CHECKING([if -pthread should be used])
918 threadsafe_flag=
919 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000920 dnl if test "x$MACOSX" != "xyes"; then
921 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000922 test "$GCC" = yes && threadsafe_flag="-pthread"
923 if test "`(uname) 2>/dev/null`" = FreeBSD; then
924 threadsafe_flag="-D_THREAD_SAFE"
925 thread_lib="-pthread"
926 fi
927 fi
928 libs_save_old=$LIBS
929 if test -n "$threadsafe_flag"; then
930 cflags_save=$CFLAGS
931 CFLAGS="$CFLAGS $threadsafe_flag"
932 LIBS="$LIBS $thread_lib"
933 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200934 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000935 AC_MSG_RESULT(no); LIBS=$libs_save_old
936 )
937 CFLAGS=$cflags_save
938 else
939 AC_MSG_RESULT(no)
940 fi
941
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200942 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943 dnl added for Python.
944 AC_MSG_CHECKING([if compile and link flags for Python are sane])
945 cflags_save=$CFLAGS
946 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200947 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000948 LIBS="$LIBS $PYTHON_LIBS"
949 AC_TRY_LINK(,[ ],
950 AC_MSG_RESULT(yes); python_ok=yes,
951 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
952 CFLAGS=$cflags_save
953 LIBS=$libs_save
954 if test $python_ok = yes; then
955 AC_DEFINE(FEAT_PYTHON)
956 else
957 LIBS=$libs_save_old
958 PYTHON_SRC=
959 PYTHON_OBJ=
960 PYTHON_LIBS=
961 PYTHON_CFLAGS=
962 fi
963
964 fi
965 else
966 AC_MSG_RESULT(too old)
967 fi
968 fi
969fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200970
Bram Moolenaar071d4272004-06-13 20:20:40 +0000971AC_SUBST(PYTHON_CONFDIR)
972AC_SUBST(PYTHON_LIBS)
973AC_SUBST(PYTHON_GETPATH_CFLAGS)
974AC_SUBST(PYTHON_CFLAGS)
975AC_SUBST(PYTHON_SRC)
976AC_SUBST(PYTHON_OBJ)
977
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200978
979AC_MSG_CHECKING(--enable-python3interp argument)
980AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200981 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200982 [enable_python3interp="no"])
983AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200984if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200985 dnl -- find the python3 executable
986 AC_PATH_PROG(vi_cv_path_python3, python3)
987 if test "X$vi_cv_path_python3" != "X"; then
988
989 dnl -- get its version number
990 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
991 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +0200992 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200993 ]])
994
995 dnl -- find where python3 thinks it was installed
996 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
997 [ vi_cv_path_python3_pfx=`
998 ${vi_cv_path_python3} -c \
999 "import sys; print(sys.prefix)"` ])
1000
1001 dnl -- and where it thinks it runs
1002 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1003 [ vi_cv_path_python3_epfx=`
1004 ${vi_cv_path_python3} -c \
1005 "import sys; print(sys.exec_prefix)"` ])
1006
1007 dnl -- python3's internal library path
1008
1009 AC_CACHE_VAL(vi_cv_path_python3path,
1010 [ vi_cv_path_python3path=`
1011 unset PYTHONPATH;
1012 ${vi_cv_path_python3} -c \
1013 "import sys, string; print(':'.join(sys.path))"` ])
1014
1015 dnl -- where the Python implementation library archives are
1016
1017 AC_ARG_WITH(python3-config-dir,
1018 [ --with-python3-config-dir=PATH Python's config directory],
1019 [ vi_cv_path_python3_conf="${withval}" ] )
1020
1021 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1022 [
1023 vi_cv_path_python3_conf=
1024 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001025 for subdir in lib64 lib share; do
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001026 d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001027 if test -d "$d" && test -f "$d/config.c"; then
1028 vi_cv_path_python3_conf="$d"
1029 fi
1030 done
1031 done
1032 ])
1033
1034 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1035
1036 if test "X$PYTHON3_CONFDIR" = "X"; then
1037 AC_MSG_RESULT([can't find it!])
1038 else
1039
1040 dnl -- we need to examine Python's config/Makefile too
1041 dnl see what the interpreter is built from
1042 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1043 [
1044 pwd=`pwd`
1045 tmp_mkf="$pwd/config-PyMake$$"
1046 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1047__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001048 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001049 @echo "python3_LIBS='$(LIBS)'"
1050 @echo "python3_SYSLIBS='$(SYSLIBS)'"
1051 @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001052 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053eof
1054 dnl -- delete the lines from make about Entering/Leaving directory
1055 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1056 rm -f -- "${tmp_mkf}"
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001057 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
1058 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001059 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1060 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1061 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1062 ])
1063
1064 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1065 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001066 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001067 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001068 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001069 fi
1070 PYTHON3_SRC="if_python3.c"
1071 dnl For Mac OSX 10.2 config.o is included in the Python library.
1072 if test "x$MACOSX" = "xyes"; then
1073 PYTHON3_OBJ="objects/if_python3.o"
1074 else
1075 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1076 fi
1077
1078 dnl On FreeBSD linking with "-pthread" is required to use threads.
1079 dnl _THREAD_SAFE must be used for compiling then.
1080 dnl The "-pthread" is added to $LIBS, so that the following check for
1081 dnl sigaltstack() will look in libc_r (it's there in libc!).
1082 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1083 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1084 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1085 AC_MSG_CHECKING([if -pthread should be used])
1086 threadsafe_flag=
1087 thread_lib=
1088 dnl if test "x$MACOSX" != "xyes"; then
1089 if test "`(uname) 2>/dev/null`" != Darwin; then
1090 test "$GCC" = yes && threadsafe_flag="-pthread"
1091 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1092 threadsafe_flag="-D_THREAD_SAFE"
1093 thread_lib="-pthread"
1094 fi
1095 fi
1096 libs_save_old=$LIBS
1097 if test -n "$threadsafe_flag"; then
1098 cflags_save=$CFLAGS
1099 CFLAGS="$CFLAGS $threadsafe_flag"
1100 LIBS="$LIBS $thread_lib"
1101 AC_TRY_LINK(,[ ],
1102 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1103 AC_MSG_RESULT(no); LIBS=$libs_save_old
1104 )
1105 CFLAGS=$cflags_save
1106 else
1107 AC_MSG_RESULT(no)
1108 fi
1109
1110 dnl check that compiling a simple program still works with the flags
1111 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001112 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001113 cflags_save=$CFLAGS
1114 libs_save=$LIBS
1115 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1116 LIBS="$LIBS $PYTHON3_LIBS"
1117 AC_TRY_LINK(,[ ],
1118 AC_MSG_RESULT(yes); python3_ok=yes,
1119 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1120 CFLAGS=$cflags_save
1121 LIBS=$libs_save
1122 if test "$python3_ok" = yes; then
1123 AC_DEFINE(FEAT_PYTHON3)
1124 else
1125 LIBS=$libs_save_old
1126 PYTHON3_SRC=
1127 PYTHON3_OBJ=
1128 PYTHON3_LIBS=
1129 PYTHON3_CFLAGS=
1130 fi
1131 fi
1132 fi
1133fi
1134
1135AC_SUBST(PYTHON3_CONFDIR)
1136AC_SUBST(PYTHON3_LIBS)
1137AC_SUBST(PYTHON3_CFLAGS)
1138AC_SUBST(PYTHON3_SRC)
1139AC_SUBST(PYTHON3_OBJ)
1140
1141dnl if python2.x and python3.x are enabled one can only link in code
1142dnl with dlopen(), dlsym(), dlclose()
1143if test "$python_ok" = yes && test "$python3_ok" = yes; then
1144 AC_DEFINE(DYNAMIC_PYTHON)
1145 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001146 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001147 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001148 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001149 ldflags_save=$LDFLAGS
1150 LDFLAGS="$LDFLAGS -ldl"
1151 AC_RUN_IFELSE([
1152 #include <dlfcn.h>
1153 /* If this program fails, then RTLD_GLOBAL is needed.
1154 * RTLD_GLOBAL will be used and then it is not possible to
1155 * have both python versions enabled in the same vim instance.
1156 * Only the first pyhton version used will be switched on.
1157 */
1158
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001159 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001160 {
1161 int needed = 0;
1162 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1163 if (pylib != 0)
1164 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001165 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001166 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1167 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1168 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001169 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001170 (*init)();
1171 needed = (*simple)("import termios") == -1;
1172 (*final)();
1173 dlclose(pylib);
1174 }
1175 return !needed;
1176 }
1177
1178 int main(int argc, char** argv)
1179 {
1180 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001181 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001182 not_needed = 1;
1183 return !not_needed;
1184 }],
1185 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001186
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001187 CFLAGS=$cflags_save
1188 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001189
1190 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1191 cflags_save=$CFLAGS
1192 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1193 ldflags_save=$LDFLAGS
1194 LDFLAGS="$LDFLAGS -ldl"
1195 AC_RUN_IFELSE([
1196 #include <dlfcn.h>
1197 #include <wchar.h>
1198 /* If this program fails, then RTLD_GLOBAL is needed.
1199 * RTLD_GLOBAL will be used and then it is not possible to
1200 * have both python versions enabled in the same vim instance.
1201 * Only the first pyhton version used will be switched on.
1202 */
1203
1204 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1205 {
1206 int needed = 0;
1207 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1208 if (pylib != 0)
1209 {
1210 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1211 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1212 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1213 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1214 (*pfx)(prefix);
1215 (*init)();
1216 needed = (*simple)("import termios") == -1;
1217 (*final)();
1218 dlclose(pylib);
1219 }
1220 return !needed;
1221 }
1222
1223 int main(int argc, char** argv)
1224 {
1225 int not_needed = 0;
1226 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1227 not_needed = 1;
1228 return !not_needed;
1229 }],
1230 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1231
1232 CFLAGS=$cflags_save
1233 LDFLAGS=$ldflags_save
1234
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235 PYTHON_SRC="if_python.c"
1236 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001237 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001238 PYTHON_LIBS=
1239 PYTHON3_SRC="if_python3.c"
1240 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001241 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001242 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001243elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1244 AC_DEFINE(DYNAMIC_PYTHON)
1245 PYTHON_SRC="if_python.c"
1246 PYTHON_OBJ="objects/if_python.o"
1247 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1248 PYTHON_LIBS=
1249elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1250 AC_DEFINE(DYNAMIC_PYTHON3)
1251 PYTHON3_SRC="if_python3.c"
1252 PYTHON3_OBJ="objects/if_python3.o"
1253 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1254 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001255fi
1256
Bram Moolenaar071d4272004-06-13 20:20:40 +00001257AC_MSG_CHECKING(--enable-tclinterp argument)
1258AC_ARG_ENABLE(tclinterp,
1259 [ --enable-tclinterp Include Tcl interpreter.], ,
1260 [enable_tclinterp="no"])
1261AC_MSG_RESULT($enable_tclinterp)
1262
1263if test "$enable_tclinterp" = "yes"; then
1264
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001265 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001266 AC_MSG_CHECKING(--with-tclsh argument)
1267 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1268 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001269 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001270 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1271 AC_SUBST(vi_cv_path_tcl)
1272
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001273 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1274 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1275 tclsh_name="tclsh8.4"
1276 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1277 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001278 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001279 tclsh_name="tclsh8.2"
1280 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1281 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001282 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1283 tclsh_name="tclsh8.0"
1284 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1285 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001286 dnl still didn't find it, try without version number
1287 if test "X$vi_cv_path_tcl" = "X"; then
1288 tclsh_name="tclsh"
1289 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1290 fi
1291 if test "X$vi_cv_path_tcl" != "X"; then
1292 AC_MSG_CHECKING(Tcl version)
1293 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1294 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1295 AC_MSG_RESULT($tclver - OK);
1296 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 -`
1297
1298 AC_MSG_CHECKING(for location of Tcl include)
1299 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001300 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 +00001301 else
1302 dnl For Mac OS X 10.3, use the OS-provided framework location
1303 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1304 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001305 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001306 for try in $tclinc; do
1307 if test -f "$try/tcl.h"; then
1308 AC_MSG_RESULT($try/tcl.h)
1309 TCL_INC=$try
1310 break
1311 fi
1312 done
1313 if test -z "$TCL_INC"; then
1314 AC_MSG_RESULT(<not found>)
1315 SKIP_TCL=YES
1316 fi
1317 if test -z "$SKIP_TCL"; then
1318 AC_MSG_CHECKING(for location of tclConfig.sh script)
1319 if test "x$MACOSX" != "xyes"; then
1320 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001321 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001322 else
1323 dnl For Mac OS X 10.3, use the OS-provided framework location
1324 tclcnf="/System/Library/Frameworks/Tcl.framework"
1325 fi
1326 for try in $tclcnf; do
1327 if test -f $try/tclConfig.sh; then
1328 AC_MSG_RESULT($try/tclConfig.sh)
1329 . $try/tclConfig.sh
1330 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1331 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1332 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001333 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001334 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 +00001335 break
1336 fi
1337 done
1338 if test -z "$TCL_LIBS"; then
1339 AC_MSG_RESULT(<not found>)
1340 AC_MSG_CHECKING(for Tcl library by myself)
1341 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001342 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001343 for ext in .so .a ; do
1344 for ver in "" $tclver ; do
1345 for try in $tcllib ; do
1346 trylib=tcl$ver$ext
1347 if test -f $try/lib$trylib ; then
1348 AC_MSG_RESULT($try/lib$trylib)
1349 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1350 if test "`(uname) 2>/dev/null`" = SunOS &&
1351 uname -r | grep '^5' >/dev/null; then
1352 TCL_LIBS="$TCL_LIBS -R $try"
1353 fi
1354 break 3
1355 fi
1356 done
1357 done
1358 done
1359 if test -z "$TCL_LIBS"; then
1360 AC_MSG_RESULT(<not found>)
1361 SKIP_TCL=YES
1362 fi
1363 fi
1364 if test -z "$SKIP_TCL"; then
1365 AC_DEFINE(FEAT_TCL)
1366 TCL_SRC=if_tcl.c
1367 TCL_OBJ=objects/if_tcl.o
1368 TCL_PRO=if_tcl.pro
1369 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1370 fi
1371 fi
1372 else
1373 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1374 fi
1375 fi
1376fi
1377AC_SUBST(TCL_SRC)
1378AC_SUBST(TCL_OBJ)
1379AC_SUBST(TCL_PRO)
1380AC_SUBST(TCL_CFLAGS)
1381AC_SUBST(TCL_LIBS)
1382
1383AC_MSG_CHECKING(--enable-rubyinterp argument)
1384AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001385 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 [enable_rubyinterp="no"])
1387AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001388if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001389 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001390 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001391 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1392 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1393 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001394 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001395 if test "X$vi_cv_path_ruby" != "X"; then
1396 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001397 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 +00001398 AC_MSG_RESULT(OK)
1399 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001400 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001401 if test "X$rubyhdrdir" != "X"; then
1402 AC_MSG_RESULT($rubyhdrdir)
1403 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001404 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1405 if test -d "$rubyhdrdir/$rubyarch"; then
1406 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1407 fi
1408 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1409 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001410 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1411 if test "X$rubylibs" != "X"; then
1412 RUBY_LIBS="$rubylibs"
1413 fi
1414 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001415 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1416 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1417 if test -f "$rubylibdir/$librubya"; then
1418 librubyarg="$librubyarg"
1419 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1420 elif test "$librubyarg" = "libruby.a"; then
1421 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1422 librubyarg="-lruby"
1423 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001424 fi
1425
1426 if test "X$librubyarg" != "X"; then
1427 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1428 fi
1429 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1430 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001431 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1432 dnl be included if requested by passing --with-mac-arch to
1433 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001434 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001435 if test "X$rubyldflags" != "X"; then
1436 LDFLAGS="$rubyldflags $LDFLAGS"
1437 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001438 fi
1439 RUBY_SRC="if_ruby.c"
1440 RUBY_OBJ="objects/if_ruby.o"
1441 RUBY_PRO="if_ruby.pro"
1442 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001443 if test "$enable_rubyinterp" = "dynamic"; then
1444 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1445 AC_DEFINE(DYNAMIC_RUBY)
1446 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1447 RUBY_LIBS=
1448 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001449 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001450 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001451 fi
1452 else
1453 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1454 fi
1455 fi
1456fi
1457AC_SUBST(RUBY_SRC)
1458AC_SUBST(RUBY_OBJ)
1459AC_SUBST(RUBY_PRO)
1460AC_SUBST(RUBY_CFLAGS)
1461AC_SUBST(RUBY_LIBS)
1462
1463AC_MSG_CHECKING(--enable-cscope argument)
1464AC_ARG_ENABLE(cscope,
1465 [ --enable-cscope Include cscope interface.], ,
1466 [enable_cscope="no"])
1467AC_MSG_RESULT($enable_cscope)
1468if test "$enable_cscope" = "yes"; then
1469 AC_DEFINE(FEAT_CSCOPE)
1470fi
1471
1472AC_MSG_CHECKING(--enable-workshop argument)
1473AC_ARG_ENABLE(workshop,
1474 [ --enable-workshop Include Sun Visual Workshop support.], ,
1475 [enable_workshop="no"])
1476AC_MSG_RESULT($enable_workshop)
1477if test "$enable_workshop" = "yes"; then
1478 AC_DEFINE(FEAT_SUN_WORKSHOP)
1479 WORKSHOP_SRC="workshop.c integration.c"
1480 AC_SUBST(WORKSHOP_SRC)
1481 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1482 AC_SUBST(WORKSHOP_OBJ)
1483 if test "${enable_gui-xxx}" = xxx; then
1484 enable_gui=motif
1485 fi
1486fi
1487
1488AC_MSG_CHECKING(--disable-netbeans argument)
1489AC_ARG_ENABLE(netbeans,
1490 [ --disable-netbeans Disable NetBeans integration support.],
1491 , [enable_netbeans="yes"])
1492if test "$enable_netbeans" = "yes"; then
1493 AC_MSG_RESULT(no)
1494 dnl On Solaris we need the socket and nsl library.
1495 AC_CHECK_LIB(socket, socket)
1496 AC_CHECK_LIB(nsl, gethostbyname)
1497 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1498 AC_TRY_LINK([
1499#include <stdio.h>
1500#include <stdlib.h>
1501#include <stdarg.h>
1502#include <fcntl.h>
1503#include <netdb.h>
1504#include <netinet/in.h>
1505#include <errno.h>
1506#include <sys/types.h>
1507#include <sys/socket.h>
1508 /* Check bitfields */
1509 struct nbbuf {
1510 unsigned int initDone:1;
1511 ushort signmaplen;
1512 };
1513 ], [
1514 /* Check creating a socket. */
1515 struct sockaddr_in server;
1516 (void)socket(AF_INET, SOCK_STREAM, 0);
1517 (void)htons(100);
1518 (void)gethostbyname("microsoft.com");
1519 if (errno == ECONNREFUSED)
1520 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1521 ],
1522 AC_MSG_RESULT(yes),
1523 AC_MSG_RESULT(no); enable_netbeans="no")
1524else
1525 AC_MSG_RESULT(yes)
1526fi
1527if test "$enable_netbeans" = "yes"; then
1528 AC_DEFINE(FEAT_NETBEANS_INTG)
1529 NETBEANS_SRC="netbeans.c"
1530 AC_SUBST(NETBEANS_SRC)
1531 NETBEANS_OBJ="objects/netbeans.o"
1532 AC_SUBST(NETBEANS_OBJ)
1533fi
1534
1535AC_MSG_CHECKING(--enable-sniff argument)
1536AC_ARG_ENABLE(sniff,
1537 [ --enable-sniff Include Sniff interface.], ,
1538 [enable_sniff="no"])
1539AC_MSG_RESULT($enable_sniff)
1540if test "$enable_sniff" = "yes"; then
1541 AC_DEFINE(FEAT_SNIFF)
1542 SNIFF_SRC="if_sniff.c"
1543 AC_SUBST(SNIFF_SRC)
1544 SNIFF_OBJ="objects/if_sniff.o"
1545 AC_SUBST(SNIFF_OBJ)
1546fi
1547
1548AC_MSG_CHECKING(--enable-multibyte argument)
1549AC_ARG_ENABLE(multibyte,
1550 [ --enable-multibyte Include multibyte editing support.], ,
1551 [enable_multibyte="no"])
1552AC_MSG_RESULT($enable_multibyte)
1553if test "$enable_multibyte" = "yes"; then
1554 AC_DEFINE(FEAT_MBYTE)
1555fi
1556
1557AC_MSG_CHECKING(--enable-hangulinput argument)
1558AC_ARG_ENABLE(hangulinput,
1559 [ --enable-hangulinput Include Hangul input support.], ,
1560 [enable_hangulinput="no"])
1561AC_MSG_RESULT($enable_hangulinput)
1562
1563AC_MSG_CHECKING(--enable-xim argument)
1564AC_ARG_ENABLE(xim,
1565 [ --enable-xim Include XIM input support.],
1566 AC_MSG_RESULT($enable_xim),
1567 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001568
1569AC_MSG_CHECKING(--enable-fontset argument)
1570AC_ARG_ENABLE(fontset,
1571 [ --enable-fontset Include X fontset output support.], ,
1572 [enable_fontset="no"])
1573AC_MSG_RESULT($enable_fontset)
1574dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1575
1576test -z "$with_x" && with_x=yes
1577test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1578if test "$with_x" = no; then
1579 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1580else
1581 dnl Do this check early, so that its failure can override user requests.
1582
1583 AC_PATH_PROG(xmkmfpath, xmkmf)
1584
1585 AC_PATH_XTRA
1586
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001587 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001588 dnl be compiled with a special option.
1589 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001590 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001591 CFLAGS="$CFLAGS -W c,dll"
1592 LDFLAGS="$LDFLAGS -W l,dll"
1593 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1594 fi
1595
1596 dnl On my HPUX system the X include dir is found, but the lib dir not.
1597 dnl This is a desparate try to fix this.
1598
1599 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1600 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1601 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1602 X_LIBS="$X_LIBS -L$x_libraries"
1603 if test "`(uname) 2>/dev/null`" = SunOS &&
1604 uname -r | grep '^5' >/dev/null; then
1605 X_LIBS="$X_LIBS -R $x_libraries"
1606 fi
1607 fi
1608
1609 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1610 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1611 AC_MSG_RESULT(Corrected X includes to $x_includes)
1612 X_CFLAGS="$X_CFLAGS -I$x_includes"
1613 fi
1614
1615 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1616 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1617 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1618 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1619 dnl Same for "-R/usr/lib ".
1620 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1621
1622
1623 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001624 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1625 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001626 AC_MSG_CHECKING(if X11 header files can be found)
1627 cflags_save=$CFLAGS
1628 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001629 AC_TRY_COMPILE([#include <X11/Xlib.h>
1630#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001631 AC_MSG_RESULT(yes),
1632 AC_MSG_RESULT(no); no_x=yes)
1633 CFLAGS=$cflags_save
1634
1635 if test "${no_x-no}" = yes; then
1636 with_x=no
1637 else
1638 AC_DEFINE(HAVE_X11)
1639 X_LIB="-lXt -lX11";
1640 AC_SUBST(X_LIB)
1641
1642 ac_save_LDFLAGS="$LDFLAGS"
1643 LDFLAGS="-L$x_libraries $LDFLAGS"
1644
1645 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1646 dnl For HP-UX 10.20 it must be before -lSM -lICE
1647 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1648 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1649
1650 dnl Some systems need -lnsl -lsocket when testing for ICE.
1651 dnl The check above doesn't do this, try here (again). Also needed to get
1652 dnl them after Xdmcp. link.sh will remove them when not needed.
1653 dnl Check for other function than above to avoid the cached value
1654 AC_CHECK_LIB(ICE, IceOpenConnection,
1655 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1656
1657 dnl Check for -lXpm (needed for some versions of Motif)
1658 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1659 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1660 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1661
1662 dnl Check that the X11 header files don't use implicit declarations
1663 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1664 cflags_save=$CFLAGS
1665 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1666 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1667 AC_MSG_RESULT(no),
1668 CFLAGS="$CFLAGS -Wno-implicit-int"
1669 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1670 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1671 AC_MSG_RESULT(test failed)
1672 )
1673 )
1674 CFLAGS=$cflags_save
1675
1676 LDFLAGS="$ac_save_LDFLAGS"
1677
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001678 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1679 AC_CACHE_VAL(ac_cv_small_wchar_t,
1680 [AC_TRY_RUN([
1681#include <X11/Xlib.h>
1682#if STDC_HEADERS
1683# include <stdlib.h>
1684# include <stddef.h>
1685#endif
1686 main()
1687 {
1688 if (sizeof(wchar_t) <= 2)
1689 exit(1);
1690 exit(0);
1691 }],
1692 ac_cv_small_wchar_t="no",
1693 ac_cv_small_wchar_t="yes",
1694 AC_MSG_ERROR(failed to compile test program))])
1695 AC_MSG_RESULT($ac_cv_small_wchar_t)
1696 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1697 AC_DEFINE(SMALL_WCHAR_T)
1698 fi
1699
Bram Moolenaar071d4272004-06-13 20:20:40 +00001700 fi
1701fi
1702
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001703test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001704
1705AC_MSG_CHECKING(--enable-gui argument)
1706AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001707 [ --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 +00001708
1709dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1710dnl Do not use character classes for portability with old tools.
1711enable_gui_canon=`echo "_$enable_gui" | \
1712 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1713
1714dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715SKIP_GTK2=YES
1716SKIP_GNOME=YES
1717SKIP_MOTIF=YES
1718SKIP_ATHENA=YES
1719SKIP_NEXTAW=YES
1720SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001721SKIP_CARBON=YES
1722GUITYPE=NONE
1723
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001724if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001725 SKIP_PHOTON=
1726 case "$enable_gui_canon" in
1727 no) AC_MSG_RESULT(no GUI support)
1728 SKIP_PHOTON=YES ;;
1729 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1730 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1731 photon) AC_MSG_RESULT(Photon GUI support) ;;
1732 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1733 SKIP_PHOTON=YES ;;
1734 esac
1735
1736elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1737 SKIP_CARBON=
1738 case "$enable_gui_canon" in
1739 no) AC_MSG_RESULT(no GUI support)
1740 SKIP_CARBON=YES ;;
1741 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001742 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1743 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001744 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1745 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1746 SKIP_CARBON=YES ;;
1747 esac
1748
1749else
1750
Bram Moolenaar071d4272004-06-13 20:20:40 +00001751 case "$enable_gui_canon" in
1752 no|none) AC_MSG_RESULT(no GUI support) ;;
1753 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001754 SKIP_GTK2=
1755 SKIP_GNOME=
1756 SKIP_MOTIF=
1757 SKIP_ATHENA=
1758 SKIP_NEXTAW=
1759 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001760 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001761 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001762 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1763 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001764 SKIP_GTK2=;;
1765 motif) AC_MSG_RESULT(Motif GUI support)
1766 SKIP_MOTIF=;;
1767 athena) AC_MSG_RESULT(Athena GUI support)
1768 SKIP_ATHENA=;;
1769 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1770 SKIP_NEXTAW=;;
1771 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1772 esac
1773
1774fi
1775
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1777 -a "$enable_gui_canon" != "gnome2"; then
1778 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1779 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001780 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001781 , enable_gtk2_check="yes")
1782 AC_MSG_RESULT($enable_gtk2_check)
1783 if test "x$enable_gtk2_check" = "xno"; then
1784 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001785 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001786 fi
1787fi
1788
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001789if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001790 AC_MSG_CHECKING(whether or not to look for GNOME)
1791 AC_ARG_ENABLE(gnome-check,
1792 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1793 , enable_gnome_check="no")
1794 AC_MSG_RESULT($enable_gnome_check)
1795 if test "x$enable_gnome_check" = "xno"; then
1796 SKIP_GNOME=YES
1797 fi
1798fi
1799
1800if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1801 AC_MSG_CHECKING(whether or not to look for Motif)
1802 AC_ARG_ENABLE(motif-check,
1803 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1804 , enable_motif_check="yes")
1805 AC_MSG_RESULT($enable_motif_check)
1806 if test "x$enable_motif_check" = "xno"; then
1807 SKIP_MOTIF=YES
1808 fi
1809fi
1810
1811if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1812 AC_MSG_CHECKING(whether or not to look for Athena)
1813 AC_ARG_ENABLE(athena-check,
1814 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1815 , enable_athena_check="yes")
1816 AC_MSG_RESULT($enable_athena_check)
1817 if test "x$enable_athena_check" = "xno"; then
1818 SKIP_ATHENA=YES
1819 fi
1820fi
1821
1822if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1823 AC_MSG_CHECKING(whether or not to look for neXtaw)
1824 AC_ARG_ENABLE(nextaw-check,
1825 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1826 , enable_nextaw_check="yes")
1827 AC_MSG_RESULT($enable_nextaw_check);
1828 if test "x$enable_nextaw_check" = "xno"; then
1829 SKIP_NEXTAW=YES
1830 fi
1831fi
1832
1833if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1834 AC_MSG_CHECKING(whether or not to look for Carbon)
1835 AC_ARG_ENABLE(carbon-check,
1836 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1837 , enable_carbon_check="yes")
1838 AC_MSG_RESULT($enable_carbon_check);
1839 if test "x$enable_carbon_check" = "xno"; then
1840 SKIP_CARBON=YES
1841 fi
1842fi
1843
Bram Moolenaar843ee412004-06-30 16:16:41 +00001844
Bram Moolenaar071d4272004-06-13 20:20:40 +00001845if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1846 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001847 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001848 AC_MSG_RESULT(yes);
1849 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001850 if test "$VIMNAME" = "vim"; then
1851 VIMNAME=Vim
1852 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001853
Bram Moolenaar164fca32010-07-14 13:58:07 +02001854 if test "x$MACARCH" = "xboth"; then
1855 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1856 else
1857 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1858 fi
1859
Bram Moolenaar14716812006-05-04 21:54:08 +00001860 dnl Default install directory is not /usr/local
1861 if test x$prefix = xNONE; then
1862 prefix=/Applications
1863 fi
1864
1865 dnl Sorry for the hard coded default
1866 datadir='${prefix}/Vim.app/Contents/Resources'
1867
Bram Moolenaar071d4272004-06-13 20:20:40 +00001868 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001869 SKIP_GTK2=YES;
1870 SKIP_GNOME=YES;
1871 SKIP_MOTIF=YES;
1872 SKIP_ATHENA=YES;
1873 SKIP_NEXTAW=YES;
1874 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001875 SKIP_CARBON=YES
1876fi
1877
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001879dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001880dnl
1881dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001882dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883dnl
1884AC_DEFUN(AM_PATH_GTK,
1885[
1886 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1887 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001888 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001889 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1890 no_gtk=""
1891 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1892 && $PKG_CONFIG --exists gtk+-2.0; then
1893 {
1894 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1895 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1896 dnl something like that.
1897 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001898 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1900 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1901 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1902 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1903 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1904 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1905 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1906 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001907 else
1908 no_gtk=yes
1909 fi
1910
1911 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1912 {
1913 ac_save_CFLAGS="$CFLAGS"
1914 ac_save_LIBS="$LIBS"
1915 CFLAGS="$CFLAGS $GTK_CFLAGS"
1916 LIBS="$LIBS $GTK_LIBS"
1917
1918 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001919 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001920 dnl
1921 rm -f conf.gtktest
1922 AC_TRY_RUN([
1923#include <gtk/gtk.h>
1924#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001925#if STDC_HEADERS
1926# include <stdlib.h>
1927# include <stddef.h>
1928#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001929
1930int
1931main ()
1932{
1933int major, minor, micro;
1934char *tmp_version;
1935
1936system ("touch conf.gtktest");
1937
1938/* HP/UX 9 (%@#!) writes to sscanf strings */
1939tmp_version = g_strdup("$min_gtk_version");
1940if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1941 printf("%s, bad version string\n", "$min_gtk_version");
1942 exit(1);
1943 }
1944
1945if ((gtk_major_version > major) ||
1946 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1947 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1948 (gtk_micro_version >= micro)))
1949{
1950 return 0;
1951}
1952return 1;
1953}
1954],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1955 CFLAGS="$ac_save_CFLAGS"
1956 LIBS="$ac_save_LIBS"
1957 }
1958 fi
1959 if test "x$no_gtk" = x ; then
1960 if test "x$enable_gtktest" = "xyes"; then
1961 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1962 else
1963 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1964 fi
1965 ifelse([$2], , :, [$2])
1966 else
1967 {
1968 AC_MSG_RESULT(no)
1969 GTK_CFLAGS=""
1970 GTK_LIBS=""
1971 ifelse([$3], , :, [$3])
1972 }
1973 fi
1974 }
1975 else
1976 GTK_CFLAGS=""
1977 GTK_LIBS=""
1978 ifelse([$3], , :, [$3])
1979 fi
1980 AC_SUBST(GTK_CFLAGS)
1981 AC_SUBST(GTK_LIBS)
1982 rm -f conf.gtktest
1983])
1984
1985dnl ---------------------------------------------------------------------------
1986dnl gnome
1987dnl ---------------------------------------------------------------------------
1988AC_DEFUN([GNOME_INIT_HOOK],
1989[
1990 AC_SUBST(GNOME_LIBS)
1991 AC_SUBST(GNOME_LIBDIR)
1992 AC_SUBST(GNOME_INCLUDEDIR)
1993
1994 AC_ARG_WITH(gnome-includes,
1995 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1996 [CFLAGS="$CFLAGS -I$withval"]
1997 )
1998
1999 AC_ARG_WITH(gnome-libs,
2000 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2001 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2002 )
2003
2004 AC_ARG_WITH(gnome,
2005 [ --with-gnome Specify prefix for GNOME files],
2006 if test x$withval = xyes; then
2007 want_gnome=yes
2008 ifelse([$1], [], :, [$1])
2009 else
2010 if test "x$withval" = xno; then
2011 want_gnome=no
2012 else
2013 want_gnome=yes
2014 LDFLAGS="$LDFLAGS -L$withval/lib"
2015 CFLAGS="$CFLAGS -I$withval/include"
2016 gnome_prefix=$withval/lib
2017 fi
2018 fi,
2019 want_gnome=yes)
2020
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002021 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002022 {
2023 AC_MSG_CHECKING(for libgnomeui-2.0)
2024 if $PKG_CONFIG --exists libgnomeui-2.0; then
2025 AC_MSG_RESULT(yes)
2026 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2027 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2028 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002029
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002030 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2031 dnl This might not be the right way but it works for me...
2032 AC_MSG_CHECKING(for FreeBSD)
2033 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2034 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002035 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002036 GNOME_LIBS="$GNOME_LIBS -pthread"
2037 else
2038 AC_MSG_RESULT(no)
2039 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002040 $1
2041 else
2042 AC_MSG_RESULT(not found)
2043 if test "x$2" = xfail; then
2044 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2045 fi
2046 fi
2047 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002048 fi
2049])
2050
2051AC_DEFUN([GNOME_INIT],[
2052 GNOME_INIT_HOOK([],fail)
2053])
2054
2055
2056dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002057dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002058dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002059if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002060
2061 AC_MSG_CHECKING(--disable-gtktest argument)
2062 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2063 , enable_gtktest=yes)
2064 if test "x$enable_gtktest" = "xyes" ; then
2065 AC_MSG_RESULT(gtk test enabled)
2066 else
2067 AC_MSG_RESULT(gtk test disabled)
2068 fi
2069
Bram Moolenaar071d4272004-06-13 20:20:40 +00002070 if test "X$PKG_CONFIG" = "X"; then
2071 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2072 fi
2073
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002074 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002075 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2076 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002077 AM_PATH_GTK(2.2.0,
2078 [GUI_LIB_LOC="$GTK_LIBDIR"
2079 GTK_LIBNAME="$GTK_LIBS"
2080 GUI_INC_LOC="$GTK_CFLAGS"], )
2081 if test "x$GTK_CFLAGS" != "x"; then
2082 SKIP_ATHENA=YES
2083 SKIP_NEXTAW=YES
2084 SKIP_MOTIF=YES
2085 GUITYPE=GTK
2086 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002087 fi
2088 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002089 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002090 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2091 || test "0$gtk_minor_version" -ge 2; then
2092 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2093 fi
2094 dnl
2095 dnl if GTK exists, then check for GNOME.
2096 dnl
2097 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002098 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002099 GNOME_INIT_HOOK([have_gnome=yes])
2100 if test "x$have_gnome" = xyes ; then
2101 AC_DEFINE(FEAT_GUI_GNOME)
2102 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2103 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002104 fi
2105 }
2106 fi
2107 fi
2108fi
2109
2110dnl Check for Motif include files location.
2111dnl The LAST one found is used, this makes the highest version to be used,
2112dnl e.g. when Motif1.2 and Motif2.0 are both present.
2113
2114if test -z "$SKIP_MOTIF"; then
2115 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"
2116 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2117 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2118
2119 AC_MSG_CHECKING(for location of Motif GUI includes)
2120 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2121 GUI_INC_LOC=
2122 for try in $gui_includes; do
2123 if test -f "$try/Xm/Xm.h"; then
2124 GUI_INC_LOC=$try
2125 fi
2126 done
2127 if test -n "$GUI_INC_LOC"; then
2128 if test "$GUI_INC_LOC" = /usr/include; then
2129 GUI_INC_LOC=
2130 AC_MSG_RESULT(in default path)
2131 else
2132 AC_MSG_RESULT($GUI_INC_LOC)
2133 fi
2134 else
2135 AC_MSG_RESULT(<not found>)
2136 SKIP_MOTIF=YES
2137 fi
2138fi
2139
2140dnl Check for Motif library files location. In the same order as the include
2141dnl files, to avoid a mixup if several versions are present
2142
2143if test -z "$SKIP_MOTIF"; then
2144 AC_MSG_CHECKING(--with-motif-lib argument)
2145 AC_ARG_WITH(motif-lib,
2146 [ --with-motif-lib=STRING Library for Motif ],
2147 [ MOTIF_LIBNAME="${withval}" ] )
2148
2149 if test -n "$MOTIF_LIBNAME"; then
2150 AC_MSG_RESULT($MOTIF_LIBNAME)
2151 GUI_LIB_LOC=
2152 else
2153 AC_MSG_RESULT(no)
2154
2155 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2156 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2157
2158 AC_MSG_CHECKING(for location of Motif GUI libs)
2159 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"
2160 GUI_LIB_LOC=
2161 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002162 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002163 if test -f "$libtry"; then
2164 GUI_LIB_LOC=$try
2165 fi
2166 done
2167 done
2168 if test -n "$GUI_LIB_LOC"; then
2169 dnl Remove /usr/lib, it causes trouble on some systems
2170 if test "$GUI_LIB_LOC" = /usr/lib; then
2171 GUI_LIB_LOC=
2172 AC_MSG_RESULT(in default path)
2173 else
2174 if test -n "$GUI_LIB_LOC"; then
2175 AC_MSG_RESULT($GUI_LIB_LOC)
2176 if test "`(uname) 2>/dev/null`" = SunOS &&
2177 uname -r | grep '^5' >/dev/null; then
2178 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2179 fi
2180 fi
2181 fi
2182 MOTIF_LIBNAME=-lXm
2183 else
2184 AC_MSG_RESULT(<not found>)
2185 SKIP_MOTIF=YES
2186 fi
2187 fi
2188fi
2189
2190if test -z "$SKIP_MOTIF"; then
2191 SKIP_ATHENA=YES
2192 SKIP_NEXTAW=YES
2193 GUITYPE=MOTIF
2194 AC_SUBST(MOTIF_LIBNAME)
2195fi
2196
2197dnl Check if the Athena files can be found
2198
2199GUI_X_LIBS=
2200
2201if test -z "$SKIP_ATHENA"; then
2202 AC_MSG_CHECKING(if Athena header files can be found)
2203 cflags_save=$CFLAGS
2204 CFLAGS="$CFLAGS $X_CFLAGS"
2205 AC_TRY_COMPILE([
2206#include <X11/Intrinsic.h>
2207#include <X11/Xaw/Paned.h>], ,
2208 AC_MSG_RESULT(yes),
2209 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2210 CFLAGS=$cflags_save
2211fi
2212
2213if test -z "$SKIP_ATHENA"; then
2214 GUITYPE=ATHENA
2215fi
2216
2217if test -z "$SKIP_NEXTAW"; then
2218 AC_MSG_CHECKING(if neXtaw header files can be found)
2219 cflags_save=$CFLAGS
2220 CFLAGS="$CFLAGS $X_CFLAGS"
2221 AC_TRY_COMPILE([
2222#include <X11/Intrinsic.h>
2223#include <X11/neXtaw/Paned.h>], ,
2224 AC_MSG_RESULT(yes),
2225 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2226 CFLAGS=$cflags_save
2227fi
2228
2229if test -z "$SKIP_NEXTAW"; then
2230 GUITYPE=NEXTAW
2231fi
2232
2233if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2234 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2235 dnl Avoid adding it when it twice
2236 if test -n "$GUI_INC_LOC"; then
2237 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2238 fi
2239 if test -n "$GUI_LIB_LOC"; then
2240 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2241 fi
2242
2243 dnl Check for -lXext and then for -lXmu
2244 ldflags_save=$LDFLAGS
2245 LDFLAGS="$X_LIBS $LDFLAGS"
2246 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2247 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2248 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2249 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2250 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2251 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2252 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2253 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2254 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2255 if test -z "$SKIP_MOTIF"; then
2256 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2257 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2258 fi
2259 LDFLAGS=$ldflags_save
2260
2261 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2262 AC_MSG_CHECKING(for extra X11 defines)
2263 NARROW_PROTO=
2264 rm -fr conftestdir
2265 if mkdir conftestdir; then
2266 cd conftestdir
2267 cat > Imakefile <<'EOF'
2268acfindx:
2269 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2270EOF
2271 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2272 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2273 fi
2274 cd ..
2275 rm -fr conftestdir
2276 fi
2277 if test -z "$NARROW_PROTO"; then
2278 AC_MSG_RESULT(no)
2279 else
2280 AC_MSG_RESULT($NARROW_PROTO)
2281 fi
2282 AC_SUBST(NARROW_PROTO)
2283fi
2284
2285dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2286dnl use the X11 include path
2287if test "$enable_xsmp" = "yes"; then
2288 cppflags_save=$CPPFLAGS
2289 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2290 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2291 CPPFLAGS=$cppflags_save
2292fi
2293
2294
Bram Moolenaare667c952010-07-05 22:57:59 +02002295if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002296 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2297 cppflags_save=$CPPFLAGS
2298 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2299 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2300
2301 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2302 if test ! "$enable_xim" = "no"; then
2303 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2304 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2305 AC_MSG_RESULT(yes),
2306 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2307 fi
2308 CPPFLAGS=$cppflags_save
2309
2310 dnl automatically enable XIM when hangul input isn't enabled
2311 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2312 -a "x$GUITYPE" != "xNONE" ; then
2313 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2314 enable_xim="yes"
2315 fi
2316fi
2317
2318if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2319 cppflags_save=$CPPFLAGS
2320 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002321dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2322 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2323 AC_TRY_COMPILE([
2324#include <X11/Intrinsic.h>
2325#include <X11/Xmu/Editres.h>],
2326 [int i; i = 0;],
2327 AC_MSG_RESULT(yes)
2328 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2329 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002330 CPPFLAGS=$cppflags_save
2331fi
2332
2333dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2334if test -z "$SKIP_MOTIF"; then
2335 cppflags_save=$CPPFLAGS
2336 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002337 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
Bram Moolenaarfc1421e2006-04-20 22:17:20 +00002338 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002339
2340 if test $ac_cv_header_Xm_XpmP_h = yes; then
2341 dnl Solaris uses XpmAttributes_21, very annoying.
2342 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2343 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2344 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2345 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2346 )
2347 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002348 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002349 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002350 CPPFLAGS=$cppflags_save
2351fi
2352
2353if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2354 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2355 enable_xim="no"
2356fi
2357if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2358 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2359 enable_fontset="no"
2360fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002361if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002362 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2363 enable_fontset="no"
2364fi
2365
Bram Moolenaar071d4272004-06-13 20:20:40 +00002366if test -z "$SKIP_PHOTON"; then
2367 GUITYPE=PHOTONGUI
2368fi
2369
2370AC_SUBST(GUI_INC_LOC)
2371AC_SUBST(GUI_LIB_LOC)
2372AC_SUBST(GUITYPE)
2373AC_SUBST(GUI_X_LIBS)
2374
2375if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2376 AC_MSG_ERROR([cannot use workshop without Motif])
2377fi
2378
2379dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2380if test "$enable_xim" = "yes"; then
2381 AC_DEFINE(FEAT_XIM)
2382fi
2383if test "$enable_fontset" = "yes"; then
2384 AC_DEFINE(FEAT_XFONTSET)
2385fi
2386
2387
2388dnl ---------------------------------------------------------------------------
2389dnl end of GUI-checking
2390dnl ---------------------------------------------------------------------------
2391
2392
2393dnl Only really enable hangul input when GUI and XFONTSET are available
2394if test "$enable_hangulinput" = "yes"; then
2395 if test "x$GUITYPE" = "xNONE"; then
2396 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2397 enable_hangulinput=no
2398 else
2399 AC_DEFINE(FEAT_HANGULIN)
2400 HANGULIN_SRC=hangulin.c
2401 AC_SUBST(HANGULIN_SRC)
2402 HANGULIN_OBJ=objects/hangulin.o
2403 AC_SUBST(HANGULIN_OBJ)
2404 fi
2405fi
2406
2407dnl Checks for libraries and include files.
2408
Bram Moolenaar446cb832008-06-24 21:56:24 +00002409AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2410 [
2411 AC_RUN_IFELSE([[
2412#include "confdefs.h"
2413#include <ctype.h>
2414#if STDC_HEADERS
2415# include <stdlib.h>
2416# include <stddef.h>
2417#endif
2418main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2419 ]],[
2420 vim_cv_toupper_broken=yes
2421 ],[
2422 vim_cv_toupper_broken=no
2423 ],[
2424 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2425 ])])
2426
2427if test "x$vim_cv_toupper_broken" = "xyes" ; then
2428 AC_DEFINE(BROKEN_TOUPPER)
2429fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002430
2431AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002432AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002433 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2434 AC_MSG_RESULT(no))
2435
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002436AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2437AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2438 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2439 AC_MSG_RESULT(no))
2440
Bram Moolenaar071d4272004-06-13 20:20:40 +00002441dnl Checks for header files.
2442AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2443dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2444if test "$HAS_ELF" = 1; then
2445 AC_CHECK_LIB(elf, main)
2446fi
2447
2448AC_HEADER_DIRENT
2449
Bram Moolenaar071d4272004-06-13 20:20:40 +00002450dnl If sys/wait.h is not found it might still exist but not be POSIX
2451dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2452if test $ac_cv_header_sys_wait_h = no; then
2453 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2454 AC_TRY_COMPILE([#include <sys/wait.h>],
2455 [union wait xx, yy; xx = yy],
2456 AC_MSG_RESULT(yes)
2457 AC_DEFINE(HAVE_SYS_WAIT_H)
2458 AC_DEFINE(HAVE_UNION_WAIT),
2459 AC_MSG_RESULT(no))
2460fi
2461
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002462AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2463 sys/select.h sys/utsname.h termcap.h fcntl.h \
2464 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2465 termio.h iconv.h inttypes.h langinfo.h math.h \
2466 unistd.h stropts.h errno.h sys/resource.h \
2467 sys/systeminfo.h locale.h sys/stream.h termios.h \
2468 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2469 utime.h sys/param.h libintl.h libgen.h \
2470 util/debug.h util/msg18n.h frame.h sys/acl.h \
2471 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002472
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002473dnl sys/ptem.h depends on sys/stream.h on Solaris
2474AC_CHECK_HEADERS(sys/ptem.h, [], [],
2475[#if defined HAVE_SYS_STREAM_H
2476# include <sys/stream.h>
2477#endif])
2478
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002479dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2480AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2481[#if defined HAVE_SYS_PARAM_H
2482# include <sys/param.h>
2483#endif])
2484
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002485
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002486dnl pthread_np.h may exist but can only be used after including pthread.h
2487AC_MSG_CHECKING([for pthread_np.h])
2488AC_TRY_COMPILE([
2489#include <pthread.h>
2490#include <pthread_np.h>],
2491 [int i; i = 0;],
2492 AC_MSG_RESULT(yes)
2493 AC_DEFINE(HAVE_PTHREAD_NP_H),
2494 AC_MSG_RESULT(no))
2495
Bram Moolenaare344bea2005-09-01 20:46:49 +00002496AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002497if test "x$MACOSX" = "xyes"; then
2498 dnl The strings.h file on OS/X contains a warning and nothing useful.
2499 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2500else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002501
2502dnl Check if strings.h and string.h can both be included when defined.
2503AC_MSG_CHECKING([if strings.h can be included after string.h])
2504cppflags_save=$CPPFLAGS
2505CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2506AC_TRY_COMPILE([
2507#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2508# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2509 /* but don't do it on AIX 5.1 (Uribarri) */
2510#endif
2511#ifdef HAVE_XM_XM_H
2512# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2513#endif
2514#ifdef HAVE_STRING_H
2515# include <string.h>
2516#endif
2517#if defined(HAVE_STRINGS_H)
2518# include <strings.h>
2519#endif
2520 ], [int i; i = 0;],
2521 AC_MSG_RESULT(yes),
2522 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2523 AC_MSG_RESULT(no))
2524CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002525fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002526
2527dnl Checks for typedefs, structures, and compiler characteristics.
2528AC_PROG_GCC_TRADITIONAL
2529AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002530AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531AC_TYPE_MODE_T
2532AC_TYPE_OFF_T
2533AC_TYPE_PID_T
2534AC_TYPE_SIZE_T
2535AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002536AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002537
Bram Moolenaar071d4272004-06-13 20:20:40 +00002538AC_HEADER_TIME
2539AC_CHECK_TYPE(ino_t, long)
2540AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002541AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002542
2543AC_MSG_CHECKING(for rlim_t)
2544if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2545 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2546else
2547 AC_EGREP_CPP(dnl
2548changequote(<<,>>)dnl
2549<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2550changequote([,]),
2551 [
2552#include <sys/types.h>
2553#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002554# include <stdlib.h>
2555# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002556#endif
2557#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002558# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002559#endif
2560 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2561 AC_MSG_RESULT($ac_cv_type_rlim_t)
2562fi
2563if test $ac_cv_type_rlim_t = no; then
2564 cat >> confdefs.h <<\EOF
2565#define rlim_t unsigned long
2566EOF
2567fi
2568
2569AC_MSG_CHECKING(for stack_t)
2570if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2571 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2572else
2573 AC_EGREP_CPP(stack_t,
2574 [
2575#include <sys/types.h>
2576#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002577# include <stdlib.h>
2578# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002579#endif
2580#include <signal.h>
2581 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2582 AC_MSG_RESULT($ac_cv_type_stack_t)
2583fi
2584if test $ac_cv_type_stack_t = no; then
2585 cat >> confdefs.h <<\EOF
2586#define stack_t struct sigaltstack
2587EOF
2588fi
2589
2590dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2591AC_MSG_CHECKING(whether stack_t has an ss_base field)
2592AC_TRY_COMPILE([
2593#include <sys/types.h>
2594#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002595# include <stdlib.h>
2596# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002597#endif
2598#include <signal.h>
2599#include "confdefs.h"
2600 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2601 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2602 AC_MSG_RESULT(no))
2603
2604olibs="$LIBS"
2605AC_MSG_CHECKING(--with-tlib argument)
2606AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2607if test -n "$with_tlib"; then
2608 AC_MSG_RESULT($with_tlib)
2609 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002610 AC_MSG_CHECKING(for linking with $with_tlib library)
2611 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2612 dnl Need to check for tgetent() below.
2613 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002614else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002615 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002616 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2617 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002618 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002619 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002620 dnl Older versions of ncurses have bugs, get a new one!
2621 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002622 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002624 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2625 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002626 esac
2627 for libname in $tlibs; do
2628 AC_CHECK_LIB(${libname}, tgetent,,)
2629 if test "x$olibs" != "x$LIBS"; then
2630 dnl It's possible that a library is found but it doesn't work
2631 dnl e.g., shared library that cannot be found
2632 dnl compile and run a test program to be sure
2633 AC_TRY_RUN([
2634#ifdef HAVE_TERMCAP_H
2635# include <termcap.h>
2636#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002637#if STDC_HEADERS
2638# include <stdlib.h>
2639# include <stddef.h>
2640#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002641main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2642 res="OK", res="FAIL", res="FAIL")
2643 if test "$res" = "OK"; then
2644 break
2645 fi
2646 AC_MSG_RESULT($libname library is not usable)
2647 LIBS="$olibs"
2648 fi
2649 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002650 if test "x$olibs" = "x$LIBS"; then
2651 AC_MSG_RESULT(no terminal library found)
2652 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002653fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002654
2655if test "x$olibs" = "x$LIBS"; then
2656 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002657 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002658 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2659 AC_MSG_RESULT(yes),
2660 AC_MSG_ERROR([NOT FOUND!
2661 You need to install a terminal library; for example ncurses.
2662 Or specify the name of the library with --with-tlib.]))
2663fi
2664
Bram Moolenaar446cb832008-06-24 21:56:24 +00002665AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2666 [
2667 AC_RUN_IFELSE([[
2668#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002669#ifdef HAVE_TERMCAP_H
2670# include <termcap.h>
2671#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002672#ifdef HAVE_STRING_H
2673# include <string.h>
2674#endif
2675#if STDC_HEADERS
2676# include <stdlib.h>
2677# include <stddef.h>
2678#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002679main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002680{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2681 ]],[
2682 vim_cv_terminfo=no
2683 ],[
2684 vim_cv_terminfo=yes
2685 ],[
2686 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2687 ])
2688 ])
2689
2690if test "x$vim_cv_terminfo" = "xyes" ; then
2691 AC_DEFINE(TERMINFO)
2692fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693
2694if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002695 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2696 [
2697 AC_RUN_IFELSE([[
2698#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002699#ifdef HAVE_TERMCAP_H
2700# include <termcap.h>
2701#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002702#if STDC_HEADERS
2703# include <stdlib.h>
2704# include <stddef.h>
2705#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002706main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002707{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2708 ]],[
2709 vim_cv_tgent=zero
2710 ],[
2711 vim_cv_tgent=non-zero
2712 ],[
2713 AC_MSG_ERROR(failed to compile test program.)
2714 ])
2715 ])
2716
2717 if test "x$vim_cv_tgent" = "xzero" ; then
2718 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2719 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002720fi
2721
2722AC_MSG_CHECKING(whether termcap.h contains ospeed)
2723AC_TRY_LINK([
2724#ifdef HAVE_TERMCAP_H
2725# include <termcap.h>
2726#endif
2727 ], [ospeed = 20000],
2728 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2729 [AC_MSG_RESULT(no)
2730 AC_MSG_CHECKING(whether ospeed can be extern)
2731 AC_TRY_LINK([
2732#ifdef HAVE_TERMCAP_H
2733# include <termcap.h>
2734#endif
2735extern short ospeed;
2736 ], [ospeed = 20000],
2737 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2738 AC_MSG_RESULT(no))]
2739 )
2740
2741AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2742AC_TRY_LINK([
2743#ifdef HAVE_TERMCAP_H
2744# include <termcap.h>
2745#endif
2746 ], [if (UP == 0 && BC == 0) PC = 1],
2747 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2748 [AC_MSG_RESULT(no)
2749 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2750 AC_TRY_LINK([
2751#ifdef HAVE_TERMCAP_H
2752# include <termcap.h>
2753#endif
2754extern char *UP, *BC, PC;
2755 ], [if (UP == 0 && BC == 0) PC = 1],
2756 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2757 AC_MSG_RESULT(no))]
2758 )
2759
2760AC_MSG_CHECKING(whether tputs() uses outfuntype)
2761AC_TRY_COMPILE([
2762#ifdef HAVE_TERMCAP_H
2763# include <termcap.h>
2764#endif
2765 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2766 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2767 AC_MSG_RESULT(no))
2768
2769dnl On some SCO machines sys/select redefines struct timeval
2770AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2771AC_TRY_COMPILE([
2772#include <sys/types.h>
2773#include <sys/time.h>
2774#include <sys/select.h>], ,
2775 AC_MSG_RESULT(yes)
2776 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2777 AC_MSG_RESULT(no))
2778
2779dnl AC_DECL_SYS_SIGLIST
2780
2781dnl Checks for pty.c (copied from screen) ==========================
2782AC_MSG_CHECKING(for /dev/ptc)
2783if test -r /dev/ptc; then
2784 AC_DEFINE(HAVE_DEV_PTC)
2785 AC_MSG_RESULT(yes)
2786else
2787 AC_MSG_RESULT(no)
2788fi
2789
2790AC_MSG_CHECKING(for SVR4 ptys)
2791if test -c /dev/ptmx ; then
2792 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2793 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2794 AC_MSG_RESULT(no))
2795else
2796 AC_MSG_RESULT(no)
2797fi
2798
2799AC_MSG_CHECKING(for ptyranges)
2800if test -d /dev/ptym ; then
2801 pdir='/dev/ptym'
2802else
2803 pdir='/dev'
2804fi
2805dnl SCO uses ptyp%d
2806AC_EGREP_CPP(yes,
2807[#ifdef M_UNIX
2808 yes;
2809#endif
2810 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2811dnl if test -c /dev/ptyp19; then
2812dnl ptys=`echo /dev/ptyp??`
2813dnl else
2814dnl ptys=`echo $pdir/pty??`
2815dnl fi
2816if test "$ptys" != "$pdir/pty??" ; then
2817 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2818 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2819 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2820 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2821 AC_MSG_RESULT([$p0 / $p1])
2822else
2823 AC_MSG_RESULT([don't know])
2824fi
2825
2826dnl **** pty mode/group handling ****
2827dnl
2828dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002829rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002830AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2831 [
2832 AC_RUN_IFELSE([[
2833#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002834#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002835#if STDC_HEADERS
2836# include <stdlib.h>
2837# include <stddef.h>
2838#endif
2839#ifdef HAVE_UNISTD_H
2840#include <unistd.h>
2841#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002842#include <sys/stat.h>
2843#include <stdio.h>
2844main()
2845{
2846 struct stat sb;
2847 char *x,*ttyname();
2848 int om, m;
2849 FILE *fp;
2850
2851 if (!(x = ttyname(0))) exit(1);
2852 if (stat(x, &sb)) exit(1);
2853 om = sb.st_mode;
2854 if (om & 002) exit(0);
2855 m = system("mesg y");
2856 if (m == -1 || m == 127) exit(1);
2857 if (stat(x, &sb)) exit(1);
2858 m = sb.st_mode;
2859 if (chmod(x, om)) exit(1);
2860 if (m & 002) exit(0);
2861 if (sb.st_gid == getgid()) exit(1);
2862 if (!(fp=fopen("conftest_grp", "w")))
2863 exit(1);
2864 fprintf(fp, "%d\n", sb.st_gid);
2865 fclose(fp);
2866 exit(0);
2867}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002868 ]],[
2869 if test -f conftest_grp; then
2870 vim_cv_tty_group=`cat conftest_grp`
2871 if test "x$vim_cv_tty_mode" = "x" ; then
2872 vim_cv_tty_mode=0620
2873 fi
2874 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2875 else
2876 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002877 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002878 fi
2879 ],[
2880 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002881 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002882 ],[
2883 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2884 ])
2885 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886rm -f conftest_grp
2887
Bram Moolenaar446cb832008-06-24 21:56:24 +00002888if test "x$vim_cv_tty_group" != "xworld" ; then
2889 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2890 if test "x$vim_cv_tty_mode" = "x" ; then
2891 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)])
2892 else
2893 AC_DEFINE(PTYMODE, 0620)
2894 fi
2895fi
2896
Bram Moolenaar071d4272004-06-13 20:20:40 +00002897dnl Checks for library functions. ===================================
2898
2899AC_TYPE_SIGNAL
2900
2901dnl find out what to use at the end of a signal function
2902if test $ac_cv_type_signal = void; then
2903 AC_DEFINE(SIGRETURN, [return])
2904else
2905 AC_DEFINE(SIGRETURN, [return 0])
2906fi
2907
2908dnl check if struct sigcontext is defined (used for SGI only)
2909AC_MSG_CHECKING(for struct sigcontext)
2910AC_TRY_COMPILE([
2911#include <signal.h>
2912test_sig()
2913{
2914 struct sigcontext *scont;
2915 scont = (struct sigcontext *)0;
2916 return 1;
2917} ], ,
2918 AC_MSG_RESULT(yes)
2919 AC_DEFINE(HAVE_SIGCONTEXT),
2920 AC_MSG_RESULT(no))
2921
2922dnl tricky stuff: try to find out if getcwd() is implemented with
2923dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002924AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2925 [
2926 AC_RUN_IFELSE([[
2927#include "confdefs.h"
2928#ifdef HAVE_UNISTD_H
2929#include <unistd.h>
2930#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002931char *dagger[] = { "IFS=pwd", 0 };
2932main()
2933{
2934 char buffer[500];
2935 extern char **environ;
2936 environ = dagger;
2937 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002938}
2939 ]],[
2940 vim_cv_getcwd_broken=no
2941 ],[
2942 vim_cv_getcwd_broken=yes
2943 ],[
2944 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2945 ])
2946 ])
2947
2948if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2949 AC_DEFINE(BAD_GETCWD)
2950fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002951
Bram Moolenaar25153e12010-02-24 14:47:08 +01002952dnl Check for functions in one big call, to reduce the size of configure.
2953dnl Can only be used for functions that do not require any include.
2954AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002955 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002956 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002958 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002959 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2960 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002961AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002962
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002963dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2964dnl appropriate, so that off_t is 64 bits when needed.
2965AC_SYS_LARGEFILE
2966
Bram Moolenaar071d4272004-06-13 20:20:40 +00002967dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2968AC_MSG_CHECKING(for st_blksize)
2969AC_TRY_COMPILE(
2970[#include <sys/types.h>
2971#include <sys/stat.h>],
2972[ struct stat st;
2973 int n;
2974
2975 stat("/", &st);
2976 n = (int)st.st_blksize;],
2977 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2978 AC_MSG_RESULT(no))
2979
Bram Moolenaar446cb832008-06-24 21:56:24 +00002980AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2981 [
2982 AC_RUN_IFELSE([[
2983#include "confdefs.h"
2984#if STDC_HEADERS
2985# include <stdlib.h>
2986# include <stddef.h>
2987#endif
2988#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002989#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002990main() {struct stat st; exit(stat("configure/", &st) != 0); }
2991 ]],[
2992 vim_cv_stat_ignores_slash=yes
2993 ],[
2994 vim_cv_stat_ignores_slash=no
2995 ],[
2996 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2997 ])
2998 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002999
Bram Moolenaar446cb832008-06-24 21:56:24 +00003000if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3001 AC_DEFINE(STAT_IGNORES_SLASH)
3002fi
3003
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004dnl Link with iconv for charset translation, if not found without library.
3005dnl check for iconv() requires including iconv.h
3006dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3007dnl has been installed.
3008AC_MSG_CHECKING(for iconv_open())
3009save_LIBS="$LIBS"
3010LIBS="$LIBS -liconv"
3011AC_TRY_LINK([
3012#ifdef HAVE_ICONV_H
3013# include <iconv.h>
3014#endif
3015 ], [iconv_open("fr", "to");],
3016 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3017 LIBS="$save_LIBS"
3018 AC_TRY_LINK([
3019#ifdef HAVE_ICONV_H
3020# include <iconv.h>
3021#endif
3022 ], [iconv_open("fr", "to");],
3023 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3024 AC_MSG_RESULT(no)))
3025
3026
3027AC_MSG_CHECKING(for nl_langinfo(CODESET))
3028AC_TRY_LINK([
3029#ifdef HAVE_LANGINFO_H
3030# include <langinfo.h>
3031#endif
3032], [char *cs = nl_langinfo(CODESET);],
3033 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3034 AC_MSG_RESULT(no))
3035
Bram Moolenaar446cb832008-06-24 21:56:24 +00003036dnl Need various functions for floating point support. Only enable
3037dnl floating point when they are all present.
3038AC_CHECK_LIB(m, strtod)
3039AC_MSG_CHECKING([for strtod() and other floating point functions])
3040AC_TRY_LINK([
3041#ifdef HAVE_MATH_H
3042# include <math.h>
3043#endif
3044#if STDC_HEADERS
3045# include <stdlib.h>
3046# include <stddef.h>
3047#endif
3048], [char *s; double d;
3049 d = strtod("1.1", &s);
3050 d = fabs(1.11);
3051 d = ceil(1.11);
3052 d = floor(1.11);
3053 d = log10(1.11);
3054 d = pow(1.11, 2.22);
3055 d = sqrt(1.11);
3056 d = sin(1.11);
3057 d = cos(1.11);
3058 d = atan(1.11);
3059 ],
3060 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3061 AC_MSG_RESULT(no))
3062
Bram Moolenaar071d4272004-06-13 20:20:40 +00003063dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3064dnl when -lacl works, also try to use -lattr (required for Debian).
3065AC_MSG_CHECKING(--disable-acl argument)
3066AC_ARG_ENABLE(acl,
3067 [ --disable-acl Don't check for ACL support.],
3068 , [enable_acl="yes"])
3069if test "$enable_acl" = "yes"; then
3070AC_MSG_RESULT(no)
3071AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3072 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3073 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3074
3075AC_MSG_CHECKING(for POSIX ACL support)
3076AC_TRY_LINK([
3077#include <sys/types.h>
3078#ifdef HAVE_SYS_ACL_H
3079# include <sys/acl.h>
3080#endif
3081acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3082 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3083 acl_free(acl);],
3084 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3085 AC_MSG_RESULT(no))
3086
3087AC_MSG_CHECKING(for Solaris ACL support)
3088AC_TRY_LINK([
3089#ifdef HAVE_SYS_ACL_H
3090# include <sys/acl.h>
3091#endif], [acl("foo", GETACLCNT, 0, NULL);
3092 ],
3093 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3094 AC_MSG_RESULT(no))
3095
3096AC_MSG_CHECKING(for AIX ACL support)
3097AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003098#if STDC_HEADERS
3099# include <stdlib.h>
3100# include <stddef.h>
3101#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003102#ifdef HAVE_SYS_ACL_H
3103# include <sys/acl.h>
3104#endif
3105#ifdef HAVE_SYS_ACCESS_H
3106# include <sys/access.h>
3107#endif
3108#define _ALL_SOURCE
3109
3110#include <sys/stat.h>
3111
3112int aclsize;
3113struct acl *aclent;], [aclsize = sizeof(struct acl);
3114 aclent = (void *)malloc(aclsize);
3115 statacl("foo", STX_NORMAL, aclent, aclsize);
3116 ],
3117 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3118 AC_MSG_RESULT(no))
3119else
3120 AC_MSG_RESULT(yes)
3121fi
3122
3123AC_MSG_CHECKING(--disable-gpm argument)
3124AC_ARG_ENABLE(gpm,
3125 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3126 [enable_gpm="yes"])
3127
3128if test "$enable_gpm" = "yes"; then
3129 AC_MSG_RESULT(no)
3130 dnl Checking if gpm support can be compiled
3131 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3132 [olibs="$LIBS" ; LIBS="-lgpm"]
3133 AC_TRY_LINK(
3134 [#include <gpm.h>
3135 #include <linux/keyboard.h>],
3136 [Gpm_GetLibVersion(NULL);],
3137 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3138 dnl FEAT_MOUSE_GPM if mouse support is included
3139 [vi_cv_have_gpm=yes],
3140 [vi_cv_have_gpm=no])
3141 [LIBS="$olibs"]
3142 )
3143 if test $vi_cv_have_gpm = yes; then
3144 LIBS="$LIBS -lgpm"
3145 AC_DEFINE(HAVE_GPM)
3146 fi
3147else
3148 AC_MSG_RESULT(yes)
3149fi
3150
Bram Moolenaar446cb832008-06-24 21:56:24 +00003151AC_MSG_CHECKING(--disable-sysmouse argument)
3152AC_ARG_ENABLE(sysmouse,
3153 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3154 [enable_sysmouse="yes"])
3155
3156if test "$enable_sysmouse" = "yes"; then
3157 AC_MSG_RESULT(no)
3158 dnl Checking if sysmouse support can be compiled
3159 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3160 dnl defines FEAT_SYSMOUSE if mouse support is included
3161 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3162 AC_TRY_LINK(
3163 [#include <sys/consio.h>
3164 #include <signal.h>
3165 #include <sys/fbio.h>],
3166 [struct mouse_info mouse;
3167 mouse.operation = MOUSE_MODE;
3168 mouse.operation = MOUSE_SHOW;
3169 mouse.u.mode.mode = 0;
3170 mouse.u.mode.signal = SIGUSR2;],
3171 [vi_cv_have_sysmouse=yes],
3172 [vi_cv_have_sysmouse=no])
3173 )
3174 if test $vi_cv_have_sysmouse = yes; then
3175 AC_DEFINE(HAVE_SYSMOUSE)
3176 fi
3177else
3178 AC_MSG_RESULT(yes)
3179fi
3180
Bram Moolenaarf05da212009-11-17 16:13:15 +00003181dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3182AC_MSG_CHECKING(for FD_CLOEXEC)
3183AC_TRY_COMPILE(
3184[#if HAVE_FCNTL_H
3185# include <fcntl.h>
3186#endif],
3187[ int flag = FD_CLOEXEC;],
3188 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3189 AC_MSG_RESULT(not usable))
3190
Bram Moolenaar071d4272004-06-13 20:20:40 +00003191dnl rename needs to be checked separately to work on Nextstep with cc
3192AC_MSG_CHECKING(for rename)
3193AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3194 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3195 AC_MSG_RESULT(no))
3196
3197dnl sysctl() may exist but not the arguments we use
3198AC_MSG_CHECKING(for sysctl)
3199AC_TRY_COMPILE(
3200[#include <sys/types.h>
3201#include <sys/sysctl.h>],
3202[ int mib[2], r;
3203 size_t len;
3204
3205 mib[0] = CTL_HW;
3206 mib[1] = HW_USERMEM;
3207 len = sizeof(r);
3208 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3209 ],
3210 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3211 AC_MSG_RESULT(not usable))
3212
3213dnl sysinfo() may exist but not be Linux compatible
3214AC_MSG_CHECKING(for sysinfo)
3215AC_TRY_COMPILE(
3216[#include <sys/types.h>
3217#include <sys/sysinfo.h>],
3218[ struct sysinfo sinfo;
3219 int t;
3220
3221 (void)sysinfo(&sinfo);
3222 t = sinfo.totalram;
3223 ],
3224 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3225 AC_MSG_RESULT(not usable))
3226
Bram Moolenaar914572a2007-05-01 11:37:47 +00003227dnl struct sysinfo may have the mem_unit field or not
3228AC_MSG_CHECKING(for sysinfo.mem_unit)
3229AC_TRY_COMPILE(
3230[#include <sys/types.h>
3231#include <sys/sysinfo.h>],
3232[ struct sysinfo sinfo;
3233 sinfo.mem_unit = 1;
3234 ],
3235 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3236 AC_MSG_RESULT(no))
3237
Bram Moolenaar071d4272004-06-13 20:20:40 +00003238dnl sysconf() may exist but not support what we want to use
3239AC_MSG_CHECKING(for sysconf)
3240AC_TRY_COMPILE(
3241[#include <unistd.h>],
3242[ (void)sysconf(_SC_PAGESIZE);
3243 (void)sysconf(_SC_PHYS_PAGES);
3244 ],
3245 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3246 AC_MSG_RESULT(not usable))
3247
Bram Moolenaar914703b2010-05-31 21:59:46 +02003248AC_CHECK_SIZEOF([int])
3249AC_CHECK_SIZEOF([long])
3250AC_CHECK_SIZEOF([time_t])
3251AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003252
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003253dnl Make sure that uint32_t is really 32 bits unsigned.
3254AC_MSG_CHECKING([uint32_t is 32 bits])
3255AC_TRY_RUN([
3256#ifdef HAVE_STDINT_H
3257# include <stdint.h>
3258#endif
3259#ifdef HAVE_INTTYPES_H
3260# include <inttypes.h>
3261#endif
3262main() {
3263 uint32_t nr1 = (uint32_t)-1;
3264 uint32_t nr2 = (uint32_t)0xffffffffUL;
3265 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3266 exit(0);
3267}],
3268AC_MSG_RESULT(ok),
3269AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3270AC_MSG_ERROR([could not compile program using uint32_t.]))
3271
Bram Moolenaar446cb832008-06-24 21:56:24 +00003272dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3273dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3274
Bram Moolenaar071d4272004-06-13 20:20:40 +00003275[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003276#include "confdefs.h"
3277#ifdef HAVE_STRING_H
3278# include <string.h>
3279#endif
3280#if STDC_HEADERS
3281# include <stdlib.h>
3282# include <stddef.h>
3283#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003284main() {
3285 char buf[10];
3286 strcpy(buf, "abcdefghi");
3287 mch_memmove(buf, buf + 2, 3);
3288 if (strncmp(buf, "ababcf", 6))
3289 exit(1);
3290 strcpy(buf, "abcdefghi");
3291 mch_memmove(buf + 2, buf, 3);
3292 if (strncmp(buf, "cdedef", 6))
3293 exit(1);
3294 exit(0); /* libc version works properly. */
3295}']
3296
Bram Moolenaar446cb832008-06-24 21:56:24 +00003297AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3298 [
3299 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3300 [
3301 vim_cv_memmove_handles_overlap=yes
3302 ],[
3303 vim_cv_memmove_handles_overlap=no
3304 ],[
3305 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3306 ])
3307 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003308
Bram Moolenaar446cb832008-06-24 21:56:24 +00003309if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3310 AC_DEFINE(USEMEMMOVE)
3311else
3312 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3313 [
3314 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3315 [
3316 vim_cv_bcopy_handles_overlap=yes
3317 ],[
3318 vim_cv_bcopy_handles_overlap=no
3319 ],[
3320 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3321 ])
3322 ])
3323
3324 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3325 AC_DEFINE(USEBCOPY)
3326 else
3327 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3328 [
3329 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3330 [
3331 vim_cv_memcpy_handles_overlap=yes
3332 ],[
3333 vim_cv_memcpy_handles_overlap=no
3334 ],[
3335 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3336 ])
3337 ])
3338
3339 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3340 AC_DEFINE(USEMEMCPY)
3341 fi
3342 fi
3343fi
3344
Bram Moolenaar071d4272004-06-13 20:20:40 +00003345
3346dnl Check for multibyte locale functions
3347dnl Find out if _Xsetlocale() is supported by libX11.
3348dnl Check if X_LOCALE should be defined.
3349
3350if test "$enable_multibyte" = "yes"; then
3351 cflags_save=$CFLAGS
3352 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003353 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003354 CFLAGS="$CFLAGS -I$x_includes"
3355 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3356 AC_MSG_CHECKING(whether X_LOCALE needed)
3357 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3358 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3359 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3360 AC_MSG_RESULT(no))
3361 fi
3362 CFLAGS=$cflags_save
3363 LDFLAGS=$ldflags_save
3364fi
3365
3366dnl Link with xpg4, it is said to make Korean locale working
3367AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3368
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003369dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003370dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003371dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003372dnl -t for typedefs (many ctags have this)
3373dnl -s for static functions (Elvis ctags only?)
3374dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3375dnl -i+m to test for older Exuberant ctags
3376AC_MSG_CHECKING(how to create tags)
3377test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003378if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003379 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003380elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3381 TAGPRG="exctags -I INIT+ --fields=+S"
3382elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3383 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003384else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003385 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3387 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3388 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3389 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3390 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3391 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3392 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3393fi
3394test -f tags.save && mv tags.save tags
3395AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3396
3397dnl Check how we can run man with a section number
3398AC_MSG_CHECKING(how to run man with a section nr)
3399MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003400(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 +00003401AC_MSG_RESULT($MANDEF)
3402if test "$MANDEF" = "man -s"; then
3403 AC_DEFINE(USEMAN_S)
3404fi
3405
3406dnl Check if gettext() is working and if it needs -lintl
3407AC_MSG_CHECKING(--disable-nls argument)
3408AC_ARG_ENABLE(nls,
3409 [ --disable-nls Don't support NLS (gettext()).], ,
3410 [enable_nls="yes"])
3411
3412if test "$enable_nls" = "yes"; then
3413 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003414
3415 INSTALL_LANGS=install-languages
3416 AC_SUBST(INSTALL_LANGS)
3417 INSTALL_TOOL_LANGS=install-tool-languages
3418 AC_SUBST(INSTALL_TOOL_LANGS)
3419
Bram Moolenaar071d4272004-06-13 20:20:40 +00003420 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3421 AC_MSG_CHECKING([for NLS])
3422 if test -f po/Makefile; then
3423 have_gettext="no"
3424 if test -n "$MSGFMT"; then
3425 AC_TRY_LINK(
3426 [#include <libintl.h>],
3427 [gettext("Test");],
3428 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3429 olibs=$LIBS
3430 LIBS="$LIBS -lintl"
3431 AC_TRY_LINK(
3432 [#include <libintl.h>],
3433 [gettext("Test");],
3434 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3435 AC_MSG_RESULT([gettext() doesn't work]);
3436 LIBS=$olibs))
3437 else
3438 AC_MSG_RESULT([msgfmt not found - disabled]);
3439 fi
3440 if test $have_gettext = "yes"; then
3441 AC_DEFINE(HAVE_GETTEXT)
3442 MAKEMO=yes
3443 AC_SUBST(MAKEMO)
3444 dnl this was added in GNU gettext 0.10.36
3445 AC_CHECK_FUNCS(bind_textdomain_codeset)
3446 dnl _nl_msg_cat_cntr is required for GNU gettext
3447 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3448 AC_TRY_LINK(
3449 [#include <libintl.h>
3450 extern int _nl_msg_cat_cntr;],
3451 [++_nl_msg_cat_cntr;],
3452 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3453 AC_MSG_RESULT([no]))
3454 fi
3455 else
3456 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3457 fi
3458else
3459 AC_MSG_RESULT(yes)
3460fi
3461
3462dnl Check for dynamic linking loader
3463AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3464if test x${DLL} = xdlfcn.h; then
3465 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3466 AC_MSG_CHECKING([for dlopen()])
3467 AC_TRY_LINK(,[
3468 extern void* dlopen();
3469 dlopen();
3470 ],
3471 AC_MSG_RESULT(yes);
3472 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3473 AC_MSG_RESULT(no);
3474 AC_MSG_CHECKING([for dlopen() in -ldl])
3475 olibs=$LIBS
3476 LIBS="$LIBS -ldl"
3477 AC_TRY_LINK(,[
3478 extern void* dlopen();
3479 dlopen();
3480 ],
3481 AC_MSG_RESULT(yes);
3482 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3483 AC_MSG_RESULT(no);
3484 LIBS=$olibs))
3485 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3486 dnl ick :-)
3487 AC_MSG_CHECKING([for dlsym()])
3488 AC_TRY_LINK(,[
3489 extern void* dlsym();
3490 dlsym();
3491 ],
3492 AC_MSG_RESULT(yes);
3493 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3494 AC_MSG_RESULT(no);
3495 AC_MSG_CHECKING([for dlsym() in -ldl])
3496 olibs=$LIBS
3497 LIBS="$LIBS -ldl"
3498 AC_TRY_LINK(,[
3499 extern void* dlsym();
3500 dlsym();
3501 ],
3502 AC_MSG_RESULT(yes);
3503 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3504 AC_MSG_RESULT(no);
3505 LIBS=$olibs))
3506elif test x${DLL} = xdl.h; then
3507 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3508 AC_MSG_CHECKING([for shl_load()])
3509 AC_TRY_LINK(,[
3510 extern void* shl_load();
3511 shl_load();
3512 ],
3513 AC_MSG_RESULT(yes);
3514 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3515 AC_MSG_RESULT(no);
3516 AC_MSG_CHECKING([for shl_load() in -ldld])
3517 olibs=$LIBS
3518 LIBS="$LIBS -ldld"
3519 AC_TRY_LINK(,[
3520 extern void* shl_load();
3521 shl_load();
3522 ],
3523 AC_MSG_RESULT(yes);
3524 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3525 AC_MSG_RESULT(no);
3526 LIBS=$olibs))
3527fi
3528AC_CHECK_HEADERS(setjmp.h)
3529
3530if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3531 dnl -ldl must come after DynaLoader.a
3532 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3533 LIBS=`echo $LIBS | sed s/-ldl//`
3534 PERL_LIBS="$PERL_LIBS -ldl"
3535 fi
3536fi
3537
Bram Moolenaar164fca32010-07-14 13:58:07 +02003538if test "x$MACOSX" = "xyes"; then
3539 AC_MSG_CHECKING(whether we need -framework Cocoa)
3540 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3541 dnl disabled during tiny build)
3542 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3543 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003544 AC_MSG_RESULT(yes)
3545 else
3546 AC_MSG_RESULT(no)
3547 fi
3548fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003549if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003550 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003551fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003552
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003553dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3554dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3555dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003556dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3557dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003558DEPEND_CFLAGS_FILTER=
3559if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003560 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003561 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003562 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003563 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003564 AC_MSG_RESULT(yes)
3565 else
3566 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003567 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003568 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3569 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003570 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003571 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3572 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003573 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003574 AC_MSG_RESULT(yes)
3575 else
3576 AC_MSG_RESULT(no)
3577 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003578fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003579AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003580
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003581dnl link.sh tries to avoid overlinking in a hackish way.
3582dnl At least GNU ld supports --as-needed which provides the same functionality
3583dnl at linker level. Let's use it.
3584AC_MSG_CHECKING(linker --as-needed support)
3585LINK_AS_NEEDED=
3586# Check if linker supports --as-needed and --no-as-needed options
3587if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3588 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3589 LINK_AS_NEEDED=yes
3590fi
3591if test "$LINK_AS_NEEDED" = yes; then
3592 AC_MSG_RESULT(yes)
3593else
3594 AC_MSG_RESULT(no)
3595fi
3596AC_SUBST(LINK_AS_NEEDED)
3597
Bram Moolenaar071d4272004-06-13 20:20:40 +00003598dnl write output files
3599AC_OUTPUT(auto/config.mk:config.mk.in)
3600
3601dnl vim: set sw=2 tw=78 fo+=l: