blob: a5f29f2139639592335733c7d88954d3120c025b [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
Bram Moolenaar456f2bb2011-06-12 21:37:13 +0200995 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
996 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
997 [
998 vi_cv_var_python3_abiflags=
999 if ${vi_cv_path_python3} -c \
1000 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1001 then
1002 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1003 "import sys; print(sys.abiflags)"`
1004 fi ])
1005
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001006 dnl -- find where python3 thinks it was installed
1007 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1008 [ vi_cv_path_python3_pfx=`
1009 ${vi_cv_path_python3} -c \
1010 "import sys; print(sys.prefix)"` ])
1011
1012 dnl -- and where it thinks it runs
1013 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1014 [ vi_cv_path_python3_epfx=`
1015 ${vi_cv_path_python3} -c \
1016 "import sys; print(sys.exec_prefix)"` ])
1017
1018 dnl -- python3's internal library path
1019
1020 AC_CACHE_VAL(vi_cv_path_python3path,
1021 [ vi_cv_path_python3path=`
1022 unset PYTHONPATH;
1023 ${vi_cv_path_python3} -c \
1024 "import sys, string; print(':'.join(sys.path))"` ])
1025
1026 dnl -- where the Python implementation library archives are
1027
1028 AC_ARG_WITH(python3-config-dir,
1029 [ --with-python3-config-dir=PATH Python's config directory],
1030 [ vi_cv_path_python3_conf="${withval}" ] )
1031
1032 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1033 [
1034 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001035 config_dir="config"
1036 if test "${vi_cv_var_python3_abiflags}" != ""; then
1037 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1038 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001039 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001040 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001041 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001042 if test -d "$d" && test -f "$d/config.c"; then
1043 vi_cv_path_python3_conf="$d"
1044 fi
1045 done
1046 done
1047 ])
1048
1049 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1050
1051 if test "X$PYTHON3_CONFDIR" = "X"; then
1052 AC_MSG_RESULT([can't find it!])
1053 else
1054
1055 dnl -- we need to examine Python's config/Makefile too
1056 dnl see what the interpreter is built from
1057 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1058 [
1059 pwd=`pwd`
1060 tmp_mkf="$pwd/config-PyMake$$"
1061 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1062__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001063 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001064 @echo "python3_LIBS='$(LIBS)'"
1065 @echo "python3_SYSLIBS='$(SYSLIBS)'"
1066 @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001067 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001068eof
1069 dnl -- delete the lines from make about Entering/Leaving directory
1070 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1071 rm -f -- "${tmp_mkf}"
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001072 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001073 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001074 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1075 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1076 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1077 ])
1078
1079 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1080 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001081 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001082 else
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001083 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001084 fi
1085 PYTHON3_SRC="if_python3.c"
1086 dnl For Mac OSX 10.2 config.o is included in the Python library.
1087 if test "x$MACOSX" = "xyes"; then
1088 PYTHON3_OBJ="objects/if_python3.o"
1089 else
1090 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1091 fi
1092
1093 dnl On FreeBSD linking with "-pthread" is required to use threads.
1094 dnl _THREAD_SAFE must be used for compiling then.
1095 dnl The "-pthread" is added to $LIBS, so that the following check for
1096 dnl sigaltstack() will look in libc_r (it's there in libc!).
1097 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1098 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1099 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1100 AC_MSG_CHECKING([if -pthread should be used])
1101 threadsafe_flag=
1102 thread_lib=
1103 dnl if test "x$MACOSX" != "xyes"; then
1104 if test "`(uname) 2>/dev/null`" != Darwin; then
1105 test "$GCC" = yes && threadsafe_flag="-pthread"
1106 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1107 threadsafe_flag="-D_THREAD_SAFE"
1108 thread_lib="-pthread"
1109 fi
1110 fi
1111 libs_save_old=$LIBS
1112 if test -n "$threadsafe_flag"; then
1113 cflags_save=$CFLAGS
1114 CFLAGS="$CFLAGS $threadsafe_flag"
1115 LIBS="$LIBS $thread_lib"
1116 AC_TRY_LINK(,[ ],
1117 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1118 AC_MSG_RESULT(no); LIBS=$libs_save_old
1119 )
1120 CFLAGS=$cflags_save
1121 else
1122 AC_MSG_RESULT(no)
1123 fi
1124
1125 dnl check that compiling a simple program still works with the flags
1126 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001127 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001128 cflags_save=$CFLAGS
1129 libs_save=$LIBS
1130 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1131 LIBS="$LIBS $PYTHON3_LIBS"
1132 AC_TRY_LINK(,[ ],
1133 AC_MSG_RESULT(yes); python3_ok=yes,
1134 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1135 CFLAGS=$cflags_save
1136 LIBS=$libs_save
1137 if test "$python3_ok" = yes; then
1138 AC_DEFINE(FEAT_PYTHON3)
1139 else
1140 LIBS=$libs_save_old
1141 PYTHON3_SRC=
1142 PYTHON3_OBJ=
1143 PYTHON3_LIBS=
1144 PYTHON3_CFLAGS=
1145 fi
1146 fi
1147 fi
1148fi
1149
1150AC_SUBST(PYTHON3_CONFDIR)
1151AC_SUBST(PYTHON3_LIBS)
1152AC_SUBST(PYTHON3_CFLAGS)
1153AC_SUBST(PYTHON3_SRC)
1154AC_SUBST(PYTHON3_OBJ)
1155
1156dnl if python2.x and python3.x are enabled one can only link in code
1157dnl with dlopen(), dlsym(), dlclose()
1158if test "$python_ok" = yes && test "$python3_ok" = yes; then
1159 AC_DEFINE(DYNAMIC_PYTHON)
1160 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001161 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001162 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001163 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001164 ldflags_save=$LDFLAGS
1165 LDFLAGS="$LDFLAGS -ldl"
1166 AC_RUN_IFELSE([
1167 #include <dlfcn.h>
1168 /* If this program fails, then RTLD_GLOBAL is needed.
1169 * RTLD_GLOBAL will be used and then it is not possible to
1170 * have both python versions enabled in the same vim instance.
1171 * Only the first pyhton version used will be switched on.
1172 */
1173
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001174 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001175 {
1176 int needed = 0;
1177 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1178 if (pylib != 0)
1179 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001180 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001181 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1182 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1183 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001184 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001185 (*init)();
1186 needed = (*simple)("import termios") == -1;
1187 (*final)();
1188 dlclose(pylib);
1189 }
1190 return !needed;
1191 }
1192
1193 int main(int argc, char** argv)
1194 {
1195 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001196 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001197 not_needed = 1;
1198 return !not_needed;
1199 }],
1200 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001201
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001202 CFLAGS=$cflags_save
1203 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001204
1205 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1206 cflags_save=$CFLAGS
1207 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1208 ldflags_save=$LDFLAGS
1209 LDFLAGS="$LDFLAGS -ldl"
1210 AC_RUN_IFELSE([
1211 #include <dlfcn.h>
1212 #include <wchar.h>
1213 /* If this program fails, then RTLD_GLOBAL is needed.
1214 * RTLD_GLOBAL will be used and then it is not possible to
1215 * have both python versions enabled in the same vim instance.
1216 * Only the first pyhton version used will be switched on.
1217 */
1218
1219 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1220 {
1221 int needed = 0;
1222 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1223 if (pylib != 0)
1224 {
1225 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1226 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1227 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1228 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1229 (*pfx)(prefix);
1230 (*init)();
1231 needed = (*simple)("import termios") == -1;
1232 (*final)();
1233 dlclose(pylib);
1234 }
1235 return !needed;
1236 }
1237
1238 int main(int argc, char** argv)
1239 {
1240 int not_needed = 0;
1241 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1242 not_needed = 1;
1243 return !not_needed;
1244 }],
1245 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1246
1247 CFLAGS=$cflags_save
1248 LDFLAGS=$ldflags_save
1249
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001250 PYTHON_SRC="if_python.c"
1251 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001252 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001253 PYTHON_LIBS=
1254 PYTHON3_SRC="if_python3.c"
1255 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001256 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001257 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001258elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1259 AC_DEFINE(DYNAMIC_PYTHON)
1260 PYTHON_SRC="if_python.c"
1261 PYTHON_OBJ="objects/if_python.o"
1262 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1263 PYTHON_LIBS=
1264elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1265 AC_DEFINE(DYNAMIC_PYTHON3)
1266 PYTHON3_SRC="if_python3.c"
1267 PYTHON3_OBJ="objects/if_python3.o"
1268 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1269 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001270fi
1271
Bram Moolenaar071d4272004-06-13 20:20:40 +00001272AC_MSG_CHECKING(--enable-tclinterp argument)
1273AC_ARG_ENABLE(tclinterp,
1274 [ --enable-tclinterp Include Tcl interpreter.], ,
1275 [enable_tclinterp="no"])
1276AC_MSG_RESULT($enable_tclinterp)
1277
1278if test "$enable_tclinterp" = "yes"; then
1279
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001280 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001281 AC_MSG_CHECKING(--with-tclsh argument)
1282 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1283 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001284 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001285 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1286 AC_SUBST(vi_cv_path_tcl)
1287
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001288 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1289 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1290 tclsh_name="tclsh8.4"
1291 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1292 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001293 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001294 tclsh_name="tclsh8.2"
1295 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1296 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001297 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1298 tclsh_name="tclsh8.0"
1299 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1300 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001301 dnl still didn't find it, try without version number
1302 if test "X$vi_cv_path_tcl" = "X"; then
1303 tclsh_name="tclsh"
1304 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1305 fi
1306 if test "X$vi_cv_path_tcl" != "X"; then
1307 AC_MSG_CHECKING(Tcl version)
1308 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1309 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1310 AC_MSG_RESULT($tclver - OK);
1311 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 -`
1312
1313 AC_MSG_CHECKING(for location of Tcl include)
1314 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001315 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 +00001316 else
1317 dnl For Mac OS X 10.3, use the OS-provided framework location
1318 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1319 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001320 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001321 for try in $tclinc; do
1322 if test -f "$try/tcl.h"; then
1323 AC_MSG_RESULT($try/tcl.h)
1324 TCL_INC=$try
1325 break
1326 fi
1327 done
1328 if test -z "$TCL_INC"; then
1329 AC_MSG_RESULT(<not found>)
1330 SKIP_TCL=YES
1331 fi
1332 if test -z "$SKIP_TCL"; then
1333 AC_MSG_CHECKING(for location of tclConfig.sh script)
1334 if test "x$MACOSX" != "xyes"; then
1335 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001336 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001337 else
1338 dnl For Mac OS X 10.3, use the OS-provided framework location
1339 tclcnf="/System/Library/Frameworks/Tcl.framework"
1340 fi
1341 for try in $tclcnf; do
1342 if test -f $try/tclConfig.sh; then
1343 AC_MSG_RESULT($try/tclConfig.sh)
1344 . $try/tclConfig.sh
1345 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1346 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1347 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001348 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001349 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 +00001350 break
1351 fi
1352 done
1353 if test -z "$TCL_LIBS"; then
1354 AC_MSG_RESULT(<not found>)
1355 AC_MSG_CHECKING(for Tcl library by myself)
1356 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001357 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001358 for ext in .so .a ; do
1359 for ver in "" $tclver ; do
1360 for try in $tcllib ; do
1361 trylib=tcl$ver$ext
1362 if test -f $try/lib$trylib ; then
1363 AC_MSG_RESULT($try/lib$trylib)
1364 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1365 if test "`(uname) 2>/dev/null`" = SunOS &&
1366 uname -r | grep '^5' >/dev/null; then
1367 TCL_LIBS="$TCL_LIBS -R $try"
1368 fi
1369 break 3
1370 fi
1371 done
1372 done
1373 done
1374 if test -z "$TCL_LIBS"; then
1375 AC_MSG_RESULT(<not found>)
1376 SKIP_TCL=YES
1377 fi
1378 fi
1379 if test -z "$SKIP_TCL"; then
1380 AC_DEFINE(FEAT_TCL)
1381 TCL_SRC=if_tcl.c
1382 TCL_OBJ=objects/if_tcl.o
1383 TCL_PRO=if_tcl.pro
1384 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1385 fi
1386 fi
1387 else
1388 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1389 fi
1390 fi
1391fi
1392AC_SUBST(TCL_SRC)
1393AC_SUBST(TCL_OBJ)
1394AC_SUBST(TCL_PRO)
1395AC_SUBST(TCL_CFLAGS)
1396AC_SUBST(TCL_LIBS)
1397
1398AC_MSG_CHECKING(--enable-rubyinterp argument)
1399AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001400 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001401 [enable_rubyinterp="no"])
1402AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001403if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001404 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001405 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001406 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1407 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1408 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001409 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001410 if test "X$vi_cv_path_ruby" != "X"; then
1411 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001412 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 +00001413 AC_MSG_RESULT(OK)
1414 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001415 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 +00001416 if test "X$rubyhdrdir" != "X"; then
1417 AC_MSG_RESULT($rubyhdrdir)
1418 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001419 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1420 if test -d "$rubyhdrdir/$rubyarch"; then
1421 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1422 fi
1423 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1424 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001425 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1426 if test "X$rubylibs" != "X"; then
1427 RUBY_LIBS="$rubylibs"
1428 fi
1429 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001430 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1431 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1432 if test -f "$rubylibdir/$librubya"; then
1433 librubyarg="$librubyarg"
1434 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1435 elif test "$librubyarg" = "libruby.a"; then
1436 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1437 librubyarg="-lruby"
1438 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001439 fi
1440
1441 if test "X$librubyarg" != "X"; then
1442 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1443 fi
1444 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1445 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001446 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1447 dnl be included if requested by passing --with-mac-arch to
1448 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001449 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001450 if test "X$rubyldflags" != "X"; then
1451 LDFLAGS="$rubyldflags $LDFLAGS"
1452 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001453 fi
1454 RUBY_SRC="if_ruby.c"
1455 RUBY_OBJ="objects/if_ruby.o"
1456 RUBY_PRO="if_ruby.pro"
1457 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001458 if test "$enable_rubyinterp" = "dynamic"; then
1459 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1460 AC_DEFINE(DYNAMIC_RUBY)
1461 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1462 RUBY_LIBS=
1463 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001464 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001465 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001466 fi
1467 else
1468 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1469 fi
1470 fi
1471fi
1472AC_SUBST(RUBY_SRC)
1473AC_SUBST(RUBY_OBJ)
1474AC_SUBST(RUBY_PRO)
1475AC_SUBST(RUBY_CFLAGS)
1476AC_SUBST(RUBY_LIBS)
1477
1478AC_MSG_CHECKING(--enable-cscope argument)
1479AC_ARG_ENABLE(cscope,
1480 [ --enable-cscope Include cscope interface.], ,
1481 [enable_cscope="no"])
1482AC_MSG_RESULT($enable_cscope)
1483if test "$enable_cscope" = "yes"; then
1484 AC_DEFINE(FEAT_CSCOPE)
1485fi
1486
1487AC_MSG_CHECKING(--enable-workshop argument)
1488AC_ARG_ENABLE(workshop,
1489 [ --enable-workshop Include Sun Visual Workshop support.], ,
1490 [enable_workshop="no"])
1491AC_MSG_RESULT($enable_workshop)
1492if test "$enable_workshop" = "yes"; then
1493 AC_DEFINE(FEAT_SUN_WORKSHOP)
1494 WORKSHOP_SRC="workshop.c integration.c"
1495 AC_SUBST(WORKSHOP_SRC)
1496 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1497 AC_SUBST(WORKSHOP_OBJ)
1498 if test "${enable_gui-xxx}" = xxx; then
1499 enable_gui=motif
1500 fi
1501fi
1502
1503AC_MSG_CHECKING(--disable-netbeans argument)
1504AC_ARG_ENABLE(netbeans,
1505 [ --disable-netbeans Disable NetBeans integration support.],
1506 , [enable_netbeans="yes"])
1507if test "$enable_netbeans" = "yes"; then
1508 AC_MSG_RESULT(no)
1509 dnl On Solaris we need the socket and nsl library.
1510 AC_CHECK_LIB(socket, socket)
1511 AC_CHECK_LIB(nsl, gethostbyname)
1512 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1513 AC_TRY_LINK([
1514#include <stdio.h>
1515#include <stdlib.h>
1516#include <stdarg.h>
1517#include <fcntl.h>
1518#include <netdb.h>
1519#include <netinet/in.h>
1520#include <errno.h>
1521#include <sys/types.h>
1522#include <sys/socket.h>
1523 /* Check bitfields */
1524 struct nbbuf {
1525 unsigned int initDone:1;
1526 ushort signmaplen;
1527 };
1528 ], [
1529 /* Check creating a socket. */
1530 struct sockaddr_in server;
1531 (void)socket(AF_INET, SOCK_STREAM, 0);
1532 (void)htons(100);
1533 (void)gethostbyname("microsoft.com");
1534 if (errno == ECONNREFUSED)
1535 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1536 ],
1537 AC_MSG_RESULT(yes),
1538 AC_MSG_RESULT(no); enable_netbeans="no")
1539else
1540 AC_MSG_RESULT(yes)
1541fi
1542if test "$enable_netbeans" = "yes"; then
1543 AC_DEFINE(FEAT_NETBEANS_INTG)
1544 NETBEANS_SRC="netbeans.c"
1545 AC_SUBST(NETBEANS_SRC)
1546 NETBEANS_OBJ="objects/netbeans.o"
1547 AC_SUBST(NETBEANS_OBJ)
1548fi
1549
1550AC_MSG_CHECKING(--enable-sniff argument)
1551AC_ARG_ENABLE(sniff,
1552 [ --enable-sniff Include Sniff interface.], ,
1553 [enable_sniff="no"])
1554AC_MSG_RESULT($enable_sniff)
1555if test "$enable_sniff" = "yes"; then
1556 AC_DEFINE(FEAT_SNIFF)
1557 SNIFF_SRC="if_sniff.c"
1558 AC_SUBST(SNIFF_SRC)
1559 SNIFF_OBJ="objects/if_sniff.o"
1560 AC_SUBST(SNIFF_OBJ)
1561fi
1562
1563AC_MSG_CHECKING(--enable-multibyte argument)
1564AC_ARG_ENABLE(multibyte,
1565 [ --enable-multibyte Include multibyte editing support.], ,
1566 [enable_multibyte="no"])
1567AC_MSG_RESULT($enable_multibyte)
1568if test "$enable_multibyte" = "yes"; then
1569 AC_DEFINE(FEAT_MBYTE)
1570fi
1571
1572AC_MSG_CHECKING(--enable-hangulinput argument)
1573AC_ARG_ENABLE(hangulinput,
1574 [ --enable-hangulinput Include Hangul input support.], ,
1575 [enable_hangulinput="no"])
1576AC_MSG_RESULT($enable_hangulinput)
1577
1578AC_MSG_CHECKING(--enable-xim argument)
1579AC_ARG_ENABLE(xim,
1580 [ --enable-xim Include XIM input support.],
1581 AC_MSG_RESULT($enable_xim),
1582 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001583
1584AC_MSG_CHECKING(--enable-fontset argument)
1585AC_ARG_ENABLE(fontset,
1586 [ --enable-fontset Include X fontset output support.], ,
1587 [enable_fontset="no"])
1588AC_MSG_RESULT($enable_fontset)
1589dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1590
1591test -z "$with_x" && with_x=yes
1592test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1593if test "$with_x" = no; then
1594 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1595else
1596 dnl Do this check early, so that its failure can override user requests.
1597
1598 AC_PATH_PROG(xmkmfpath, xmkmf)
1599
1600 AC_PATH_XTRA
1601
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001602 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001603 dnl be compiled with a special option.
1604 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001605 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001606 CFLAGS="$CFLAGS -W c,dll"
1607 LDFLAGS="$LDFLAGS -W l,dll"
1608 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1609 fi
1610
1611 dnl On my HPUX system the X include dir is found, but the lib dir not.
1612 dnl This is a desparate try to fix this.
1613
1614 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1615 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1616 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1617 X_LIBS="$X_LIBS -L$x_libraries"
1618 if test "`(uname) 2>/dev/null`" = SunOS &&
1619 uname -r | grep '^5' >/dev/null; then
1620 X_LIBS="$X_LIBS -R $x_libraries"
1621 fi
1622 fi
1623
1624 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1625 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1626 AC_MSG_RESULT(Corrected X includes to $x_includes)
1627 X_CFLAGS="$X_CFLAGS -I$x_includes"
1628 fi
1629
1630 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1631 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1632 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1633 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1634 dnl Same for "-R/usr/lib ".
1635 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1636
1637
1638 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001639 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1640 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001641 AC_MSG_CHECKING(if X11 header files can be found)
1642 cflags_save=$CFLAGS
1643 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001644 AC_TRY_COMPILE([#include <X11/Xlib.h>
1645#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001646 AC_MSG_RESULT(yes),
1647 AC_MSG_RESULT(no); no_x=yes)
1648 CFLAGS=$cflags_save
1649
1650 if test "${no_x-no}" = yes; then
1651 with_x=no
1652 else
1653 AC_DEFINE(HAVE_X11)
1654 X_LIB="-lXt -lX11";
1655 AC_SUBST(X_LIB)
1656
1657 ac_save_LDFLAGS="$LDFLAGS"
1658 LDFLAGS="-L$x_libraries $LDFLAGS"
1659
1660 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1661 dnl For HP-UX 10.20 it must be before -lSM -lICE
1662 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1663 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1664
1665 dnl Some systems need -lnsl -lsocket when testing for ICE.
1666 dnl The check above doesn't do this, try here (again). Also needed to get
1667 dnl them after Xdmcp. link.sh will remove them when not needed.
1668 dnl Check for other function than above to avoid the cached value
1669 AC_CHECK_LIB(ICE, IceOpenConnection,
1670 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1671
1672 dnl Check for -lXpm (needed for some versions of Motif)
1673 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1674 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1675 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1676
1677 dnl Check that the X11 header files don't use implicit declarations
1678 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1679 cflags_save=$CFLAGS
1680 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1681 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1682 AC_MSG_RESULT(no),
1683 CFLAGS="$CFLAGS -Wno-implicit-int"
1684 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1685 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1686 AC_MSG_RESULT(test failed)
1687 )
1688 )
1689 CFLAGS=$cflags_save
1690
1691 LDFLAGS="$ac_save_LDFLAGS"
1692
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001693 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1694 AC_CACHE_VAL(ac_cv_small_wchar_t,
1695 [AC_TRY_RUN([
1696#include <X11/Xlib.h>
1697#if STDC_HEADERS
1698# include <stdlib.h>
1699# include <stddef.h>
1700#endif
1701 main()
1702 {
1703 if (sizeof(wchar_t) <= 2)
1704 exit(1);
1705 exit(0);
1706 }],
1707 ac_cv_small_wchar_t="no",
1708 ac_cv_small_wchar_t="yes",
1709 AC_MSG_ERROR(failed to compile test program))])
1710 AC_MSG_RESULT($ac_cv_small_wchar_t)
1711 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1712 AC_DEFINE(SMALL_WCHAR_T)
1713 fi
1714
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715 fi
1716fi
1717
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001718test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001719
1720AC_MSG_CHECKING(--enable-gui argument)
1721AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001722 [ --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 +00001723
1724dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1725dnl Do not use character classes for portability with old tools.
1726enable_gui_canon=`echo "_$enable_gui" | \
1727 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1728
1729dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001730SKIP_GTK2=YES
1731SKIP_GNOME=YES
1732SKIP_MOTIF=YES
1733SKIP_ATHENA=YES
1734SKIP_NEXTAW=YES
1735SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001736SKIP_CARBON=YES
1737GUITYPE=NONE
1738
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001739if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001740 SKIP_PHOTON=
1741 case "$enable_gui_canon" in
1742 no) AC_MSG_RESULT(no GUI support)
1743 SKIP_PHOTON=YES ;;
1744 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1745 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1746 photon) AC_MSG_RESULT(Photon GUI support) ;;
1747 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1748 SKIP_PHOTON=YES ;;
1749 esac
1750
1751elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1752 SKIP_CARBON=
1753 case "$enable_gui_canon" in
1754 no) AC_MSG_RESULT(no GUI support)
1755 SKIP_CARBON=YES ;;
1756 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001757 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1758 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001759 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1760 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1761 SKIP_CARBON=YES ;;
1762 esac
1763
1764else
1765
Bram Moolenaar071d4272004-06-13 20:20:40 +00001766 case "$enable_gui_canon" in
1767 no|none) AC_MSG_RESULT(no GUI support) ;;
1768 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001769 SKIP_GTK2=
1770 SKIP_GNOME=
1771 SKIP_MOTIF=
1772 SKIP_ATHENA=
1773 SKIP_NEXTAW=
1774 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001775 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1778 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001779 SKIP_GTK2=;;
1780 motif) AC_MSG_RESULT(Motif GUI support)
1781 SKIP_MOTIF=;;
1782 athena) AC_MSG_RESULT(Athena GUI support)
1783 SKIP_ATHENA=;;
1784 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1785 SKIP_NEXTAW=;;
1786 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1787 esac
1788
1789fi
1790
Bram Moolenaar071d4272004-06-13 20:20:40 +00001791if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1792 -a "$enable_gui_canon" != "gnome2"; then
1793 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1794 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001795 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001796 , enable_gtk2_check="yes")
1797 AC_MSG_RESULT($enable_gtk2_check)
1798 if test "x$enable_gtk2_check" = "xno"; then
1799 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001800 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001801 fi
1802fi
1803
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001804if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805 AC_MSG_CHECKING(whether or not to look for GNOME)
1806 AC_ARG_ENABLE(gnome-check,
1807 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1808 , enable_gnome_check="no")
1809 AC_MSG_RESULT($enable_gnome_check)
1810 if test "x$enable_gnome_check" = "xno"; then
1811 SKIP_GNOME=YES
1812 fi
1813fi
1814
1815if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1816 AC_MSG_CHECKING(whether or not to look for Motif)
1817 AC_ARG_ENABLE(motif-check,
1818 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1819 , enable_motif_check="yes")
1820 AC_MSG_RESULT($enable_motif_check)
1821 if test "x$enable_motif_check" = "xno"; then
1822 SKIP_MOTIF=YES
1823 fi
1824fi
1825
1826if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1827 AC_MSG_CHECKING(whether or not to look for Athena)
1828 AC_ARG_ENABLE(athena-check,
1829 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1830 , enable_athena_check="yes")
1831 AC_MSG_RESULT($enable_athena_check)
1832 if test "x$enable_athena_check" = "xno"; then
1833 SKIP_ATHENA=YES
1834 fi
1835fi
1836
1837if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1838 AC_MSG_CHECKING(whether or not to look for neXtaw)
1839 AC_ARG_ENABLE(nextaw-check,
1840 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1841 , enable_nextaw_check="yes")
1842 AC_MSG_RESULT($enable_nextaw_check);
1843 if test "x$enable_nextaw_check" = "xno"; then
1844 SKIP_NEXTAW=YES
1845 fi
1846fi
1847
1848if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1849 AC_MSG_CHECKING(whether or not to look for Carbon)
1850 AC_ARG_ENABLE(carbon-check,
1851 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1852 , enable_carbon_check="yes")
1853 AC_MSG_RESULT($enable_carbon_check);
1854 if test "x$enable_carbon_check" = "xno"; then
1855 SKIP_CARBON=YES
1856 fi
1857fi
1858
Bram Moolenaar843ee412004-06-30 16:16:41 +00001859
Bram Moolenaar071d4272004-06-13 20:20:40 +00001860if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1861 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001862 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001863 AC_MSG_RESULT(yes);
1864 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001865 if test "$VIMNAME" = "vim"; then
1866 VIMNAME=Vim
1867 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001868
Bram Moolenaar164fca32010-07-14 13:58:07 +02001869 if test "x$MACARCH" = "xboth"; then
1870 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1871 else
1872 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1873 fi
1874
Bram Moolenaar14716812006-05-04 21:54:08 +00001875 dnl Default install directory is not /usr/local
1876 if test x$prefix = xNONE; then
1877 prefix=/Applications
1878 fi
1879
1880 dnl Sorry for the hard coded default
1881 datadir='${prefix}/Vim.app/Contents/Resources'
1882
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 SKIP_GTK2=YES;
1885 SKIP_GNOME=YES;
1886 SKIP_MOTIF=YES;
1887 SKIP_ATHENA=YES;
1888 SKIP_NEXTAW=YES;
1889 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001890 SKIP_CARBON=YES
1891fi
1892
Bram Moolenaar071d4272004-06-13 20:20:40 +00001893dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001894dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001895dnl
1896dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001897dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001898dnl
1899AC_DEFUN(AM_PATH_GTK,
1900[
1901 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1902 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001903 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001904 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1905 no_gtk=""
1906 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1907 && $PKG_CONFIG --exists gtk+-2.0; then
1908 {
1909 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1910 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1911 dnl something like that.
1912 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001913 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001914 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1915 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1916 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1917 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1918 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1919 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1920 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1921 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 else
1923 no_gtk=yes
1924 fi
1925
1926 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1927 {
1928 ac_save_CFLAGS="$CFLAGS"
1929 ac_save_LIBS="$LIBS"
1930 CFLAGS="$CFLAGS $GTK_CFLAGS"
1931 LIBS="$LIBS $GTK_LIBS"
1932
1933 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001934 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001935 dnl
1936 rm -f conf.gtktest
1937 AC_TRY_RUN([
1938#include <gtk/gtk.h>
1939#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001940#if STDC_HEADERS
1941# include <stdlib.h>
1942# include <stddef.h>
1943#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001944
1945int
1946main ()
1947{
1948int major, minor, micro;
1949char *tmp_version;
1950
1951system ("touch conf.gtktest");
1952
1953/* HP/UX 9 (%@#!) writes to sscanf strings */
1954tmp_version = g_strdup("$min_gtk_version");
1955if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1956 printf("%s, bad version string\n", "$min_gtk_version");
1957 exit(1);
1958 }
1959
1960if ((gtk_major_version > major) ||
1961 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1962 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1963 (gtk_micro_version >= micro)))
1964{
1965 return 0;
1966}
1967return 1;
1968}
1969],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1970 CFLAGS="$ac_save_CFLAGS"
1971 LIBS="$ac_save_LIBS"
1972 }
1973 fi
1974 if test "x$no_gtk" = x ; then
1975 if test "x$enable_gtktest" = "xyes"; then
1976 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1977 else
1978 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1979 fi
1980 ifelse([$2], , :, [$2])
1981 else
1982 {
1983 AC_MSG_RESULT(no)
1984 GTK_CFLAGS=""
1985 GTK_LIBS=""
1986 ifelse([$3], , :, [$3])
1987 }
1988 fi
1989 }
1990 else
1991 GTK_CFLAGS=""
1992 GTK_LIBS=""
1993 ifelse([$3], , :, [$3])
1994 fi
1995 AC_SUBST(GTK_CFLAGS)
1996 AC_SUBST(GTK_LIBS)
1997 rm -f conf.gtktest
1998])
1999
2000dnl ---------------------------------------------------------------------------
2001dnl gnome
2002dnl ---------------------------------------------------------------------------
2003AC_DEFUN([GNOME_INIT_HOOK],
2004[
2005 AC_SUBST(GNOME_LIBS)
2006 AC_SUBST(GNOME_LIBDIR)
2007 AC_SUBST(GNOME_INCLUDEDIR)
2008
2009 AC_ARG_WITH(gnome-includes,
2010 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2011 [CFLAGS="$CFLAGS -I$withval"]
2012 )
2013
2014 AC_ARG_WITH(gnome-libs,
2015 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2016 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2017 )
2018
2019 AC_ARG_WITH(gnome,
2020 [ --with-gnome Specify prefix for GNOME files],
2021 if test x$withval = xyes; then
2022 want_gnome=yes
2023 ifelse([$1], [], :, [$1])
2024 else
2025 if test "x$withval" = xno; then
2026 want_gnome=no
2027 else
2028 want_gnome=yes
2029 LDFLAGS="$LDFLAGS -L$withval/lib"
2030 CFLAGS="$CFLAGS -I$withval/include"
2031 gnome_prefix=$withval/lib
2032 fi
2033 fi,
2034 want_gnome=yes)
2035
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002036 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002037 {
2038 AC_MSG_CHECKING(for libgnomeui-2.0)
2039 if $PKG_CONFIG --exists libgnomeui-2.0; then
2040 AC_MSG_RESULT(yes)
2041 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2042 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2043 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002044
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002045 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2046 dnl This might not be the right way but it works for me...
2047 AC_MSG_CHECKING(for FreeBSD)
2048 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2049 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002050 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002051 GNOME_LIBS="$GNOME_LIBS -pthread"
2052 else
2053 AC_MSG_RESULT(no)
2054 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002055 $1
2056 else
2057 AC_MSG_RESULT(not found)
2058 if test "x$2" = xfail; then
2059 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2060 fi
2061 fi
2062 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002063 fi
2064])
2065
2066AC_DEFUN([GNOME_INIT],[
2067 GNOME_INIT_HOOK([],fail)
2068])
2069
2070
2071dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002072dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002073dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002074if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002075
2076 AC_MSG_CHECKING(--disable-gtktest argument)
2077 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2078 , enable_gtktest=yes)
2079 if test "x$enable_gtktest" = "xyes" ; then
2080 AC_MSG_RESULT(gtk test enabled)
2081 else
2082 AC_MSG_RESULT(gtk test disabled)
2083 fi
2084
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085 if test "X$PKG_CONFIG" = "X"; then
2086 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2087 fi
2088
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002089 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002090 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2091 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002092 AM_PATH_GTK(2.2.0,
2093 [GUI_LIB_LOC="$GTK_LIBDIR"
2094 GTK_LIBNAME="$GTK_LIBS"
2095 GUI_INC_LOC="$GTK_CFLAGS"], )
2096 if test "x$GTK_CFLAGS" != "x"; then
2097 SKIP_ATHENA=YES
2098 SKIP_NEXTAW=YES
2099 SKIP_MOTIF=YES
2100 GUITYPE=GTK
2101 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002102 fi
2103 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002104 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002105 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2106 || test "0$gtk_minor_version" -ge 2; then
2107 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2108 fi
2109 dnl
2110 dnl if GTK exists, then check for GNOME.
2111 dnl
2112 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002113 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002114 GNOME_INIT_HOOK([have_gnome=yes])
2115 if test "x$have_gnome" = xyes ; then
2116 AC_DEFINE(FEAT_GUI_GNOME)
2117 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2118 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002119 fi
2120 }
2121 fi
2122 fi
2123fi
2124
2125dnl Check for Motif include files location.
2126dnl The LAST one found is used, this makes the highest version to be used,
2127dnl e.g. when Motif1.2 and Motif2.0 are both present.
2128
2129if test -z "$SKIP_MOTIF"; then
2130 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"
2131 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2132 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2133
2134 AC_MSG_CHECKING(for location of Motif GUI includes)
2135 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2136 GUI_INC_LOC=
2137 for try in $gui_includes; do
2138 if test -f "$try/Xm/Xm.h"; then
2139 GUI_INC_LOC=$try
2140 fi
2141 done
2142 if test -n "$GUI_INC_LOC"; then
2143 if test "$GUI_INC_LOC" = /usr/include; then
2144 GUI_INC_LOC=
2145 AC_MSG_RESULT(in default path)
2146 else
2147 AC_MSG_RESULT($GUI_INC_LOC)
2148 fi
2149 else
2150 AC_MSG_RESULT(<not found>)
2151 SKIP_MOTIF=YES
2152 fi
2153fi
2154
2155dnl Check for Motif library files location. In the same order as the include
2156dnl files, to avoid a mixup if several versions are present
2157
2158if test -z "$SKIP_MOTIF"; then
2159 AC_MSG_CHECKING(--with-motif-lib argument)
2160 AC_ARG_WITH(motif-lib,
2161 [ --with-motif-lib=STRING Library for Motif ],
2162 [ MOTIF_LIBNAME="${withval}" ] )
2163
2164 if test -n "$MOTIF_LIBNAME"; then
2165 AC_MSG_RESULT($MOTIF_LIBNAME)
2166 GUI_LIB_LOC=
2167 else
2168 AC_MSG_RESULT(no)
2169
2170 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2171 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2172
2173 AC_MSG_CHECKING(for location of Motif GUI libs)
2174 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"
2175 GUI_LIB_LOC=
2176 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002177 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002178 if test -f "$libtry"; then
2179 GUI_LIB_LOC=$try
2180 fi
2181 done
2182 done
2183 if test -n "$GUI_LIB_LOC"; then
2184 dnl Remove /usr/lib, it causes trouble on some systems
2185 if test "$GUI_LIB_LOC" = /usr/lib; then
2186 GUI_LIB_LOC=
2187 AC_MSG_RESULT(in default path)
2188 else
2189 if test -n "$GUI_LIB_LOC"; then
2190 AC_MSG_RESULT($GUI_LIB_LOC)
2191 if test "`(uname) 2>/dev/null`" = SunOS &&
2192 uname -r | grep '^5' >/dev/null; then
2193 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2194 fi
2195 fi
2196 fi
2197 MOTIF_LIBNAME=-lXm
2198 else
2199 AC_MSG_RESULT(<not found>)
2200 SKIP_MOTIF=YES
2201 fi
2202 fi
2203fi
2204
2205if test -z "$SKIP_MOTIF"; then
2206 SKIP_ATHENA=YES
2207 SKIP_NEXTAW=YES
2208 GUITYPE=MOTIF
2209 AC_SUBST(MOTIF_LIBNAME)
2210fi
2211
2212dnl Check if the Athena files can be found
2213
2214GUI_X_LIBS=
2215
2216if test -z "$SKIP_ATHENA"; then
2217 AC_MSG_CHECKING(if Athena header files can be found)
2218 cflags_save=$CFLAGS
2219 CFLAGS="$CFLAGS $X_CFLAGS"
2220 AC_TRY_COMPILE([
2221#include <X11/Intrinsic.h>
2222#include <X11/Xaw/Paned.h>], ,
2223 AC_MSG_RESULT(yes),
2224 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2225 CFLAGS=$cflags_save
2226fi
2227
2228if test -z "$SKIP_ATHENA"; then
2229 GUITYPE=ATHENA
2230fi
2231
2232if test -z "$SKIP_NEXTAW"; then
2233 AC_MSG_CHECKING(if neXtaw header files can be found)
2234 cflags_save=$CFLAGS
2235 CFLAGS="$CFLAGS $X_CFLAGS"
2236 AC_TRY_COMPILE([
2237#include <X11/Intrinsic.h>
2238#include <X11/neXtaw/Paned.h>], ,
2239 AC_MSG_RESULT(yes),
2240 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2241 CFLAGS=$cflags_save
2242fi
2243
2244if test -z "$SKIP_NEXTAW"; then
2245 GUITYPE=NEXTAW
2246fi
2247
2248if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2249 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2250 dnl Avoid adding it when it twice
2251 if test -n "$GUI_INC_LOC"; then
2252 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2253 fi
2254 if test -n "$GUI_LIB_LOC"; then
2255 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2256 fi
2257
2258 dnl Check for -lXext and then for -lXmu
2259 ldflags_save=$LDFLAGS
2260 LDFLAGS="$X_LIBS $LDFLAGS"
2261 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2262 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2263 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2264 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2265 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2266 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2267 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2268 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2269 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2270 if test -z "$SKIP_MOTIF"; then
2271 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2272 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2273 fi
2274 LDFLAGS=$ldflags_save
2275
2276 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2277 AC_MSG_CHECKING(for extra X11 defines)
2278 NARROW_PROTO=
2279 rm -fr conftestdir
2280 if mkdir conftestdir; then
2281 cd conftestdir
2282 cat > Imakefile <<'EOF'
2283acfindx:
2284 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2285EOF
2286 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2287 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2288 fi
2289 cd ..
2290 rm -fr conftestdir
2291 fi
2292 if test -z "$NARROW_PROTO"; then
2293 AC_MSG_RESULT(no)
2294 else
2295 AC_MSG_RESULT($NARROW_PROTO)
2296 fi
2297 AC_SUBST(NARROW_PROTO)
2298fi
2299
2300dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2301dnl use the X11 include path
2302if test "$enable_xsmp" = "yes"; then
2303 cppflags_save=$CPPFLAGS
2304 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2305 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2306 CPPFLAGS=$cppflags_save
2307fi
2308
2309
Bram Moolenaare667c952010-07-05 22:57:59 +02002310if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002311 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2312 cppflags_save=$CPPFLAGS
2313 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2314 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2315
2316 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2317 if test ! "$enable_xim" = "no"; then
2318 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2319 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2320 AC_MSG_RESULT(yes),
2321 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2322 fi
2323 CPPFLAGS=$cppflags_save
2324
2325 dnl automatically enable XIM when hangul input isn't enabled
2326 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2327 -a "x$GUITYPE" != "xNONE" ; then
2328 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2329 enable_xim="yes"
2330 fi
2331fi
2332
2333if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2334 cppflags_save=$CPPFLAGS
2335 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002336dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2337 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2338 AC_TRY_COMPILE([
2339#include <X11/Intrinsic.h>
2340#include <X11/Xmu/Editres.h>],
2341 [int i; i = 0;],
2342 AC_MSG_RESULT(yes)
2343 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2344 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002345 CPPFLAGS=$cppflags_save
2346fi
2347
2348dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2349if test -z "$SKIP_MOTIF"; then
2350 cppflags_save=$CPPFLAGS
2351 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002352 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 +00002353 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002354
2355 if test $ac_cv_header_Xm_XpmP_h = yes; then
2356 dnl Solaris uses XpmAttributes_21, very annoying.
2357 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2358 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2359 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2360 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2361 )
2362 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002363 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002364 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002365 CPPFLAGS=$cppflags_save
2366fi
2367
2368if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2369 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2370 enable_xim="no"
2371fi
2372if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2373 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2374 enable_fontset="no"
2375fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002376if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002377 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2378 enable_fontset="no"
2379fi
2380
Bram Moolenaar071d4272004-06-13 20:20:40 +00002381if test -z "$SKIP_PHOTON"; then
2382 GUITYPE=PHOTONGUI
2383fi
2384
2385AC_SUBST(GUI_INC_LOC)
2386AC_SUBST(GUI_LIB_LOC)
2387AC_SUBST(GUITYPE)
2388AC_SUBST(GUI_X_LIBS)
2389
2390if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2391 AC_MSG_ERROR([cannot use workshop without Motif])
2392fi
2393
2394dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2395if test "$enable_xim" = "yes"; then
2396 AC_DEFINE(FEAT_XIM)
2397fi
2398if test "$enable_fontset" = "yes"; then
2399 AC_DEFINE(FEAT_XFONTSET)
2400fi
2401
2402
2403dnl ---------------------------------------------------------------------------
2404dnl end of GUI-checking
2405dnl ---------------------------------------------------------------------------
2406
2407
2408dnl Only really enable hangul input when GUI and XFONTSET are available
2409if test "$enable_hangulinput" = "yes"; then
2410 if test "x$GUITYPE" = "xNONE"; then
2411 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2412 enable_hangulinput=no
2413 else
2414 AC_DEFINE(FEAT_HANGULIN)
2415 HANGULIN_SRC=hangulin.c
2416 AC_SUBST(HANGULIN_SRC)
2417 HANGULIN_OBJ=objects/hangulin.o
2418 AC_SUBST(HANGULIN_OBJ)
2419 fi
2420fi
2421
2422dnl Checks for libraries and include files.
2423
Bram Moolenaar446cb832008-06-24 21:56:24 +00002424AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2425 [
2426 AC_RUN_IFELSE([[
2427#include "confdefs.h"
2428#include <ctype.h>
2429#if STDC_HEADERS
2430# include <stdlib.h>
2431# include <stddef.h>
2432#endif
2433main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2434 ]],[
2435 vim_cv_toupper_broken=yes
2436 ],[
2437 vim_cv_toupper_broken=no
2438 ],[
2439 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2440 ])])
2441
2442if test "x$vim_cv_toupper_broken" = "xyes" ; then
2443 AC_DEFINE(BROKEN_TOUPPER)
2444fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002445
2446AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002447AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002448 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2449 AC_MSG_RESULT(no))
2450
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002451AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2452AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2453 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2454 AC_MSG_RESULT(no))
2455
Bram Moolenaar071d4272004-06-13 20:20:40 +00002456dnl Checks for header files.
2457AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2458dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2459if test "$HAS_ELF" = 1; then
2460 AC_CHECK_LIB(elf, main)
2461fi
2462
2463AC_HEADER_DIRENT
2464
Bram Moolenaar071d4272004-06-13 20:20:40 +00002465dnl If sys/wait.h is not found it might still exist but not be POSIX
2466dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2467if test $ac_cv_header_sys_wait_h = no; then
2468 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2469 AC_TRY_COMPILE([#include <sys/wait.h>],
2470 [union wait xx, yy; xx = yy],
2471 AC_MSG_RESULT(yes)
2472 AC_DEFINE(HAVE_SYS_WAIT_H)
2473 AC_DEFINE(HAVE_UNION_WAIT),
2474 AC_MSG_RESULT(no))
2475fi
2476
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002477AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2478 sys/select.h sys/utsname.h termcap.h fcntl.h \
2479 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2480 termio.h iconv.h inttypes.h langinfo.h math.h \
2481 unistd.h stropts.h errno.h sys/resource.h \
2482 sys/systeminfo.h locale.h sys/stream.h termios.h \
2483 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2484 utime.h sys/param.h libintl.h libgen.h \
2485 util/debug.h util/msg18n.h frame.h sys/acl.h \
2486 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002487
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002488dnl sys/ptem.h depends on sys/stream.h on Solaris
2489AC_CHECK_HEADERS(sys/ptem.h, [], [],
2490[#if defined HAVE_SYS_STREAM_H
2491# include <sys/stream.h>
2492#endif])
2493
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002494dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2495AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2496[#if defined HAVE_SYS_PARAM_H
2497# include <sys/param.h>
2498#endif])
2499
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002500
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002501dnl pthread_np.h may exist but can only be used after including pthread.h
2502AC_MSG_CHECKING([for pthread_np.h])
2503AC_TRY_COMPILE([
2504#include <pthread.h>
2505#include <pthread_np.h>],
2506 [int i; i = 0;],
2507 AC_MSG_RESULT(yes)
2508 AC_DEFINE(HAVE_PTHREAD_NP_H),
2509 AC_MSG_RESULT(no))
2510
Bram Moolenaare344bea2005-09-01 20:46:49 +00002511AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002512if test "x$MACOSX" = "xyes"; then
2513 dnl The strings.h file on OS/X contains a warning and nothing useful.
2514 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2515else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002516
2517dnl Check if strings.h and string.h can both be included when defined.
2518AC_MSG_CHECKING([if strings.h can be included after string.h])
2519cppflags_save=$CPPFLAGS
2520CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2521AC_TRY_COMPILE([
2522#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2523# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2524 /* but don't do it on AIX 5.1 (Uribarri) */
2525#endif
2526#ifdef HAVE_XM_XM_H
2527# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2528#endif
2529#ifdef HAVE_STRING_H
2530# include <string.h>
2531#endif
2532#if defined(HAVE_STRINGS_H)
2533# include <strings.h>
2534#endif
2535 ], [int i; i = 0;],
2536 AC_MSG_RESULT(yes),
2537 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2538 AC_MSG_RESULT(no))
2539CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002540fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002541
2542dnl Checks for typedefs, structures, and compiler characteristics.
2543AC_PROG_GCC_TRADITIONAL
2544AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002545AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002546AC_TYPE_MODE_T
2547AC_TYPE_OFF_T
2548AC_TYPE_PID_T
2549AC_TYPE_SIZE_T
2550AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002551AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002552
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553AC_HEADER_TIME
2554AC_CHECK_TYPE(ino_t, long)
2555AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002556AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002557
2558AC_MSG_CHECKING(for rlim_t)
2559if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2560 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2561else
2562 AC_EGREP_CPP(dnl
2563changequote(<<,>>)dnl
2564<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2565changequote([,]),
2566 [
2567#include <sys/types.h>
2568#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002569# include <stdlib.h>
2570# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002571#endif
2572#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002573# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002574#endif
2575 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2576 AC_MSG_RESULT($ac_cv_type_rlim_t)
2577fi
2578if test $ac_cv_type_rlim_t = no; then
2579 cat >> confdefs.h <<\EOF
2580#define rlim_t unsigned long
2581EOF
2582fi
2583
2584AC_MSG_CHECKING(for stack_t)
2585if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2586 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2587else
2588 AC_EGREP_CPP(stack_t,
2589 [
2590#include <sys/types.h>
2591#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002592# include <stdlib.h>
2593# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594#endif
2595#include <signal.h>
2596 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2597 AC_MSG_RESULT($ac_cv_type_stack_t)
2598fi
2599if test $ac_cv_type_stack_t = no; then
2600 cat >> confdefs.h <<\EOF
2601#define stack_t struct sigaltstack
2602EOF
2603fi
2604
2605dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2606AC_MSG_CHECKING(whether stack_t has an ss_base field)
2607AC_TRY_COMPILE([
2608#include <sys/types.h>
2609#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002610# include <stdlib.h>
2611# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002612#endif
2613#include <signal.h>
2614#include "confdefs.h"
2615 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2616 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2617 AC_MSG_RESULT(no))
2618
2619olibs="$LIBS"
2620AC_MSG_CHECKING(--with-tlib argument)
2621AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2622if test -n "$with_tlib"; then
2623 AC_MSG_RESULT($with_tlib)
2624 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002625 AC_MSG_CHECKING(for linking with $with_tlib library)
2626 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2627 dnl Need to check for tgetent() below.
2628 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002629else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002630 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002631 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2632 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002633 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002634 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002635 dnl Older versions of ncurses have bugs, get a new one!
2636 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002637 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002638 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002639 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2640 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002641 esac
2642 for libname in $tlibs; do
2643 AC_CHECK_LIB(${libname}, tgetent,,)
2644 if test "x$olibs" != "x$LIBS"; then
2645 dnl It's possible that a library is found but it doesn't work
2646 dnl e.g., shared library that cannot be found
2647 dnl compile and run a test program to be sure
2648 AC_TRY_RUN([
2649#ifdef HAVE_TERMCAP_H
2650# include <termcap.h>
2651#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002652#if STDC_HEADERS
2653# include <stdlib.h>
2654# include <stddef.h>
2655#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002656main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2657 res="OK", res="FAIL", res="FAIL")
2658 if test "$res" = "OK"; then
2659 break
2660 fi
2661 AC_MSG_RESULT($libname library is not usable)
2662 LIBS="$olibs"
2663 fi
2664 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002665 if test "x$olibs" = "x$LIBS"; then
2666 AC_MSG_RESULT(no terminal library found)
2667 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002668fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002669
2670if test "x$olibs" = "x$LIBS"; then
2671 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002672 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002673 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2674 AC_MSG_RESULT(yes),
2675 AC_MSG_ERROR([NOT FOUND!
2676 You need to install a terminal library; for example ncurses.
2677 Or specify the name of the library with --with-tlib.]))
2678fi
2679
Bram Moolenaar446cb832008-06-24 21:56:24 +00002680AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2681 [
2682 AC_RUN_IFELSE([[
2683#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002684#ifdef HAVE_TERMCAP_H
2685# include <termcap.h>
2686#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002687#ifdef HAVE_STRING_H
2688# include <string.h>
2689#endif
2690#if STDC_HEADERS
2691# include <stdlib.h>
2692# include <stddef.h>
2693#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002694main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002695{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2696 ]],[
2697 vim_cv_terminfo=no
2698 ],[
2699 vim_cv_terminfo=yes
2700 ],[
2701 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2702 ])
2703 ])
2704
2705if test "x$vim_cv_terminfo" = "xyes" ; then
2706 AC_DEFINE(TERMINFO)
2707fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002708
2709if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002710 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2711 [
2712 AC_RUN_IFELSE([[
2713#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002714#ifdef HAVE_TERMCAP_H
2715# include <termcap.h>
2716#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002717#if STDC_HEADERS
2718# include <stdlib.h>
2719# include <stddef.h>
2720#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002722{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2723 ]],[
2724 vim_cv_tgent=zero
2725 ],[
2726 vim_cv_tgent=non-zero
2727 ],[
2728 AC_MSG_ERROR(failed to compile test program.)
2729 ])
2730 ])
2731
2732 if test "x$vim_cv_tgent" = "xzero" ; then
2733 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2734 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002735fi
2736
2737AC_MSG_CHECKING(whether termcap.h contains ospeed)
2738AC_TRY_LINK([
2739#ifdef HAVE_TERMCAP_H
2740# include <termcap.h>
2741#endif
2742 ], [ospeed = 20000],
2743 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2744 [AC_MSG_RESULT(no)
2745 AC_MSG_CHECKING(whether ospeed can be extern)
2746 AC_TRY_LINK([
2747#ifdef HAVE_TERMCAP_H
2748# include <termcap.h>
2749#endif
2750extern short ospeed;
2751 ], [ospeed = 20000],
2752 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2753 AC_MSG_RESULT(no))]
2754 )
2755
2756AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2757AC_TRY_LINK([
2758#ifdef HAVE_TERMCAP_H
2759# include <termcap.h>
2760#endif
2761 ], [if (UP == 0 && BC == 0) PC = 1],
2762 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2763 [AC_MSG_RESULT(no)
2764 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2765 AC_TRY_LINK([
2766#ifdef HAVE_TERMCAP_H
2767# include <termcap.h>
2768#endif
2769extern char *UP, *BC, PC;
2770 ], [if (UP == 0 && BC == 0) PC = 1],
2771 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2772 AC_MSG_RESULT(no))]
2773 )
2774
2775AC_MSG_CHECKING(whether tputs() uses outfuntype)
2776AC_TRY_COMPILE([
2777#ifdef HAVE_TERMCAP_H
2778# include <termcap.h>
2779#endif
2780 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2781 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2782 AC_MSG_RESULT(no))
2783
2784dnl On some SCO machines sys/select redefines struct timeval
2785AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2786AC_TRY_COMPILE([
2787#include <sys/types.h>
2788#include <sys/time.h>
2789#include <sys/select.h>], ,
2790 AC_MSG_RESULT(yes)
2791 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2792 AC_MSG_RESULT(no))
2793
2794dnl AC_DECL_SYS_SIGLIST
2795
2796dnl Checks for pty.c (copied from screen) ==========================
2797AC_MSG_CHECKING(for /dev/ptc)
2798if test -r /dev/ptc; then
2799 AC_DEFINE(HAVE_DEV_PTC)
2800 AC_MSG_RESULT(yes)
2801else
2802 AC_MSG_RESULT(no)
2803fi
2804
2805AC_MSG_CHECKING(for SVR4 ptys)
2806if test -c /dev/ptmx ; then
2807 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2808 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2809 AC_MSG_RESULT(no))
2810else
2811 AC_MSG_RESULT(no)
2812fi
2813
2814AC_MSG_CHECKING(for ptyranges)
2815if test -d /dev/ptym ; then
2816 pdir='/dev/ptym'
2817else
2818 pdir='/dev'
2819fi
2820dnl SCO uses ptyp%d
2821AC_EGREP_CPP(yes,
2822[#ifdef M_UNIX
2823 yes;
2824#endif
2825 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2826dnl if test -c /dev/ptyp19; then
2827dnl ptys=`echo /dev/ptyp??`
2828dnl else
2829dnl ptys=`echo $pdir/pty??`
2830dnl fi
2831if test "$ptys" != "$pdir/pty??" ; then
2832 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2833 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2834 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2835 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2836 AC_MSG_RESULT([$p0 / $p1])
2837else
2838 AC_MSG_RESULT([don't know])
2839fi
2840
2841dnl **** pty mode/group handling ****
2842dnl
2843dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002844rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002845AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2846 [
2847 AC_RUN_IFELSE([[
2848#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002849#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002850#if STDC_HEADERS
2851# include <stdlib.h>
2852# include <stddef.h>
2853#endif
2854#ifdef HAVE_UNISTD_H
2855#include <unistd.h>
2856#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002857#include <sys/stat.h>
2858#include <stdio.h>
2859main()
2860{
2861 struct stat sb;
2862 char *x,*ttyname();
2863 int om, m;
2864 FILE *fp;
2865
2866 if (!(x = ttyname(0))) exit(1);
2867 if (stat(x, &sb)) exit(1);
2868 om = sb.st_mode;
2869 if (om & 002) exit(0);
2870 m = system("mesg y");
2871 if (m == -1 || m == 127) exit(1);
2872 if (stat(x, &sb)) exit(1);
2873 m = sb.st_mode;
2874 if (chmod(x, om)) exit(1);
2875 if (m & 002) exit(0);
2876 if (sb.st_gid == getgid()) exit(1);
2877 if (!(fp=fopen("conftest_grp", "w")))
2878 exit(1);
2879 fprintf(fp, "%d\n", sb.st_gid);
2880 fclose(fp);
2881 exit(0);
2882}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002883 ]],[
2884 if test -f conftest_grp; then
2885 vim_cv_tty_group=`cat conftest_grp`
2886 if test "x$vim_cv_tty_mode" = "x" ; then
2887 vim_cv_tty_mode=0620
2888 fi
2889 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2890 else
2891 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002892 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002893 fi
2894 ],[
2895 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002896 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002897 ],[
2898 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2899 ])
2900 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002901rm -f conftest_grp
2902
Bram Moolenaar446cb832008-06-24 21:56:24 +00002903if test "x$vim_cv_tty_group" != "xworld" ; then
2904 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2905 if test "x$vim_cv_tty_mode" = "x" ; then
2906 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)])
2907 else
2908 AC_DEFINE(PTYMODE, 0620)
2909 fi
2910fi
2911
Bram Moolenaar071d4272004-06-13 20:20:40 +00002912dnl Checks for library functions. ===================================
2913
2914AC_TYPE_SIGNAL
2915
2916dnl find out what to use at the end of a signal function
2917if test $ac_cv_type_signal = void; then
2918 AC_DEFINE(SIGRETURN, [return])
2919else
2920 AC_DEFINE(SIGRETURN, [return 0])
2921fi
2922
2923dnl check if struct sigcontext is defined (used for SGI only)
2924AC_MSG_CHECKING(for struct sigcontext)
2925AC_TRY_COMPILE([
2926#include <signal.h>
2927test_sig()
2928{
2929 struct sigcontext *scont;
2930 scont = (struct sigcontext *)0;
2931 return 1;
2932} ], ,
2933 AC_MSG_RESULT(yes)
2934 AC_DEFINE(HAVE_SIGCONTEXT),
2935 AC_MSG_RESULT(no))
2936
2937dnl tricky stuff: try to find out if getcwd() is implemented with
2938dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002939AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2940 [
2941 AC_RUN_IFELSE([[
2942#include "confdefs.h"
2943#ifdef HAVE_UNISTD_H
2944#include <unistd.h>
2945#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002946char *dagger[] = { "IFS=pwd", 0 };
2947main()
2948{
2949 char buffer[500];
2950 extern char **environ;
2951 environ = dagger;
2952 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002953}
2954 ]],[
2955 vim_cv_getcwd_broken=no
2956 ],[
2957 vim_cv_getcwd_broken=yes
2958 ],[
2959 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2960 ])
2961 ])
2962
2963if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2964 AC_DEFINE(BAD_GETCWD)
2965fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002966
Bram Moolenaar25153e12010-02-24 14:47:08 +01002967dnl Check for functions in one big call, to reduce the size of configure.
2968dnl Can only be used for functions that do not require any include.
2969AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002970 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002971 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002972 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002973 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002974 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2975 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002976AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002977
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002978dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2979dnl appropriate, so that off_t is 64 bits when needed.
2980AC_SYS_LARGEFILE
2981
Bram Moolenaar071d4272004-06-13 20:20:40 +00002982dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2983AC_MSG_CHECKING(for st_blksize)
2984AC_TRY_COMPILE(
2985[#include <sys/types.h>
2986#include <sys/stat.h>],
2987[ struct stat st;
2988 int n;
2989
2990 stat("/", &st);
2991 n = (int)st.st_blksize;],
2992 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2993 AC_MSG_RESULT(no))
2994
Bram Moolenaar446cb832008-06-24 21:56:24 +00002995AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2996 [
2997 AC_RUN_IFELSE([[
2998#include "confdefs.h"
2999#if STDC_HEADERS
3000# include <stdlib.h>
3001# include <stddef.h>
3002#endif
3003#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003005main() {struct stat st; exit(stat("configure/", &st) != 0); }
3006 ]],[
3007 vim_cv_stat_ignores_slash=yes
3008 ],[
3009 vim_cv_stat_ignores_slash=no
3010 ],[
3011 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3012 ])
3013 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014
Bram Moolenaar446cb832008-06-24 21:56:24 +00003015if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3016 AC_DEFINE(STAT_IGNORES_SLASH)
3017fi
3018
Bram Moolenaar071d4272004-06-13 20:20:40 +00003019dnl Link with iconv for charset translation, if not found without library.
3020dnl check for iconv() requires including iconv.h
3021dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3022dnl has been installed.
3023AC_MSG_CHECKING(for iconv_open())
3024save_LIBS="$LIBS"
3025LIBS="$LIBS -liconv"
3026AC_TRY_LINK([
3027#ifdef HAVE_ICONV_H
3028# include <iconv.h>
3029#endif
3030 ], [iconv_open("fr", "to");],
3031 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3032 LIBS="$save_LIBS"
3033 AC_TRY_LINK([
3034#ifdef HAVE_ICONV_H
3035# include <iconv.h>
3036#endif
3037 ], [iconv_open("fr", "to");],
3038 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3039 AC_MSG_RESULT(no)))
3040
3041
3042AC_MSG_CHECKING(for nl_langinfo(CODESET))
3043AC_TRY_LINK([
3044#ifdef HAVE_LANGINFO_H
3045# include <langinfo.h>
3046#endif
3047], [char *cs = nl_langinfo(CODESET);],
3048 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3049 AC_MSG_RESULT(no))
3050
Bram Moolenaar446cb832008-06-24 21:56:24 +00003051dnl Need various functions for floating point support. Only enable
3052dnl floating point when they are all present.
3053AC_CHECK_LIB(m, strtod)
3054AC_MSG_CHECKING([for strtod() and other floating point functions])
3055AC_TRY_LINK([
3056#ifdef HAVE_MATH_H
3057# include <math.h>
3058#endif
3059#if STDC_HEADERS
3060# include <stdlib.h>
3061# include <stddef.h>
3062#endif
3063], [char *s; double d;
3064 d = strtod("1.1", &s);
3065 d = fabs(1.11);
3066 d = ceil(1.11);
3067 d = floor(1.11);
3068 d = log10(1.11);
3069 d = pow(1.11, 2.22);
3070 d = sqrt(1.11);
3071 d = sin(1.11);
3072 d = cos(1.11);
3073 d = atan(1.11);
3074 ],
3075 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3076 AC_MSG_RESULT(no))
3077
Bram Moolenaar071d4272004-06-13 20:20:40 +00003078dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3079dnl when -lacl works, also try to use -lattr (required for Debian).
3080AC_MSG_CHECKING(--disable-acl argument)
3081AC_ARG_ENABLE(acl,
3082 [ --disable-acl Don't check for ACL support.],
3083 , [enable_acl="yes"])
3084if test "$enable_acl" = "yes"; then
3085AC_MSG_RESULT(no)
3086AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3087 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3088 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3089
3090AC_MSG_CHECKING(for POSIX ACL support)
3091AC_TRY_LINK([
3092#include <sys/types.h>
3093#ifdef HAVE_SYS_ACL_H
3094# include <sys/acl.h>
3095#endif
3096acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3097 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3098 acl_free(acl);],
3099 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3100 AC_MSG_RESULT(no))
3101
3102AC_MSG_CHECKING(for Solaris ACL support)
3103AC_TRY_LINK([
3104#ifdef HAVE_SYS_ACL_H
3105# include <sys/acl.h>
3106#endif], [acl("foo", GETACLCNT, 0, NULL);
3107 ],
3108 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3109 AC_MSG_RESULT(no))
3110
3111AC_MSG_CHECKING(for AIX ACL support)
3112AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003113#if STDC_HEADERS
3114# include <stdlib.h>
3115# include <stddef.h>
3116#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003117#ifdef HAVE_SYS_ACL_H
3118# include <sys/acl.h>
3119#endif
3120#ifdef HAVE_SYS_ACCESS_H
3121# include <sys/access.h>
3122#endif
3123#define _ALL_SOURCE
3124
3125#include <sys/stat.h>
3126
3127int aclsize;
3128struct acl *aclent;], [aclsize = sizeof(struct acl);
3129 aclent = (void *)malloc(aclsize);
3130 statacl("foo", STX_NORMAL, aclent, aclsize);
3131 ],
3132 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3133 AC_MSG_RESULT(no))
3134else
3135 AC_MSG_RESULT(yes)
3136fi
3137
3138AC_MSG_CHECKING(--disable-gpm argument)
3139AC_ARG_ENABLE(gpm,
3140 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3141 [enable_gpm="yes"])
3142
3143if test "$enable_gpm" = "yes"; then
3144 AC_MSG_RESULT(no)
3145 dnl Checking if gpm support can be compiled
3146 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3147 [olibs="$LIBS" ; LIBS="-lgpm"]
3148 AC_TRY_LINK(
3149 [#include <gpm.h>
3150 #include <linux/keyboard.h>],
3151 [Gpm_GetLibVersion(NULL);],
3152 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3153 dnl FEAT_MOUSE_GPM if mouse support is included
3154 [vi_cv_have_gpm=yes],
3155 [vi_cv_have_gpm=no])
3156 [LIBS="$olibs"]
3157 )
3158 if test $vi_cv_have_gpm = yes; then
3159 LIBS="$LIBS -lgpm"
3160 AC_DEFINE(HAVE_GPM)
3161 fi
3162else
3163 AC_MSG_RESULT(yes)
3164fi
3165
Bram Moolenaar446cb832008-06-24 21:56:24 +00003166AC_MSG_CHECKING(--disable-sysmouse argument)
3167AC_ARG_ENABLE(sysmouse,
3168 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3169 [enable_sysmouse="yes"])
3170
3171if test "$enable_sysmouse" = "yes"; then
3172 AC_MSG_RESULT(no)
3173 dnl Checking if sysmouse support can be compiled
3174 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3175 dnl defines FEAT_SYSMOUSE if mouse support is included
3176 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3177 AC_TRY_LINK(
3178 [#include <sys/consio.h>
3179 #include <signal.h>
3180 #include <sys/fbio.h>],
3181 [struct mouse_info mouse;
3182 mouse.operation = MOUSE_MODE;
3183 mouse.operation = MOUSE_SHOW;
3184 mouse.u.mode.mode = 0;
3185 mouse.u.mode.signal = SIGUSR2;],
3186 [vi_cv_have_sysmouse=yes],
3187 [vi_cv_have_sysmouse=no])
3188 )
3189 if test $vi_cv_have_sysmouse = yes; then
3190 AC_DEFINE(HAVE_SYSMOUSE)
3191 fi
3192else
3193 AC_MSG_RESULT(yes)
3194fi
3195
Bram Moolenaarf05da212009-11-17 16:13:15 +00003196dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3197AC_MSG_CHECKING(for FD_CLOEXEC)
3198AC_TRY_COMPILE(
3199[#if HAVE_FCNTL_H
3200# include <fcntl.h>
3201#endif],
3202[ int flag = FD_CLOEXEC;],
3203 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3204 AC_MSG_RESULT(not usable))
3205
Bram Moolenaar071d4272004-06-13 20:20:40 +00003206dnl rename needs to be checked separately to work on Nextstep with cc
3207AC_MSG_CHECKING(for rename)
3208AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3209 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3210 AC_MSG_RESULT(no))
3211
3212dnl sysctl() may exist but not the arguments we use
3213AC_MSG_CHECKING(for sysctl)
3214AC_TRY_COMPILE(
3215[#include <sys/types.h>
3216#include <sys/sysctl.h>],
3217[ int mib[2], r;
3218 size_t len;
3219
3220 mib[0] = CTL_HW;
3221 mib[1] = HW_USERMEM;
3222 len = sizeof(r);
3223 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3224 ],
3225 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3226 AC_MSG_RESULT(not usable))
3227
3228dnl sysinfo() may exist but not be Linux compatible
3229AC_MSG_CHECKING(for sysinfo)
3230AC_TRY_COMPILE(
3231[#include <sys/types.h>
3232#include <sys/sysinfo.h>],
3233[ struct sysinfo sinfo;
3234 int t;
3235
3236 (void)sysinfo(&sinfo);
3237 t = sinfo.totalram;
3238 ],
3239 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3240 AC_MSG_RESULT(not usable))
3241
Bram Moolenaar914572a2007-05-01 11:37:47 +00003242dnl struct sysinfo may have the mem_unit field or not
3243AC_MSG_CHECKING(for sysinfo.mem_unit)
3244AC_TRY_COMPILE(
3245[#include <sys/types.h>
3246#include <sys/sysinfo.h>],
3247[ struct sysinfo sinfo;
3248 sinfo.mem_unit = 1;
3249 ],
3250 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3251 AC_MSG_RESULT(no))
3252
Bram Moolenaar071d4272004-06-13 20:20:40 +00003253dnl sysconf() may exist but not support what we want to use
3254AC_MSG_CHECKING(for sysconf)
3255AC_TRY_COMPILE(
3256[#include <unistd.h>],
3257[ (void)sysconf(_SC_PAGESIZE);
3258 (void)sysconf(_SC_PHYS_PAGES);
3259 ],
3260 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3261 AC_MSG_RESULT(not usable))
3262
Bram Moolenaar914703b2010-05-31 21:59:46 +02003263AC_CHECK_SIZEOF([int])
3264AC_CHECK_SIZEOF([long])
3265AC_CHECK_SIZEOF([time_t])
3266AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003267
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003268dnl Make sure that uint32_t is really 32 bits unsigned.
3269AC_MSG_CHECKING([uint32_t is 32 bits])
3270AC_TRY_RUN([
3271#ifdef HAVE_STDINT_H
3272# include <stdint.h>
3273#endif
3274#ifdef HAVE_INTTYPES_H
3275# include <inttypes.h>
3276#endif
3277main() {
3278 uint32_t nr1 = (uint32_t)-1;
3279 uint32_t nr2 = (uint32_t)0xffffffffUL;
3280 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3281 exit(0);
3282}],
3283AC_MSG_RESULT(ok),
3284AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3285AC_MSG_ERROR([could not compile program using uint32_t.]))
3286
Bram Moolenaar446cb832008-06-24 21:56:24 +00003287dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3288dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3289
Bram Moolenaar071d4272004-06-13 20:20:40 +00003290[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003291#include "confdefs.h"
3292#ifdef HAVE_STRING_H
3293# include <string.h>
3294#endif
3295#if STDC_HEADERS
3296# include <stdlib.h>
3297# include <stddef.h>
3298#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003299main() {
3300 char buf[10];
3301 strcpy(buf, "abcdefghi");
3302 mch_memmove(buf, buf + 2, 3);
3303 if (strncmp(buf, "ababcf", 6))
3304 exit(1);
3305 strcpy(buf, "abcdefghi");
3306 mch_memmove(buf + 2, buf, 3);
3307 if (strncmp(buf, "cdedef", 6))
3308 exit(1);
3309 exit(0); /* libc version works properly. */
3310}']
3311
Bram Moolenaar446cb832008-06-24 21:56:24 +00003312AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3313 [
3314 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3315 [
3316 vim_cv_memmove_handles_overlap=yes
3317 ],[
3318 vim_cv_memmove_handles_overlap=no
3319 ],[
3320 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3321 ])
3322 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003323
Bram Moolenaar446cb832008-06-24 21:56:24 +00003324if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3325 AC_DEFINE(USEMEMMOVE)
3326else
3327 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3328 [
3329 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3330 [
3331 vim_cv_bcopy_handles_overlap=yes
3332 ],[
3333 vim_cv_bcopy_handles_overlap=no
3334 ],[
3335 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3336 ])
3337 ])
3338
3339 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3340 AC_DEFINE(USEBCOPY)
3341 else
3342 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3343 [
3344 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3345 [
3346 vim_cv_memcpy_handles_overlap=yes
3347 ],[
3348 vim_cv_memcpy_handles_overlap=no
3349 ],[
3350 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3351 ])
3352 ])
3353
3354 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3355 AC_DEFINE(USEMEMCPY)
3356 fi
3357 fi
3358fi
3359
Bram Moolenaar071d4272004-06-13 20:20:40 +00003360
3361dnl Check for multibyte locale functions
3362dnl Find out if _Xsetlocale() is supported by libX11.
3363dnl Check if X_LOCALE should be defined.
3364
3365if test "$enable_multibyte" = "yes"; then
3366 cflags_save=$CFLAGS
3367 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003368 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003369 CFLAGS="$CFLAGS -I$x_includes"
3370 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3371 AC_MSG_CHECKING(whether X_LOCALE needed)
3372 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3373 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3374 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3375 AC_MSG_RESULT(no))
3376 fi
3377 CFLAGS=$cflags_save
3378 LDFLAGS=$ldflags_save
3379fi
3380
3381dnl Link with xpg4, it is said to make Korean locale working
3382AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3383
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003384dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003385dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003386dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003387dnl -t for typedefs (many ctags have this)
3388dnl -s for static functions (Elvis ctags only?)
3389dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3390dnl -i+m to test for older Exuberant ctags
3391AC_MSG_CHECKING(how to create tags)
3392test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003393if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003394 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003395elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3396 TAGPRG="exctags -I INIT+ --fields=+S"
3397elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3398 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003399else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003400 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003401 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3402 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3403 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3404 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3405 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3406 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3407 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3408fi
3409test -f tags.save && mv tags.save tags
3410AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3411
3412dnl Check how we can run man with a section number
3413AC_MSG_CHECKING(how to run man with a section nr)
3414MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003415(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 +00003416AC_MSG_RESULT($MANDEF)
3417if test "$MANDEF" = "man -s"; then
3418 AC_DEFINE(USEMAN_S)
3419fi
3420
3421dnl Check if gettext() is working and if it needs -lintl
3422AC_MSG_CHECKING(--disable-nls argument)
3423AC_ARG_ENABLE(nls,
3424 [ --disable-nls Don't support NLS (gettext()).], ,
3425 [enable_nls="yes"])
3426
3427if test "$enable_nls" = "yes"; then
3428 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003429
3430 INSTALL_LANGS=install-languages
3431 AC_SUBST(INSTALL_LANGS)
3432 INSTALL_TOOL_LANGS=install-tool-languages
3433 AC_SUBST(INSTALL_TOOL_LANGS)
3434
Bram Moolenaar071d4272004-06-13 20:20:40 +00003435 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3436 AC_MSG_CHECKING([for NLS])
3437 if test -f po/Makefile; then
3438 have_gettext="no"
3439 if test -n "$MSGFMT"; then
3440 AC_TRY_LINK(
3441 [#include <libintl.h>],
3442 [gettext("Test");],
3443 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3444 olibs=$LIBS
3445 LIBS="$LIBS -lintl"
3446 AC_TRY_LINK(
3447 [#include <libintl.h>],
3448 [gettext("Test");],
3449 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3450 AC_MSG_RESULT([gettext() doesn't work]);
3451 LIBS=$olibs))
3452 else
3453 AC_MSG_RESULT([msgfmt not found - disabled]);
3454 fi
3455 if test $have_gettext = "yes"; then
3456 AC_DEFINE(HAVE_GETTEXT)
3457 MAKEMO=yes
3458 AC_SUBST(MAKEMO)
3459 dnl this was added in GNU gettext 0.10.36
3460 AC_CHECK_FUNCS(bind_textdomain_codeset)
3461 dnl _nl_msg_cat_cntr is required for GNU gettext
3462 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3463 AC_TRY_LINK(
3464 [#include <libintl.h>
3465 extern int _nl_msg_cat_cntr;],
3466 [++_nl_msg_cat_cntr;],
3467 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3468 AC_MSG_RESULT([no]))
3469 fi
3470 else
3471 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3472 fi
3473else
3474 AC_MSG_RESULT(yes)
3475fi
3476
3477dnl Check for dynamic linking loader
3478AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3479if test x${DLL} = xdlfcn.h; then
3480 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3481 AC_MSG_CHECKING([for dlopen()])
3482 AC_TRY_LINK(,[
3483 extern void* dlopen();
3484 dlopen();
3485 ],
3486 AC_MSG_RESULT(yes);
3487 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3488 AC_MSG_RESULT(no);
3489 AC_MSG_CHECKING([for dlopen() in -ldl])
3490 olibs=$LIBS
3491 LIBS="$LIBS -ldl"
3492 AC_TRY_LINK(,[
3493 extern void* dlopen();
3494 dlopen();
3495 ],
3496 AC_MSG_RESULT(yes);
3497 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3498 AC_MSG_RESULT(no);
3499 LIBS=$olibs))
3500 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3501 dnl ick :-)
3502 AC_MSG_CHECKING([for dlsym()])
3503 AC_TRY_LINK(,[
3504 extern void* dlsym();
3505 dlsym();
3506 ],
3507 AC_MSG_RESULT(yes);
3508 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3509 AC_MSG_RESULT(no);
3510 AC_MSG_CHECKING([for dlsym() in -ldl])
3511 olibs=$LIBS
3512 LIBS="$LIBS -ldl"
3513 AC_TRY_LINK(,[
3514 extern void* dlsym();
3515 dlsym();
3516 ],
3517 AC_MSG_RESULT(yes);
3518 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3519 AC_MSG_RESULT(no);
3520 LIBS=$olibs))
3521elif test x${DLL} = xdl.h; then
3522 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3523 AC_MSG_CHECKING([for shl_load()])
3524 AC_TRY_LINK(,[
3525 extern void* shl_load();
3526 shl_load();
3527 ],
3528 AC_MSG_RESULT(yes);
3529 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3530 AC_MSG_RESULT(no);
3531 AC_MSG_CHECKING([for shl_load() in -ldld])
3532 olibs=$LIBS
3533 LIBS="$LIBS -ldld"
3534 AC_TRY_LINK(,[
3535 extern void* shl_load();
3536 shl_load();
3537 ],
3538 AC_MSG_RESULT(yes);
3539 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3540 AC_MSG_RESULT(no);
3541 LIBS=$olibs))
3542fi
3543AC_CHECK_HEADERS(setjmp.h)
3544
3545if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3546 dnl -ldl must come after DynaLoader.a
3547 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3548 LIBS=`echo $LIBS | sed s/-ldl//`
3549 PERL_LIBS="$PERL_LIBS -ldl"
3550 fi
3551fi
3552
Bram Moolenaar164fca32010-07-14 13:58:07 +02003553if test "x$MACOSX" = "xyes"; then
3554 AC_MSG_CHECKING(whether we need -framework Cocoa)
3555 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3556 dnl disabled during tiny build)
3557 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3558 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003559 AC_MSG_RESULT(yes)
3560 else
3561 AC_MSG_RESULT(no)
3562 fi
3563fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003564if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003565 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003566fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003567
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003568dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3569dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3570dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003571dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3572dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003573DEPEND_CFLAGS_FILTER=
3574if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003575 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003576 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003577 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003578 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003579 AC_MSG_RESULT(yes)
3580 else
3581 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003582 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003583 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3584 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003585 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003586 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3587 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003588 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 +00003589 AC_MSG_RESULT(yes)
3590 else
3591 AC_MSG_RESULT(no)
3592 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003593fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003594AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003595
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003596dnl link.sh tries to avoid overlinking in a hackish way.
3597dnl At least GNU ld supports --as-needed which provides the same functionality
3598dnl at linker level. Let's use it.
3599AC_MSG_CHECKING(linker --as-needed support)
3600LINK_AS_NEEDED=
3601# Check if linker supports --as-needed and --no-as-needed options
3602if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3603 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3604 LINK_AS_NEEDED=yes
3605fi
3606if test "$LINK_AS_NEEDED" = yes; then
3607 AC_MSG_RESULT(yes)
3608else
3609 AC_MSG_RESULT(no)
3610fi
3611AC_SUBST(LINK_AS_NEEDED)
3612
Bram Moolenaar071d4272004-06-13 20:20:40 +00003613dnl write output files
3614AC_OUTPUT(auto/config.mk:config.mk.in)
3615
3616dnl vim: set sw=2 tw=78 fo+=l: