blob: 628c2c3040e83f2670f4d5603f0177467f515d4c [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
26dnl Set default value for CFLAGS if none is defined or it's empty
27if test -z "$CFLAGS"; then
28 CFLAGS="-O"
29 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
30fi
31if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000032 dnl method that should work for nearly all versions
33 gccversion=`"$CC" -dumpversion`
34 if test "x$gccversion" = "x"; then
35 dnl old method; fall-back for when -dumpversion doesn't work
36 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
37 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000038 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
39 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000040 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000041 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
42 else
43 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
44 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
45 CFLAGS="$CFLAGS -fno-strength-reduce"
46 fi
47 fi
48fi
49
50dnl If configure thinks we are cross compiling, there is probably something
51dnl wrong with the CC or CFLAGS settings, give an understandable error message
52if test "$cross_compiling" = yes; then
53 AC_MSG_ERROR([cannot compile a simple program, check CC and CFLAGS
54 (cross compiling doesn't work)])
55fi
56
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000057dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
58dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000059test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
60
61if test -f ./toolcheck; then
62 AC_CHECKING(for buggy tools)
63 sh ./toolcheck 1>&AC_FD_MSG
64fi
65
66OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
67
68dnl Check for BeOS, which needs an extra source file
69AC_MSG_CHECKING(for BeOS)
70case `uname` in
71 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
72 BEOS=yes; AC_MSG_RESULT(yes);;
73 *) BEOS=no; AC_MSG_RESULT(no);;
74esac
75
76dnl If QNX is found, assume we don't want to use Xphoton
77dnl unless it was specifically asked for (--with-x)
78AC_MSG_CHECKING(for QNX)
79case `uname` in
80 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
81 test -z "$with_x" && with_x=no
82 QNX=yes; AC_MSG_RESULT(yes);;
83 *) QNX=no; AC_MSG_RESULT(no);;
84esac
85
86dnl Check for Darwin and MacOS X
87dnl We do a check for MacOS X in the very beginning because there
88dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +000089AC_MSG_CHECKING([for Darwin (Mac OS X)])
90if test "`(uname) 2>/dev/null`" = Darwin; then
91 AC_MSG_RESULT(yes)
92
93 AC_MSG_CHECKING(--disable-darwin argument)
94 AC_ARG_ENABLE(darwin,
95 [ --disable-darwin Disable Darwin (Mac OS X) support.],
96 , [enable_darwin="yes"])
97 if test "$enable_darwin" = "yes"; then
98 AC_MSG_RESULT(no)
99 AC_MSG_CHECKING(if Darwin files are there)
100 if test -f os_macosx.c; then
101 AC_MSG_RESULT(yes)
102 else
103 AC_MSG_RESULT([no, Darwin support disabled])
104 enable_darwin=no
105 fi
106 else
107 AC_MSG_RESULT([yes, Darwin support excluded])
108 fi
109
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000110 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000111 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000112 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000113 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000114
115 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000116 AC_MSG_CHECKING(for 10.4 universal SDK)
117 dnl There is a terrible inconsistency (but we appear to get away with it):
118 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
119 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
120 dnl tests using the preprocessor are actually done with the wrong header
121 dnl files. $LDFLAGS is set at the end, because configure uses it together
122 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000123 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000124 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000125 save_ldflags="$LDFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000126 CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000127 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000128 AC_MSG_RESULT(found, will make universal binary),
129
130 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000131 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000132 AC_MSG_CHECKING(if Intel architecture is supported)
133 CPPFLAGS="$CPPFLAGS -arch i386"
134 LDFLAGS="$save_ldflags -arch i386"
135 AC_TRY_LINK([ ], [ ],
136 AC_MSG_RESULT(yes); MACARCH="intel",
137 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000138 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000139 CPPFLAGS="$save_cppflags -arch ppc"
140 LDFLAGS="$save_ldflags -arch ppc"))
141 elif test "x$MACARCH" = "xintel"; then
142 CPPFLAGS="$CPPFLAGS -arch intel"
143 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000144 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000145 CPPFLAGS="$CPPFLAGS -arch ppc"
146 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000147 fi
148
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149 if test "$enable_darwin" = "yes"; then
150 MACOSX=yes
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000151 OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
152 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000153 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
155 if test "x$MACARCH" = "xboth"; then
156 CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
157 else
158 CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
159 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160
161 dnl If Carbon is found, assume we don't want X11
162 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000163 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000164 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
165 if test "x$CARBON" = "xyes"; then
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000166 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 +0000167 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000168 fi
169 fi
170 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000171
Bram Moolenaardb552d602006-03-23 22:59:57 +0000172 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000173 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000174 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
176 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179else
180 AC_MSG_RESULT(no)
181fi
182
183AC_SUBST(OS_EXTRA_SRC)
184AC_SUBST(OS_EXTRA_OBJ)
185
186dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
187dnl Only when the directory exists and it wasn't there yet.
188dnl For gcc don't do this when it is already in the default search path.
189have_local_include=''
190have_local_lib=''
191if test "$GCC" = yes; then
192 echo 'void f(){}' > conftest.c
193 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
194 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
195 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
196 rm -f conftest.c conftest.o
197fi
198if test -z "$have_local_lib" -a -d /usr/local/lib; then
199 tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
200 if test "$tt" = "$LDFLAGS"; then
201 LDFLAGS="$LDFLAGS -L/usr/local/lib"
202 fi
203fi
204if test -z "$have_local_include" -a -d /usr/local/include; then
205 tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
206 if test "$tt" = "$CPPFLAGS"; then
207 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
208 fi
209fi
210
211AC_MSG_CHECKING(--with-vim-name argument)
212AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
213 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000214 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000215AC_SUBST(VIMNAME)
216AC_MSG_CHECKING(--with-ex-name argument)
217AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
218 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
219 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
220AC_SUBST(EXNAME)
221AC_MSG_CHECKING(--with-view-name argument)
222AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
223 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
224 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
225AC_SUBST(VIEWNAME)
226
227AC_MSG_CHECKING(--with-global-runtime argument)
228AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
229 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
230 AC_MSG_RESULT(no))
231
232AC_MSG_CHECKING(--with-modified-by argument)
233AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
234 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
235 AC_MSG_RESULT(no))
236
237dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
238AC_MSG_CHECKING(if character set is EBCDIC)
239AC_TRY_COMPILE([ ],
240[ /* TryCompile function for CharSet.
241 Treat any failure as ASCII for compatibility with existing art.
242 Use compile-time rather than run-time tests for cross-compiler
243 tolerance. */
244#if '0'!=240
245make an error "Character set is not EBCDIC"
246#endif ],
247[ # TryCompile action if true
248cf_cv_ebcdic=yes ],
249[ # TryCompile action if false
250cf_cv_ebcdic=no])
251# end of TryCompile ])
252# end of CacheVal CvEbcdic
253AC_MSG_RESULT($cf_cv_ebcdic)
254case "$cf_cv_ebcdic" in #(vi
255 yes) AC_DEFINE(EBCDIC)
256 line_break='"\\n"'
257 ;;
258 *) line_break='"\\012"';;
259esac
260AC_SUBST(line_break)
261
262if test "$cf_cv_ebcdic" = "yes"; then
263dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
264AC_MSG_CHECKING(for OS/390 Unix)
265case `uname` in
266 OS/390) OS390Unix="yes";
267 dnl If using cc the environment variable _CC_CCMODE must be
268 dnl set to "1", so that some compiler extensions are enabled.
269 dnl If using c89 the environment variable is named _CC_C89MODE.
270 dnl Note: compile with c89 never tested.
271 if test "$CC" = "cc"; then
272 ccm="$_CC_CCMODE"
273 ccn="CC"
274 else
275 if test "$CC" = "c89"; then
276 ccm="$_CC_C89MODE"
277 ccn="C89"
278 else
279 ccm=1
280 fi
281 fi
282 if test "$ccm" != "1"; then
283 echo ""
284 echo "------------------------------------------"
285 echo " On OS/390 Unix, the environment variable"
286 echo " __CC_${ccn}MODE must be set to \"1\"!"
287 echo " Do:"
288 echo " export _CC_${ccn}MODE=1"
289 echo " and then call configure again."
290 echo "------------------------------------------"
291 exit 1
292 fi
293 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
294 AC_MSG_RESULT(yes)
295 ;;
296 *) OS390Unix="no";
297 AC_MSG_RESULT(no)
298 ;;
299esac
300fi
301
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000302dnl Link with -lselinux for SELinux stuff; if not found
303AC_MSG_CHECKING(--disable-selinux argument)
304AC_ARG_ENABLE(selinux,
305 [ --disable-selinux Don't check for SELinux support.],
306 , enable_selinux="yes")
307if test "$enable_selinux" = "yes"; then
308 AC_MSG_RESULT(no)
309 AC_CHECK_LIB(selinux, is_selinux_enabled,
310 [LIBS="$LIBS -lselinux"
311 AC_DEFINE(HAVE_SELINUX)])
312else
313 AC_MSG_RESULT(yes)
314fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315
316dnl Check user requested features.
317
318AC_MSG_CHECKING(--with-features argument)
319AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
320 features="$withval"; AC_MSG_RESULT($features),
321 features="normal"; AC_MSG_RESULT(Defaulting to normal))
322
323dovimdiff=""
324dogvimdiff=""
325case "$features" in
326 tiny) AC_DEFINE(FEAT_TINY) ;;
327 small) AC_DEFINE(FEAT_SMALL) ;;
328 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
329 dogvimdiff="installgvimdiff" ;;
330 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
331 dogvimdiff="installgvimdiff" ;;
332 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
333 dogvimdiff="installgvimdiff" ;;
334 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
335esac
336
337AC_SUBST(dovimdiff)
338AC_SUBST(dogvimdiff)
339
340AC_MSG_CHECKING(--with-compiledby argument)
341AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
342 compiledby="$withval"; AC_MSG_RESULT($withval),
343 compiledby=""; AC_MSG_RESULT(no))
344AC_SUBST(compiledby)
345
346AC_MSG_CHECKING(--disable-xsmp argument)
347AC_ARG_ENABLE(xsmp,
348 [ --disable-xsmp Disable XSMP session management],
349 , enable_xsmp="yes")
350
351if test "$enable_xsmp" = "yes"; then
352 AC_MSG_RESULT(no)
353 AC_MSG_CHECKING(--disable-xsmp-interact argument)
354 AC_ARG_ENABLE(xsmp-interact,
355 [ --disable-xsmp-interact Disable XSMP interaction],
356 , enable_xsmp_interact="yes")
357 if test "$enable_xsmp_interact" = "yes"; then
358 AC_MSG_RESULT(no)
359 AC_DEFINE(USE_XSMP_INTERACT)
360 else
361 AC_MSG_RESULT(yes)
362 fi
363else
364 AC_MSG_RESULT(yes)
365fi
366
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000367dnl Check for MzScheme feature.
368AC_MSG_CHECKING(--enable-mzschemeinterp argument)
369AC_ARG_ENABLE(mzschemeinterp,
370 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
371 [enable_mzschemeinterp="no"])
372AC_MSG_RESULT($enable_mzschemeinterp)
373
374if test "$enable_mzschemeinterp" = "yes"; then
375 dnl -- find the mzscheme executable
376 AC_SUBST(vi_cv_path_mzscheme)
377
378 AC_MSG_CHECKING(--with-plthome argument)
379 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000380 [ --with-plthome=PLTHOME Use PLTHOME.],
381 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000382 with_plthome="";AC_MSG_RESULT("no"))
383
384 if test "X$with_plthome" != "X"; then
385 vi_cv_path_mzscheme_pfx="$with_plthome"
386 else
387 AC_MSG_CHECKING(PLTHOME environment var)
388 if test "X$PLTHOME" != "X"; then
389 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000390 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000391 else
392 AC_MSG_RESULT("not set")
393 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000394 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000395
396 dnl resolve symbolic link, the executable is often elsewhere and there
397 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000398 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000399 lsout=`ls -l $vi_cv_path_mzscheme`
400 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
401 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
402 fi
403 fi
404
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000405 if test "X$vi_cv_path_mzscheme" != "X"; then
406 dnl -- find where MzScheme thinks it was installed
407 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
408 [ vi_cv_path_mzscheme_pfx=`
409 ${vi_cv_path_mzscheme} -evm \
410 "(display (simplify-path \
411 (build-path (call-with-values \
412 (lambda () (split-path (find-system-path (quote exec-file)))) \
413 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000414 dnl Remove a trailing slash.
415 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000416 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000417 fi
418 fi
419
Bram Moolenaard7afed32007-05-06 13:26:41 +0000420 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000421 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
422 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
423 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
424 AC_MSG_RESULT("yes")
425 else
426 AC_MSG_RESULT("no")
Bram Moolenaard7afed32007-05-06 13:26:41 +0000427 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
428 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
429 AC_MSG_RESULT("yes")
430 SCHEME_INC=/plt
431 else
432 AC_MSG_RESULT("no")
433 vi_cv_path_mzscheme_pfx=
434 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000435 fi
436 fi
437
438 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000439 if test "x$MACOSX" = "xyes"; then
440 MZSCHEME_LIBS="-framework PLT_MzScheme"
441 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000442 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 +0000443 else
Bram Moolenaar9048f942007-05-12 14:32:25 +0000444 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000445 if test "$GCC" = yes; then
446 dnl Make Vim remember the path to the library. For when it's not in
447 dnl $LD_LIBRARY_PATH.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000448 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000449 elif test "`(uname) 2>/dev/null`" = SunOS &&
450 uname -r | grep '^5' >/dev/null; then
451 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000452 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000453 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000454 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
455 SCHEME_COLLECTS=lib/plt/
456 fi
457 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
458 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000459 MZSCHEME_SRC="if_mzsch.c"
460 MZSCHEME_OBJ="objects/if_mzsch.o"
461 MZSCHEME_PRO="if_mzsch.pro"
462 AC_DEFINE(FEAT_MZSCHEME)
463 fi
464 AC_SUBST(MZSCHEME_SRC)
465 AC_SUBST(MZSCHEME_OBJ)
466 AC_SUBST(MZSCHEME_PRO)
467 AC_SUBST(MZSCHEME_LIBS)
468 AC_SUBST(MZSCHEME_CFLAGS)
469fi
470
471
Bram Moolenaar071d4272004-06-13 20:20:40 +0000472AC_MSG_CHECKING(--enable-perlinterp argument)
473AC_ARG_ENABLE(perlinterp,
474 [ --enable-perlinterp Include Perl interpreter.], ,
475 [enable_perlinterp="no"])
476AC_MSG_RESULT($enable_perlinterp)
477if test "$enable_perlinterp" = "yes"; then
478 AC_SUBST(vi_cv_path_perl)
479 AC_PATH_PROG(vi_cv_path_perl, perl)
480 if test "X$vi_cv_path_perl" != "X"; then
481 AC_MSG_CHECKING(Perl version)
482 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
483 eval `$vi_cv_path_perl -V:usethreads`
484 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
485 badthreads=no
486 else
487 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
488 eval `$vi_cv_path_perl -V:use5005threads`
489 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
490 badthreads=no
491 else
492 badthreads=yes
493 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
494 fi
495 else
496 badthreads=yes
497 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
498 fi
499 fi
500 if test $badthreads = no; then
501 AC_MSG_RESULT(OK)
502 eval `$vi_cv_path_perl -V:shrpenv`
503 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
504 shrpenv=""
505 fi
506 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
507 AC_SUBST(vi_cv_perllib)
508 dnl Remove "-fno-something", it breaks using cproto.
509 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
510 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
511 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
512 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
513 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
514 -e 's/-bE:perl.exp//' -e 's/-lc //'`
515 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
516 dnl a test in configure may fail because of that.
517 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
518 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
519
520 dnl check that compiling a simple program still works with the flags
521 dnl added for Perl.
522 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
523 cflags_save=$CFLAGS
524 libs_save=$LIBS
525 ldflags_save=$LDFLAGS
526 CFLAGS="$CFLAGS $perlcppflags"
527 LIBS="$LIBS $perllibs"
528 LDFLAGS="$perlldflags $LDFLAGS"
529 AC_TRY_LINK(,[ ],
530 AC_MSG_RESULT(yes); perl_ok=yes,
531 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
532 CFLAGS=$cflags_save
533 LIBS=$libs_save
534 LDFLAGS=$ldflags_save
535 if test $perl_ok = yes; then
536 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000537 dnl remove -pipe and -Wxxx, it confuses cproto
538 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000539 fi
540 if test "X$perlldflags" != "X"; then
541 LDFLAGS="$perlldflags $LDFLAGS"
542 fi
543 PERL_LIBS=$perllibs
544 PERL_SRC="auto/if_perl.c if_perlsfio.c"
545 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
546 PERL_PRO="if_perl.pro if_perlsfio.pro"
547 AC_DEFINE(FEAT_PERL)
548 fi
549 fi
550 else
551 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
552 fi
553 fi
554
555 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000556 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000557 dir=/System/Library/Perl
558 darwindir=$dir/darwin
559 if test -d $darwindir; then
560 PERL=/usr/bin/perl
561 else
562 dnl Mac OS X 10.3
563 dir=/System/Library/Perl/5.8.1
564 darwindir=$dir/darwin-thread-multi-2level
565 if test -d $darwindir; then
566 PERL=/usr/bin/perl
567 fi
568 fi
569 if test -n "$PERL"; then
570 PERL_DIR="$dir"
571 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
572 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
573 PERL_LIBS="-L$darwindir/CORE -lperl"
574 fi
575 fi
576fi
577AC_SUBST(shrpenv)
578AC_SUBST(PERL_SRC)
579AC_SUBST(PERL_OBJ)
580AC_SUBST(PERL_PRO)
581AC_SUBST(PERL_CFLAGS)
582AC_SUBST(PERL_LIBS)
583
584AC_MSG_CHECKING(--enable-pythoninterp argument)
585AC_ARG_ENABLE(pythoninterp,
586 [ --enable-pythoninterp Include Python interpreter.], ,
587 [enable_pythoninterp="no"])
588AC_MSG_RESULT($enable_pythoninterp)
589if test "$enable_pythoninterp" = "yes"; then
590 dnl -- find the python executable
591 AC_PATH_PROG(vi_cv_path_python, python)
592 if test "X$vi_cv_path_python" != "X"; then
593
594 dnl -- get its version number
595 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
596 [[vi_cv_var_python_version=`
597 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
598 ]])
599
600 dnl -- it must be at least version 1.4
601 AC_MSG_CHECKING(Python is 1.4 or better)
602 if ${vi_cv_path_python} -c \
603 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
604 then
605 AC_MSG_RESULT(yep)
606
607 dnl -- find where python thinks it was installed
608 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
609 [ vi_cv_path_python_pfx=`
610 ${vi_cv_path_python} -c \
611 "import sys; print sys.prefix"` ])
612
613 dnl -- and where it thinks it runs
614 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
615 [ vi_cv_path_python_epfx=`
616 ${vi_cv_path_python} -c \
617 "import sys; print sys.exec_prefix"` ])
618
619 dnl -- python's internal library path
620
621 AC_CACHE_VAL(vi_cv_path_pythonpath,
622 [ vi_cv_path_pythonpath=`
623 unset PYTHONPATH;
624 ${vi_cv_path_python} -c \
625 "import sys, string; print string.join(sys.path,':')"` ])
626
627 dnl -- where the Python implementation library archives are
628
629 AC_ARG_WITH(python-config-dir,
630 [ --with-python-config-dir=PATH Python's config directory],
631 [ vi_cv_path_python_conf="${withval}" ] )
632
633 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
634 [
635 vi_cv_path_python_conf=
636 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
637 for subdir in lib share; do
638 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
639 if test -d "$d" && test -f "$d/config.c"; then
640 vi_cv_path_python_conf="$d"
641 fi
642 done
643 done
644 ])
645
646 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
647
648 if test "X$PYTHON_CONFDIR" = "X"; then
649 AC_MSG_RESULT([can't find it!])
650 else
651
652 dnl -- we need to examine Python's config/Makefile too
653 dnl see what the interpreter is built from
654 AC_CACHE_VAL(vi_cv_path_python_plibs,
655 [
656 tmp_mkf="/tmp/Makefile-conf$$"
657 cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
658__:
659 @echo "python_MODLIBS='$(MODLIBS)'"
660 @echo "python_LIBS='$(LIBS)'"
661 @echo "python_SYSLIBS='$(SYSLIBS)'"
662 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
663eof
664 dnl -- delete the lines from make about Entering/Leaving directory
665 eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
666 rm -f ${tmp_mkf}
667 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
668 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
669 vi_cv_path_python_plibs="-framework Python"
670 else
671 if test "${vi_cv_var_python_version}" = "1.4"; then
672 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
673 else
674 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
675 fi
676 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
677 dnl remove -ltermcap, it can conflict with an earlier -lncurses
678 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
679 fi
680 ])
681
682 PYTHON_LIBS="${vi_cv_path_python_plibs}"
683 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
684 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
685 else
686 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}"
687 fi
688 PYTHON_SRC="if_python.c"
689 dnl For Mac OSX 10.2 config.o is included in the Python library.
690 if test "x$MACOSX" = "xyes"; then
691 PYTHON_OBJ="objects/if_python.o"
692 else
693 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
694 fi
695 if test "${vi_cv_var_python_version}" = "1.4"; then
696 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
697 fi
698 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
699
700 dnl On FreeBSD linking with "-pthread" is required to use threads.
701 dnl _THREAD_SAFE must be used for compiling then.
702 dnl The "-pthread" is added to $LIBS, so that the following check for
703 dnl sigaltstack() will look in libc_r (it's there in libc!).
704 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
705 dnl will then define target-specific defines, e.g., -D_REENTRANT.
706 dnl Don't do this for Mac OSX, -pthread will generate a warning.
707 AC_MSG_CHECKING([if -pthread should be used])
708 threadsafe_flag=
709 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000710 dnl if test "x$MACOSX" != "xyes"; then
711 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000712 test "$GCC" = yes && threadsafe_flag="-pthread"
713 if test "`(uname) 2>/dev/null`" = FreeBSD; then
714 threadsafe_flag="-D_THREAD_SAFE"
715 thread_lib="-pthread"
716 fi
717 fi
718 libs_save_old=$LIBS
719 if test -n "$threadsafe_flag"; then
720 cflags_save=$CFLAGS
721 CFLAGS="$CFLAGS $threadsafe_flag"
722 LIBS="$LIBS $thread_lib"
723 AC_TRY_LINK(,[ ],
724 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
725 AC_MSG_RESULT(no); LIBS=$libs_save_old
726 )
727 CFLAGS=$cflags_save
728 else
729 AC_MSG_RESULT(no)
730 fi
731
732 dnl check that compiling a simple program still works with the flags
733 dnl added for Python.
734 AC_MSG_CHECKING([if compile and link flags for Python are sane])
735 cflags_save=$CFLAGS
736 libs_save=$LIBS
737 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
738 LIBS="$LIBS $PYTHON_LIBS"
739 AC_TRY_LINK(,[ ],
740 AC_MSG_RESULT(yes); python_ok=yes,
741 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
742 CFLAGS=$cflags_save
743 LIBS=$libs_save
744 if test $python_ok = yes; then
745 AC_DEFINE(FEAT_PYTHON)
746 else
747 LIBS=$libs_save_old
748 PYTHON_SRC=
749 PYTHON_OBJ=
750 PYTHON_LIBS=
751 PYTHON_CFLAGS=
752 fi
753
754 fi
755 else
756 AC_MSG_RESULT(too old)
757 fi
758 fi
759fi
760AC_SUBST(PYTHON_CONFDIR)
761AC_SUBST(PYTHON_LIBS)
762AC_SUBST(PYTHON_GETPATH_CFLAGS)
763AC_SUBST(PYTHON_CFLAGS)
764AC_SUBST(PYTHON_SRC)
765AC_SUBST(PYTHON_OBJ)
766
767AC_MSG_CHECKING(--enable-tclinterp argument)
768AC_ARG_ENABLE(tclinterp,
769 [ --enable-tclinterp Include Tcl interpreter.], ,
770 [enable_tclinterp="no"])
771AC_MSG_RESULT($enable_tclinterp)
772
773if test "$enable_tclinterp" = "yes"; then
774
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000775 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000776 AC_MSG_CHECKING(--with-tclsh argument)
777 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
778 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000779 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000780 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
781 AC_SUBST(vi_cv_path_tcl)
782
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000783 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
784 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
785 tclsh_name="tclsh8.4"
786 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
787 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000788 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000789 tclsh_name="tclsh8.2"
790 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
791 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000792 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
793 tclsh_name="tclsh8.0"
794 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
795 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000796 dnl still didn't find it, try without version number
797 if test "X$vi_cv_path_tcl" = "X"; then
798 tclsh_name="tclsh"
799 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
800 fi
801 if test "X$vi_cv_path_tcl" != "X"; then
802 AC_MSG_CHECKING(Tcl version)
803 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
804 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
805 AC_MSG_RESULT($tclver - OK);
806 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 -`
807
808 AC_MSG_CHECKING(for location of Tcl include)
809 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000810 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 +0000811 else
812 dnl For Mac OS X 10.3, use the OS-provided framework location
813 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
814 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000815 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000816 for try in $tclinc; do
817 if test -f "$try/tcl.h"; then
818 AC_MSG_RESULT($try/tcl.h)
819 TCL_INC=$try
820 break
821 fi
822 done
823 if test -z "$TCL_INC"; then
824 AC_MSG_RESULT(<not found>)
825 SKIP_TCL=YES
826 fi
827 if test -z "$SKIP_TCL"; then
828 AC_MSG_CHECKING(for location of tclConfig.sh script)
829 if test "x$MACOSX" != "xyes"; then
830 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000831 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000832 else
833 dnl For Mac OS X 10.3, use the OS-provided framework location
834 tclcnf="/System/Library/Frameworks/Tcl.framework"
835 fi
836 for try in $tclcnf; do
837 if test -f $try/tclConfig.sh; then
838 AC_MSG_RESULT($try/tclConfig.sh)
839 . $try/tclConfig.sh
840 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
841 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
842 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000843 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar9372a112005-12-06 19:59:18 +0000844 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000845 break
846 fi
847 done
848 if test -z "$TCL_LIBS"; then
849 AC_MSG_RESULT(<not found>)
850 AC_MSG_CHECKING(for Tcl library by myself)
851 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000852 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000853 for ext in .so .a ; do
854 for ver in "" $tclver ; do
855 for try in $tcllib ; do
856 trylib=tcl$ver$ext
857 if test -f $try/lib$trylib ; then
858 AC_MSG_RESULT($try/lib$trylib)
859 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
860 if test "`(uname) 2>/dev/null`" = SunOS &&
861 uname -r | grep '^5' >/dev/null; then
862 TCL_LIBS="$TCL_LIBS -R $try"
863 fi
864 break 3
865 fi
866 done
867 done
868 done
869 if test -z "$TCL_LIBS"; then
870 AC_MSG_RESULT(<not found>)
871 SKIP_TCL=YES
872 fi
873 fi
874 if test -z "$SKIP_TCL"; then
875 AC_DEFINE(FEAT_TCL)
876 TCL_SRC=if_tcl.c
877 TCL_OBJ=objects/if_tcl.o
878 TCL_PRO=if_tcl.pro
879 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
880 fi
881 fi
882 else
883 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
884 fi
885 fi
886fi
887AC_SUBST(TCL_SRC)
888AC_SUBST(TCL_OBJ)
889AC_SUBST(TCL_PRO)
890AC_SUBST(TCL_CFLAGS)
891AC_SUBST(TCL_LIBS)
892
893AC_MSG_CHECKING(--enable-rubyinterp argument)
894AC_ARG_ENABLE(rubyinterp,
895 [ --enable-rubyinterp Include Ruby interpreter.], ,
896 [enable_rubyinterp="no"])
897AC_MSG_RESULT($enable_rubyinterp)
898if test "$enable_rubyinterp" = "yes"; then
899 AC_SUBST(vi_cv_path_ruby)
900 AC_PATH_PROG(vi_cv_path_ruby, ruby)
901 if test "X$vi_cv_path_ruby" != "X"; then
902 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000903 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 +0000904 AC_MSG_RESULT(OK)
905 AC_MSG_CHECKING(Ruby header files)
906 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
907 if test "X$rubyhdrdir" != "X"; then
908 AC_MSG_RESULT($rubyhdrdir)
909 RUBY_CFLAGS="-I$rubyhdrdir"
910 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
911 if test "X$rubylibs" != "X"; then
912 RUBY_LIBS="$rubylibs"
913 fi
914 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
915 if test -f "$rubyhdrdir/$librubyarg"; then
916 librubyarg="$rubyhdrdir/$librubyarg"
917 else
918 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
919 if test -f "$rubylibdir/$librubyarg"; then
920 librubyarg="$rubylibdir/$librubyarg"
921 elif test "$librubyarg" = "libruby.a"; then
922 dnl required on Mac OS 10.3 where libruby.a doesn't exist
923 librubyarg="-lruby"
924 else
925 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
926 fi
927 fi
928
929 if test "X$librubyarg" != "X"; then
930 RUBY_LIBS="$librubyarg $RUBY_LIBS"
931 fi
932 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
933 if test "X$rubyldflags" != "X"; then
934 LDFLAGS="$rubyldflags $LDFLAGS"
935 fi
936 RUBY_SRC="if_ruby.c"
937 RUBY_OBJ="objects/if_ruby.o"
938 RUBY_PRO="if_ruby.pro"
939 AC_DEFINE(FEAT_RUBY)
940 else
941 AC_MSG_RESULT(not found, disabling Ruby)
942 fi
943 else
944 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
945 fi
946 fi
947fi
948AC_SUBST(RUBY_SRC)
949AC_SUBST(RUBY_OBJ)
950AC_SUBST(RUBY_PRO)
951AC_SUBST(RUBY_CFLAGS)
952AC_SUBST(RUBY_LIBS)
953
954AC_MSG_CHECKING(--enable-cscope argument)
955AC_ARG_ENABLE(cscope,
956 [ --enable-cscope Include cscope interface.], ,
957 [enable_cscope="no"])
958AC_MSG_RESULT($enable_cscope)
959if test "$enable_cscope" = "yes"; then
960 AC_DEFINE(FEAT_CSCOPE)
961fi
962
963AC_MSG_CHECKING(--enable-workshop argument)
964AC_ARG_ENABLE(workshop,
965 [ --enable-workshop Include Sun Visual Workshop support.], ,
966 [enable_workshop="no"])
967AC_MSG_RESULT($enable_workshop)
968if test "$enable_workshop" = "yes"; then
969 AC_DEFINE(FEAT_SUN_WORKSHOP)
970 WORKSHOP_SRC="workshop.c integration.c"
971 AC_SUBST(WORKSHOP_SRC)
972 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
973 AC_SUBST(WORKSHOP_OBJ)
974 if test "${enable_gui-xxx}" = xxx; then
975 enable_gui=motif
976 fi
977fi
978
979AC_MSG_CHECKING(--disable-netbeans argument)
980AC_ARG_ENABLE(netbeans,
981 [ --disable-netbeans Disable NetBeans integration support.],
982 , [enable_netbeans="yes"])
983if test "$enable_netbeans" = "yes"; then
984 AC_MSG_RESULT(no)
985 dnl On Solaris we need the socket and nsl library.
986 AC_CHECK_LIB(socket, socket)
987 AC_CHECK_LIB(nsl, gethostbyname)
988 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
989 AC_TRY_LINK([
990#include <stdio.h>
991#include <stdlib.h>
992#include <stdarg.h>
993#include <fcntl.h>
994#include <netdb.h>
995#include <netinet/in.h>
996#include <errno.h>
997#include <sys/types.h>
998#include <sys/socket.h>
999 /* Check bitfields */
1000 struct nbbuf {
1001 unsigned int initDone:1;
1002 ushort signmaplen;
1003 };
1004 ], [
1005 /* Check creating a socket. */
1006 struct sockaddr_in server;
1007 (void)socket(AF_INET, SOCK_STREAM, 0);
1008 (void)htons(100);
1009 (void)gethostbyname("microsoft.com");
1010 if (errno == ECONNREFUSED)
1011 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1012 ],
1013 AC_MSG_RESULT(yes),
1014 AC_MSG_RESULT(no); enable_netbeans="no")
1015else
1016 AC_MSG_RESULT(yes)
1017fi
1018if test "$enable_netbeans" = "yes"; then
1019 AC_DEFINE(FEAT_NETBEANS_INTG)
1020 NETBEANS_SRC="netbeans.c"
1021 AC_SUBST(NETBEANS_SRC)
1022 NETBEANS_OBJ="objects/netbeans.o"
1023 AC_SUBST(NETBEANS_OBJ)
1024fi
1025
1026AC_MSG_CHECKING(--enable-sniff argument)
1027AC_ARG_ENABLE(sniff,
1028 [ --enable-sniff Include Sniff interface.], ,
1029 [enable_sniff="no"])
1030AC_MSG_RESULT($enable_sniff)
1031if test "$enable_sniff" = "yes"; then
1032 AC_DEFINE(FEAT_SNIFF)
1033 SNIFF_SRC="if_sniff.c"
1034 AC_SUBST(SNIFF_SRC)
1035 SNIFF_OBJ="objects/if_sniff.o"
1036 AC_SUBST(SNIFF_OBJ)
1037fi
1038
1039AC_MSG_CHECKING(--enable-multibyte argument)
1040AC_ARG_ENABLE(multibyte,
1041 [ --enable-multibyte Include multibyte editing support.], ,
1042 [enable_multibyte="no"])
1043AC_MSG_RESULT($enable_multibyte)
1044if test "$enable_multibyte" = "yes"; then
1045 AC_DEFINE(FEAT_MBYTE)
1046fi
1047
1048AC_MSG_CHECKING(--enable-hangulinput argument)
1049AC_ARG_ENABLE(hangulinput,
1050 [ --enable-hangulinput Include Hangul input support.], ,
1051 [enable_hangulinput="no"])
1052AC_MSG_RESULT($enable_hangulinput)
1053
1054AC_MSG_CHECKING(--enable-xim argument)
1055AC_ARG_ENABLE(xim,
1056 [ --enable-xim Include XIM input support.],
1057 AC_MSG_RESULT($enable_xim),
1058 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1059dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1060
1061AC_MSG_CHECKING(--enable-fontset argument)
1062AC_ARG_ENABLE(fontset,
1063 [ --enable-fontset Include X fontset output support.], ,
1064 [enable_fontset="no"])
1065AC_MSG_RESULT($enable_fontset)
1066dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1067
1068test -z "$with_x" && with_x=yes
1069test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1070if test "$with_x" = no; then
1071 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1072else
1073 dnl Do this check early, so that its failure can override user requests.
1074
1075 AC_PATH_PROG(xmkmfpath, xmkmf)
1076
1077 AC_PATH_XTRA
1078
1079 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1080 dnl be compiled with a special option.
1081 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1082 if test "$OS390Unix" = "yes"; then
1083 CFLAGS="$CFLAGS -W c,dll"
1084 LDFLAGS="$LDFLAGS -W l,dll"
1085 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1086 fi
1087
1088 dnl On my HPUX system the X include dir is found, but the lib dir not.
1089 dnl This is a desparate try to fix this.
1090
1091 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1092 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1093 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1094 X_LIBS="$X_LIBS -L$x_libraries"
1095 if test "`(uname) 2>/dev/null`" = SunOS &&
1096 uname -r | grep '^5' >/dev/null; then
1097 X_LIBS="$X_LIBS -R $x_libraries"
1098 fi
1099 fi
1100
1101 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1102 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1103 AC_MSG_RESULT(Corrected X includes to $x_includes)
1104 X_CFLAGS="$X_CFLAGS -I$x_includes"
1105 fi
1106
1107 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1108 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1109 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1110 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1111 dnl Same for "-R/usr/lib ".
1112 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1113
1114
1115 dnl Check if the X11 header files are correctly installed. On some systems
1116 dnl Xlib.h includes files that don't exist
1117 AC_MSG_CHECKING(if X11 header files can be found)
1118 cflags_save=$CFLAGS
1119 CFLAGS="$CFLAGS $X_CFLAGS"
1120 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1121 AC_MSG_RESULT(yes),
1122 AC_MSG_RESULT(no); no_x=yes)
1123 CFLAGS=$cflags_save
1124
1125 if test "${no_x-no}" = yes; then
1126 with_x=no
1127 else
1128 AC_DEFINE(HAVE_X11)
1129 X_LIB="-lXt -lX11";
1130 AC_SUBST(X_LIB)
1131
1132 ac_save_LDFLAGS="$LDFLAGS"
1133 LDFLAGS="-L$x_libraries $LDFLAGS"
1134
1135 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1136 dnl For HP-UX 10.20 it must be before -lSM -lICE
1137 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1138 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1139
1140 dnl Some systems need -lnsl -lsocket when testing for ICE.
1141 dnl The check above doesn't do this, try here (again). Also needed to get
1142 dnl them after Xdmcp. link.sh will remove them when not needed.
1143 dnl Check for other function than above to avoid the cached value
1144 AC_CHECK_LIB(ICE, IceOpenConnection,
1145 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1146
1147 dnl Check for -lXpm (needed for some versions of Motif)
1148 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1149 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1150 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1151
1152 dnl Check that the X11 header files don't use implicit declarations
1153 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1154 cflags_save=$CFLAGS
1155 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1156 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1157 AC_MSG_RESULT(no),
1158 CFLAGS="$CFLAGS -Wno-implicit-int"
1159 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1160 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1161 AC_MSG_RESULT(test failed)
1162 )
1163 )
1164 CFLAGS=$cflags_save
1165
1166 LDFLAGS="$ac_save_LDFLAGS"
1167
1168 fi
1169fi
1170
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001171test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001172
1173AC_MSG_CHECKING(--enable-gui argument)
1174AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001175 [ --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 +00001176
1177dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1178dnl Do not use character classes for portability with old tools.
1179enable_gui_canon=`echo "_$enable_gui" | \
1180 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1181
1182dnl Skip everything by default.
1183SKIP_GTK=YES
1184SKIP_GTK2=YES
1185SKIP_GNOME=YES
1186SKIP_MOTIF=YES
1187SKIP_ATHENA=YES
1188SKIP_NEXTAW=YES
1189SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001190SKIP_CARBON=YES
1191GUITYPE=NONE
1192
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001193if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001194 SKIP_PHOTON=
1195 case "$enable_gui_canon" in
1196 no) AC_MSG_RESULT(no GUI support)
1197 SKIP_PHOTON=YES ;;
1198 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1199 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1200 photon) AC_MSG_RESULT(Photon GUI support) ;;
1201 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1202 SKIP_PHOTON=YES ;;
1203 esac
1204
1205elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1206 SKIP_CARBON=
1207 case "$enable_gui_canon" in
1208 no) AC_MSG_RESULT(no GUI support)
1209 SKIP_CARBON=YES ;;
1210 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1211 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1212 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1213 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1214 SKIP_CARBON=YES ;;
1215 esac
1216
1217else
1218
Bram Moolenaar071d4272004-06-13 20:20:40 +00001219 case "$enable_gui_canon" in
1220 no|none) AC_MSG_RESULT(no GUI support) ;;
1221 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1222 SKIP_GTK=
1223 SKIP_GTK2=
1224 SKIP_GNOME=
1225 SKIP_MOTIF=
1226 SKIP_ATHENA=
1227 SKIP_NEXTAW=
1228 SKIP_CARBON=;;
1229 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1230 SKIP_GTK=;;
1231 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1232 SKIP_GTK=
1233 SKIP_GTK2=;;
1234 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1235 SKIP_GNOME=
1236 SKIP_GTK=;;
1237 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1238 SKIP_GNOME=
1239 SKIP_GTK=
1240 SKIP_GTK2=;;
1241 motif) AC_MSG_RESULT(Motif GUI support)
1242 SKIP_MOTIF=;;
1243 athena) AC_MSG_RESULT(Athena GUI support)
1244 SKIP_ATHENA=;;
1245 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1246 SKIP_NEXTAW=;;
1247 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1248 esac
1249
1250fi
1251
1252if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1253 AC_MSG_CHECKING(whether or not to look for GTK)
1254 AC_ARG_ENABLE(gtk-check,
1255 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1256 , enable_gtk_check="yes")
1257 AC_MSG_RESULT($enable_gtk_check)
1258 if test "x$enable_gtk_check" = "xno"; then
1259 SKIP_GTK=YES
1260 SKIP_GNOME=YES
1261 fi
1262fi
1263
1264if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1265 -a "$enable_gui_canon" != "gnome2"; then
1266 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1267 AC_ARG_ENABLE(gtk2-check,
1268 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1269 , enable_gtk2_check="yes")
1270 AC_MSG_RESULT($enable_gtk2_check)
1271 if test "x$enable_gtk2_check" = "xno"; then
1272 SKIP_GTK2=YES
1273 fi
1274fi
1275
1276if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1277 -a "$enable_gui_canon" != "gnome2"; then
1278 AC_MSG_CHECKING(whether or not to look for GNOME)
1279 AC_ARG_ENABLE(gnome-check,
1280 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1281 , enable_gnome_check="no")
1282 AC_MSG_RESULT($enable_gnome_check)
1283 if test "x$enable_gnome_check" = "xno"; then
1284 SKIP_GNOME=YES
1285 fi
1286fi
1287
1288if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1289 AC_MSG_CHECKING(whether or not to look for Motif)
1290 AC_ARG_ENABLE(motif-check,
1291 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1292 , enable_motif_check="yes")
1293 AC_MSG_RESULT($enable_motif_check)
1294 if test "x$enable_motif_check" = "xno"; then
1295 SKIP_MOTIF=YES
1296 fi
1297fi
1298
1299if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1300 AC_MSG_CHECKING(whether or not to look for Athena)
1301 AC_ARG_ENABLE(athena-check,
1302 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1303 , enable_athena_check="yes")
1304 AC_MSG_RESULT($enable_athena_check)
1305 if test "x$enable_athena_check" = "xno"; then
1306 SKIP_ATHENA=YES
1307 fi
1308fi
1309
1310if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1311 AC_MSG_CHECKING(whether or not to look for neXtaw)
1312 AC_ARG_ENABLE(nextaw-check,
1313 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1314 , enable_nextaw_check="yes")
1315 AC_MSG_RESULT($enable_nextaw_check);
1316 if test "x$enable_nextaw_check" = "xno"; then
1317 SKIP_NEXTAW=YES
1318 fi
1319fi
1320
1321if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1322 AC_MSG_CHECKING(whether or not to look for Carbon)
1323 AC_ARG_ENABLE(carbon-check,
1324 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1325 , enable_carbon_check="yes")
1326 AC_MSG_RESULT($enable_carbon_check);
1327 if test "x$enable_carbon_check" = "xno"; then
1328 SKIP_CARBON=YES
1329 fi
1330fi
1331
Bram Moolenaar843ee412004-06-30 16:16:41 +00001332
Bram Moolenaar071d4272004-06-13 20:20:40 +00001333if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1334 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001335 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001336 AC_MSG_RESULT(yes);
1337 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001338 if test "$VIMNAME" = "vim"; then
1339 VIMNAME=Vim
1340 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001341
1342 dnl Default install directory is not /usr/local
1343 if test x$prefix = xNONE; then
1344 prefix=/Applications
1345 fi
1346
1347 dnl Sorry for the hard coded default
1348 datadir='${prefix}/Vim.app/Contents/Resources'
1349
Bram Moolenaar071d4272004-06-13 20:20:40 +00001350 dnl skip everything else
1351 SKIP_GTK=YES;
1352 SKIP_GTK2=YES;
1353 SKIP_GNOME=YES;
1354 SKIP_MOTIF=YES;
1355 SKIP_ATHENA=YES;
1356 SKIP_NEXTAW=YES;
1357 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001358 SKIP_CARBON=YES
1359fi
1360
Bram Moolenaar071d4272004-06-13 20:20:40 +00001361dnl
1362dnl Get the cflags and libraries from the gtk-config script
1363dnl
1364
1365dnl define an autoconf function to check for a specified version of GTK, and
1366dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1367dnl
1368dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001369dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001370dnl
1371AC_DEFUN(AM_PATH_GTK,
1372[
1373 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1374 {
1375 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1376 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1377 no_gtk=""
1378 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1379 && $PKG_CONFIG --exists gtk+-2.0; then
1380 {
1381 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1382 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1383 dnl something like that.
1384 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001385 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1387 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1388 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1389 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1390 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1391 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1392 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1393 }
1394 elif test "X$GTK_CONFIG" != "Xno"; then
1395 {
1396 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001397 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001398 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1399 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1400 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1401 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1402 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1403 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1404 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1405 }
1406 else
1407 no_gtk=yes
1408 fi
1409
1410 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1411 {
1412 ac_save_CFLAGS="$CFLAGS"
1413 ac_save_LIBS="$LIBS"
1414 CFLAGS="$CFLAGS $GTK_CFLAGS"
1415 LIBS="$LIBS $GTK_LIBS"
1416
1417 dnl
1418 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1419 dnl checks the results of gtk-config to some extent
1420 dnl
1421 rm -f conf.gtktest
1422 AC_TRY_RUN([
1423#include <gtk/gtk.h>
1424#include <stdio.h>
1425
1426int
1427main ()
1428{
1429int major, minor, micro;
1430char *tmp_version;
1431
1432system ("touch conf.gtktest");
1433
1434/* HP/UX 9 (%@#!) writes to sscanf strings */
1435tmp_version = g_strdup("$min_gtk_version");
1436if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1437 printf("%s, bad version string\n", "$min_gtk_version");
1438 exit(1);
1439 }
1440
1441if ((gtk_major_version > major) ||
1442 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1443 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1444 (gtk_micro_version >= micro)))
1445{
1446 return 0;
1447}
1448return 1;
1449}
1450],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1451 CFLAGS="$ac_save_CFLAGS"
1452 LIBS="$ac_save_LIBS"
1453 }
1454 fi
1455 if test "x$no_gtk" = x ; then
1456 if test "x$enable_gtktest" = "xyes"; then
1457 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1458 else
1459 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1460 fi
1461 ifelse([$2], , :, [$2])
1462 else
1463 {
1464 AC_MSG_RESULT(no)
1465 GTK_CFLAGS=""
1466 GTK_LIBS=""
1467 ifelse([$3], , :, [$3])
1468 }
1469 fi
1470 }
1471 else
1472 GTK_CFLAGS=""
1473 GTK_LIBS=""
1474 ifelse([$3], , :, [$3])
1475 fi
1476 AC_SUBST(GTK_CFLAGS)
1477 AC_SUBST(GTK_LIBS)
1478 rm -f conf.gtktest
1479])
1480
1481dnl ---------------------------------------------------------------------------
1482dnl gnome
1483dnl ---------------------------------------------------------------------------
1484AC_DEFUN([GNOME_INIT_HOOK],
1485[
1486 AC_SUBST(GNOME_LIBS)
1487 AC_SUBST(GNOME_LIBDIR)
1488 AC_SUBST(GNOME_INCLUDEDIR)
1489
1490 AC_ARG_WITH(gnome-includes,
1491 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1492 [CFLAGS="$CFLAGS -I$withval"]
1493 )
1494
1495 AC_ARG_WITH(gnome-libs,
1496 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1497 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1498 )
1499
1500 AC_ARG_WITH(gnome,
1501 [ --with-gnome Specify prefix for GNOME files],
1502 if test x$withval = xyes; then
1503 want_gnome=yes
1504 ifelse([$1], [], :, [$1])
1505 else
1506 if test "x$withval" = xno; then
1507 want_gnome=no
1508 else
1509 want_gnome=yes
1510 LDFLAGS="$LDFLAGS -L$withval/lib"
1511 CFLAGS="$CFLAGS -I$withval/include"
1512 gnome_prefix=$withval/lib
1513 fi
1514 fi,
1515 want_gnome=yes)
1516
1517 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1518 {
1519 AC_MSG_CHECKING(for libgnomeui-2.0)
1520 if $PKG_CONFIG --exists libgnomeui-2.0; then
1521 AC_MSG_RESULT(yes)
1522 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1523 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1524 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001525
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001526 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1527 dnl This might not be the right way but it works for me...
1528 AC_MSG_CHECKING(for FreeBSD)
1529 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1530 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001531 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001532 GNOME_LIBS="$GNOME_LIBS -pthread"
1533 else
1534 AC_MSG_RESULT(no)
1535 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001536 $1
1537 else
1538 AC_MSG_RESULT(not found)
1539 if test "x$2" = xfail; then
1540 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1541 fi
1542 fi
1543 }
1544 elif test "x$want_gnome" = xyes; then
1545 {
1546 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1547 if test "$GNOME_CONFIG" = "no"; then
1548 no_gnome_config="yes"
1549 else
1550 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1551 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1552 AC_MSG_RESULT(yes)
1553 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1554 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1555 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1556 $1
1557 else
1558 AC_MSG_RESULT(no)
1559 no_gnome_config="yes"
1560 fi
1561 fi
1562
1563 if test x$exec_prefix = xNONE; then
1564 if test x$prefix = xNONE; then
1565 gnome_prefix=$ac_default_prefix/lib
1566 else
1567 gnome_prefix=$prefix/lib
1568 fi
1569 else
1570 gnome_prefix=`eval echo \`echo $libdir\``
1571 fi
1572
1573 if test "$no_gnome_config" = "yes"; then
1574 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1575 if test -f $gnome_prefix/gnomeConf.sh; then
1576 AC_MSG_RESULT(found)
1577 echo "loading gnome configuration from" \
1578 "$gnome_prefix/gnomeConf.sh"
1579 . $gnome_prefix/gnomeConf.sh
1580 $1
1581 else
1582 AC_MSG_RESULT(not found)
1583 if test x$2 = xfail; then
1584 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1585 fi
1586 fi
1587 fi
1588 }
1589 fi
1590])
1591
1592AC_DEFUN([GNOME_INIT],[
1593 GNOME_INIT_HOOK([],fail)
1594])
1595
1596
1597dnl ---------------------------------------------------------------------------
1598dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1599dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1600dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1601dnl ---------------------------------------------------------------------------
1602if test -z "$SKIP_GTK"; then
1603
1604 AC_MSG_CHECKING(--with-gtk-prefix argument)
1605 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1606 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1607 gtk_config_prefix=""; AC_MSG_RESULT(no))
1608
1609 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1610 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1611 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1612 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1613
1614 AC_MSG_CHECKING(--disable-gtktest argument)
1615 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1616 , enable_gtktest=yes)
1617 if test "x$enable_gtktest" = "xyes" ; then
1618 AC_MSG_RESULT(gtk test enabled)
1619 else
1620 AC_MSG_RESULT(gtk test disabled)
1621 fi
1622
1623 if test "x$gtk_config_prefix" != "x" ; then
1624 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1625 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1626 fi
1627 if test "x$gtk_config_exec_prefix" != "x" ; then
1628 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1629 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1630 fi
1631 if test "X$GTK_CONFIG" = "X"; then
1632 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1633 if test "X$GTK_CONFIG" = "Xno"; then
1634 dnl Some distributions call it gtk12-config, annoying!
1635 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1636 GTK_CONFIG="$GTK12_CONFIG"
1637 fi
1638 else
1639 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1640 fi
1641 if test "X$PKG_CONFIG" = "X"; then
1642 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1643 fi
1644
1645 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1646 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1647 dnl problems (bold fonts, --remote doesn't work).
1648 if test "X$SKIP_GTK2" != "XYES"; then
1649 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001650 [GUI_LIB_LOC="$GTK_LIBDIR"
1651 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001652 GUI_INC_LOC="$GTK_CFLAGS"], )
1653 if test "x$GTK_CFLAGS" != "x"; then
1654 SKIP_ATHENA=YES
1655 SKIP_NEXTAW=YES
1656 SKIP_MOTIF=YES
1657 GUITYPE=GTK
1658 AC_SUBST(GTK_LIBNAME)
1659 fi
1660 fi
1661
1662 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1663 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1664 dnl were test versions.
1665 if test "x$GUITYPE" != "xGTK"; then
1666 SKIP_GTK2=YES
1667 AM_PATH_GTK(1.1.16,
1668 [GTK_LIBNAME="$GTK_LIBS"
1669 GUI_INC_LOC="$GTK_CFLAGS"], )
1670 if test "x$GTK_CFLAGS" != "x"; then
1671 SKIP_ATHENA=YES
1672 SKIP_NEXTAW=YES
1673 SKIP_MOTIF=YES
1674 GUITYPE=GTK
1675 AC_SUBST(GTK_LIBNAME)
1676 fi
1677 fi
1678 fi
1679 dnl Give a warning if GTK is older than 1.2.3
1680 if test "x$GUITYPE" = "xGTK"; then
1681 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1682 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1683 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1684 else
1685 {
1686 if test "0$gtk_major_version" -ge 2; then
1687 AC_DEFINE(HAVE_GTK2)
1688 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1689 || test "0$gtk_minor_version" -ge 2 \
1690 || test "0$gtk_major_version" -gt 2; then
1691 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1692 fi
1693 fi
1694 dnl
1695 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1696 dnl
1697 if test -z "$SKIP_GNOME"; then
1698 {
1699 GNOME_INIT_HOOK([have_gnome=yes])
1700 if test x$have_gnome = xyes ; then
1701 AC_DEFINE(FEAT_GUI_GNOME)
1702 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1703 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1704 fi
1705 }
1706 fi
1707 }
1708 fi
1709 fi
1710fi
1711
1712dnl Check for Motif include files location.
1713dnl The LAST one found is used, this makes the highest version to be used,
1714dnl e.g. when Motif1.2 and Motif2.0 are both present.
1715
1716if test -z "$SKIP_MOTIF"; then
1717 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"
1718 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1719 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1720
1721 AC_MSG_CHECKING(for location of Motif GUI includes)
1722 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1723 GUI_INC_LOC=
1724 for try in $gui_includes; do
1725 if test -f "$try/Xm/Xm.h"; then
1726 GUI_INC_LOC=$try
1727 fi
1728 done
1729 if test -n "$GUI_INC_LOC"; then
1730 if test "$GUI_INC_LOC" = /usr/include; then
1731 GUI_INC_LOC=
1732 AC_MSG_RESULT(in default path)
1733 else
1734 AC_MSG_RESULT($GUI_INC_LOC)
1735 fi
1736 else
1737 AC_MSG_RESULT(<not found>)
1738 SKIP_MOTIF=YES
1739 fi
1740fi
1741
1742dnl Check for Motif library files location. In the same order as the include
1743dnl files, to avoid a mixup if several versions are present
1744
1745if test -z "$SKIP_MOTIF"; then
1746 AC_MSG_CHECKING(--with-motif-lib argument)
1747 AC_ARG_WITH(motif-lib,
1748 [ --with-motif-lib=STRING Library for Motif ],
1749 [ MOTIF_LIBNAME="${withval}" ] )
1750
1751 if test -n "$MOTIF_LIBNAME"; then
1752 AC_MSG_RESULT($MOTIF_LIBNAME)
1753 GUI_LIB_LOC=
1754 else
1755 AC_MSG_RESULT(no)
1756
1757 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1758 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1759
1760 AC_MSG_CHECKING(for location of Motif GUI libs)
1761 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"
1762 GUI_LIB_LOC=
1763 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001764 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 if test -f "$libtry"; then
1766 GUI_LIB_LOC=$try
1767 fi
1768 done
1769 done
1770 if test -n "$GUI_LIB_LOC"; then
1771 dnl Remove /usr/lib, it causes trouble on some systems
1772 if test "$GUI_LIB_LOC" = /usr/lib; then
1773 GUI_LIB_LOC=
1774 AC_MSG_RESULT(in default path)
1775 else
1776 if test -n "$GUI_LIB_LOC"; then
1777 AC_MSG_RESULT($GUI_LIB_LOC)
1778 if test "`(uname) 2>/dev/null`" = SunOS &&
1779 uname -r | grep '^5' >/dev/null; then
1780 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1781 fi
1782 fi
1783 fi
1784 MOTIF_LIBNAME=-lXm
1785 else
1786 AC_MSG_RESULT(<not found>)
1787 SKIP_MOTIF=YES
1788 fi
1789 fi
1790fi
1791
1792if test -z "$SKIP_MOTIF"; then
1793 SKIP_ATHENA=YES
1794 SKIP_NEXTAW=YES
1795 GUITYPE=MOTIF
1796 AC_SUBST(MOTIF_LIBNAME)
1797fi
1798
1799dnl Check if the Athena files can be found
1800
1801GUI_X_LIBS=
1802
1803if test -z "$SKIP_ATHENA"; then
1804 AC_MSG_CHECKING(if Athena header files can be found)
1805 cflags_save=$CFLAGS
1806 CFLAGS="$CFLAGS $X_CFLAGS"
1807 AC_TRY_COMPILE([
1808#include <X11/Intrinsic.h>
1809#include <X11/Xaw/Paned.h>], ,
1810 AC_MSG_RESULT(yes),
1811 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1812 CFLAGS=$cflags_save
1813fi
1814
1815if test -z "$SKIP_ATHENA"; then
1816 GUITYPE=ATHENA
1817fi
1818
1819if test -z "$SKIP_NEXTAW"; then
1820 AC_MSG_CHECKING(if neXtaw header files can be found)
1821 cflags_save=$CFLAGS
1822 CFLAGS="$CFLAGS $X_CFLAGS"
1823 AC_TRY_COMPILE([
1824#include <X11/Intrinsic.h>
1825#include <X11/neXtaw/Paned.h>], ,
1826 AC_MSG_RESULT(yes),
1827 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1828 CFLAGS=$cflags_save
1829fi
1830
1831if test -z "$SKIP_NEXTAW"; then
1832 GUITYPE=NEXTAW
1833fi
1834
1835if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1836 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1837 dnl Avoid adding it when it twice
1838 if test -n "$GUI_INC_LOC"; then
1839 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1840 fi
1841 if test -n "$GUI_LIB_LOC"; then
1842 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1843 fi
1844
1845 dnl Check for -lXext and then for -lXmu
1846 ldflags_save=$LDFLAGS
1847 LDFLAGS="$X_LIBS $LDFLAGS"
1848 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1849 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1850 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1851 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1852 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1853 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1854 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1855 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1856 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1857 if test -z "$SKIP_MOTIF"; then
1858 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1859 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1860 fi
1861 LDFLAGS=$ldflags_save
1862
1863 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1864 AC_MSG_CHECKING(for extra X11 defines)
1865 NARROW_PROTO=
1866 rm -fr conftestdir
1867 if mkdir conftestdir; then
1868 cd conftestdir
1869 cat > Imakefile <<'EOF'
1870acfindx:
1871 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1872EOF
1873 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1874 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1875 fi
1876 cd ..
1877 rm -fr conftestdir
1878 fi
1879 if test -z "$NARROW_PROTO"; then
1880 AC_MSG_RESULT(no)
1881 else
1882 AC_MSG_RESULT($NARROW_PROTO)
1883 fi
1884 AC_SUBST(NARROW_PROTO)
1885fi
1886
1887dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1888dnl use the X11 include path
1889if test "$enable_xsmp" = "yes"; then
1890 cppflags_save=$CPPFLAGS
1891 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1892 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1893 CPPFLAGS=$cppflags_save
1894fi
1895
1896
1897if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1898 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1899 cppflags_save=$CPPFLAGS
1900 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1901 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1902
1903 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1904 if test ! "$enable_xim" = "no"; then
1905 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1906 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1907 AC_MSG_RESULT(yes),
1908 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1909 fi
1910 CPPFLAGS=$cppflags_save
1911
1912 dnl automatically enable XIM when hangul input isn't enabled
1913 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1914 -a "x$GUITYPE" != "xNONE" ; then
1915 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1916 enable_xim="yes"
1917 fi
1918fi
1919
1920if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1921 cppflags_save=$CPPFLAGS
1922 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00001923dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1924 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1925 AC_TRY_COMPILE([
1926#include <X11/Intrinsic.h>
1927#include <X11/Xmu/Editres.h>],
1928 [int i; i = 0;],
1929 AC_MSG_RESULT(yes)
1930 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1931 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001932 CPPFLAGS=$cppflags_save
1933fi
1934
1935dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1936if test -z "$SKIP_MOTIF"; then
1937 cppflags_save=$CPPFLAGS
1938 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00001939 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 +00001940 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00001941
1942 if test $ac_cv_header_Xm_XpmP_h = yes; then
1943 dnl Solaris uses XpmAttributes_21, very annoying.
1944 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1945 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1946 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1947 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1948 )
1949 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00001950 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00001951 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001952 CPPFLAGS=$cppflags_save
1953fi
1954
1955if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1956 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1957 enable_xim="no"
1958fi
1959if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1960 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1961 enable_fontset="no"
1962fi
1963if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1964 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1965 enable_fontset="no"
1966fi
1967
Bram Moolenaar071d4272004-06-13 20:20:40 +00001968if test -z "$SKIP_PHOTON"; then
1969 GUITYPE=PHOTONGUI
1970fi
1971
1972AC_SUBST(GUI_INC_LOC)
1973AC_SUBST(GUI_LIB_LOC)
1974AC_SUBST(GUITYPE)
1975AC_SUBST(GUI_X_LIBS)
1976
1977if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1978 AC_MSG_ERROR([cannot use workshop without Motif])
1979fi
1980
1981dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1982if test "$enable_xim" = "yes"; then
1983 AC_DEFINE(FEAT_XIM)
1984fi
1985if test "$enable_fontset" = "yes"; then
1986 AC_DEFINE(FEAT_XFONTSET)
1987fi
1988
1989
1990dnl ---------------------------------------------------------------------------
1991dnl end of GUI-checking
1992dnl ---------------------------------------------------------------------------
1993
1994
1995dnl Only really enable hangul input when GUI and XFONTSET are available
1996if test "$enable_hangulinput" = "yes"; then
1997 if test "x$GUITYPE" = "xNONE"; then
1998 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
1999 enable_hangulinput=no
2000 else
2001 AC_DEFINE(FEAT_HANGULIN)
2002 HANGULIN_SRC=hangulin.c
2003 AC_SUBST(HANGULIN_SRC)
2004 HANGULIN_OBJ=objects/hangulin.o
2005 AC_SUBST(HANGULIN_OBJ)
2006 fi
2007fi
2008
2009dnl Checks for libraries and include files.
2010
2011AC_MSG_CHECKING(quality of toupper)
2012AC_TRY_RUN([#include <ctype.h>
2013main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2014 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2015 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2016
2017AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2018AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2019 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2020 AC_MSG_RESULT(no))
2021
2022dnl Checks for header files.
2023AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2024dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2025if test "$HAS_ELF" = 1; then
2026 AC_CHECK_LIB(elf, main)
2027fi
2028
2029AC_HEADER_DIRENT
2030
2031dnl check for standard headers, we don't use this in Vim but other stuff
2032dnl in autoconf needs it
2033AC_HEADER_STDC
2034AC_HEADER_SYS_WAIT
2035
2036dnl If sys/wait.h is not found it might still exist but not be POSIX
2037dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2038if test $ac_cv_header_sys_wait_h = no; then
2039 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2040 AC_TRY_COMPILE([#include <sys/wait.h>],
2041 [union wait xx, yy; xx = yy],
2042 AC_MSG_RESULT(yes)
2043 AC_DEFINE(HAVE_SYS_WAIT_H)
2044 AC_DEFINE(HAVE_UNION_WAIT),
2045 AC_MSG_RESULT(no))
2046fi
2047
2048AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
Bram Moolenaare74455a2007-11-04 14:36:18 +00002049 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002050 iconv.h langinfo.h unistd.h stropts.h errno.h \
2051 sys/resource.h sys/systeminfo.h locale.h \
2052 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2053 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002054 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002055 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002057dnl pthread_np.h may exist but can only be used after including pthread.h
2058AC_MSG_CHECKING([for pthread_np.h])
2059AC_TRY_COMPILE([
2060#include <pthread.h>
2061#include <pthread_np.h>],
2062 [int i; i = 0;],
2063 AC_MSG_RESULT(yes)
2064 AC_DEFINE(HAVE_PTHREAD_NP_H),
2065 AC_MSG_RESULT(no))
2066
Bram Moolenaare344bea2005-09-01 20:46:49 +00002067AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002068if test "x$MACOSX" = "xyes"; then
2069 dnl The strings.h file on OS/X contains a warning and nothing useful.
2070 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2071else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002072
2073dnl Check if strings.h and string.h can both be included when defined.
2074AC_MSG_CHECKING([if strings.h can be included after string.h])
2075cppflags_save=$CPPFLAGS
2076CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2077AC_TRY_COMPILE([
2078#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2079# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2080 /* but don't do it on AIX 5.1 (Uribarri) */
2081#endif
2082#ifdef HAVE_XM_XM_H
2083# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2084#endif
2085#ifdef HAVE_STRING_H
2086# include <string.h>
2087#endif
2088#if defined(HAVE_STRINGS_H)
2089# include <strings.h>
2090#endif
2091 ], [int i; i = 0;],
2092 AC_MSG_RESULT(yes),
2093 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2094 AC_MSG_RESULT(no))
2095CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002096fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097
2098dnl Checks for typedefs, structures, and compiler characteristics.
2099AC_PROG_GCC_TRADITIONAL
2100AC_C_CONST
2101AC_TYPE_MODE_T
2102AC_TYPE_OFF_T
2103AC_TYPE_PID_T
2104AC_TYPE_SIZE_T
2105AC_TYPE_UID_T
2106AC_HEADER_TIME
2107AC_CHECK_TYPE(ino_t, long)
2108AC_CHECK_TYPE(dev_t, unsigned)
2109
2110AC_MSG_CHECKING(for rlim_t)
2111if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2112 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2113else
2114 AC_EGREP_CPP(dnl
2115changequote(<<,>>)dnl
2116<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2117changequote([,]),
2118 [
2119#include <sys/types.h>
2120#if STDC_HEADERS
2121#include <stdlib.h>
2122#include <stddef.h>
2123#endif
2124#ifdef HAVE_SYS_RESOURCE_H
2125#include <sys/resource.h>
2126#endif
2127 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2128 AC_MSG_RESULT($ac_cv_type_rlim_t)
2129fi
2130if test $ac_cv_type_rlim_t = no; then
2131 cat >> confdefs.h <<\EOF
2132#define rlim_t unsigned long
2133EOF
2134fi
2135
2136AC_MSG_CHECKING(for stack_t)
2137if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2138 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2139else
2140 AC_EGREP_CPP(stack_t,
2141 [
2142#include <sys/types.h>
2143#if STDC_HEADERS
2144#include <stdlib.h>
2145#include <stddef.h>
2146#endif
2147#include <signal.h>
2148 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2149 AC_MSG_RESULT($ac_cv_type_stack_t)
2150fi
2151if test $ac_cv_type_stack_t = no; then
2152 cat >> confdefs.h <<\EOF
2153#define stack_t struct sigaltstack
2154EOF
2155fi
2156
2157dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2158AC_MSG_CHECKING(whether stack_t has an ss_base field)
2159AC_TRY_COMPILE([
2160#include <sys/types.h>
2161#if STDC_HEADERS
2162#include <stdlib.h>
2163#include <stddef.h>
2164#endif
2165#include <signal.h>
2166#include "confdefs.h"
2167 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2168 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2169 AC_MSG_RESULT(no))
2170
2171olibs="$LIBS"
2172AC_MSG_CHECKING(--with-tlib argument)
2173AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2174if test -n "$with_tlib"; then
2175 AC_MSG_RESULT($with_tlib)
2176 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002177 AC_MSG_CHECKING(for linking with $with_tlib library)
2178 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2179 dnl Need to check for tgetent() below.
2180 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002182 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002183 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2184 dnl curses, because curses is much slower.
2185 dnl Newer versions of ncurses are preferred over anything.
2186 dnl Older versions of ncurses have bugs, get a new one!
2187 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002188 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002189 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002190 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002191 *) tlibs="ncurses termlib termcap curses";;
2192 esac
2193 for libname in $tlibs; do
2194 AC_CHECK_LIB(${libname}, tgetent,,)
2195 if test "x$olibs" != "x$LIBS"; then
2196 dnl It's possible that a library is found but it doesn't work
2197 dnl e.g., shared library that cannot be found
2198 dnl compile and run a test program to be sure
2199 AC_TRY_RUN([
2200#ifdef HAVE_TERMCAP_H
2201# include <termcap.h>
2202#endif
2203main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2204 res="OK", res="FAIL", res="FAIL")
2205 if test "$res" = "OK"; then
2206 break
2207 fi
2208 AC_MSG_RESULT($libname library is not usable)
2209 LIBS="$olibs"
2210 fi
2211 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002212 if test "x$olibs" = "x$LIBS"; then
2213 AC_MSG_RESULT(no terminal library found)
2214 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002215fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002216
2217if test "x$olibs" = "x$LIBS"; then
2218 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002219 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002220 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2221 AC_MSG_RESULT(yes),
2222 AC_MSG_ERROR([NOT FOUND!
2223 You need to install a terminal library; for example ncurses.
2224 Or specify the name of the library with --with-tlib.]))
2225fi
2226
2227AC_MSG_CHECKING(whether we talk terminfo)
2228AC_TRY_RUN([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002229#ifdef HAVE_TERMCAP_H
2230# include <termcap.h>
2231#endif
2232main()
2233{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2234 AC_MSG_RESULT([no -- we are in termcap land]),
2235 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2236 AC_MSG_ERROR(failed to compile test program.))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002237
2238if test "x$olibs" != "x$LIBS"; then
2239 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2240 AC_TRY_RUN([
2241#ifdef HAVE_TERMCAP_H
2242# include <termcap.h>
2243#endif
2244main()
2245{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2246 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2247 AC_MSG_RESULT(non-zero),
2248 AC_MSG_ERROR(failed to compile test program.))
2249fi
2250
2251AC_MSG_CHECKING(whether termcap.h contains ospeed)
2252AC_TRY_LINK([
2253#ifdef HAVE_TERMCAP_H
2254# include <termcap.h>
2255#endif
2256 ], [ospeed = 20000],
2257 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2258 [AC_MSG_RESULT(no)
2259 AC_MSG_CHECKING(whether ospeed can be extern)
2260 AC_TRY_LINK([
2261#ifdef HAVE_TERMCAP_H
2262# include <termcap.h>
2263#endif
2264extern short ospeed;
2265 ], [ospeed = 20000],
2266 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2267 AC_MSG_RESULT(no))]
2268 )
2269
2270AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2271AC_TRY_LINK([
2272#ifdef HAVE_TERMCAP_H
2273# include <termcap.h>
2274#endif
2275 ], [if (UP == 0 && BC == 0) PC = 1],
2276 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2277 [AC_MSG_RESULT(no)
2278 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2279 AC_TRY_LINK([
2280#ifdef HAVE_TERMCAP_H
2281# include <termcap.h>
2282#endif
2283extern char *UP, *BC, PC;
2284 ], [if (UP == 0 && BC == 0) PC = 1],
2285 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2286 AC_MSG_RESULT(no))]
2287 )
2288
2289AC_MSG_CHECKING(whether tputs() uses outfuntype)
2290AC_TRY_COMPILE([
2291#ifdef HAVE_TERMCAP_H
2292# include <termcap.h>
2293#endif
2294 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2295 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2296 AC_MSG_RESULT(no))
2297
2298dnl On some SCO machines sys/select redefines struct timeval
2299AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2300AC_TRY_COMPILE([
2301#include <sys/types.h>
2302#include <sys/time.h>
2303#include <sys/select.h>], ,
2304 AC_MSG_RESULT(yes)
2305 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2306 AC_MSG_RESULT(no))
2307
2308dnl AC_DECL_SYS_SIGLIST
2309
2310dnl Checks for pty.c (copied from screen) ==========================
2311AC_MSG_CHECKING(for /dev/ptc)
2312if test -r /dev/ptc; then
2313 AC_DEFINE(HAVE_DEV_PTC)
2314 AC_MSG_RESULT(yes)
2315else
2316 AC_MSG_RESULT(no)
2317fi
2318
2319AC_MSG_CHECKING(for SVR4 ptys)
2320if test -c /dev/ptmx ; then
2321 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2322 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2323 AC_MSG_RESULT(no))
2324else
2325 AC_MSG_RESULT(no)
2326fi
2327
2328AC_MSG_CHECKING(for ptyranges)
2329if test -d /dev/ptym ; then
2330 pdir='/dev/ptym'
2331else
2332 pdir='/dev'
2333fi
2334dnl SCO uses ptyp%d
2335AC_EGREP_CPP(yes,
2336[#ifdef M_UNIX
2337 yes;
2338#endif
2339 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2340dnl if test -c /dev/ptyp19; then
2341dnl ptys=`echo /dev/ptyp??`
2342dnl else
2343dnl ptys=`echo $pdir/pty??`
2344dnl fi
2345if test "$ptys" != "$pdir/pty??" ; then
2346 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2347 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2348 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2349 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2350 AC_MSG_RESULT([$p0 / $p1])
2351else
2352 AC_MSG_RESULT([don't know])
2353fi
2354
2355dnl **** pty mode/group handling ****
2356dnl
2357dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2358AC_MSG_CHECKING(default tty permissions/group)
2359rm -f conftest_grp
2360AC_TRY_RUN([
2361#include <sys/types.h>
2362#include <sys/stat.h>
2363#include <stdio.h>
2364main()
2365{
2366 struct stat sb;
2367 char *x,*ttyname();
2368 int om, m;
2369 FILE *fp;
2370
2371 if (!(x = ttyname(0))) exit(1);
2372 if (stat(x, &sb)) exit(1);
2373 om = sb.st_mode;
2374 if (om & 002) exit(0);
2375 m = system("mesg y");
2376 if (m == -1 || m == 127) exit(1);
2377 if (stat(x, &sb)) exit(1);
2378 m = sb.st_mode;
2379 if (chmod(x, om)) exit(1);
2380 if (m & 002) exit(0);
2381 if (sb.st_gid == getgid()) exit(1);
2382 if (!(fp=fopen("conftest_grp", "w")))
2383 exit(1);
2384 fprintf(fp, "%d\n", sb.st_gid);
2385 fclose(fp);
2386 exit(0);
2387}
2388],[
2389 if test -f conftest_grp; then
2390 ptygrp=`cat conftest_grp`
2391 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2392 AC_DEFINE(PTYMODE, 0620)
2393 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2394 else
2395 AC_MSG_RESULT([ptys are world accessable])
2396 fi
2397],
2398 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2399 AC_MSG_ERROR(failed to compile test program))
2400rm -f conftest_grp
2401
2402dnl Checks for library functions. ===================================
2403
2404AC_TYPE_SIGNAL
2405
2406dnl find out what to use at the end of a signal function
2407if test $ac_cv_type_signal = void; then
2408 AC_DEFINE(SIGRETURN, [return])
2409else
2410 AC_DEFINE(SIGRETURN, [return 0])
2411fi
2412
2413dnl check if struct sigcontext is defined (used for SGI only)
2414AC_MSG_CHECKING(for struct sigcontext)
2415AC_TRY_COMPILE([
2416#include <signal.h>
2417test_sig()
2418{
2419 struct sigcontext *scont;
2420 scont = (struct sigcontext *)0;
2421 return 1;
2422} ], ,
2423 AC_MSG_RESULT(yes)
2424 AC_DEFINE(HAVE_SIGCONTEXT),
2425 AC_MSG_RESULT(no))
2426
2427dnl tricky stuff: try to find out if getcwd() is implemented with
2428dnl system("sh -c pwd")
2429AC_MSG_CHECKING(getcwd implementation)
2430AC_TRY_RUN([
2431char *dagger[] = { "IFS=pwd", 0 };
2432main()
2433{
2434 char buffer[500];
2435 extern char **environ;
2436 environ = dagger;
2437 return getcwd(buffer, 500) ? 0 : 1;
2438}],
2439 AC_MSG_RESULT(it is usable),
2440 AC_MSG_RESULT(it stinks)
2441 AC_DEFINE(BAD_GETCWD),
2442 AC_MSG_ERROR(failed to compile test program))
2443
2444dnl Check for functions in one big call, to reduce the size of configure
2445AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2446 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2447 memset nanosleep opendir putenv qsort readlink select setenv \
2448 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002449 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002450 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2451 usleep utime utimes)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002452
2453dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2454AC_MSG_CHECKING(for st_blksize)
2455AC_TRY_COMPILE(
2456[#include <sys/types.h>
2457#include <sys/stat.h>],
2458[ struct stat st;
2459 int n;
2460
2461 stat("/", &st);
2462 n = (int)st.st_blksize;],
2463 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2464 AC_MSG_RESULT(no))
2465
2466AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2467AC_TRY_RUN(
2468[#include <sys/types.h>
2469#include <sys/stat.h>
2470main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2471 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2472 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2473
2474dnl Link with iconv for charset translation, if not found without library.
2475dnl check for iconv() requires including iconv.h
2476dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2477dnl has been installed.
2478AC_MSG_CHECKING(for iconv_open())
2479save_LIBS="$LIBS"
2480LIBS="$LIBS -liconv"
2481AC_TRY_LINK([
2482#ifdef HAVE_ICONV_H
2483# include <iconv.h>
2484#endif
2485 ], [iconv_open("fr", "to");],
2486 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2487 LIBS="$save_LIBS"
2488 AC_TRY_LINK([
2489#ifdef HAVE_ICONV_H
2490# include <iconv.h>
2491#endif
2492 ], [iconv_open("fr", "to");],
2493 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2494 AC_MSG_RESULT(no)))
2495
2496
2497AC_MSG_CHECKING(for nl_langinfo(CODESET))
2498AC_TRY_LINK([
2499#ifdef HAVE_LANGINFO_H
2500# include <langinfo.h>
2501#endif
2502], [char *cs = nl_langinfo(CODESET);],
2503 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2504 AC_MSG_RESULT(no))
2505
2506dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2507dnl when -lacl works, also try to use -lattr (required for Debian).
2508AC_MSG_CHECKING(--disable-acl argument)
2509AC_ARG_ENABLE(acl,
2510 [ --disable-acl Don't check for ACL support.],
2511 , [enable_acl="yes"])
2512if test "$enable_acl" = "yes"; then
2513AC_MSG_RESULT(no)
2514AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2515 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2516 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2517
2518AC_MSG_CHECKING(for POSIX ACL support)
2519AC_TRY_LINK([
2520#include <sys/types.h>
2521#ifdef HAVE_SYS_ACL_H
2522# include <sys/acl.h>
2523#endif
2524acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2525 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2526 acl_free(acl);],
2527 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2528 AC_MSG_RESULT(no))
2529
2530AC_MSG_CHECKING(for Solaris ACL support)
2531AC_TRY_LINK([
2532#ifdef HAVE_SYS_ACL_H
2533# include <sys/acl.h>
2534#endif], [acl("foo", GETACLCNT, 0, NULL);
2535 ],
2536 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2537 AC_MSG_RESULT(no))
2538
2539AC_MSG_CHECKING(for AIX ACL support)
2540AC_TRY_LINK([
2541#ifdef HAVE_SYS_ACL_H
2542# include <sys/acl.h>
2543#endif
2544#ifdef HAVE_SYS_ACCESS_H
2545# include <sys/access.h>
2546#endif
2547#define _ALL_SOURCE
2548
2549#include <sys/stat.h>
2550
2551int aclsize;
2552struct acl *aclent;], [aclsize = sizeof(struct acl);
2553 aclent = (void *)malloc(aclsize);
2554 statacl("foo", STX_NORMAL, aclent, aclsize);
2555 ],
2556 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2557 AC_MSG_RESULT(no))
2558else
2559 AC_MSG_RESULT(yes)
2560fi
2561
2562AC_MSG_CHECKING(--disable-gpm argument)
2563AC_ARG_ENABLE(gpm,
2564 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2565 [enable_gpm="yes"])
2566
2567if test "$enable_gpm" = "yes"; then
2568 AC_MSG_RESULT(no)
2569 dnl Checking if gpm support can be compiled
2570 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2571 [olibs="$LIBS" ; LIBS="-lgpm"]
2572 AC_TRY_LINK(
2573 [#include <gpm.h>
2574 #include <linux/keyboard.h>],
2575 [Gpm_GetLibVersion(NULL);],
2576 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2577 dnl FEAT_MOUSE_GPM if mouse support is included
2578 [vi_cv_have_gpm=yes],
2579 [vi_cv_have_gpm=no])
2580 [LIBS="$olibs"]
2581 )
2582 if test $vi_cv_have_gpm = yes; then
2583 LIBS="$LIBS -lgpm"
2584 AC_DEFINE(HAVE_GPM)
2585 fi
2586else
2587 AC_MSG_RESULT(yes)
2588fi
2589
Bram Moolenaar071d4272004-06-13 20:20:40 +00002590dnl rename needs to be checked separately to work on Nextstep with cc
2591AC_MSG_CHECKING(for rename)
2592AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2593 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2594 AC_MSG_RESULT(no))
2595
2596dnl sysctl() may exist but not the arguments we use
2597AC_MSG_CHECKING(for sysctl)
2598AC_TRY_COMPILE(
2599[#include <sys/types.h>
2600#include <sys/sysctl.h>],
2601[ int mib[2], r;
2602 size_t len;
2603
2604 mib[0] = CTL_HW;
2605 mib[1] = HW_USERMEM;
2606 len = sizeof(r);
2607 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2608 ],
2609 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2610 AC_MSG_RESULT(not usable))
2611
2612dnl sysinfo() may exist but not be Linux compatible
2613AC_MSG_CHECKING(for sysinfo)
2614AC_TRY_COMPILE(
2615[#include <sys/types.h>
2616#include <sys/sysinfo.h>],
2617[ struct sysinfo sinfo;
2618 int t;
2619
2620 (void)sysinfo(&sinfo);
2621 t = sinfo.totalram;
2622 ],
2623 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2624 AC_MSG_RESULT(not usable))
2625
Bram Moolenaar914572a2007-05-01 11:37:47 +00002626dnl struct sysinfo may have the mem_unit field or not
2627AC_MSG_CHECKING(for sysinfo.mem_unit)
2628AC_TRY_COMPILE(
2629[#include <sys/types.h>
2630#include <sys/sysinfo.h>],
2631[ struct sysinfo sinfo;
2632 sinfo.mem_unit = 1;
2633 ],
2634 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2635 AC_MSG_RESULT(no))
2636
Bram Moolenaar071d4272004-06-13 20:20:40 +00002637dnl sysconf() may exist but not support what we want to use
2638AC_MSG_CHECKING(for sysconf)
2639AC_TRY_COMPILE(
2640[#include <unistd.h>],
2641[ (void)sysconf(_SC_PAGESIZE);
2642 (void)sysconf(_SC_PHYS_PAGES);
2643 ],
2644 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2645 AC_MSG_RESULT(not usable))
2646
2647dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2648dnl be printed with "%d", and avoids a warning for cross-compiling.
2649
2650AC_MSG_CHECKING(size of int)
2651AC_CACHE_VAL(ac_cv_sizeof_int,
2652 [AC_TRY_RUN([#include <stdio.h>
2653 main()
2654 {
2655 FILE *f=fopen("conftestval", "w");
2656 if (!f) exit(1);
2657 fprintf(f, "%d\n", (int)sizeof(int));
2658 exit(0);
2659 }],
2660 ac_cv_sizeof_int=`cat conftestval`,
2661 ac_cv_sizeof_int=0,
2662 AC_MSG_ERROR(failed to compile test program))])
2663AC_MSG_RESULT($ac_cv_sizeof_int)
2664AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2665
2666AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2667[bcopy_test_prog='
2668main() {
2669 char buf[10];
2670 strcpy(buf, "abcdefghi");
2671 mch_memmove(buf, buf + 2, 3);
2672 if (strncmp(buf, "ababcf", 6))
2673 exit(1);
2674 strcpy(buf, "abcdefghi");
2675 mch_memmove(buf + 2, buf, 3);
2676 if (strncmp(buf, "cdedef", 6))
2677 exit(1);
2678 exit(0); /* libc version works properly. */
2679}']
2680
2681dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2682dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2683
2684AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2685 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2686 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2687 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2688 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2689 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2690 AC_MSG_ERROR(failed to compile test program)),
2691 AC_MSG_ERROR(failed to compile test program)),
2692 AC_MSG_ERROR(failed to compile test program))
2693
2694dnl Check for multibyte locale functions
2695dnl Find out if _Xsetlocale() is supported by libX11.
2696dnl Check if X_LOCALE should be defined.
2697
2698if test "$enable_multibyte" = "yes"; then
2699 cflags_save=$CFLAGS
2700 ldflags_save=$LDFLAGS
2701 if test -n "$x_includes" ; then
2702 CFLAGS="$CFLAGS -I$x_includes"
2703 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2704 AC_MSG_CHECKING(whether X_LOCALE needed)
2705 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2706 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2707 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2708 AC_MSG_RESULT(no))
2709 fi
2710 CFLAGS=$cflags_save
2711 LDFLAGS=$ldflags_save
2712fi
2713
2714dnl Link with xpg4, it is said to make Korean locale working
2715AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2716
2717dnl Check how we can run ctags
2718dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00002719dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002720dnl -t for typedefs (many ctags have this)
2721dnl -s for static functions (Elvis ctags only?)
2722dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2723dnl -i+m to test for older Exuberant ctags
2724AC_MSG_CHECKING(how to create tags)
2725test -f tags && mv tags tags.save
2726if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00002727 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002728else
2729 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2730 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2731 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2732 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2733 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2734 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2735 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2736fi
2737test -f tags.save && mv tags.save tags
2738AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2739
2740dnl Check how we can run man with a section number
2741AC_MSG_CHECKING(how to run man with a section nr)
2742MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00002743(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 +00002744AC_MSG_RESULT($MANDEF)
2745if test "$MANDEF" = "man -s"; then
2746 AC_DEFINE(USEMAN_S)
2747fi
2748
2749dnl Check if gettext() is working and if it needs -lintl
2750AC_MSG_CHECKING(--disable-nls argument)
2751AC_ARG_ENABLE(nls,
2752 [ --disable-nls Don't support NLS (gettext()).], ,
2753 [enable_nls="yes"])
2754
2755if test "$enable_nls" = "yes"; then
2756 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002757
2758 INSTALL_LANGS=install-languages
2759 AC_SUBST(INSTALL_LANGS)
2760 INSTALL_TOOL_LANGS=install-tool-languages
2761 AC_SUBST(INSTALL_TOOL_LANGS)
2762
Bram Moolenaar071d4272004-06-13 20:20:40 +00002763 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2764 AC_MSG_CHECKING([for NLS])
2765 if test -f po/Makefile; then
2766 have_gettext="no"
2767 if test -n "$MSGFMT"; then
2768 AC_TRY_LINK(
2769 [#include <libintl.h>],
2770 [gettext("Test");],
2771 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2772 olibs=$LIBS
2773 LIBS="$LIBS -lintl"
2774 AC_TRY_LINK(
2775 [#include <libintl.h>],
2776 [gettext("Test");],
2777 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2778 AC_MSG_RESULT([gettext() doesn't work]);
2779 LIBS=$olibs))
2780 else
2781 AC_MSG_RESULT([msgfmt not found - disabled]);
2782 fi
2783 if test $have_gettext = "yes"; then
2784 AC_DEFINE(HAVE_GETTEXT)
2785 MAKEMO=yes
2786 AC_SUBST(MAKEMO)
2787 dnl this was added in GNU gettext 0.10.36
2788 AC_CHECK_FUNCS(bind_textdomain_codeset)
2789 dnl _nl_msg_cat_cntr is required for GNU gettext
2790 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2791 AC_TRY_LINK(
2792 [#include <libintl.h>
2793 extern int _nl_msg_cat_cntr;],
2794 [++_nl_msg_cat_cntr;],
2795 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2796 AC_MSG_RESULT([no]))
2797 fi
2798 else
2799 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2800 fi
2801else
2802 AC_MSG_RESULT(yes)
2803fi
2804
2805dnl Check for dynamic linking loader
2806AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2807if test x${DLL} = xdlfcn.h; then
2808 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2809 AC_MSG_CHECKING([for dlopen()])
2810 AC_TRY_LINK(,[
2811 extern void* dlopen();
2812 dlopen();
2813 ],
2814 AC_MSG_RESULT(yes);
2815 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2816 AC_MSG_RESULT(no);
2817 AC_MSG_CHECKING([for dlopen() in -ldl])
2818 olibs=$LIBS
2819 LIBS="$LIBS -ldl"
2820 AC_TRY_LINK(,[
2821 extern void* dlopen();
2822 dlopen();
2823 ],
2824 AC_MSG_RESULT(yes);
2825 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2826 AC_MSG_RESULT(no);
2827 LIBS=$olibs))
2828 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2829 dnl ick :-)
2830 AC_MSG_CHECKING([for dlsym()])
2831 AC_TRY_LINK(,[
2832 extern void* dlsym();
2833 dlsym();
2834 ],
2835 AC_MSG_RESULT(yes);
2836 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2837 AC_MSG_RESULT(no);
2838 AC_MSG_CHECKING([for dlsym() in -ldl])
2839 olibs=$LIBS
2840 LIBS="$LIBS -ldl"
2841 AC_TRY_LINK(,[
2842 extern void* dlsym();
2843 dlsym();
2844 ],
2845 AC_MSG_RESULT(yes);
2846 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2847 AC_MSG_RESULT(no);
2848 LIBS=$olibs))
2849elif test x${DLL} = xdl.h; then
2850 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2851 AC_MSG_CHECKING([for shl_load()])
2852 AC_TRY_LINK(,[
2853 extern void* shl_load();
2854 shl_load();
2855 ],
2856 AC_MSG_RESULT(yes);
2857 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2858 AC_MSG_RESULT(no);
2859 AC_MSG_CHECKING([for shl_load() in -ldld])
2860 olibs=$LIBS
2861 LIBS="$LIBS -ldld"
2862 AC_TRY_LINK(,[
2863 extern void* shl_load();
2864 shl_load();
2865 ],
2866 AC_MSG_RESULT(yes);
2867 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2868 AC_MSG_RESULT(no);
2869 LIBS=$olibs))
2870fi
2871AC_CHECK_HEADERS(setjmp.h)
2872
2873if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2874 dnl -ldl must come after DynaLoader.a
2875 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2876 LIBS=`echo $LIBS | sed s/-ldl//`
2877 PERL_LIBS="$PERL_LIBS -ldl"
2878 fi
2879fi
2880
2881if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2882 && test "x$GUITYPE" != "xCARBONGUI"; then
2883 AC_MSG_CHECKING(whether we need -framework Carbon)
2884 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00002885 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886 || test "x$features" = "xhuge"; then
2887 LIBS="$LIBS -framework Carbon"
2888 AC_MSG_RESULT(yes)
2889 else
2890 AC_MSG_RESULT(no)
2891 fi
2892fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00002893if test "x$MACARCH" = "xboth"; then
2894 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2895fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002896
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00002897dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2898dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2899dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00002900dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2901dnl the number before the version number.
Bram Moolenaara5792f52005-11-23 21:25:05 +00002902AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00002903DEPEND_CFLAGS_FILTER=
2904if test "$GCC" = yes; then
Bram Moolenaar2217cae2006-03-25 21:55:52 +00002905 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00002906 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00002907 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2908 fi
2909fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00002910if test "$DEPEND_CFLAGS_FILTER" = ""; then
2911 AC_MSG_RESULT(no)
2912else
2913 AC_MSG_RESULT(yes)
2914fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00002915AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002916
2917dnl write output files
2918AC_OUTPUT(auto/config.mk:config.mk.in)
2919
2920dnl vim: set sw=2 tw=78 fo+=l: