comparison src/configure.in @ 0:76efa0be13f1

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