blob: ae10bcf66295d0042e51d380289ea6611ba26d3f [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)
104 if test -f os_macosx.c; then
105 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 Moolenaar3a025402008-07-24 15:20:50 +0000171 OS_EXTRA_SRC="os_macosx.c 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"
175 if test "x$MACARCH" = "xboth"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100176 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000177 else
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100178 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000179 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180
181 dnl If Carbon is found, assume we don't want X11
182 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000183 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
185 if test "x$CARBON" = "xyes"; then
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000186 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000187 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188 fi
189 fi
190 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000191
Bram Moolenaardb552d602006-03-23 22:59:57 +0000192 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000193 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000194 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000195 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
196 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
197 fi
198
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199else
200 AC_MSG_RESULT(no)
201fi
202
203AC_SUBST(OS_EXTRA_SRC)
204AC_SUBST(OS_EXTRA_OBJ)
205
206dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
207dnl Only when the directory exists and it wasn't there yet.
208dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000209dnl Skip all of this when cross-compiling.
210if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000211 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000212 have_local_include=''
213 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000214 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
215 --without-local-dir do not search /usr/local for local libraries.], [
216 local_dir="$withval"
217 case "$withval" in
218 */*) ;;
219 no)
220 # avoid adding local dir to LDFLAGS and CPPFLAGS
221 have_local_dir=yes
222 have_local_lib=yes
223 ;;
224 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
225 esac
226 AC_MSG_RESULT($local_dir)
227 ], [
228 local_dir=/usr/local
229 AC_MSG_RESULT(Defaulting to $local_dir)
230 ])
231 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000232 echo 'void f(){}' > conftest.c
233 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000234 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
235 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000236 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000238 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
239 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 +0000240 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000241 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000242 fi
243 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000244 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
245 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 +0000246 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000247 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000248 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000249 fi
250fi
251
252AC_MSG_CHECKING(--with-vim-name argument)
253AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
254 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000255 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256AC_SUBST(VIMNAME)
257AC_MSG_CHECKING(--with-ex-name argument)
258AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
259 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
260 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
261AC_SUBST(EXNAME)
262AC_MSG_CHECKING(--with-view-name argument)
263AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
264 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
265 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
266AC_SUBST(VIEWNAME)
267
268AC_MSG_CHECKING(--with-global-runtime argument)
269AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
271 AC_MSG_RESULT(no))
272
273AC_MSG_CHECKING(--with-modified-by argument)
274AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
276 AC_MSG_RESULT(no))
277
278dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
279AC_MSG_CHECKING(if character set is EBCDIC)
280AC_TRY_COMPILE([ ],
281[ /* TryCompile function for CharSet.
282 Treat any failure as ASCII for compatibility with existing art.
283 Use compile-time rather than run-time tests for cross-compiler
284 tolerance. */
285#if '0'!=240
286make an error "Character set is not EBCDIC"
287#endif ],
288[ # TryCompile action if true
289cf_cv_ebcdic=yes ],
290[ # TryCompile action if false
291cf_cv_ebcdic=no])
292# end of TryCompile ])
293# end of CacheVal CvEbcdic
294AC_MSG_RESULT($cf_cv_ebcdic)
295case "$cf_cv_ebcdic" in #(vi
296 yes) AC_DEFINE(EBCDIC)
297 line_break='"\\n"'
298 ;;
299 *) line_break='"\\012"';;
300esac
301AC_SUBST(line_break)
302
303if test "$cf_cv_ebcdic" = "yes"; then
304dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
305AC_MSG_CHECKING(for OS/390 Unix)
306case `uname` in
307 OS/390) OS390Unix="yes";
308 dnl If using cc the environment variable _CC_CCMODE must be
309 dnl set to "1", so that some compiler extensions are enabled.
310 dnl If using c89 the environment variable is named _CC_C89MODE.
311 dnl Note: compile with c89 never tested.
312 if test "$CC" = "cc"; then
313 ccm="$_CC_CCMODE"
314 ccn="CC"
315 else
316 if test "$CC" = "c89"; then
317 ccm="$_CC_C89MODE"
318 ccn="C89"
319 else
320 ccm=1
321 fi
322 fi
323 if test "$ccm" != "1"; then
324 echo ""
325 echo "------------------------------------------"
326 echo " On OS/390 Unix, the environment variable"
327 echo " __CC_${ccn}MODE must be set to \"1\"!"
328 echo " Do:"
329 echo " export _CC_${ccn}MODE=1"
330 echo " and then call configure again."
331 echo "------------------------------------------"
332 exit 1
333 fi
334 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
335 AC_MSG_RESULT(yes)
336 ;;
337 *) OS390Unix="no";
338 AC_MSG_RESULT(no)
339 ;;
340esac
341fi
342
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000343dnl Link with -lselinux for SELinux stuff; if not found
344AC_MSG_CHECKING(--disable-selinux argument)
345AC_ARG_ENABLE(selinux,
346 [ --disable-selinux Don't check for SELinux support.],
347 , enable_selinux="yes")
348if test "$enable_selinux" = "yes"; then
349 AC_MSG_RESULT(no)
350 AC_CHECK_LIB(selinux, is_selinux_enabled,
351 [LIBS="$LIBS -lselinux"
352 AC_DEFINE(HAVE_SELINUX)])
353else
354 AC_MSG_RESULT(yes)
355fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000356
357dnl Check user requested features.
358
359AC_MSG_CHECKING(--with-features argument)
360AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
361 features="$withval"; AC_MSG_RESULT($features),
362 features="normal"; AC_MSG_RESULT(Defaulting to normal))
363
364dovimdiff=""
365dogvimdiff=""
366case "$features" in
367 tiny) AC_DEFINE(FEAT_TINY) ;;
368 small) AC_DEFINE(FEAT_SMALL) ;;
369 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
370 dogvimdiff="installgvimdiff" ;;
371 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
372 dogvimdiff="installgvimdiff" ;;
373 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
374 dogvimdiff="installgvimdiff" ;;
375 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
376esac
377
378AC_SUBST(dovimdiff)
379AC_SUBST(dogvimdiff)
380
381AC_MSG_CHECKING(--with-compiledby argument)
382AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
383 compiledby="$withval"; AC_MSG_RESULT($withval),
384 compiledby=""; AC_MSG_RESULT(no))
385AC_SUBST(compiledby)
386
387AC_MSG_CHECKING(--disable-xsmp argument)
388AC_ARG_ENABLE(xsmp,
389 [ --disable-xsmp Disable XSMP session management],
390 , enable_xsmp="yes")
391
392if test "$enable_xsmp" = "yes"; then
393 AC_MSG_RESULT(no)
394 AC_MSG_CHECKING(--disable-xsmp-interact argument)
395 AC_ARG_ENABLE(xsmp-interact,
396 [ --disable-xsmp-interact Disable XSMP interaction],
397 , enable_xsmp_interact="yes")
398 if test "$enable_xsmp_interact" = "yes"; then
399 AC_MSG_RESULT(no)
400 AC_DEFINE(USE_XSMP_INTERACT)
401 else
402 AC_MSG_RESULT(yes)
403 fi
404else
405 AC_MSG_RESULT(yes)
406fi
407
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000408dnl Check for MzScheme feature.
409AC_MSG_CHECKING(--enable-mzschemeinterp argument)
410AC_ARG_ENABLE(mzschemeinterp,
411 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
412 [enable_mzschemeinterp="no"])
413AC_MSG_RESULT($enable_mzschemeinterp)
414
415if test "$enable_mzschemeinterp" = "yes"; then
416 dnl -- find the mzscheme executable
417 AC_SUBST(vi_cv_path_mzscheme)
418
419 AC_MSG_CHECKING(--with-plthome argument)
420 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000421 [ --with-plthome=PLTHOME Use PLTHOME.],
422 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000423 with_plthome="";AC_MSG_RESULT("no"))
424
425 if test "X$with_plthome" != "X"; then
426 vi_cv_path_mzscheme_pfx="$with_plthome"
427 else
428 AC_MSG_CHECKING(PLTHOME environment var)
429 if test "X$PLTHOME" != "X"; then
430 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000431 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000432 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000433 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000434 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000435 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000436
437 dnl resolve symbolic link, the executable is often elsewhere and there
438 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000439 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000440 lsout=`ls -l $vi_cv_path_mzscheme`
441 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
442 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
443 fi
444 fi
445
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000446 if test "X$vi_cv_path_mzscheme" != "X"; then
447 dnl -- find where MzScheme thinks it was installed
448 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000449 dnl different versions of MzScheme differ in command line processing
450 dnl use universal approach
451 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000452 (build-path (call-with-values \
453 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000454 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
455 dnl Remove a trailing slash
456 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
457 sed -e 's+/$++'` ])
458 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000459 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000460 fi
461 fi
462
Bram Moolenaard7afed32007-05-06 13:26:41 +0000463 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000464 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
465 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
466 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000467 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
468 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000469 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000472 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000473 AC_MSG_RESULT(yes)
474 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000475 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000476 AC_MSG_RESULT(no)
477 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
478 if test -f /usr/include/plt/scheme.h; then
479 AC_MSG_RESULT(yes)
480 SCHEME_INC=/usr/include/plt
481 else
482 AC_MSG_RESULT(no)
483 vi_cv_path_mzscheme_pfx=
484 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000485 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000486 fi
487 fi
488
489 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000490 if test "x$MACOSX" = "xyes"; then
491 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000492 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
493 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
494 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000495 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000496 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 +0000497 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000498 dnl Using shared objects
499 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
500 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
501 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
502 else
503 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
504 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000505 if test "$GCC" = yes; then
506 dnl Make Vim remember the path to the library. For when it's not in
507 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000508 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000509 elif test "`(uname) 2>/dev/null`" = SunOS &&
510 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000511 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000512 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000513 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000514 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
515 SCHEME_COLLECTS=lib/plt/
516 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000517 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
518 dnl need to generate bytecode for MzScheme base
519 MZSCHEME_EXTRA="mzscheme_base.c"
520 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
521 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
522 fi
523 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000524 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000525 MZSCHEME_SRC="if_mzsch.c"
526 MZSCHEME_OBJ="objects/if_mzsch.o"
527 MZSCHEME_PRO="if_mzsch.pro"
528 AC_DEFINE(FEAT_MZSCHEME)
529 fi
530 AC_SUBST(MZSCHEME_SRC)
531 AC_SUBST(MZSCHEME_OBJ)
532 AC_SUBST(MZSCHEME_PRO)
533 AC_SUBST(MZSCHEME_LIBS)
534 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000535 AC_SUBST(MZSCHEME_EXTRA)
536 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000537fi
538
539
Bram Moolenaar071d4272004-06-13 20:20:40 +0000540AC_MSG_CHECKING(--enable-perlinterp argument)
541AC_ARG_ENABLE(perlinterp,
542 [ --enable-perlinterp Include Perl interpreter.], ,
543 [enable_perlinterp="no"])
544AC_MSG_RESULT($enable_perlinterp)
545if test "$enable_perlinterp" = "yes"; then
546 AC_SUBST(vi_cv_path_perl)
547 AC_PATH_PROG(vi_cv_path_perl, perl)
548 if test "X$vi_cv_path_perl" != "X"; then
549 AC_MSG_CHECKING(Perl version)
550 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
551 eval `$vi_cv_path_perl -V:usethreads`
552 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
553 badthreads=no
554 else
555 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
556 eval `$vi_cv_path_perl -V:use5005threads`
557 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
558 badthreads=no
559 else
560 badthreads=yes
561 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
562 fi
563 else
564 badthreads=yes
565 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
566 fi
567 fi
568 if test $badthreads = no; then
569 AC_MSG_RESULT(OK)
570 eval `$vi_cv_path_perl -V:shrpenv`
571 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
572 shrpenv=""
573 fi
574 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
575 AC_SUBST(vi_cv_perllib)
576 dnl Remove "-fno-something", it breaks using cproto.
577 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
578 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
579 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
580 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
581 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
582 -e 's/-bE:perl.exp//' -e 's/-lc //'`
583 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
584 dnl a test in configure may fail because of that.
585 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
586 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
587
588 dnl check that compiling a simple program still works with the flags
589 dnl added for Perl.
590 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
591 cflags_save=$CFLAGS
592 libs_save=$LIBS
593 ldflags_save=$LDFLAGS
594 CFLAGS="$CFLAGS $perlcppflags"
595 LIBS="$LIBS $perllibs"
596 LDFLAGS="$perlldflags $LDFLAGS"
597 AC_TRY_LINK(,[ ],
598 AC_MSG_RESULT(yes); perl_ok=yes,
599 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
600 CFLAGS=$cflags_save
601 LIBS=$libs_save
602 LDFLAGS=$ldflags_save
603 if test $perl_ok = yes; then
604 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000605 dnl remove -pipe and -Wxxx, it confuses cproto
606 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000607 fi
608 if test "X$perlldflags" != "X"; then
609 LDFLAGS="$perlldflags $LDFLAGS"
610 fi
611 PERL_LIBS=$perllibs
612 PERL_SRC="auto/if_perl.c if_perlsfio.c"
613 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
614 PERL_PRO="if_perl.pro if_perlsfio.pro"
615 AC_DEFINE(FEAT_PERL)
616 fi
617 fi
618 else
619 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
620 fi
621 fi
622
623 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000624 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000625 dir=/System/Library/Perl
626 darwindir=$dir/darwin
627 if test -d $darwindir; then
628 PERL=/usr/bin/perl
629 else
630 dnl Mac OS X 10.3
631 dir=/System/Library/Perl/5.8.1
632 darwindir=$dir/darwin-thread-multi-2level
633 if test -d $darwindir; then
634 PERL=/usr/bin/perl
635 fi
636 fi
637 if test -n "$PERL"; then
638 PERL_DIR="$dir"
639 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
640 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
641 PERL_LIBS="-L$darwindir/CORE -lperl"
642 fi
643 fi
644fi
645AC_SUBST(shrpenv)
646AC_SUBST(PERL_SRC)
647AC_SUBST(PERL_OBJ)
648AC_SUBST(PERL_PRO)
649AC_SUBST(PERL_CFLAGS)
650AC_SUBST(PERL_LIBS)
651
652AC_MSG_CHECKING(--enable-pythoninterp argument)
653AC_ARG_ENABLE(pythoninterp,
654 [ --enable-pythoninterp Include Python interpreter.], ,
655 [enable_pythoninterp="no"])
656AC_MSG_RESULT($enable_pythoninterp)
657if test "$enable_pythoninterp" = "yes"; then
658 dnl -- find the python executable
659 AC_PATH_PROG(vi_cv_path_python, python)
660 if test "X$vi_cv_path_python" != "X"; then
661
662 dnl -- get its version number
663 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
664 [[vi_cv_var_python_version=`
665 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
666 ]])
667
668 dnl -- it must be at least version 1.4
669 AC_MSG_CHECKING(Python is 1.4 or better)
670 if ${vi_cv_path_python} -c \
671 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
672 then
673 AC_MSG_RESULT(yep)
674
675 dnl -- find where python thinks it was installed
676 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
677 [ vi_cv_path_python_pfx=`
678 ${vi_cv_path_python} -c \
679 "import sys; print sys.prefix"` ])
680
681 dnl -- and where it thinks it runs
682 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
683 [ vi_cv_path_python_epfx=`
684 ${vi_cv_path_python} -c \
685 "import sys; print sys.exec_prefix"` ])
686
687 dnl -- python's internal library path
688
689 AC_CACHE_VAL(vi_cv_path_pythonpath,
690 [ vi_cv_path_pythonpath=`
691 unset PYTHONPATH;
692 ${vi_cv_path_python} -c \
693 "import sys, string; print string.join(sys.path,':')"` ])
694
695 dnl -- where the Python implementation library archives are
696
697 AC_ARG_WITH(python-config-dir,
698 [ --with-python-config-dir=PATH Python's config directory],
699 [ vi_cv_path_python_conf="${withval}" ] )
700
701 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
702 [
703 vi_cv_path_python_conf=
704 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000705 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000706 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
707 if test -d "$d" && test -f "$d/config.c"; then
708 vi_cv_path_python_conf="$d"
709 fi
710 done
711 done
712 ])
713
714 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
715
716 if test "X$PYTHON_CONFDIR" = "X"; then
717 AC_MSG_RESULT([can't find it!])
718 else
719
720 dnl -- we need to examine Python's config/Makefile too
721 dnl see what the interpreter is built from
722 AC_CACHE_VAL(vi_cv_path_python_plibs,
723 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000724 pwd=`pwd`
725 tmp_mkf="$pwd/config-PyMake$$"
726 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000727__:
728 @echo "python_MODLIBS='$(MODLIBS)'"
729 @echo "python_LIBS='$(LIBS)'"
730 @echo "python_SYSLIBS='$(SYSLIBS)'"
731 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
732eof
733 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000734 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
735 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
737 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
738 vi_cv_path_python_plibs="-framework Python"
739 else
740 if test "${vi_cv_var_python_version}" = "1.4"; then
741 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
742 else
743 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
744 fi
745 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
746 dnl remove -ltermcap, it can conflict with an earlier -lncurses
747 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
748 fi
749 ])
750
751 PYTHON_LIBS="${vi_cv_path_python_plibs}"
752 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
753 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
754 else
755 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}"
756 fi
757 PYTHON_SRC="if_python.c"
758 dnl For Mac OSX 10.2 config.o is included in the Python library.
759 if test "x$MACOSX" = "xyes"; then
760 PYTHON_OBJ="objects/if_python.o"
761 else
762 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
763 fi
764 if test "${vi_cv_var_python_version}" = "1.4"; then
765 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
766 fi
767 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
768
769 dnl On FreeBSD linking with "-pthread" is required to use threads.
770 dnl _THREAD_SAFE must be used for compiling then.
771 dnl The "-pthread" is added to $LIBS, so that the following check for
772 dnl sigaltstack() will look in libc_r (it's there in libc!).
773 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
774 dnl will then define target-specific defines, e.g., -D_REENTRANT.
775 dnl Don't do this for Mac OSX, -pthread will generate a warning.
776 AC_MSG_CHECKING([if -pthread should be used])
777 threadsafe_flag=
778 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000779 dnl if test "x$MACOSX" != "xyes"; then
780 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000781 test "$GCC" = yes && threadsafe_flag="-pthread"
782 if test "`(uname) 2>/dev/null`" = FreeBSD; then
783 threadsafe_flag="-D_THREAD_SAFE"
784 thread_lib="-pthread"
785 fi
786 fi
787 libs_save_old=$LIBS
788 if test -n "$threadsafe_flag"; then
789 cflags_save=$CFLAGS
790 CFLAGS="$CFLAGS $threadsafe_flag"
791 LIBS="$LIBS $thread_lib"
792 AC_TRY_LINK(,[ ],
793 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
794 AC_MSG_RESULT(no); LIBS=$libs_save_old
795 )
796 CFLAGS=$cflags_save
797 else
798 AC_MSG_RESULT(no)
799 fi
800
801 dnl check that compiling a simple program still works with the flags
802 dnl added for Python.
803 AC_MSG_CHECKING([if compile and link flags for Python are sane])
804 cflags_save=$CFLAGS
805 libs_save=$LIBS
806 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
807 LIBS="$LIBS $PYTHON_LIBS"
808 AC_TRY_LINK(,[ ],
809 AC_MSG_RESULT(yes); python_ok=yes,
810 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
811 CFLAGS=$cflags_save
812 LIBS=$libs_save
813 if test $python_ok = yes; then
814 AC_DEFINE(FEAT_PYTHON)
815 else
816 LIBS=$libs_save_old
817 PYTHON_SRC=
818 PYTHON_OBJ=
819 PYTHON_LIBS=
820 PYTHON_CFLAGS=
821 fi
822
823 fi
824 else
825 AC_MSG_RESULT(too old)
826 fi
827 fi
828fi
829AC_SUBST(PYTHON_CONFDIR)
830AC_SUBST(PYTHON_LIBS)
831AC_SUBST(PYTHON_GETPATH_CFLAGS)
832AC_SUBST(PYTHON_CFLAGS)
833AC_SUBST(PYTHON_SRC)
834AC_SUBST(PYTHON_OBJ)
835
836AC_MSG_CHECKING(--enable-tclinterp argument)
837AC_ARG_ENABLE(tclinterp,
838 [ --enable-tclinterp Include Tcl interpreter.], ,
839 [enable_tclinterp="no"])
840AC_MSG_RESULT($enable_tclinterp)
841
842if test "$enable_tclinterp" = "yes"; then
843
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000844 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000845 AC_MSG_CHECKING(--with-tclsh argument)
846 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
847 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000848 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000849 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
850 AC_SUBST(vi_cv_path_tcl)
851
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000852 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
853 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
854 tclsh_name="tclsh8.4"
855 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
856 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000857 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 tclsh_name="tclsh8.2"
859 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
860 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000861 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
862 tclsh_name="tclsh8.0"
863 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
864 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000865 dnl still didn't find it, try without version number
866 if test "X$vi_cv_path_tcl" = "X"; then
867 tclsh_name="tclsh"
868 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
869 fi
870 if test "X$vi_cv_path_tcl" != "X"; then
871 AC_MSG_CHECKING(Tcl version)
872 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
873 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
874 AC_MSG_RESULT($tclver - OK);
875 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 -`
876
877 AC_MSG_CHECKING(for location of Tcl include)
878 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000879 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 +0000880 else
881 dnl For Mac OS X 10.3, use the OS-provided framework location
882 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
883 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000884 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000885 for try in $tclinc; do
886 if test -f "$try/tcl.h"; then
887 AC_MSG_RESULT($try/tcl.h)
888 TCL_INC=$try
889 break
890 fi
891 done
892 if test -z "$TCL_INC"; then
893 AC_MSG_RESULT(<not found>)
894 SKIP_TCL=YES
895 fi
896 if test -z "$SKIP_TCL"; then
897 AC_MSG_CHECKING(for location of tclConfig.sh script)
898 if test "x$MACOSX" != "xyes"; then
899 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000900 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000901 else
902 dnl For Mac OS X 10.3, use the OS-provided framework location
903 tclcnf="/System/Library/Frameworks/Tcl.framework"
904 fi
905 for try in $tclcnf; do
906 if test -f $try/tclConfig.sh; then
907 AC_MSG_RESULT($try/tclConfig.sh)
908 . $try/tclConfig.sh
909 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
910 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
911 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000912 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +0000913 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 +0000914 break
915 fi
916 done
917 if test -z "$TCL_LIBS"; then
918 AC_MSG_RESULT(<not found>)
919 AC_MSG_CHECKING(for Tcl library by myself)
920 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000921 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000922 for ext in .so .a ; do
923 for ver in "" $tclver ; do
924 for try in $tcllib ; do
925 trylib=tcl$ver$ext
926 if test -f $try/lib$trylib ; then
927 AC_MSG_RESULT($try/lib$trylib)
928 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
929 if test "`(uname) 2>/dev/null`" = SunOS &&
930 uname -r | grep '^5' >/dev/null; then
931 TCL_LIBS="$TCL_LIBS -R $try"
932 fi
933 break 3
934 fi
935 done
936 done
937 done
938 if test -z "$TCL_LIBS"; then
939 AC_MSG_RESULT(<not found>)
940 SKIP_TCL=YES
941 fi
942 fi
943 if test -z "$SKIP_TCL"; then
944 AC_DEFINE(FEAT_TCL)
945 TCL_SRC=if_tcl.c
946 TCL_OBJ=objects/if_tcl.o
947 TCL_PRO=if_tcl.pro
948 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
949 fi
950 fi
951 else
952 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
953 fi
954 fi
955fi
956AC_SUBST(TCL_SRC)
957AC_SUBST(TCL_OBJ)
958AC_SUBST(TCL_PRO)
959AC_SUBST(TCL_CFLAGS)
960AC_SUBST(TCL_LIBS)
961
962AC_MSG_CHECKING(--enable-rubyinterp argument)
963AC_ARG_ENABLE(rubyinterp,
964 [ --enable-rubyinterp Include Ruby interpreter.], ,
965 [enable_rubyinterp="no"])
966AC_MSG_RESULT($enable_rubyinterp)
967if test "$enable_rubyinterp" = "yes"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +0100968 AC_MSG_CHECKING(--with-ruby-command argument)
969 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
970 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
971 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000972 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100973 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000974 if test "X$vi_cv_path_ruby" != "X"; then
975 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000976 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 +0000977 AC_MSG_RESULT(OK)
978 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100979 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 +0000980 if test "X$rubyhdrdir" != "X"; then
981 AC_MSG_RESULT($rubyhdrdir)
982 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +0100983 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
984 if test -d "$rubyhdrdir/$rubyarch"; then
985 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
986 fi
987 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
988 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000989 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
990 if test "X$rubylibs" != "X"; then
991 RUBY_LIBS="$rubylibs"
992 fi
993 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
994 if test -f "$rubyhdrdir/$librubyarg"; then
995 librubyarg="$rubyhdrdir/$librubyarg"
996 else
997 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
998 if test -f "$rubylibdir/$librubyarg"; then
999 librubyarg="$rubylibdir/$librubyarg"
1000 elif test "$librubyarg" = "libruby.a"; then
1001 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1002 librubyarg="-lruby"
1003 else
1004 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1005 fi
1006 fi
1007
1008 if test "X$librubyarg" != "X"; then
1009 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1010 fi
1011 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1012 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001013 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1014 dnl be included if requested by passing --with-mac-arch to
1015 dnl configure, so strip these flags first (if present)
1016 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1017 if test "X$rubyldflags" != "X"; then
1018 LDFLAGS="$rubyldflags $LDFLAGS"
1019 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001020 fi
1021 RUBY_SRC="if_ruby.c"
1022 RUBY_OBJ="objects/if_ruby.o"
1023 RUBY_PRO="if_ruby.pro"
1024 AC_DEFINE(FEAT_RUBY)
1025 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001026 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001027 fi
1028 else
1029 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1030 fi
1031 fi
1032fi
1033AC_SUBST(RUBY_SRC)
1034AC_SUBST(RUBY_OBJ)
1035AC_SUBST(RUBY_PRO)
1036AC_SUBST(RUBY_CFLAGS)
1037AC_SUBST(RUBY_LIBS)
1038
1039AC_MSG_CHECKING(--enable-cscope argument)
1040AC_ARG_ENABLE(cscope,
1041 [ --enable-cscope Include cscope interface.], ,
1042 [enable_cscope="no"])
1043AC_MSG_RESULT($enable_cscope)
1044if test "$enable_cscope" = "yes"; then
1045 AC_DEFINE(FEAT_CSCOPE)
1046fi
1047
1048AC_MSG_CHECKING(--enable-workshop argument)
1049AC_ARG_ENABLE(workshop,
1050 [ --enable-workshop Include Sun Visual Workshop support.], ,
1051 [enable_workshop="no"])
1052AC_MSG_RESULT($enable_workshop)
1053if test "$enable_workshop" = "yes"; then
1054 AC_DEFINE(FEAT_SUN_WORKSHOP)
1055 WORKSHOP_SRC="workshop.c integration.c"
1056 AC_SUBST(WORKSHOP_SRC)
1057 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1058 AC_SUBST(WORKSHOP_OBJ)
1059 if test "${enable_gui-xxx}" = xxx; then
1060 enable_gui=motif
1061 fi
1062fi
1063
1064AC_MSG_CHECKING(--disable-netbeans argument)
1065AC_ARG_ENABLE(netbeans,
1066 [ --disable-netbeans Disable NetBeans integration support.],
1067 , [enable_netbeans="yes"])
1068if test "$enable_netbeans" = "yes"; then
1069 AC_MSG_RESULT(no)
1070 dnl On Solaris we need the socket and nsl library.
1071 AC_CHECK_LIB(socket, socket)
1072 AC_CHECK_LIB(nsl, gethostbyname)
1073 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1074 AC_TRY_LINK([
1075#include <stdio.h>
1076#include <stdlib.h>
1077#include <stdarg.h>
1078#include <fcntl.h>
1079#include <netdb.h>
1080#include <netinet/in.h>
1081#include <errno.h>
1082#include <sys/types.h>
1083#include <sys/socket.h>
1084 /* Check bitfields */
1085 struct nbbuf {
1086 unsigned int initDone:1;
1087 ushort signmaplen;
1088 };
1089 ], [
1090 /* Check creating a socket. */
1091 struct sockaddr_in server;
1092 (void)socket(AF_INET, SOCK_STREAM, 0);
1093 (void)htons(100);
1094 (void)gethostbyname("microsoft.com");
1095 if (errno == ECONNREFUSED)
1096 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1097 ],
1098 AC_MSG_RESULT(yes),
1099 AC_MSG_RESULT(no); enable_netbeans="no")
1100else
1101 AC_MSG_RESULT(yes)
1102fi
1103if test "$enable_netbeans" = "yes"; then
1104 AC_DEFINE(FEAT_NETBEANS_INTG)
1105 NETBEANS_SRC="netbeans.c"
1106 AC_SUBST(NETBEANS_SRC)
1107 NETBEANS_OBJ="objects/netbeans.o"
1108 AC_SUBST(NETBEANS_OBJ)
1109fi
1110
1111AC_MSG_CHECKING(--enable-sniff argument)
1112AC_ARG_ENABLE(sniff,
1113 [ --enable-sniff Include Sniff interface.], ,
1114 [enable_sniff="no"])
1115AC_MSG_RESULT($enable_sniff)
1116if test "$enable_sniff" = "yes"; then
1117 AC_DEFINE(FEAT_SNIFF)
1118 SNIFF_SRC="if_sniff.c"
1119 AC_SUBST(SNIFF_SRC)
1120 SNIFF_OBJ="objects/if_sniff.o"
1121 AC_SUBST(SNIFF_OBJ)
1122fi
1123
1124AC_MSG_CHECKING(--enable-multibyte argument)
1125AC_ARG_ENABLE(multibyte,
1126 [ --enable-multibyte Include multibyte editing support.], ,
1127 [enable_multibyte="no"])
1128AC_MSG_RESULT($enable_multibyte)
1129if test "$enable_multibyte" = "yes"; then
1130 AC_DEFINE(FEAT_MBYTE)
1131fi
1132
1133AC_MSG_CHECKING(--enable-hangulinput argument)
1134AC_ARG_ENABLE(hangulinput,
1135 [ --enable-hangulinput Include Hangul input support.], ,
1136 [enable_hangulinput="no"])
1137AC_MSG_RESULT($enable_hangulinput)
1138
1139AC_MSG_CHECKING(--enable-xim argument)
1140AC_ARG_ENABLE(xim,
1141 [ --enable-xim Include XIM input support.],
1142 AC_MSG_RESULT($enable_xim),
1143 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1144dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1145
1146AC_MSG_CHECKING(--enable-fontset argument)
1147AC_ARG_ENABLE(fontset,
1148 [ --enable-fontset Include X fontset output support.], ,
1149 [enable_fontset="no"])
1150AC_MSG_RESULT($enable_fontset)
1151dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1152
1153test -z "$with_x" && with_x=yes
1154test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1155if test "$with_x" = no; then
1156 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1157else
1158 dnl Do this check early, so that its failure can override user requests.
1159
1160 AC_PATH_PROG(xmkmfpath, xmkmf)
1161
1162 AC_PATH_XTRA
1163
1164 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1165 dnl be compiled with a special option.
1166 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1167 if test "$OS390Unix" = "yes"; then
1168 CFLAGS="$CFLAGS -W c,dll"
1169 LDFLAGS="$LDFLAGS -W l,dll"
1170 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1171 fi
1172
1173 dnl On my HPUX system the X include dir is found, but the lib dir not.
1174 dnl This is a desparate try to fix this.
1175
1176 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1177 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1178 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1179 X_LIBS="$X_LIBS -L$x_libraries"
1180 if test "`(uname) 2>/dev/null`" = SunOS &&
1181 uname -r | grep '^5' >/dev/null; then
1182 X_LIBS="$X_LIBS -R $x_libraries"
1183 fi
1184 fi
1185
1186 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1187 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1188 AC_MSG_RESULT(Corrected X includes to $x_includes)
1189 X_CFLAGS="$X_CFLAGS -I$x_includes"
1190 fi
1191
1192 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1193 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1194 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1195 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1196 dnl Same for "-R/usr/lib ".
1197 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1198
1199
1200 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001201 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1202 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001203 AC_MSG_CHECKING(if X11 header files can be found)
1204 cflags_save=$CFLAGS
1205 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001206 AC_TRY_COMPILE([#include <X11/Xlib.h>
1207#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208 AC_MSG_RESULT(yes),
1209 AC_MSG_RESULT(no); no_x=yes)
1210 CFLAGS=$cflags_save
1211
1212 if test "${no_x-no}" = yes; then
1213 with_x=no
1214 else
1215 AC_DEFINE(HAVE_X11)
1216 X_LIB="-lXt -lX11";
1217 AC_SUBST(X_LIB)
1218
1219 ac_save_LDFLAGS="$LDFLAGS"
1220 LDFLAGS="-L$x_libraries $LDFLAGS"
1221
1222 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1223 dnl For HP-UX 10.20 it must be before -lSM -lICE
1224 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1225 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1226
1227 dnl Some systems need -lnsl -lsocket when testing for ICE.
1228 dnl The check above doesn't do this, try here (again). Also needed to get
1229 dnl them after Xdmcp. link.sh will remove them when not needed.
1230 dnl Check for other function than above to avoid the cached value
1231 AC_CHECK_LIB(ICE, IceOpenConnection,
1232 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1233
1234 dnl Check for -lXpm (needed for some versions of Motif)
1235 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1236 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1237 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1238
1239 dnl Check that the X11 header files don't use implicit declarations
1240 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1241 cflags_save=$CFLAGS
1242 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1243 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1244 AC_MSG_RESULT(no),
1245 CFLAGS="$CFLAGS -Wno-implicit-int"
1246 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1247 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1248 AC_MSG_RESULT(test failed)
1249 )
1250 )
1251 CFLAGS=$cflags_save
1252
1253 LDFLAGS="$ac_save_LDFLAGS"
1254
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001255 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1256 AC_CACHE_VAL(ac_cv_small_wchar_t,
1257 [AC_TRY_RUN([
1258#include <X11/Xlib.h>
1259#if STDC_HEADERS
1260# include <stdlib.h>
1261# include <stddef.h>
1262#endif
1263 main()
1264 {
1265 if (sizeof(wchar_t) <= 2)
1266 exit(1);
1267 exit(0);
1268 }],
1269 ac_cv_small_wchar_t="no",
1270 ac_cv_small_wchar_t="yes",
1271 AC_MSG_ERROR(failed to compile test program))])
1272 AC_MSG_RESULT($ac_cv_small_wchar_t)
1273 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1274 AC_DEFINE(SMALL_WCHAR_T)
1275 fi
1276
Bram Moolenaar071d4272004-06-13 20:20:40 +00001277 fi
1278fi
1279
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001280test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001281
1282AC_MSG_CHECKING(--enable-gui argument)
1283AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001284 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001285
1286dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1287dnl Do not use character classes for portability with old tools.
1288enable_gui_canon=`echo "_$enable_gui" | \
1289 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1290
1291dnl Skip everything by default.
1292SKIP_GTK=YES
1293SKIP_GTK2=YES
1294SKIP_GNOME=YES
1295SKIP_MOTIF=YES
1296SKIP_ATHENA=YES
1297SKIP_NEXTAW=YES
1298SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001299SKIP_CARBON=YES
1300GUITYPE=NONE
1301
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001302if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001303 SKIP_PHOTON=
1304 case "$enable_gui_canon" in
1305 no) AC_MSG_RESULT(no GUI support)
1306 SKIP_PHOTON=YES ;;
1307 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1308 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1309 photon) AC_MSG_RESULT(Photon GUI support) ;;
1310 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1311 SKIP_PHOTON=YES ;;
1312 esac
1313
1314elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1315 SKIP_CARBON=
1316 case "$enable_gui_canon" in
1317 no) AC_MSG_RESULT(no GUI support)
1318 SKIP_CARBON=YES ;;
1319 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1320 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1321 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1322 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1323 SKIP_CARBON=YES ;;
1324 esac
1325
1326else
1327
Bram Moolenaar071d4272004-06-13 20:20:40 +00001328 case "$enable_gui_canon" in
1329 no|none) AC_MSG_RESULT(no GUI support) ;;
1330 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1331 SKIP_GTK=
1332 SKIP_GTK2=
1333 SKIP_GNOME=
1334 SKIP_MOTIF=
1335 SKIP_ATHENA=
1336 SKIP_NEXTAW=
1337 SKIP_CARBON=;;
1338 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1339 SKIP_GTK=;;
1340 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1341 SKIP_GTK=
1342 SKIP_GTK2=;;
1343 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1344 SKIP_GNOME=
1345 SKIP_GTK=;;
1346 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1347 SKIP_GNOME=
1348 SKIP_GTK=
1349 SKIP_GTK2=;;
1350 motif) AC_MSG_RESULT(Motif GUI support)
1351 SKIP_MOTIF=;;
1352 athena) AC_MSG_RESULT(Athena GUI support)
1353 SKIP_ATHENA=;;
1354 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1355 SKIP_NEXTAW=;;
1356 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1357 esac
1358
1359fi
1360
1361if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1362 AC_MSG_CHECKING(whether or not to look for GTK)
1363 AC_ARG_ENABLE(gtk-check,
1364 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1365 , enable_gtk_check="yes")
1366 AC_MSG_RESULT($enable_gtk_check)
1367 if test "x$enable_gtk_check" = "xno"; then
1368 SKIP_GTK=YES
1369 SKIP_GNOME=YES
1370 fi
1371fi
1372
1373if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1374 -a "$enable_gui_canon" != "gnome2"; then
1375 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1376 AC_ARG_ENABLE(gtk2-check,
1377 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1378 , enable_gtk2_check="yes")
1379 AC_MSG_RESULT($enable_gtk2_check)
1380 if test "x$enable_gtk2_check" = "xno"; then
1381 SKIP_GTK2=YES
1382 fi
1383fi
1384
1385if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1386 -a "$enable_gui_canon" != "gnome2"; then
1387 AC_MSG_CHECKING(whether or not to look for GNOME)
1388 AC_ARG_ENABLE(gnome-check,
1389 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1390 , enable_gnome_check="no")
1391 AC_MSG_RESULT($enable_gnome_check)
1392 if test "x$enable_gnome_check" = "xno"; then
1393 SKIP_GNOME=YES
1394 fi
1395fi
1396
1397if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1398 AC_MSG_CHECKING(whether or not to look for Motif)
1399 AC_ARG_ENABLE(motif-check,
1400 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1401 , enable_motif_check="yes")
1402 AC_MSG_RESULT($enable_motif_check)
1403 if test "x$enable_motif_check" = "xno"; then
1404 SKIP_MOTIF=YES
1405 fi
1406fi
1407
1408if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1409 AC_MSG_CHECKING(whether or not to look for Athena)
1410 AC_ARG_ENABLE(athena-check,
1411 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1412 , enable_athena_check="yes")
1413 AC_MSG_RESULT($enable_athena_check)
1414 if test "x$enable_athena_check" = "xno"; then
1415 SKIP_ATHENA=YES
1416 fi
1417fi
1418
1419if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1420 AC_MSG_CHECKING(whether or not to look for neXtaw)
1421 AC_ARG_ENABLE(nextaw-check,
1422 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1423 , enable_nextaw_check="yes")
1424 AC_MSG_RESULT($enable_nextaw_check);
1425 if test "x$enable_nextaw_check" = "xno"; then
1426 SKIP_NEXTAW=YES
1427 fi
1428fi
1429
1430if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1431 AC_MSG_CHECKING(whether or not to look for Carbon)
1432 AC_ARG_ENABLE(carbon-check,
1433 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1434 , enable_carbon_check="yes")
1435 AC_MSG_RESULT($enable_carbon_check);
1436 if test "x$enable_carbon_check" = "xno"; then
1437 SKIP_CARBON=YES
1438 fi
1439fi
1440
Bram Moolenaar843ee412004-06-30 16:16:41 +00001441
Bram Moolenaar071d4272004-06-13 20:20:40 +00001442if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1443 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001444 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001445 AC_MSG_RESULT(yes);
1446 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001447 if test "$VIMNAME" = "vim"; then
1448 VIMNAME=Vim
1449 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001450
1451 dnl Default install directory is not /usr/local
1452 if test x$prefix = xNONE; then
1453 prefix=/Applications
1454 fi
1455
1456 dnl Sorry for the hard coded default
1457 datadir='${prefix}/Vim.app/Contents/Resources'
1458
Bram Moolenaar071d4272004-06-13 20:20:40 +00001459 dnl skip everything else
1460 SKIP_GTK=YES;
1461 SKIP_GTK2=YES;
1462 SKIP_GNOME=YES;
1463 SKIP_MOTIF=YES;
1464 SKIP_ATHENA=YES;
1465 SKIP_NEXTAW=YES;
1466 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001467 SKIP_CARBON=YES
1468fi
1469
Bram Moolenaar071d4272004-06-13 20:20:40 +00001470dnl
1471dnl Get the cflags and libraries from the gtk-config script
1472dnl
1473
1474dnl define an autoconf function to check for a specified version of GTK, and
1475dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1476dnl
1477dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001478dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479dnl
1480AC_DEFUN(AM_PATH_GTK,
1481[
1482 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1483 {
1484 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1485 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1486 no_gtk=""
1487 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1488 && $PKG_CONFIG --exists gtk+-2.0; then
1489 {
1490 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1491 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1492 dnl something like that.
1493 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001494 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001495 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1496 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1497 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1498 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1499 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1500 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1501 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1502 }
1503 elif test "X$GTK_CONFIG" != "Xno"; then
1504 {
1505 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001506 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001507 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1508 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1509 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1510 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1511 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1512 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1513 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1514 }
1515 else
1516 no_gtk=yes
1517 fi
1518
1519 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1520 {
1521 ac_save_CFLAGS="$CFLAGS"
1522 ac_save_LIBS="$LIBS"
1523 CFLAGS="$CFLAGS $GTK_CFLAGS"
1524 LIBS="$LIBS $GTK_LIBS"
1525
1526 dnl
1527 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1528 dnl checks the results of gtk-config to some extent
1529 dnl
1530 rm -f conf.gtktest
1531 AC_TRY_RUN([
1532#include <gtk/gtk.h>
1533#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001534#if STDC_HEADERS
1535# include <stdlib.h>
1536# include <stddef.h>
1537#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001538
1539int
1540main ()
1541{
1542int major, minor, micro;
1543char *tmp_version;
1544
1545system ("touch conf.gtktest");
1546
1547/* HP/UX 9 (%@#!) writes to sscanf strings */
1548tmp_version = g_strdup("$min_gtk_version");
1549if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1550 printf("%s, bad version string\n", "$min_gtk_version");
1551 exit(1);
1552 }
1553
1554if ((gtk_major_version > major) ||
1555 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1556 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1557 (gtk_micro_version >= micro)))
1558{
1559 return 0;
1560}
1561return 1;
1562}
1563],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1564 CFLAGS="$ac_save_CFLAGS"
1565 LIBS="$ac_save_LIBS"
1566 }
1567 fi
1568 if test "x$no_gtk" = x ; then
1569 if test "x$enable_gtktest" = "xyes"; then
1570 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1571 else
1572 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1573 fi
1574 ifelse([$2], , :, [$2])
1575 else
1576 {
1577 AC_MSG_RESULT(no)
1578 GTK_CFLAGS=""
1579 GTK_LIBS=""
1580 ifelse([$3], , :, [$3])
1581 }
1582 fi
1583 }
1584 else
1585 GTK_CFLAGS=""
1586 GTK_LIBS=""
1587 ifelse([$3], , :, [$3])
1588 fi
1589 AC_SUBST(GTK_CFLAGS)
1590 AC_SUBST(GTK_LIBS)
1591 rm -f conf.gtktest
1592])
1593
1594dnl ---------------------------------------------------------------------------
1595dnl gnome
1596dnl ---------------------------------------------------------------------------
1597AC_DEFUN([GNOME_INIT_HOOK],
1598[
1599 AC_SUBST(GNOME_LIBS)
1600 AC_SUBST(GNOME_LIBDIR)
1601 AC_SUBST(GNOME_INCLUDEDIR)
1602
1603 AC_ARG_WITH(gnome-includes,
1604 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1605 [CFLAGS="$CFLAGS -I$withval"]
1606 )
1607
1608 AC_ARG_WITH(gnome-libs,
1609 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1610 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1611 )
1612
1613 AC_ARG_WITH(gnome,
1614 [ --with-gnome Specify prefix for GNOME files],
1615 if test x$withval = xyes; then
1616 want_gnome=yes
1617 ifelse([$1], [], :, [$1])
1618 else
1619 if test "x$withval" = xno; then
1620 want_gnome=no
1621 else
1622 want_gnome=yes
1623 LDFLAGS="$LDFLAGS -L$withval/lib"
1624 CFLAGS="$CFLAGS -I$withval/include"
1625 gnome_prefix=$withval/lib
1626 fi
1627 fi,
1628 want_gnome=yes)
1629
1630 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1631 {
1632 AC_MSG_CHECKING(for libgnomeui-2.0)
1633 if $PKG_CONFIG --exists libgnomeui-2.0; then
1634 AC_MSG_RESULT(yes)
1635 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1636 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1637 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001638
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001639 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1640 dnl This might not be the right way but it works for me...
1641 AC_MSG_CHECKING(for FreeBSD)
1642 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1643 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001644 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001645 GNOME_LIBS="$GNOME_LIBS -pthread"
1646 else
1647 AC_MSG_RESULT(no)
1648 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001649 $1
1650 else
1651 AC_MSG_RESULT(not found)
1652 if test "x$2" = xfail; then
1653 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1654 fi
1655 fi
1656 }
1657 elif test "x$want_gnome" = xyes; then
1658 {
1659 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1660 if test "$GNOME_CONFIG" = "no"; then
1661 no_gnome_config="yes"
1662 else
1663 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1664 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1665 AC_MSG_RESULT(yes)
1666 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1667 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1668 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1669 $1
1670 else
1671 AC_MSG_RESULT(no)
1672 no_gnome_config="yes"
1673 fi
1674 fi
1675
1676 if test x$exec_prefix = xNONE; then
1677 if test x$prefix = xNONE; then
1678 gnome_prefix=$ac_default_prefix/lib
1679 else
1680 gnome_prefix=$prefix/lib
1681 fi
1682 else
1683 gnome_prefix=`eval echo \`echo $libdir\``
1684 fi
1685
1686 if test "$no_gnome_config" = "yes"; then
1687 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1688 if test -f $gnome_prefix/gnomeConf.sh; then
1689 AC_MSG_RESULT(found)
1690 echo "loading gnome configuration from" \
1691 "$gnome_prefix/gnomeConf.sh"
1692 . $gnome_prefix/gnomeConf.sh
1693 $1
1694 else
1695 AC_MSG_RESULT(not found)
1696 if test x$2 = xfail; then
1697 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1698 fi
1699 fi
1700 fi
1701 }
1702 fi
1703])
1704
1705AC_DEFUN([GNOME_INIT],[
1706 GNOME_INIT_HOOK([],fail)
1707])
1708
1709
1710dnl ---------------------------------------------------------------------------
1711dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1712dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1713dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1714dnl ---------------------------------------------------------------------------
1715if test -z "$SKIP_GTK"; then
1716
1717 AC_MSG_CHECKING(--with-gtk-prefix argument)
1718 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1719 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1720 gtk_config_prefix=""; AC_MSG_RESULT(no))
1721
1722 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1723 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1724 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1725 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1726
1727 AC_MSG_CHECKING(--disable-gtktest argument)
1728 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1729 , enable_gtktest=yes)
1730 if test "x$enable_gtktest" = "xyes" ; then
1731 AC_MSG_RESULT(gtk test enabled)
1732 else
1733 AC_MSG_RESULT(gtk test disabled)
1734 fi
1735
1736 if test "x$gtk_config_prefix" != "x" ; then
1737 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1738 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1739 fi
1740 if test "x$gtk_config_exec_prefix" != "x" ; then
1741 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1742 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1743 fi
1744 if test "X$GTK_CONFIG" = "X"; then
1745 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1746 if test "X$GTK_CONFIG" = "Xno"; then
1747 dnl Some distributions call it gtk12-config, annoying!
1748 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1749 GTK_CONFIG="$GTK12_CONFIG"
1750 fi
1751 else
1752 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1753 fi
1754 if test "X$PKG_CONFIG" = "X"; then
1755 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1756 fi
1757
1758 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1759 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1760 dnl problems (bold fonts, --remote doesn't work).
1761 if test "X$SKIP_GTK2" != "XYES"; then
1762 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001763 [GUI_LIB_LOC="$GTK_LIBDIR"
1764 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 GUI_INC_LOC="$GTK_CFLAGS"], )
1766 if test "x$GTK_CFLAGS" != "x"; then
1767 SKIP_ATHENA=YES
1768 SKIP_NEXTAW=YES
1769 SKIP_MOTIF=YES
1770 GUITYPE=GTK
1771 AC_SUBST(GTK_LIBNAME)
1772 fi
1773 fi
1774
1775 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1776 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1777 dnl were test versions.
1778 if test "x$GUITYPE" != "xGTK"; then
1779 SKIP_GTK2=YES
1780 AM_PATH_GTK(1.1.16,
1781 [GTK_LIBNAME="$GTK_LIBS"
1782 GUI_INC_LOC="$GTK_CFLAGS"], )
1783 if test "x$GTK_CFLAGS" != "x"; then
1784 SKIP_ATHENA=YES
1785 SKIP_NEXTAW=YES
1786 SKIP_MOTIF=YES
1787 GUITYPE=GTK
1788 AC_SUBST(GTK_LIBNAME)
1789 fi
1790 fi
1791 fi
1792 dnl Give a warning if GTK is older than 1.2.3
1793 if test "x$GUITYPE" = "xGTK"; then
1794 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1795 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1796 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1797 else
1798 {
1799 if test "0$gtk_major_version" -ge 2; then
1800 AC_DEFINE(HAVE_GTK2)
1801 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1802 || test "0$gtk_minor_version" -ge 2 \
1803 || test "0$gtk_major_version" -gt 2; then
1804 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1805 fi
1806 fi
1807 dnl
1808 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1809 dnl
1810 if test -z "$SKIP_GNOME"; then
1811 {
1812 GNOME_INIT_HOOK([have_gnome=yes])
1813 if test x$have_gnome = xyes ; then
1814 AC_DEFINE(FEAT_GUI_GNOME)
1815 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1816 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1817 fi
1818 }
1819 fi
1820 }
1821 fi
1822 fi
1823fi
1824
1825dnl Check for Motif include files location.
1826dnl The LAST one found is used, this makes the highest version to be used,
1827dnl e.g. when Motif1.2 and Motif2.0 are both present.
1828
1829if test -z "$SKIP_MOTIF"; then
1830 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"
1831 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1832 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1833
1834 AC_MSG_CHECKING(for location of Motif GUI includes)
1835 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1836 GUI_INC_LOC=
1837 for try in $gui_includes; do
1838 if test -f "$try/Xm/Xm.h"; then
1839 GUI_INC_LOC=$try
1840 fi
1841 done
1842 if test -n "$GUI_INC_LOC"; then
1843 if test "$GUI_INC_LOC" = /usr/include; then
1844 GUI_INC_LOC=
1845 AC_MSG_RESULT(in default path)
1846 else
1847 AC_MSG_RESULT($GUI_INC_LOC)
1848 fi
1849 else
1850 AC_MSG_RESULT(<not found>)
1851 SKIP_MOTIF=YES
1852 fi
1853fi
1854
1855dnl Check for Motif library files location. In the same order as the include
1856dnl files, to avoid a mixup if several versions are present
1857
1858if test -z "$SKIP_MOTIF"; then
1859 AC_MSG_CHECKING(--with-motif-lib argument)
1860 AC_ARG_WITH(motif-lib,
1861 [ --with-motif-lib=STRING Library for Motif ],
1862 [ MOTIF_LIBNAME="${withval}" ] )
1863
1864 if test -n "$MOTIF_LIBNAME"; then
1865 AC_MSG_RESULT($MOTIF_LIBNAME)
1866 GUI_LIB_LOC=
1867 else
1868 AC_MSG_RESULT(no)
1869
1870 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1871 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1872
1873 AC_MSG_CHECKING(for location of Motif GUI libs)
1874 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"
1875 GUI_LIB_LOC=
1876 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001877 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878 if test -f "$libtry"; then
1879 GUI_LIB_LOC=$try
1880 fi
1881 done
1882 done
1883 if test -n "$GUI_LIB_LOC"; then
1884 dnl Remove /usr/lib, it causes trouble on some systems
1885 if test "$GUI_LIB_LOC" = /usr/lib; then
1886 GUI_LIB_LOC=
1887 AC_MSG_RESULT(in default path)
1888 else
1889 if test -n "$GUI_LIB_LOC"; then
1890 AC_MSG_RESULT($GUI_LIB_LOC)
1891 if test "`(uname) 2>/dev/null`" = SunOS &&
1892 uname -r | grep '^5' >/dev/null; then
1893 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1894 fi
1895 fi
1896 fi
1897 MOTIF_LIBNAME=-lXm
1898 else
1899 AC_MSG_RESULT(<not found>)
1900 SKIP_MOTIF=YES
1901 fi
1902 fi
1903fi
1904
1905if test -z "$SKIP_MOTIF"; then
1906 SKIP_ATHENA=YES
1907 SKIP_NEXTAW=YES
1908 GUITYPE=MOTIF
1909 AC_SUBST(MOTIF_LIBNAME)
1910fi
1911
1912dnl Check if the Athena files can be found
1913
1914GUI_X_LIBS=
1915
1916if test -z "$SKIP_ATHENA"; then
1917 AC_MSG_CHECKING(if Athena header files can be found)
1918 cflags_save=$CFLAGS
1919 CFLAGS="$CFLAGS $X_CFLAGS"
1920 AC_TRY_COMPILE([
1921#include <X11/Intrinsic.h>
1922#include <X11/Xaw/Paned.h>], ,
1923 AC_MSG_RESULT(yes),
1924 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1925 CFLAGS=$cflags_save
1926fi
1927
1928if test -z "$SKIP_ATHENA"; then
1929 GUITYPE=ATHENA
1930fi
1931
1932if test -z "$SKIP_NEXTAW"; then
1933 AC_MSG_CHECKING(if neXtaw header files can be found)
1934 cflags_save=$CFLAGS
1935 CFLAGS="$CFLAGS $X_CFLAGS"
1936 AC_TRY_COMPILE([
1937#include <X11/Intrinsic.h>
1938#include <X11/neXtaw/Paned.h>], ,
1939 AC_MSG_RESULT(yes),
1940 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1941 CFLAGS=$cflags_save
1942fi
1943
1944if test -z "$SKIP_NEXTAW"; then
1945 GUITYPE=NEXTAW
1946fi
1947
1948if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1949 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1950 dnl Avoid adding it when it twice
1951 if test -n "$GUI_INC_LOC"; then
1952 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1953 fi
1954 if test -n "$GUI_LIB_LOC"; then
1955 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1956 fi
1957
1958 dnl Check for -lXext and then for -lXmu
1959 ldflags_save=$LDFLAGS
1960 LDFLAGS="$X_LIBS $LDFLAGS"
1961 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1962 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1963 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1964 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1965 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1966 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1967 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1968 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1969 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1970 if test -z "$SKIP_MOTIF"; then
1971 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1972 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1973 fi
1974 LDFLAGS=$ldflags_save
1975
1976 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1977 AC_MSG_CHECKING(for extra X11 defines)
1978 NARROW_PROTO=
1979 rm -fr conftestdir
1980 if mkdir conftestdir; then
1981 cd conftestdir
1982 cat > Imakefile <<'EOF'
1983acfindx:
1984 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1985EOF
1986 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1987 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1988 fi
1989 cd ..
1990 rm -fr conftestdir
1991 fi
1992 if test -z "$NARROW_PROTO"; then
1993 AC_MSG_RESULT(no)
1994 else
1995 AC_MSG_RESULT($NARROW_PROTO)
1996 fi
1997 AC_SUBST(NARROW_PROTO)
1998fi
1999
2000dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2001dnl use the X11 include path
2002if test "$enable_xsmp" = "yes"; then
2003 cppflags_save=$CPPFLAGS
2004 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2005 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2006 CPPFLAGS=$cppflags_save
2007fi
2008
2009
2010if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2011 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2012 cppflags_save=$CPPFLAGS
2013 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2014 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2015
2016 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2017 if test ! "$enable_xim" = "no"; then
2018 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2019 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2020 AC_MSG_RESULT(yes),
2021 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2022 fi
2023 CPPFLAGS=$cppflags_save
2024
2025 dnl automatically enable XIM when hangul input isn't enabled
2026 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2027 -a "x$GUITYPE" != "xNONE" ; then
2028 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2029 enable_xim="yes"
2030 fi
2031fi
2032
2033if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2034 cppflags_save=$CPPFLAGS
2035 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002036dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2037 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2038 AC_TRY_COMPILE([
2039#include <X11/Intrinsic.h>
2040#include <X11/Xmu/Editres.h>],
2041 [int i; i = 0;],
2042 AC_MSG_RESULT(yes)
2043 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2044 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002045 CPPFLAGS=$cppflags_save
2046fi
2047
2048dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2049if test -z "$SKIP_MOTIF"; then
2050 cppflags_save=$CPPFLAGS
2051 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002052 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 +00002053 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002054
2055 if test $ac_cv_header_Xm_XpmP_h = yes; then
2056 dnl Solaris uses XpmAttributes_21, very annoying.
2057 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2058 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2059 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2060 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2061 )
2062 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002063 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002064 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002065 CPPFLAGS=$cppflags_save
2066fi
2067
2068if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2069 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2070 enable_xim="no"
2071fi
2072if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2073 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2074 enable_fontset="no"
2075fi
2076if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2077 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2078 enable_fontset="no"
2079fi
2080
Bram Moolenaar071d4272004-06-13 20:20:40 +00002081if test -z "$SKIP_PHOTON"; then
2082 GUITYPE=PHOTONGUI
2083fi
2084
2085AC_SUBST(GUI_INC_LOC)
2086AC_SUBST(GUI_LIB_LOC)
2087AC_SUBST(GUITYPE)
2088AC_SUBST(GUI_X_LIBS)
2089
2090if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2091 AC_MSG_ERROR([cannot use workshop without Motif])
2092fi
2093
2094dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2095if test "$enable_xim" = "yes"; then
2096 AC_DEFINE(FEAT_XIM)
2097fi
2098if test "$enable_fontset" = "yes"; then
2099 AC_DEFINE(FEAT_XFONTSET)
2100fi
2101
2102
2103dnl ---------------------------------------------------------------------------
2104dnl end of GUI-checking
2105dnl ---------------------------------------------------------------------------
2106
2107
2108dnl Only really enable hangul input when GUI and XFONTSET are available
2109if test "$enable_hangulinput" = "yes"; then
2110 if test "x$GUITYPE" = "xNONE"; then
2111 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2112 enable_hangulinput=no
2113 else
2114 AC_DEFINE(FEAT_HANGULIN)
2115 HANGULIN_SRC=hangulin.c
2116 AC_SUBST(HANGULIN_SRC)
2117 HANGULIN_OBJ=objects/hangulin.o
2118 AC_SUBST(HANGULIN_OBJ)
2119 fi
2120fi
2121
2122dnl Checks for libraries and include files.
2123
Bram Moolenaar446cb832008-06-24 21:56:24 +00002124AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2125 [
2126 AC_RUN_IFELSE([[
2127#include "confdefs.h"
2128#include <ctype.h>
2129#if STDC_HEADERS
2130# include <stdlib.h>
2131# include <stddef.h>
2132#endif
2133main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2134 ]],[
2135 vim_cv_toupper_broken=yes
2136 ],[
2137 vim_cv_toupper_broken=no
2138 ],[
2139 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2140 ])])
2141
2142if test "x$vim_cv_toupper_broken" = "xyes" ; then
2143 AC_DEFINE(BROKEN_TOUPPER)
2144fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002145
2146AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002147AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002148 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2149 AC_MSG_RESULT(no))
2150
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002151AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2152AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2153 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2154 AC_MSG_RESULT(no))
2155
Bram Moolenaar071d4272004-06-13 20:20:40 +00002156dnl Checks for header files.
2157AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2158dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2159if test "$HAS_ELF" = 1; then
2160 AC_CHECK_LIB(elf, main)
2161fi
2162
2163AC_HEADER_DIRENT
2164
Bram Moolenaar071d4272004-06-13 20:20:40 +00002165dnl If sys/wait.h is not found it might still exist but not be POSIX
2166dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2167if test $ac_cv_header_sys_wait_h = no; then
2168 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2169 AC_TRY_COMPILE([#include <sys/wait.h>],
2170 [union wait xx, yy; xx = yy],
2171 AC_MSG_RESULT(yes)
2172 AC_DEFINE(HAVE_SYS_WAIT_H)
2173 AC_DEFINE(HAVE_UNION_WAIT),
2174 AC_MSG_RESULT(no))
2175fi
2176
2177AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
Bram Moolenaare74455a2007-11-04 14:36:18 +00002178 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
Bram Moolenaar446cb832008-06-24 21:56:24 +00002179 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002180 sys/resource.h sys/systeminfo.h locale.h \
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002181 sys/stream.h termios.h libc.h sys/statfs.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002182 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002183 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002184 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002185
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002186dnl sys/ptem.h depends on sys/stream.h on Solaris
2187AC_CHECK_HEADERS(sys/ptem.h, [], [],
2188[#if defined HAVE_SYS_STREAM_H
2189# include <sys/stream.h>
2190#endif])
2191
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002192dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2193AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2194[#if defined HAVE_SYS_PARAM_H
2195# include <sys/param.h>
2196#endif])
2197
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002198
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002199dnl pthread_np.h may exist but can only be used after including pthread.h
2200AC_MSG_CHECKING([for pthread_np.h])
2201AC_TRY_COMPILE([
2202#include <pthread.h>
2203#include <pthread_np.h>],
2204 [int i; i = 0;],
2205 AC_MSG_RESULT(yes)
2206 AC_DEFINE(HAVE_PTHREAD_NP_H),
2207 AC_MSG_RESULT(no))
2208
Bram Moolenaare344bea2005-09-01 20:46:49 +00002209AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002210if test "x$MACOSX" = "xyes"; then
2211 dnl The strings.h file on OS/X contains a warning and nothing useful.
2212 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2213else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214
2215dnl Check if strings.h and string.h can both be included when defined.
2216AC_MSG_CHECKING([if strings.h can be included after string.h])
2217cppflags_save=$CPPFLAGS
2218CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2219AC_TRY_COMPILE([
2220#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2221# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2222 /* but don't do it on AIX 5.1 (Uribarri) */
2223#endif
2224#ifdef HAVE_XM_XM_H
2225# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2226#endif
2227#ifdef HAVE_STRING_H
2228# include <string.h>
2229#endif
2230#if defined(HAVE_STRINGS_H)
2231# include <strings.h>
2232#endif
2233 ], [int i; i = 0;],
2234 AC_MSG_RESULT(yes),
2235 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2236 AC_MSG_RESULT(no))
2237CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002238fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002239
2240dnl Checks for typedefs, structures, and compiler characteristics.
2241AC_PROG_GCC_TRADITIONAL
2242AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002243AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002244AC_TYPE_MODE_T
2245AC_TYPE_OFF_T
2246AC_TYPE_PID_T
2247AC_TYPE_SIZE_T
2248AC_TYPE_UID_T
2249AC_HEADER_TIME
2250AC_CHECK_TYPE(ino_t, long)
2251AC_CHECK_TYPE(dev_t, unsigned)
2252
2253AC_MSG_CHECKING(for rlim_t)
2254if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2255 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2256else
2257 AC_EGREP_CPP(dnl
2258changequote(<<,>>)dnl
2259<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2260changequote([,]),
2261 [
2262#include <sys/types.h>
2263#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002264# include <stdlib.h>
2265# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002266#endif
2267#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002268# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002269#endif
2270 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2271 AC_MSG_RESULT($ac_cv_type_rlim_t)
2272fi
2273if test $ac_cv_type_rlim_t = no; then
2274 cat >> confdefs.h <<\EOF
2275#define rlim_t unsigned long
2276EOF
2277fi
2278
2279AC_MSG_CHECKING(for stack_t)
2280if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2281 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2282else
2283 AC_EGREP_CPP(stack_t,
2284 [
2285#include <sys/types.h>
2286#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002287# include <stdlib.h>
2288# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002289#endif
2290#include <signal.h>
2291 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2292 AC_MSG_RESULT($ac_cv_type_stack_t)
2293fi
2294if test $ac_cv_type_stack_t = no; then
2295 cat >> confdefs.h <<\EOF
2296#define stack_t struct sigaltstack
2297EOF
2298fi
2299
2300dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2301AC_MSG_CHECKING(whether stack_t has an ss_base field)
2302AC_TRY_COMPILE([
2303#include <sys/types.h>
2304#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002305# include <stdlib.h>
2306# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002307#endif
2308#include <signal.h>
2309#include "confdefs.h"
2310 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2311 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2312 AC_MSG_RESULT(no))
2313
2314olibs="$LIBS"
2315AC_MSG_CHECKING(--with-tlib argument)
2316AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2317if test -n "$with_tlib"; then
2318 AC_MSG_RESULT($with_tlib)
2319 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002320 AC_MSG_CHECKING(for linking with $with_tlib library)
2321 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2322 dnl Need to check for tgetent() below.
2323 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002324else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002325 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002326 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2327 dnl curses, because curses is much slower.
2328 dnl Newer versions of ncurses are preferred over anything.
2329 dnl Older versions of ncurses have bugs, get a new one!
2330 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002331 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002332 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002333 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334 *) tlibs="ncurses termlib termcap curses";;
2335 esac
2336 for libname in $tlibs; do
2337 AC_CHECK_LIB(${libname}, tgetent,,)
2338 if test "x$olibs" != "x$LIBS"; then
2339 dnl It's possible that a library is found but it doesn't work
2340 dnl e.g., shared library that cannot be found
2341 dnl compile and run a test program to be sure
2342 AC_TRY_RUN([
2343#ifdef HAVE_TERMCAP_H
2344# include <termcap.h>
2345#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002346#if STDC_HEADERS
2347# include <stdlib.h>
2348# include <stddef.h>
2349#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002350main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2351 res="OK", res="FAIL", res="FAIL")
2352 if test "$res" = "OK"; then
2353 break
2354 fi
2355 AC_MSG_RESULT($libname library is not usable)
2356 LIBS="$olibs"
2357 fi
2358 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002359 if test "x$olibs" = "x$LIBS"; then
2360 AC_MSG_RESULT(no terminal library found)
2361 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002362fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002363
2364if test "x$olibs" = "x$LIBS"; then
2365 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002366 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002367 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2368 AC_MSG_RESULT(yes),
2369 AC_MSG_ERROR([NOT FOUND!
2370 You need to install a terminal library; for example ncurses.
2371 Or specify the name of the library with --with-tlib.]))
2372fi
2373
Bram Moolenaar446cb832008-06-24 21:56:24 +00002374AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2375 [
2376 AC_RUN_IFELSE([[
2377#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002378#ifdef HAVE_TERMCAP_H
2379# include <termcap.h>
2380#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002381#ifdef HAVE_STRING_H
2382# include <string.h>
2383#endif
2384#if STDC_HEADERS
2385# include <stdlib.h>
2386# include <stddef.h>
2387#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002388main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002389{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2390 ]],[
2391 vim_cv_terminfo=no
2392 ],[
2393 vim_cv_terminfo=yes
2394 ],[
2395 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2396 ])
2397 ])
2398
2399if test "x$vim_cv_terminfo" = "xyes" ; then
2400 AC_DEFINE(TERMINFO)
2401fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002402
2403if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002404 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2405 [
2406 AC_RUN_IFELSE([[
2407#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002408#ifdef HAVE_TERMCAP_H
2409# include <termcap.h>
2410#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002411#if STDC_HEADERS
2412# include <stdlib.h>
2413# include <stddef.h>
2414#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002415main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002416{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2417 ]],[
2418 vim_cv_tgent=zero
2419 ],[
2420 vim_cv_tgent=non-zero
2421 ],[
2422 AC_MSG_ERROR(failed to compile test program.)
2423 ])
2424 ])
2425
2426 if test "x$vim_cv_tgent" = "xzero" ; then
2427 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2428 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002429fi
2430
2431AC_MSG_CHECKING(whether termcap.h contains ospeed)
2432AC_TRY_LINK([
2433#ifdef HAVE_TERMCAP_H
2434# include <termcap.h>
2435#endif
2436 ], [ospeed = 20000],
2437 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2438 [AC_MSG_RESULT(no)
2439 AC_MSG_CHECKING(whether ospeed can be extern)
2440 AC_TRY_LINK([
2441#ifdef HAVE_TERMCAP_H
2442# include <termcap.h>
2443#endif
2444extern short ospeed;
2445 ], [ospeed = 20000],
2446 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2447 AC_MSG_RESULT(no))]
2448 )
2449
2450AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2451AC_TRY_LINK([
2452#ifdef HAVE_TERMCAP_H
2453# include <termcap.h>
2454#endif
2455 ], [if (UP == 0 && BC == 0) PC = 1],
2456 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2457 [AC_MSG_RESULT(no)
2458 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2459 AC_TRY_LINK([
2460#ifdef HAVE_TERMCAP_H
2461# include <termcap.h>
2462#endif
2463extern char *UP, *BC, PC;
2464 ], [if (UP == 0 && BC == 0) PC = 1],
2465 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2466 AC_MSG_RESULT(no))]
2467 )
2468
2469AC_MSG_CHECKING(whether tputs() uses outfuntype)
2470AC_TRY_COMPILE([
2471#ifdef HAVE_TERMCAP_H
2472# include <termcap.h>
2473#endif
2474 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2475 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2476 AC_MSG_RESULT(no))
2477
2478dnl On some SCO machines sys/select redefines struct timeval
2479AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2480AC_TRY_COMPILE([
2481#include <sys/types.h>
2482#include <sys/time.h>
2483#include <sys/select.h>], ,
2484 AC_MSG_RESULT(yes)
2485 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2486 AC_MSG_RESULT(no))
2487
2488dnl AC_DECL_SYS_SIGLIST
2489
2490dnl Checks for pty.c (copied from screen) ==========================
2491AC_MSG_CHECKING(for /dev/ptc)
2492if test -r /dev/ptc; then
2493 AC_DEFINE(HAVE_DEV_PTC)
2494 AC_MSG_RESULT(yes)
2495else
2496 AC_MSG_RESULT(no)
2497fi
2498
2499AC_MSG_CHECKING(for SVR4 ptys)
2500if test -c /dev/ptmx ; then
2501 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2502 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2503 AC_MSG_RESULT(no))
2504else
2505 AC_MSG_RESULT(no)
2506fi
2507
2508AC_MSG_CHECKING(for ptyranges)
2509if test -d /dev/ptym ; then
2510 pdir='/dev/ptym'
2511else
2512 pdir='/dev'
2513fi
2514dnl SCO uses ptyp%d
2515AC_EGREP_CPP(yes,
2516[#ifdef M_UNIX
2517 yes;
2518#endif
2519 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2520dnl if test -c /dev/ptyp19; then
2521dnl ptys=`echo /dev/ptyp??`
2522dnl else
2523dnl ptys=`echo $pdir/pty??`
2524dnl fi
2525if test "$ptys" != "$pdir/pty??" ; then
2526 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2527 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2528 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2529 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2530 AC_MSG_RESULT([$p0 / $p1])
2531else
2532 AC_MSG_RESULT([don't know])
2533fi
2534
2535dnl **** pty mode/group handling ****
2536dnl
2537dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002538rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002539AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2540 [
2541 AC_RUN_IFELSE([[
2542#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002543#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002544#if STDC_HEADERS
2545# include <stdlib.h>
2546# include <stddef.h>
2547#endif
2548#ifdef HAVE_UNISTD_H
2549#include <unistd.h>
2550#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002551#include <sys/stat.h>
2552#include <stdio.h>
2553main()
2554{
2555 struct stat sb;
2556 char *x,*ttyname();
2557 int om, m;
2558 FILE *fp;
2559
2560 if (!(x = ttyname(0))) exit(1);
2561 if (stat(x, &sb)) exit(1);
2562 om = sb.st_mode;
2563 if (om & 002) exit(0);
2564 m = system("mesg y");
2565 if (m == -1 || m == 127) exit(1);
2566 if (stat(x, &sb)) exit(1);
2567 m = sb.st_mode;
2568 if (chmod(x, om)) exit(1);
2569 if (m & 002) exit(0);
2570 if (sb.st_gid == getgid()) exit(1);
2571 if (!(fp=fopen("conftest_grp", "w")))
2572 exit(1);
2573 fprintf(fp, "%d\n", sb.st_gid);
2574 fclose(fp);
2575 exit(0);
2576}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002577 ]],[
2578 if test -f conftest_grp; then
2579 vim_cv_tty_group=`cat conftest_grp`
2580 if test "x$vim_cv_tty_mode" = "x" ; then
2581 vim_cv_tty_mode=0620
2582 fi
2583 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2584 else
2585 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002586 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002587 fi
2588 ],[
2589 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002590 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002591 ],[
2592 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2593 ])
2594 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002595rm -f conftest_grp
2596
Bram Moolenaar446cb832008-06-24 21:56:24 +00002597if test "x$vim_cv_tty_group" != "xworld" ; then
2598 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2599 if test "x$vim_cv_tty_mode" = "x" ; then
2600 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)])
2601 else
2602 AC_DEFINE(PTYMODE, 0620)
2603 fi
2604fi
2605
Bram Moolenaar071d4272004-06-13 20:20:40 +00002606dnl Checks for library functions. ===================================
2607
2608AC_TYPE_SIGNAL
2609
2610dnl find out what to use at the end of a signal function
2611if test $ac_cv_type_signal = void; then
2612 AC_DEFINE(SIGRETURN, [return])
2613else
2614 AC_DEFINE(SIGRETURN, [return 0])
2615fi
2616
2617dnl check if struct sigcontext is defined (used for SGI only)
2618AC_MSG_CHECKING(for struct sigcontext)
2619AC_TRY_COMPILE([
2620#include <signal.h>
2621test_sig()
2622{
2623 struct sigcontext *scont;
2624 scont = (struct sigcontext *)0;
2625 return 1;
2626} ], ,
2627 AC_MSG_RESULT(yes)
2628 AC_DEFINE(HAVE_SIGCONTEXT),
2629 AC_MSG_RESULT(no))
2630
2631dnl tricky stuff: try to find out if getcwd() is implemented with
2632dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002633AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2634 [
2635 AC_RUN_IFELSE([[
2636#include "confdefs.h"
2637#ifdef HAVE_UNISTD_H
2638#include <unistd.h>
2639#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640char *dagger[] = { "IFS=pwd", 0 };
2641main()
2642{
2643 char buffer[500];
2644 extern char **environ;
2645 environ = dagger;
2646 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002647}
2648 ]],[
2649 vim_cv_getcwd_broken=no
2650 ],[
2651 vim_cv_getcwd_broken=yes
2652 ],[
2653 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2654 ])
2655 ])
2656
2657if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2658 AC_DEFINE(BAD_GETCWD)
2659fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002660
Bram Moolenaar25153e12010-02-24 14:47:08 +01002661dnl Check for functions in one big call, to reduce the size of configure.
2662dnl Can only be used for functions that do not require any include.
2663AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002664 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002665 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002667 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002668 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2669 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002670AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002671
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002672dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2673dnl appropriate, so that off_t is 64 bits when needed.
2674AC_SYS_LARGEFILE
2675
Bram Moolenaar071d4272004-06-13 20:20:40 +00002676dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2677AC_MSG_CHECKING(for st_blksize)
2678AC_TRY_COMPILE(
2679[#include <sys/types.h>
2680#include <sys/stat.h>],
2681[ struct stat st;
2682 int n;
2683
2684 stat("/", &st);
2685 n = (int)st.st_blksize;],
2686 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2687 AC_MSG_RESULT(no))
2688
Bram Moolenaar446cb832008-06-24 21:56:24 +00002689AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2690 [
2691 AC_RUN_IFELSE([[
2692#include "confdefs.h"
2693#if STDC_HEADERS
2694# include <stdlib.h>
2695# include <stddef.h>
2696#endif
2697#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002698#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002699main() {struct stat st; exit(stat("configure/", &st) != 0); }
2700 ]],[
2701 vim_cv_stat_ignores_slash=yes
2702 ],[
2703 vim_cv_stat_ignores_slash=no
2704 ],[
2705 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2706 ])
2707 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002708
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2710 AC_DEFINE(STAT_IGNORES_SLASH)
2711fi
2712
Bram Moolenaar071d4272004-06-13 20:20:40 +00002713dnl Link with iconv for charset translation, if not found without library.
2714dnl check for iconv() requires including iconv.h
2715dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2716dnl has been installed.
2717AC_MSG_CHECKING(for iconv_open())
2718save_LIBS="$LIBS"
2719LIBS="$LIBS -liconv"
2720AC_TRY_LINK([
2721#ifdef HAVE_ICONV_H
2722# include <iconv.h>
2723#endif
2724 ], [iconv_open("fr", "to");],
2725 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2726 LIBS="$save_LIBS"
2727 AC_TRY_LINK([
2728#ifdef HAVE_ICONV_H
2729# include <iconv.h>
2730#endif
2731 ], [iconv_open("fr", "to");],
2732 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2733 AC_MSG_RESULT(no)))
2734
2735
2736AC_MSG_CHECKING(for nl_langinfo(CODESET))
2737AC_TRY_LINK([
2738#ifdef HAVE_LANGINFO_H
2739# include <langinfo.h>
2740#endif
2741], [char *cs = nl_langinfo(CODESET);],
2742 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2743 AC_MSG_RESULT(no))
2744
Bram Moolenaar446cb832008-06-24 21:56:24 +00002745dnl Need various functions for floating point support. Only enable
2746dnl floating point when they are all present.
2747AC_CHECK_LIB(m, strtod)
2748AC_MSG_CHECKING([for strtod() and other floating point functions])
2749AC_TRY_LINK([
2750#ifdef HAVE_MATH_H
2751# include <math.h>
2752#endif
2753#if STDC_HEADERS
2754# include <stdlib.h>
2755# include <stddef.h>
2756#endif
2757], [char *s; double d;
2758 d = strtod("1.1", &s);
2759 d = fabs(1.11);
2760 d = ceil(1.11);
2761 d = floor(1.11);
2762 d = log10(1.11);
2763 d = pow(1.11, 2.22);
2764 d = sqrt(1.11);
2765 d = sin(1.11);
2766 d = cos(1.11);
2767 d = atan(1.11);
2768 ],
2769 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2770 AC_MSG_RESULT(no))
2771
Bram Moolenaar071d4272004-06-13 20:20:40 +00002772dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2773dnl when -lacl works, also try to use -lattr (required for Debian).
2774AC_MSG_CHECKING(--disable-acl argument)
2775AC_ARG_ENABLE(acl,
2776 [ --disable-acl Don't check for ACL support.],
2777 , [enable_acl="yes"])
2778if test "$enable_acl" = "yes"; then
2779AC_MSG_RESULT(no)
2780AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2781 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2782 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2783
2784AC_MSG_CHECKING(for POSIX ACL support)
2785AC_TRY_LINK([
2786#include <sys/types.h>
2787#ifdef HAVE_SYS_ACL_H
2788# include <sys/acl.h>
2789#endif
2790acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2791 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2792 acl_free(acl);],
2793 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2794 AC_MSG_RESULT(no))
2795
2796AC_MSG_CHECKING(for Solaris ACL support)
2797AC_TRY_LINK([
2798#ifdef HAVE_SYS_ACL_H
2799# include <sys/acl.h>
2800#endif], [acl("foo", GETACLCNT, 0, NULL);
2801 ],
2802 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2803 AC_MSG_RESULT(no))
2804
2805AC_MSG_CHECKING(for AIX ACL support)
2806AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00002807#if STDC_HEADERS
2808# include <stdlib.h>
2809# include <stddef.h>
2810#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811#ifdef HAVE_SYS_ACL_H
2812# include <sys/acl.h>
2813#endif
2814#ifdef HAVE_SYS_ACCESS_H
2815# include <sys/access.h>
2816#endif
2817#define _ALL_SOURCE
2818
2819#include <sys/stat.h>
2820
2821int aclsize;
2822struct acl *aclent;], [aclsize = sizeof(struct acl);
2823 aclent = (void *)malloc(aclsize);
2824 statacl("foo", STX_NORMAL, aclent, aclsize);
2825 ],
2826 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2827 AC_MSG_RESULT(no))
2828else
2829 AC_MSG_RESULT(yes)
2830fi
2831
2832AC_MSG_CHECKING(--disable-gpm argument)
2833AC_ARG_ENABLE(gpm,
2834 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2835 [enable_gpm="yes"])
2836
2837if test "$enable_gpm" = "yes"; then
2838 AC_MSG_RESULT(no)
2839 dnl Checking if gpm support can be compiled
2840 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2841 [olibs="$LIBS" ; LIBS="-lgpm"]
2842 AC_TRY_LINK(
2843 [#include <gpm.h>
2844 #include <linux/keyboard.h>],
2845 [Gpm_GetLibVersion(NULL);],
2846 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2847 dnl FEAT_MOUSE_GPM if mouse support is included
2848 [vi_cv_have_gpm=yes],
2849 [vi_cv_have_gpm=no])
2850 [LIBS="$olibs"]
2851 )
2852 if test $vi_cv_have_gpm = yes; then
2853 LIBS="$LIBS -lgpm"
2854 AC_DEFINE(HAVE_GPM)
2855 fi
2856else
2857 AC_MSG_RESULT(yes)
2858fi
2859
Bram Moolenaar446cb832008-06-24 21:56:24 +00002860AC_MSG_CHECKING(--disable-sysmouse argument)
2861AC_ARG_ENABLE(sysmouse,
2862 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2863 [enable_sysmouse="yes"])
2864
2865if test "$enable_sysmouse" = "yes"; then
2866 AC_MSG_RESULT(no)
2867 dnl Checking if sysmouse support can be compiled
2868 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2869 dnl defines FEAT_SYSMOUSE if mouse support is included
2870 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2871 AC_TRY_LINK(
2872 [#include <sys/consio.h>
2873 #include <signal.h>
2874 #include <sys/fbio.h>],
2875 [struct mouse_info mouse;
2876 mouse.operation = MOUSE_MODE;
2877 mouse.operation = MOUSE_SHOW;
2878 mouse.u.mode.mode = 0;
2879 mouse.u.mode.signal = SIGUSR2;],
2880 [vi_cv_have_sysmouse=yes],
2881 [vi_cv_have_sysmouse=no])
2882 )
2883 if test $vi_cv_have_sysmouse = yes; then
2884 AC_DEFINE(HAVE_SYSMOUSE)
2885 fi
2886else
2887 AC_MSG_RESULT(yes)
2888fi
2889
Bram Moolenaarf05da212009-11-17 16:13:15 +00002890dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2891AC_MSG_CHECKING(for FD_CLOEXEC)
2892AC_TRY_COMPILE(
2893[#if HAVE_FCNTL_H
2894# include <fcntl.h>
2895#endif],
2896[ int flag = FD_CLOEXEC;],
2897 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2898 AC_MSG_RESULT(not usable))
2899
Bram Moolenaar071d4272004-06-13 20:20:40 +00002900dnl rename needs to be checked separately to work on Nextstep with cc
2901AC_MSG_CHECKING(for rename)
2902AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2903 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2904 AC_MSG_RESULT(no))
2905
2906dnl sysctl() may exist but not the arguments we use
2907AC_MSG_CHECKING(for sysctl)
2908AC_TRY_COMPILE(
2909[#include <sys/types.h>
2910#include <sys/sysctl.h>],
2911[ int mib[2], r;
2912 size_t len;
2913
2914 mib[0] = CTL_HW;
2915 mib[1] = HW_USERMEM;
2916 len = sizeof(r);
2917 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2918 ],
2919 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2920 AC_MSG_RESULT(not usable))
2921
2922dnl sysinfo() may exist but not be Linux compatible
2923AC_MSG_CHECKING(for sysinfo)
2924AC_TRY_COMPILE(
2925[#include <sys/types.h>
2926#include <sys/sysinfo.h>],
2927[ struct sysinfo sinfo;
2928 int t;
2929
2930 (void)sysinfo(&sinfo);
2931 t = sinfo.totalram;
2932 ],
2933 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2934 AC_MSG_RESULT(not usable))
2935
Bram Moolenaar914572a2007-05-01 11:37:47 +00002936dnl struct sysinfo may have the mem_unit field or not
2937AC_MSG_CHECKING(for sysinfo.mem_unit)
2938AC_TRY_COMPILE(
2939[#include <sys/types.h>
2940#include <sys/sysinfo.h>],
2941[ struct sysinfo sinfo;
2942 sinfo.mem_unit = 1;
2943 ],
2944 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2945 AC_MSG_RESULT(no))
2946
Bram Moolenaar071d4272004-06-13 20:20:40 +00002947dnl sysconf() may exist but not support what we want to use
2948AC_MSG_CHECKING(for sysconf)
2949AC_TRY_COMPILE(
2950[#include <unistd.h>],
2951[ (void)sysconf(_SC_PAGESIZE);
2952 (void)sysconf(_SC_PHYS_PAGES);
2953 ],
2954 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2955 AC_MSG_RESULT(not usable))
2956
2957dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2958dnl be printed with "%d", and avoids a warning for cross-compiling.
2959
2960AC_MSG_CHECKING(size of int)
2961AC_CACHE_VAL(ac_cv_sizeof_int,
Bram Moolenaar446cb832008-06-24 21:56:24 +00002962 [AC_TRY_RUN([
2963#include <stdio.h>
2964#if STDC_HEADERS
2965# include <stdlib.h>
2966# include <stddef.h>
2967#endif
2968main()
2969{
2970 FILE *f=fopen("conftestval", "w");
2971 if (!f) exit(1);
2972 fprintf(f, "%d\n", (int)sizeof(int));
2973 exit(0);
2974}],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975 ac_cv_sizeof_int=`cat conftestval`,
2976 ac_cv_sizeof_int=0,
2977 AC_MSG_ERROR(failed to compile test program))])
2978AC_MSG_RESULT($ac_cv_sizeof_int)
2979AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2980
Bram Moolenaar446cb832008-06-24 21:56:24 +00002981dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2982dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2983
Bram Moolenaar071d4272004-06-13 20:20:40 +00002984[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00002985#include "confdefs.h"
2986#ifdef HAVE_STRING_H
2987# include <string.h>
2988#endif
2989#if STDC_HEADERS
2990# include <stdlib.h>
2991# include <stddef.h>
2992#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002993main() {
2994 char buf[10];
2995 strcpy(buf, "abcdefghi");
2996 mch_memmove(buf, buf + 2, 3);
2997 if (strncmp(buf, "ababcf", 6))
2998 exit(1);
2999 strcpy(buf, "abcdefghi");
3000 mch_memmove(buf + 2, buf, 3);
3001 if (strncmp(buf, "cdedef", 6))
3002 exit(1);
3003 exit(0); /* libc version works properly. */
3004}']
3005
Bram Moolenaar446cb832008-06-24 21:56:24 +00003006AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3007 [
3008 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3009 [
3010 vim_cv_memmove_handles_overlap=yes
3011 ],[
3012 vim_cv_memmove_handles_overlap=no
3013 ],[
3014 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3015 ])
3016 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003017
Bram Moolenaar446cb832008-06-24 21:56:24 +00003018if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3019 AC_DEFINE(USEMEMMOVE)
3020else
3021 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3022 [
3023 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3024 [
3025 vim_cv_bcopy_handles_overlap=yes
3026 ],[
3027 vim_cv_bcopy_handles_overlap=no
3028 ],[
3029 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3030 ])
3031 ])
3032
3033 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3034 AC_DEFINE(USEBCOPY)
3035 else
3036 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3037 [
3038 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3039 [
3040 vim_cv_memcpy_handles_overlap=yes
3041 ],[
3042 vim_cv_memcpy_handles_overlap=no
3043 ],[
3044 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3045 ])
3046 ])
3047
3048 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3049 AC_DEFINE(USEMEMCPY)
3050 fi
3051 fi
3052fi
3053
Bram Moolenaar071d4272004-06-13 20:20:40 +00003054
3055dnl Check for multibyte locale functions
3056dnl Find out if _Xsetlocale() is supported by libX11.
3057dnl Check if X_LOCALE should be defined.
3058
3059if test "$enable_multibyte" = "yes"; then
3060 cflags_save=$CFLAGS
3061 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003062 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003063 CFLAGS="$CFLAGS -I$x_includes"
3064 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3065 AC_MSG_CHECKING(whether X_LOCALE needed)
3066 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3067 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3068 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3069 AC_MSG_RESULT(no))
3070 fi
3071 CFLAGS=$cflags_save
3072 LDFLAGS=$ldflags_save
3073fi
3074
3075dnl Link with xpg4, it is said to make Korean locale working
3076AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3077
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003078dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003079dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003080dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003081dnl -t for typedefs (many ctags have this)
3082dnl -s for static functions (Elvis ctags only?)
3083dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3084dnl -i+m to test for older Exuberant ctags
3085AC_MSG_CHECKING(how to create tags)
3086test -f tags && mv tags tags.save
3087if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003088 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003090 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003091 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3092 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3093 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3094 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3095 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3096 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3097 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3098fi
3099test -f tags.save && mv tags.save tags
3100AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3101
3102dnl Check how we can run man with a section number
3103AC_MSG_CHECKING(how to run man with a section nr)
3104MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003105(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 +00003106AC_MSG_RESULT($MANDEF)
3107if test "$MANDEF" = "man -s"; then
3108 AC_DEFINE(USEMAN_S)
3109fi
3110
3111dnl Check if gettext() is working and if it needs -lintl
3112AC_MSG_CHECKING(--disable-nls argument)
3113AC_ARG_ENABLE(nls,
3114 [ --disable-nls Don't support NLS (gettext()).], ,
3115 [enable_nls="yes"])
3116
3117if test "$enable_nls" = "yes"; then
3118 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003119
3120 INSTALL_LANGS=install-languages
3121 AC_SUBST(INSTALL_LANGS)
3122 INSTALL_TOOL_LANGS=install-tool-languages
3123 AC_SUBST(INSTALL_TOOL_LANGS)
3124
Bram Moolenaar071d4272004-06-13 20:20:40 +00003125 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3126 AC_MSG_CHECKING([for NLS])
3127 if test -f po/Makefile; then
3128 have_gettext="no"
3129 if test -n "$MSGFMT"; then
3130 AC_TRY_LINK(
3131 [#include <libintl.h>],
3132 [gettext("Test");],
3133 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3134 olibs=$LIBS
3135 LIBS="$LIBS -lintl"
3136 AC_TRY_LINK(
3137 [#include <libintl.h>],
3138 [gettext("Test");],
3139 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3140 AC_MSG_RESULT([gettext() doesn't work]);
3141 LIBS=$olibs))
3142 else
3143 AC_MSG_RESULT([msgfmt not found - disabled]);
3144 fi
3145 if test $have_gettext = "yes"; then
3146 AC_DEFINE(HAVE_GETTEXT)
3147 MAKEMO=yes
3148 AC_SUBST(MAKEMO)
3149 dnl this was added in GNU gettext 0.10.36
3150 AC_CHECK_FUNCS(bind_textdomain_codeset)
3151 dnl _nl_msg_cat_cntr is required for GNU gettext
3152 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3153 AC_TRY_LINK(
3154 [#include <libintl.h>
3155 extern int _nl_msg_cat_cntr;],
3156 [++_nl_msg_cat_cntr;],
3157 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3158 AC_MSG_RESULT([no]))
3159 fi
3160 else
3161 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3162 fi
3163else
3164 AC_MSG_RESULT(yes)
3165fi
3166
3167dnl Check for dynamic linking loader
3168AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3169if test x${DLL} = xdlfcn.h; then
3170 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3171 AC_MSG_CHECKING([for dlopen()])
3172 AC_TRY_LINK(,[
3173 extern void* dlopen();
3174 dlopen();
3175 ],
3176 AC_MSG_RESULT(yes);
3177 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3178 AC_MSG_RESULT(no);
3179 AC_MSG_CHECKING([for dlopen() in -ldl])
3180 olibs=$LIBS
3181 LIBS="$LIBS -ldl"
3182 AC_TRY_LINK(,[
3183 extern void* dlopen();
3184 dlopen();
3185 ],
3186 AC_MSG_RESULT(yes);
3187 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3188 AC_MSG_RESULT(no);
3189 LIBS=$olibs))
3190 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3191 dnl ick :-)
3192 AC_MSG_CHECKING([for dlsym()])
3193 AC_TRY_LINK(,[
3194 extern void* dlsym();
3195 dlsym();
3196 ],
3197 AC_MSG_RESULT(yes);
3198 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3199 AC_MSG_RESULT(no);
3200 AC_MSG_CHECKING([for dlsym() in -ldl])
3201 olibs=$LIBS
3202 LIBS="$LIBS -ldl"
3203 AC_TRY_LINK(,[
3204 extern void* dlsym();
3205 dlsym();
3206 ],
3207 AC_MSG_RESULT(yes);
3208 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3209 AC_MSG_RESULT(no);
3210 LIBS=$olibs))
3211elif test x${DLL} = xdl.h; then
3212 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3213 AC_MSG_CHECKING([for shl_load()])
3214 AC_TRY_LINK(,[
3215 extern void* shl_load();
3216 shl_load();
3217 ],
3218 AC_MSG_RESULT(yes);
3219 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3220 AC_MSG_RESULT(no);
3221 AC_MSG_CHECKING([for shl_load() in -ldld])
3222 olibs=$LIBS
3223 LIBS="$LIBS -ldld"
3224 AC_TRY_LINK(,[
3225 extern void* shl_load();
3226 shl_load();
3227 ],
3228 AC_MSG_RESULT(yes);
3229 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3230 AC_MSG_RESULT(no);
3231 LIBS=$olibs))
3232fi
3233AC_CHECK_HEADERS(setjmp.h)
3234
3235if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3236 dnl -ldl must come after DynaLoader.a
3237 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3238 LIBS=`echo $LIBS | sed s/-ldl//`
3239 PERL_LIBS="$PERL_LIBS -ldl"
3240 fi
3241fi
3242
3243if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3244 && test "x$GUITYPE" != "xCARBONGUI"; then
3245 AC_MSG_CHECKING(whether we need -framework Carbon)
3246 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00003247 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003248 || test "x$features" = "xhuge"; then
3249 LIBS="$LIBS -framework Carbon"
3250 AC_MSG_RESULT(yes)
3251 else
3252 AC_MSG_RESULT(no)
3253 fi
3254fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003255if test "x$MACARCH" = "xboth"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003256 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003257fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003258
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003259dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3260dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3261dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003262dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3263dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003264DEPEND_CFLAGS_FILTER=
3265if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003266 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003267 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003268 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003269 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003270 AC_MSG_RESULT(yes)
3271 else
3272 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003273 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003274 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3275 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003276 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003277 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3278 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003279 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 +00003280 AC_MSG_RESULT(yes)
3281 else
3282 AC_MSG_RESULT(no)
3283 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003284fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003285AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003286
3287dnl write output files
3288AC_OUTPUT(auto/config.mk:config.mk.in)
3289
3290dnl vim: set sw=2 tw=78 fo+=l: