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