Fix ":set go+=c" and menu autoenabling bugs.
[MacVim/jjgod.git] / src / configure.in
blob8006a7e8500c293537af1070cb885c848dac3a50
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.[420]
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.4"; 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.2 and 8.0
780   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
781     tclsh_name="tclsh8.2"
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.2"; then
785     tclsh_name="tclsh8.0"
786     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
787   fi
788   dnl still didn't find it, try without version number
789   if test "X$vi_cv_path_tcl" = "X"; then
790     tclsh_name="tclsh"
791     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
792   fi
793   if test "X$vi_cv_path_tcl" != "X"; then
794     AC_MSG_CHECKING(Tcl version)
795     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
796       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
797       AC_MSG_RESULT($tclver - OK);
798       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 -`
800       AC_MSG_CHECKING(for location of Tcl include)
801       if test "x$MACOSX" != "xyes"; then
802         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
803       else
804         dnl For Mac OS X 10.3, use the OS-provided framework location
805         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
806       fi
807       for try in $tclinc; do
808         if test -f "$try/tcl.h"; then
809           AC_MSG_RESULT($try/tcl.h)
810           TCL_INC=$try
811           break
812         fi
813       done
814       if test -z "$TCL_INC"; then
815         AC_MSG_RESULT(<not found>)
816         SKIP_TCL=YES
817       fi
818       if test -z "$SKIP_TCL"; then
819         AC_MSG_CHECKING(for location of tclConfig.sh script)
820         if test "x$MACOSX" != "xyes"; then
821           tclcnf=`echo $tclinc | sed s/include/lib/g`
822         else
823           dnl For Mac OS X 10.3, use the OS-provided framework location
824           tclcnf="/System/Library/Frameworks/Tcl.framework"
825         fi
826         for try in $tclcnf; do
827           if test -f $try/tclConfig.sh; then
828             AC_MSG_RESULT($try/tclConfig.sh)
829             . $try/tclConfig.sh
830             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
831             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
832             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
833             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
834             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'`
835             break
836           fi
837         done
838         if test -z "$TCL_LIBS"; then
839           AC_MSG_RESULT(<not found>)
840           AC_MSG_CHECKING(for Tcl library by myself)
841           tcllib=`echo $tclinc | sed s/include/lib/g`
842           for ext in .so .a ; do
843             for ver in "" $tclver ; do
844               for try in $tcllib ; do
845                 trylib=tcl$ver$ext
846                 if test -f $try/lib$trylib ; then
847                   AC_MSG_RESULT($try/lib$trylib)
848                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
849                   if test "`(uname) 2>/dev/null`" = SunOS &&
850                                          uname -r | grep '^5' >/dev/null; then
851                     TCL_LIBS="$TCL_LIBS -R $try"
852                   fi
853                   break 3
854                 fi
855               done
856             done
857           done
858           if test -z "$TCL_LIBS"; then
859             AC_MSG_RESULT(<not found>)
860             SKIP_TCL=YES
861           fi
862         fi
863         if test -z "$SKIP_TCL"; then
864           AC_DEFINE(FEAT_TCL)
865           TCL_SRC=if_tcl.c
866           TCL_OBJ=objects/if_tcl.o
867           TCL_PRO=if_tcl.pro
868           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
869         fi
870       fi
871     else
872       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
873     fi
874   fi
876 AC_SUBST(TCL_SRC)
877 AC_SUBST(TCL_OBJ)
878 AC_SUBST(TCL_PRO)
879 AC_SUBST(TCL_CFLAGS)
880 AC_SUBST(TCL_LIBS)
882 AC_MSG_CHECKING(--enable-rubyinterp argument)
883 AC_ARG_ENABLE(rubyinterp,
884         [  --enable-rubyinterp     Include Ruby interpreter.], ,
885         [enable_rubyinterp="no"])
886 AC_MSG_RESULT($enable_rubyinterp)
887 if test "$enable_rubyinterp" = "yes"; then
888   AC_SUBST(vi_cv_path_ruby)
889   AC_PATH_PROG(vi_cv_path_ruby, ruby)
890   if test "X$vi_cv_path_ruby" != "X"; then
891     AC_MSG_CHECKING(Ruby version)
892     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
893       AC_MSG_RESULT(OK)
894       AC_MSG_CHECKING(Ruby header files)
895       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
896       if test "X$rubyhdrdir" != "X"; then
897         AC_MSG_RESULT($rubyhdrdir)
898         RUBY_CFLAGS="-I$rubyhdrdir"
899         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
900         if test "X$rubylibs" != "X"; then
901           RUBY_LIBS="$rubylibs"
902         fi
903         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
904         if test -f "$rubyhdrdir/$librubyarg"; then
905           librubyarg="$rubyhdrdir/$librubyarg"
906         else
907           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
908           if test -f "$rubylibdir/$librubyarg"; then
909             librubyarg="$rubylibdir/$librubyarg"
910           elif test "$librubyarg" = "libruby.a"; then
911             dnl required on Mac OS 10.3 where libruby.a doesn't exist
912             librubyarg="-lruby"
913           else
914             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
915           fi
916         fi
918         if test "X$librubyarg" != "X"; then
919           RUBY_LIBS="$librubyarg $RUBY_LIBS"
920         fi
921         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
922         if test "X$rubyldflags" != "X"; then
923           LDFLAGS="$rubyldflags $LDFLAGS"
924         fi
925         RUBY_SRC="if_ruby.c"
926         RUBY_OBJ="objects/if_ruby.o"
927         RUBY_PRO="if_ruby.pro"
928         AC_DEFINE(FEAT_RUBY)
929       else
930         AC_MSG_RESULT(not found, disabling Ruby)
931       fi
932     else
933       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
934     fi
935   fi
937 AC_SUBST(RUBY_SRC)
938 AC_SUBST(RUBY_OBJ)
939 AC_SUBST(RUBY_PRO)
940 AC_SUBST(RUBY_CFLAGS)
941 AC_SUBST(RUBY_LIBS)
943 AC_MSG_CHECKING(--enable-cscope argument)
944 AC_ARG_ENABLE(cscope,
945         [  --enable-cscope         Include cscope interface.], ,
946         [enable_cscope="no"])
947 AC_MSG_RESULT($enable_cscope)
948 if test "$enable_cscope" = "yes"; then
949   AC_DEFINE(FEAT_CSCOPE)
952 AC_MSG_CHECKING(--enable-workshop argument)
953 AC_ARG_ENABLE(workshop,
954         [  --enable-workshop       Include Sun Visual Workshop support.], ,
955         [enable_workshop="no"])
956 AC_MSG_RESULT($enable_workshop)
957 if test "$enable_workshop" = "yes"; then
958   AC_DEFINE(FEAT_SUN_WORKSHOP)
959   WORKSHOP_SRC="workshop.c integration.c"
960   AC_SUBST(WORKSHOP_SRC)
961   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
962   AC_SUBST(WORKSHOP_OBJ)
963   if test "${enable_gui-xxx}" = xxx; then
964     enable_gui=motif
965   fi
968 AC_MSG_CHECKING(--disable-netbeans argument)
969 AC_ARG_ENABLE(netbeans,
970         [  --disable-netbeans      Disable NetBeans integration support.],
971         , [enable_netbeans="yes"])
972 if test "$enable_netbeans" = "yes"; then
973   AC_MSG_RESULT(no)
974   dnl On Solaris we need the socket and nsl library.
975   AC_CHECK_LIB(socket, socket)
976   AC_CHECK_LIB(nsl, gethostbyname)
977   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
978   AC_TRY_LINK([
979 #include <stdio.h>
980 #include <stdlib.h>
981 #include <stdarg.h>
982 #include <fcntl.h>
983 #include <netdb.h>
984 #include <netinet/in.h>
985 #include <errno.h>
986 #include <sys/types.h>
987 #include <sys/socket.h>
988         /* Check bitfields */
989         struct nbbuf {
990         unsigned int  initDone:1;
991         ushort signmaplen;
992         };
993             ], [
994                 /* Check creating a socket. */
995                 struct sockaddr_in server;
996                 (void)socket(AF_INET, SOCK_STREAM, 0);
997                 (void)htons(100);
998                 (void)gethostbyname("microsoft.com");
999                 if (errno == ECONNREFUSED)
1000                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1001             ],
1002         AC_MSG_RESULT(yes),
1003         AC_MSG_RESULT(no); enable_netbeans="no")
1004 else
1005   AC_MSG_RESULT(yes)
1007 if test "$enable_netbeans" = "yes"; then
1008   AC_DEFINE(FEAT_NETBEANS_INTG)
1009   NETBEANS_SRC="netbeans.c"
1010   AC_SUBST(NETBEANS_SRC)
1011   NETBEANS_OBJ="objects/netbeans.o"
1012   AC_SUBST(NETBEANS_OBJ)
1015 AC_MSG_CHECKING(--enable-sniff argument)
1016 AC_ARG_ENABLE(sniff,
1017         [  --enable-sniff          Include Sniff interface.], ,
1018         [enable_sniff="no"])
1019 AC_MSG_RESULT($enable_sniff)
1020 if test "$enable_sniff" = "yes"; then
1021   AC_DEFINE(FEAT_SNIFF)
1022   SNIFF_SRC="if_sniff.c"
1023   AC_SUBST(SNIFF_SRC)
1024   SNIFF_OBJ="objects/if_sniff.o"
1025   AC_SUBST(SNIFF_OBJ)
1028 AC_MSG_CHECKING(--enable-multibyte argument)
1029 AC_ARG_ENABLE(multibyte,
1030         [  --enable-multibyte      Include multibyte editing support.], ,
1031         [enable_multibyte="no"])
1032 AC_MSG_RESULT($enable_multibyte)
1033 if test "$enable_multibyte" = "yes"; then
1034   AC_DEFINE(FEAT_MBYTE)
1037 AC_MSG_CHECKING(--enable-hangulinput argument)
1038 AC_ARG_ENABLE(hangulinput,
1039         [  --enable-hangulinput    Include Hangul input support.], ,
1040         [enable_hangulinput="no"])
1041 AC_MSG_RESULT($enable_hangulinput)
1043 AC_MSG_CHECKING(--enable-xim argument)
1044 AC_ARG_ENABLE(xim,
1045         [  --enable-xim            Include XIM input support.],
1046         AC_MSG_RESULT($enable_xim),
1047         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1048 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1050 AC_MSG_CHECKING(--enable-fontset argument)
1051 AC_ARG_ENABLE(fontset,
1052         [  --enable-fontset        Include X fontset output support.], ,
1053         [enable_fontset="no"])
1054 AC_MSG_RESULT($enable_fontset)
1055 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1057 test -z "$with_x" && with_x=yes
1058 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1059 if test "$with_x" = no; then
1060   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1061 else
1062   dnl Do this check early, so that its failure can override user requests.
1064   AC_PATH_PROG(xmkmfpath, xmkmf)
1066   AC_PATH_XTRA
1068   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1069   dnl be compiled with a special option.
1070   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1071   if test "$OS390Unix" = "yes"; then
1072     CFLAGS="$CFLAGS -W c,dll"
1073     LDFLAGS="$LDFLAGS -W l,dll"
1074     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1075   fi
1077   dnl On my HPUX system the X include dir is found, but the lib dir not.
1078   dnl This is a desparate try to fix this.
1080   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1081     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1082     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1083     X_LIBS="$X_LIBS -L$x_libraries"
1084     if test "`(uname) 2>/dev/null`" = SunOS &&
1085                                          uname -r | grep '^5' >/dev/null; then
1086       X_LIBS="$X_LIBS -R $x_libraries"
1087     fi
1088   fi
1090   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1091     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1092     AC_MSG_RESULT(Corrected X includes to $x_includes)
1093     X_CFLAGS="$X_CFLAGS -I$x_includes"
1094   fi
1096   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1097   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1098   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1099   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1100   dnl Same for "-R/usr/lib ".
1101   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1104   dnl Check if the X11 header files are correctly installed. On some systems
1105   dnl Xlib.h includes files that don't exist
1106   AC_MSG_CHECKING(if X11 header files can be found)
1107   cflags_save=$CFLAGS
1108   CFLAGS="$CFLAGS $X_CFLAGS"
1109   AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1110         AC_MSG_RESULT(yes),
1111         AC_MSG_RESULT(no); no_x=yes)
1112   CFLAGS=$cflags_save
1114   if test "${no_x-no}" = yes; then
1115     with_x=no
1116   else
1117     AC_DEFINE(HAVE_X11)
1118     X_LIB="-lXt -lX11";
1119     AC_SUBST(X_LIB)
1121     ac_save_LDFLAGS="$LDFLAGS"
1122     LDFLAGS="-L$x_libraries $LDFLAGS"
1124     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1125     dnl For HP-UX 10.20 it must be before -lSM -lICE
1126     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1127                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1129     dnl Some systems need -lnsl -lsocket when testing for ICE.
1130     dnl The check above doesn't do this, try here (again).  Also needed to get
1131     dnl them after Xdmcp.  link.sh will remove them when not needed.
1132     dnl Check for other function than above to avoid the cached value
1133     AC_CHECK_LIB(ICE, IceOpenConnection,
1134                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1136     dnl Check for -lXpm (needed for some versions of Motif)
1137     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1138     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1139                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1141     dnl Check that the X11 header files don't use implicit declarations
1142     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1143     cflags_save=$CFLAGS
1144     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1145     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1146         AC_MSG_RESULT(no),
1147         CFLAGS="$CFLAGS -Wno-implicit-int"
1148         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1149             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1150             AC_MSG_RESULT(test failed)
1151         )
1152     )
1153     CFLAGS=$cflags_save
1155     LDFLAGS="$ac_save_LDFLAGS"
1157   fi
1160 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1162 AC_MSG_CHECKING(--enable-gui argument)
1163 AC_ARG_ENABLE(gui,
1164  [  --enable-gui[=OPTS]       X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1166 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1167 dnl Do not use character classes for portability with old tools.
1168 enable_gui_canon=`echo "_$enable_gui" | \
1169         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1171 dnl Skip everything by default.
1172 SKIP_GTK=YES
1173 SKIP_GTK2=YES
1174 SKIP_GNOME=YES
1175 SKIP_MOTIF=YES
1176 SKIP_ATHENA=YES
1177 SKIP_NEXTAW=YES
1178 SKIP_PHOTON=YES
1179 SKIP_CARBON=YES
1180 SKIP_MACVIM=YES
1181 GUITYPE=NONE
1183 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1184   SKIP_PHOTON=
1185   case "$enable_gui_canon" in
1186     no)         AC_MSG_RESULT(no GUI support)
1187                 SKIP_PHOTON=YES ;;
1188     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1189     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1190     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1191     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1192                 SKIP_PHOTON=YES ;;
1193   esac
1195 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1196   SKIP_CARBON=
1197   SKIP_MACVIM=
1198   case "$enable_gui_canon" in
1199     no)         AC_MSG_RESULT(no GUI support)
1200                 SKIP_CARBON=YES 
1201                 SKIP_MACVIM=YES ;;
1202     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1203     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1204     carbon)     AC_MSG_RESULT(Carbon GUI support) 
1205                 SKIP_MACVIM=YES ;;
1206     macvim)     AC_MSG_RESULT(MacVim GUI support) 
1207                 SKIP_CARBON=YES ;;
1208     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1209                 SKIP_CARBON=YES 
1210                 SKIP_MACVIM=YES ;;
1211   esac
1213 else
1215   case "$enable_gui_canon" in
1216     no|none)    AC_MSG_RESULT(no GUI support) ;;
1217     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1218                 SKIP_GTK=
1219                 SKIP_GTK2=
1220                 SKIP_GNOME=
1221                 SKIP_MOTIF=
1222                 SKIP_ATHENA=
1223                 SKIP_NEXTAW=
1224                 SKIP_MACVIM=
1225                 SKIP_CARBON=;;
1226     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1227                 SKIP_GTK=;;
1228     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1229                 SKIP_GTK=
1230                 SKIP_GTK2=;;
1231     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1232                 SKIP_GNOME=
1233                 SKIP_GTK=;;
1234     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1235                 SKIP_GNOME=
1236                 SKIP_GTK=
1237                 SKIP_GTK2=;;
1238     motif)      AC_MSG_RESULT(Motif GUI support)
1239                 SKIP_MOTIF=;;
1240     athena)     AC_MSG_RESULT(Athena GUI support)
1241                 SKIP_ATHENA=;;
1242     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1243                 SKIP_NEXTAW=;;
1244     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1245   esac
1249 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1250   AC_MSG_CHECKING(whether or not to look for GTK)
1251   AC_ARG_ENABLE(gtk-check,
1252         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1253         , enable_gtk_check="yes")
1254   AC_MSG_RESULT($enable_gtk_check)
1255   if test "x$enable_gtk_check" = "xno"; then
1256     SKIP_GTK=YES
1257     SKIP_GNOME=YES
1258   fi
1261 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1262                                 -a "$enable_gui_canon" != "gnome2"; then
1263   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1264   AC_ARG_ENABLE(gtk2-check,
1265         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1266         , enable_gtk2_check="yes")
1267   AC_MSG_RESULT($enable_gtk2_check)
1268   if test "x$enable_gtk2_check" = "xno"; then
1269     SKIP_GTK2=YES
1270   fi
1273 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1274                                  -a "$enable_gui_canon" != "gnome2"; then
1275   AC_MSG_CHECKING(whether or not to look for GNOME)
1276   AC_ARG_ENABLE(gnome-check,
1277         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1278         , enable_gnome_check="no")
1279   AC_MSG_RESULT($enable_gnome_check)
1280   if test "x$enable_gnome_check" = "xno"; then
1281     SKIP_GNOME=YES
1282   fi
1285 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1286   AC_MSG_CHECKING(whether or not to look for Motif)
1287   AC_ARG_ENABLE(motif-check,
1288         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1289         , enable_motif_check="yes")
1290   AC_MSG_RESULT($enable_motif_check)
1291   if test "x$enable_motif_check" = "xno"; then
1292     SKIP_MOTIF=YES
1293   fi
1296 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1297   AC_MSG_CHECKING(whether or not to look for Athena)
1298   AC_ARG_ENABLE(athena-check,
1299         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1300         , enable_athena_check="yes")
1301   AC_MSG_RESULT($enable_athena_check)
1302   if test "x$enable_athena_check" = "xno"; then
1303     SKIP_ATHENA=YES
1304   fi
1307 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1308   AC_MSG_CHECKING(whether or not to look for neXtaw)
1309   AC_ARG_ENABLE(nextaw-check,
1310         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1311         , enable_nextaw_check="yes")
1312   AC_MSG_RESULT($enable_nextaw_check);
1313   if test "x$enable_nextaw_check" = "xno"; then
1314     SKIP_NEXTAW=YES
1315   fi
1318 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1319   AC_MSG_CHECKING(whether or not to look for Carbon)
1320   AC_ARG_ENABLE(carbon-check,
1321         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1322         , enable_carbon_check="yes")
1323   AC_MSG_RESULT($enable_carbon_check);
1324   if test "x$enable_carbon_check" = "xno"; then
1325     SKIP_CARBON=YES
1326   fi
1329 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1330   AC_MSG_CHECKING(whether or not to look for MacVim)
1331   AC_ARG_ENABLE(macvim-check,
1332         [  --enable-macvim-check    If auto-select GUI, check for MacVim [default=yes]],
1333         , enable_macvim_check="yes")
1334   AC_MSG_RESULT($enable_macvim_check);
1335   if test "x$enable_macvim_check" = "xno"; then
1336     SKIP_MACVIM=YES
1337   fi
1340 if test "x$MACOSX" = "xyes"; then
1341   if test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1342     AC_MSG_CHECKING(for Carbon GUI)
1343     dnl already did the check, just give the message
1344     AC_MSG_RESULT(yes);
1345     GUITYPE=CARBONGUI
1346   elif test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1347     AC_MSG_CHECKING(for MacVim GUI)
1348     dnl already did the check, just give the message
1349     AC_MSG_RESULT(yes);
1350     GUITYPE=MACVIMGUI
1351   fi
1353   if test "$VIMNAME" = "vim"; then
1354     VIMNAME=Vim
1355   fi
1357   dnl Default install directory is not /usr/local
1358   if test x$prefix = xNONE; then
1359     prefix=/Applications
1360   fi
1362   dnl Sorry for the hard coded default
1363   datadir='${prefix}/Vim.app/Contents/Resources'
1365   dnl skip everything else
1366   SKIP_GTK=YES;
1367   SKIP_GTK2=YES;
1368   SKIP_GNOME=YES;
1369   SKIP_MOTIF=YES;
1370   SKIP_ATHENA=YES;
1371   SKIP_NEXTAW=YES;
1372   SKIP_PHOTON=YES;
1373   SKIP_MACVIM=YES;
1374   SKIP_CARBON=YES
1378 dnl Get the cflags and libraries from the gtk-config script
1381 dnl define an autoconf function to check for a specified version of GTK, and
1382 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1384 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1385 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1387 AC_DEFUN(AM_PATH_GTK,
1389   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1390   {
1391     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1392     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1393     no_gtk=""
1394     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1395           && $PKG_CONFIG --exists gtk+-2.0; then
1396     {
1397       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1398       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1399       dnl something like that.
1400       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1401       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1402       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1403       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1404              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1405       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1406              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1407       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1408              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1409     }
1410     elif test "X$GTK_CONFIG" != "Xno"; then
1411     {
1412       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1413       GTK_LIBDIR=
1414       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1415       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1416              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1417       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1418              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1419       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1420              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1421     }
1422     else
1423       no_gtk=yes
1424     fi
1426     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1427     {
1428       ac_save_CFLAGS="$CFLAGS"
1429       ac_save_LIBS="$LIBS"
1430       CFLAGS="$CFLAGS $GTK_CFLAGS"
1431       LIBS="$LIBS $GTK_LIBS"
1433       dnl
1434       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1435       dnl checks the results of gtk-config to some extent
1436       dnl
1437       rm -f conf.gtktest
1438       AC_TRY_RUN([
1439 #include <gtk/gtk.h>
1440 #include <stdio.h>
1443 main ()
1445 int major, minor, micro;
1446 char *tmp_version;
1448 system ("touch conf.gtktest");
1450 /* HP/UX 9 (%@#!) writes to sscanf strings */
1451 tmp_version = g_strdup("$min_gtk_version");
1452 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1453    printf("%s, bad version string\n", "$min_gtk_version");
1454    exit(1);
1457 if ((gtk_major_version > major) ||
1458     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1459     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1460                                      (gtk_micro_version >= micro)))
1462     return 0;
1464 return 1;
1466 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1467       CFLAGS="$ac_save_CFLAGS"
1468       LIBS="$ac_save_LIBS"
1469     }
1470     fi
1471     if test "x$no_gtk" = x ; then
1472       if test "x$enable_gtktest" = "xyes"; then
1473         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1474       else
1475         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1476       fi
1477       ifelse([$2], , :, [$2])
1478     else
1479     {
1480       AC_MSG_RESULT(no)
1481       GTK_CFLAGS=""
1482       GTK_LIBS=""
1483       ifelse([$3], , :, [$3])
1484     }
1485     fi
1486   }
1487   else
1488     GTK_CFLAGS=""
1489     GTK_LIBS=""
1490     ifelse([$3], , :, [$3])
1491   fi
1492   AC_SUBST(GTK_CFLAGS)
1493   AC_SUBST(GTK_LIBS)
1494   rm -f conf.gtktest
1497 dnl ---------------------------------------------------------------------------
1498 dnl gnome
1499 dnl ---------------------------------------------------------------------------
1500 AC_DEFUN([GNOME_INIT_HOOK],
1502   AC_SUBST(GNOME_LIBS)
1503   AC_SUBST(GNOME_LIBDIR)
1504   AC_SUBST(GNOME_INCLUDEDIR)
1506   AC_ARG_WITH(gnome-includes,
1507     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1508     [CFLAGS="$CFLAGS -I$withval"]
1509   )
1511   AC_ARG_WITH(gnome-libs,
1512     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1513     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1514   )
1516   AC_ARG_WITH(gnome,
1517     [  --with-gnome            Specify prefix for GNOME files],
1518     if test x$withval = xyes; then
1519       want_gnome=yes
1520       ifelse([$1], [], :, [$1])
1521     else
1522       if test "x$withval" = xno; then
1523         want_gnome=no
1524       else
1525         want_gnome=yes
1526         LDFLAGS="$LDFLAGS -L$withval/lib"
1527         CFLAGS="$CFLAGS -I$withval/include"
1528         gnome_prefix=$withval/lib
1529       fi
1530     fi,
1531     want_gnome=yes)
1533   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1534   {
1535     AC_MSG_CHECKING(for libgnomeui-2.0)
1536     if $PKG_CONFIG --exists libgnomeui-2.0; then
1537       AC_MSG_RESULT(yes)
1538       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1539       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1540       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1542       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1543       dnl This might not be the right way but it works for me...
1544       AC_MSG_CHECKING(for FreeBSD)
1545       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1546         AC_MSG_RESULT(yes, adding -pthread)
1547         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1548         GNOME_LIBS="$GNOME_LIBS -pthread"
1549       else
1550         AC_MSG_RESULT(no)
1551       fi
1552       $1
1553     else
1554       AC_MSG_RESULT(not found)
1555       if test "x$2" = xfail; then
1556         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1557       fi
1558     fi
1559   }
1560   elif test "x$want_gnome" = xyes; then
1561   {
1562     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1563     if test "$GNOME_CONFIG" = "no"; then
1564       no_gnome_config="yes"
1565     else
1566       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1567       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1568         AC_MSG_RESULT(yes)
1569         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1570         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1571         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1572         $1
1573       else
1574         AC_MSG_RESULT(no)
1575         no_gnome_config="yes"
1576       fi
1577     fi
1579     if test x$exec_prefix = xNONE; then
1580       if test x$prefix = xNONE; then
1581         gnome_prefix=$ac_default_prefix/lib
1582       else
1583         gnome_prefix=$prefix/lib
1584       fi
1585     else
1586       gnome_prefix=`eval echo \`echo $libdir\``
1587     fi
1589     if test "$no_gnome_config" = "yes"; then
1590       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1591       if test -f $gnome_prefix/gnomeConf.sh; then
1592         AC_MSG_RESULT(found)
1593         echo "loading gnome configuration from" \
1594           "$gnome_prefix/gnomeConf.sh"
1595         . $gnome_prefix/gnomeConf.sh
1596         $1
1597       else
1598         AC_MSG_RESULT(not found)
1599         if test x$2 = xfail; then
1600           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1601         fi
1602       fi
1603     fi
1604   }
1605   fi
1608 AC_DEFUN([GNOME_INIT],[
1609         GNOME_INIT_HOOK([],fail)
1613 dnl ---------------------------------------------------------------------------
1614 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1615 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1616 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1617 dnl ---------------------------------------------------------------------------
1618 if test -z "$SKIP_GTK"; then
1620   AC_MSG_CHECKING(--with-gtk-prefix argument)
1621   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1622         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1623         gtk_config_prefix=""; AC_MSG_RESULT(no))
1625   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1626   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1627         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1628         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1630   AC_MSG_CHECKING(--disable-gtktest argument)
1631   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1632         , enable_gtktest=yes)
1633   if test "x$enable_gtktest" = "xyes" ; then
1634     AC_MSG_RESULT(gtk test enabled)
1635   else
1636     AC_MSG_RESULT(gtk test disabled)
1637   fi
1639   if test "x$gtk_config_prefix" != "x" ; then
1640     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1641     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1642   fi
1643   if test "x$gtk_config_exec_prefix" != "x" ; then
1644     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1645     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1646   fi
1647   if test "X$GTK_CONFIG" = "X"; then
1648     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1649     if test "X$GTK_CONFIG" = "Xno"; then
1650       dnl Some distributions call it gtk12-config, annoying!
1651       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1652       GTK_CONFIG="$GTK12_CONFIG"
1653     fi
1654   else
1655     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1656   fi
1657   if test "X$PKG_CONFIG" = "X"; then
1658     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1659   fi
1661   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1662     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1663     dnl problems (bold fonts, --remote doesn't work).
1664     if test "X$SKIP_GTK2" != "XYES"; then
1665       AM_PATH_GTK(2.2.0,
1666                   [GUI_LIB_LOC="$GTK_LIBDIR"
1667                    GTK_LIBNAME="$GTK_LIBS"
1668                   GUI_INC_LOC="$GTK_CFLAGS"], )
1669       if test "x$GTK_CFLAGS" != "x"; then
1670         SKIP_ATHENA=YES
1671         SKIP_NEXTAW=YES
1672         SKIP_MOTIF=YES
1673         GUITYPE=GTK
1674         AC_SUBST(GTK_LIBNAME)
1675       fi
1676     fi
1678     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1679     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1680     dnl were test versions.
1681     if test "x$GUITYPE" != "xGTK"; then
1682       SKIP_GTK2=YES
1683       AM_PATH_GTK(1.1.16,
1684                   [GTK_LIBNAME="$GTK_LIBS"
1685                   GUI_INC_LOC="$GTK_CFLAGS"], )
1686       if test "x$GTK_CFLAGS" != "x"; then
1687         SKIP_ATHENA=YES
1688         SKIP_NEXTAW=YES
1689         SKIP_MOTIF=YES
1690         GUITYPE=GTK
1691         AC_SUBST(GTK_LIBNAME)
1692       fi
1693     fi
1694   fi
1695   dnl Give a warning if GTK is older than 1.2.3
1696   if test "x$GUITYPE" = "xGTK"; then
1697     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1698          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1699       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1700     else
1701     {
1702       if test "0$gtk_major_version" -ge 2; then
1703         AC_DEFINE(HAVE_GTK2)
1704         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1705                 || test "0$gtk_minor_version" -ge 2 \
1706                 || test "0$gtk_major_version" -gt 2; then
1707           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1708         fi
1709       fi
1710       dnl
1711       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1712       dnl
1713       if test -z "$SKIP_GNOME"; then
1714       {
1715         GNOME_INIT_HOOK([have_gnome=yes])
1716         if test x$have_gnome = xyes ; then
1717           AC_DEFINE(FEAT_GUI_GNOME)
1718           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1719           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1720         fi
1721       }
1722       fi
1723     }
1724     fi
1725   fi
1728 dnl Check for Motif include files location.
1729 dnl The LAST one found is used, this makes the highest version to be used,
1730 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1732 if test -z "$SKIP_MOTIF"; then
1733   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"
1734   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1735   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1737   AC_MSG_CHECKING(for location of Motif GUI includes)
1738   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1739   GUI_INC_LOC=
1740   for try in $gui_includes; do
1741     if test -f "$try/Xm/Xm.h"; then
1742       GUI_INC_LOC=$try
1743     fi
1744   done
1745   if test -n "$GUI_INC_LOC"; then
1746     if test "$GUI_INC_LOC" = /usr/include; then
1747       GUI_INC_LOC=
1748       AC_MSG_RESULT(in default path)
1749     else
1750       AC_MSG_RESULT($GUI_INC_LOC)
1751     fi
1752   else
1753     AC_MSG_RESULT(<not found>)
1754     SKIP_MOTIF=YES
1755   fi
1758 dnl Check for Motif library files location.  In the same order as the include
1759 dnl files, to avoid a mixup if several versions are present
1761 if test -z "$SKIP_MOTIF"; then
1762   AC_MSG_CHECKING(--with-motif-lib argument)
1763   AC_ARG_WITH(motif-lib,
1764   [  --with-motif-lib=STRING   Library for Motif ],
1765   [ MOTIF_LIBNAME="${withval}" ] )
1767   if test -n "$MOTIF_LIBNAME"; then
1768     AC_MSG_RESULT($MOTIF_LIBNAME)
1769     GUI_LIB_LOC=
1770   else
1771     AC_MSG_RESULT(no)
1773     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1774     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1776     AC_MSG_CHECKING(for location of Motif GUI libs)
1777     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"
1778     GUI_LIB_LOC=
1779     for try in $gui_libs; do
1780       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1781         if test -f "$libtry"; then
1782           GUI_LIB_LOC=$try
1783         fi
1784       done
1785     done
1786     if test -n "$GUI_LIB_LOC"; then
1787       dnl Remove /usr/lib, it causes trouble on some systems
1788       if test "$GUI_LIB_LOC" = /usr/lib; then
1789         GUI_LIB_LOC=
1790         AC_MSG_RESULT(in default path)
1791       else
1792         if test -n "$GUI_LIB_LOC"; then
1793           AC_MSG_RESULT($GUI_LIB_LOC)
1794           if test "`(uname) 2>/dev/null`" = SunOS &&
1795                                          uname -r | grep '^5' >/dev/null; then
1796             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1797           fi
1798         fi
1799       fi
1800       MOTIF_LIBNAME=-lXm
1801     else
1802       AC_MSG_RESULT(<not found>)
1803       SKIP_MOTIF=YES
1804     fi
1805   fi
1808 if test -z "$SKIP_MOTIF"; then
1809   SKIP_ATHENA=YES
1810   SKIP_NEXTAW=YES
1811   GUITYPE=MOTIF
1812   AC_SUBST(MOTIF_LIBNAME)
1815 dnl Check if the Athena files can be found
1817 GUI_X_LIBS=
1819 if test -z "$SKIP_ATHENA"; then
1820   AC_MSG_CHECKING(if Athena header files can be found)
1821   cflags_save=$CFLAGS
1822   CFLAGS="$CFLAGS $X_CFLAGS"
1823   AC_TRY_COMPILE([
1824 #include <X11/Intrinsic.h>
1825 #include <X11/Xaw/Paned.h>], ,
1826         AC_MSG_RESULT(yes),
1827         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1828   CFLAGS=$cflags_save
1831 if test -z "$SKIP_ATHENA"; then
1832   GUITYPE=ATHENA
1835 if test -z "$SKIP_NEXTAW"; then
1836   AC_MSG_CHECKING(if neXtaw header files can be found)
1837   cflags_save=$CFLAGS
1838   CFLAGS="$CFLAGS $X_CFLAGS"
1839   AC_TRY_COMPILE([
1840 #include <X11/Intrinsic.h>
1841 #include <X11/neXtaw/Paned.h>], ,
1842         AC_MSG_RESULT(yes),
1843         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1844   CFLAGS=$cflags_save
1847 if test -z "$SKIP_NEXTAW"; then
1848   GUITYPE=NEXTAW
1851 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1852   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1853   dnl Avoid adding it when it twice
1854   if test -n "$GUI_INC_LOC"; then
1855     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1856   fi
1857   if test -n "$GUI_LIB_LOC"; then
1858     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1859   fi
1861   dnl Check for -lXext and then for -lXmu
1862   ldflags_save=$LDFLAGS
1863   LDFLAGS="$X_LIBS $LDFLAGS"
1864   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1865                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1866   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1867   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1868                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1869   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1870                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1871   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1872                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1873   if test -z "$SKIP_MOTIF"; then
1874     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1875                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1876   fi
1877   LDFLAGS=$ldflags_save
1879   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1880   AC_MSG_CHECKING(for extra X11 defines)
1881   NARROW_PROTO=
1882   rm -fr conftestdir
1883   if mkdir conftestdir; then
1884     cd conftestdir
1885     cat > Imakefile <<'EOF'
1886 acfindx:
1887         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1889     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1890       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1891     fi
1892     cd ..
1893     rm -fr conftestdir
1894   fi
1895   if test -z "$NARROW_PROTO"; then
1896     AC_MSG_RESULT(no)
1897   else
1898     AC_MSG_RESULT($NARROW_PROTO)
1899   fi
1900   AC_SUBST(NARROW_PROTO)
1903 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1904 dnl use the X11 include path
1905 if test "$enable_xsmp" = "yes"; then
1906   cppflags_save=$CPPFLAGS
1907   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1908   AC_CHECK_HEADERS(X11/SM/SMlib.h)
1909   CPPFLAGS=$cppflags_save
1913 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1914   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1915   cppflags_save=$CPPFLAGS
1916   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1917   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1919   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1920   if test ! "$enable_xim" = "no"; then
1921     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1922     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1923                   AC_MSG_RESULT(yes),
1924                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1925   fi
1926   CPPFLAGS=$cppflags_save
1928   dnl automatically enable XIM when hangul input isn't enabled
1929   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1930                 -a "x$GUITYPE" != "xNONE" ; then
1931     AC_MSG_RESULT(X GUI selected; xim has been enabled)
1932     enable_xim="yes"
1933   fi
1936 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1937   cppflags_save=$CPPFLAGS
1938   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1939 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1940   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1941   AC_TRY_COMPILE([
1942 #include <X11/Intrinsic.h>
1943 #include <X11/Xmu/Editres.h>],
1944                       [int i; i = 0;],
1945               AC_MSG_RESULT(yes)
1946                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1947               AC_MSG_RESULT(no))
1948   CPPFLAGS=$cppflags_save
1951 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1952 if test -z "$SKIP_MOTIF"; then
1953   cppflags_save=$CPPFLAGS
1954   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1955   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1956                    Xm/UnhighlightT.h Xm/Notebook.h)
1958   if test $ac_cv_header_Xm_XpmP_h = yes; then
1959     dnl Solaris uses XpmAttributes_21, very annoying.
1960     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1961     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1962         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1963         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1964         )
1965   else
1966     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1967   fi
1968   CPPFLAGS=$cppflags_save
1971 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1972   AC_MSG_RESULT(no GUI selected; xim has been disabled)
1973   enable_xim="no"
1975 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1976   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1977   enable_fontset="no"
1979 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1980   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1981   enable_fontset="no"
1984 if test -z "$SKIP_PHOTON"; then
1985   GUITYPE=PHOTONGUI
1988 AC_SUBST(GUI_INC_LOC)
1989 AC_SUBST(GUI_LIB_LOC)
1990 AC_SUBST(GUITYPE)
1991 AC_SUBST(GUI_X_LIBS)
1993 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1994   AC_MSG_ERROR([cannot use workshop without Motif])
1997 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1998 if test "$enable_xim" = "yes"; then
1999   AC_DEFINE(FEAT_XIM)
2001 if test "$enable_fontset" = "yes"; then
2002   AC_DEFINE(FEAT_XFONTSET)
2006 dnl ---------------------------------------------------------------------------
2007 dnl end of GUI-checking
2008 dnl ---------------------------------------------------------------------------
2011 dnl Only really enable hangul input when GUI and XFONTSET are available
2012 if test "$enable_hangulinput" = "yes"; then
2013   if test "x$GUITYPE" = "xNONE"; then
2014     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2015     enable_hangulinput=no
2016   else
2017     AC_DEFINE(FEAT_HANGULIN)
2018     HANGULIN_SRC=hangulin.c
2019     AC_SUBST(HANGULIN_SRC)
2020     HANGULIN_OBJ=objects/hangulin.o
2021     AC_SUBST(HANGULIN_OBJ)
2022   fi
2025 dnl Checks for libraries and include files.
2027 AC_MSG_CHECKING(quality of toupper)
2028 AC_TRY_RUN([#include <ctype.h>
2029 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2030         AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2031         AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2033 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2034 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2035         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2036         AC_MSG_RESULT(no))
2038 dnl Checks for header files.
2039 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2040 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2041 if test "$HAS_ELF" = 1; then
2042   AC_CHECK_LIB(elf, main)
2045 AC_HEADER_DIRENT
2047 dnl check for standard headers, we don't use this in Vim but other stuff
2048 dnl in autoconf needs it
2049 AC_HEADER_STDC
2050 AC_HEADER_SYS_WAIT
2052 dnl If sys/wait.h is not found it might still exist but not be POSIX
2053 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2054 if test $ac_cv_header_sys_wait_h = no; then
2055   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2056   AC_TRY_COMPILE([#include <sys/wait.h>],
2057                         [union wait xx, yy; xx = yy],
2058                 AC_MSG_RESULT(yes)
2059                         AC_DEFINE(HAVE_SYS_WAIT_H)
2060                         AC_DEFINE(HAVE_UNION_WAIT),
2061                 AC_MSG_RESULT(no))
2064 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2065         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \
2066         iconv.h langinfo.h unistd.h stropts.h errno.h \
2067         sys/resource.h sys/systeminfo.h locale.h \
2068         sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2069         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2070         libgen.h util/debug.h util/msg18n.h frame.h \
2071         sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2073 dnl pthread_np.h may exist but can only be used after including pthread.h
2074 AC_MSG_CHECKING([for pthread_np.h])
2075 AC_TRY_COMPILE([
2076 #include <pthread.h>
2077 #include <pthread_np.h>],
2078                       [int i; i = 0;],
2079               AC_MSG_RESULT(yes)
2080                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2081               AC_MSG_RESULT(no))
2083 AC_CHECK_HEADERS(strings.h)
2084 if test "x$MACOSX" = "xyes"; then
2085   dnl The strings.h file on OS/X contains a warning and nothing useful.
2086   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2087 else
2089 dnl Check if strings.h and string.h can both be included when defined.
2090 AC_MSG_CHECKING([if strings.h can be included after string.h])
2091 cppflags_save=$CPPFLAGS
2092 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2093 AC_TRY_COMPILE([
2094 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2095 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2096                         /* but don't do it on AIX 5.1 (Uribarri) */
2097 #endif
2098 #ifdef HAVE_XM_XM_H
2099 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2100 #endif
2101 #ifdef HAVE_STRING_H
2102 # include <string.h>
2103 #endif
2104 #if defined(HAVE_STRINGS_H)
2105 # include <strings.h>
2106 #endif
2107                 ], [int i; i = 0;],
2108                 AC_MSG_RESULT(yes),
2109                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2110                 AC_MSG_RESULT(no))
2111 CPPFLAGS=$cppflags_save
2114 dnl Checks for typedefs, structures, and compiler characteristics.
2115 AC_PROG_GCC_TRADITIONAL
2116 AC_C_CONST
2117 AC_TYPE_MODE_T
2118 AC_TYPE_OFF_T
2119 AC_TYPE_PID_T
2120 AC_TYPE_SIZE_T
2121 AC_TYPE_UID_T
2122 AC_HEADER_TIME
2123 AC_CHECK_TYPE(ino_t, long)
2124 AC_CHECK_TYPE(dev_t, unsigned)
2126 AC_MSG_CHECKING(for rlim_t)
2127 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2128   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2129 else
2130   AC_EGREP_CPP(dnl
2131 changequote(<<,>>)dnl
2132 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2133 changequote([,]),
2134   [
2135 #include <sys/types.h>
2136 #if STDC_HEADERS
2137 #include <stdlib.h>
2138 #include <stddef.h>
2139 #endif
2140 #ifdef HAVE_SYS_RESOURCE_H
2141 #include <sys/resource.h>
2142 #endif
2143           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2144           AC_MSG_RESULT($ac_cv_type_rlim_t)
2146 if test $ac_cv_type_rlim_t = no; then
2147   cat >> confdefs.h <<\EOF
2148 #define rlim_t unsigned long
2152 AC_MSG_CHECKING(for stack_t)
2153 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2154   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2155 else
2156   AC_EGREP_CPP(stack_t,
2157   [
2158 #include <sys/types.h>
2159 #if STDC_HEADERS
2160 #include <stdlib.h>
2161 #include <stddef.h>
2162 #endif
2163 #include <signal.h>
2164           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2165           AC_MSG_RESULT($ac_cv_type_stack_t)
2167 if test $ac_cv_type_stack_t = no; then
2168   cat >> confdefs.h <<\EOF
2169 #define stack_t struct sigaltstack
2173 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2174 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2175 AC_TRY_COMPILE([
2176 #include <sys/types.h>
2177 #if STDC_HEADERS
2178 #include <stdlib.h>
2179 #include <stddef.h>
2180 #endif
2181 #include <signal.h>
2182 #include "confdefs.h"
2183                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2184         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2185         AC_MSG_RESULT(no))
2187 olibs="$LIBS"
2188 AC_MSG_CHECKING(--with-tlib argument)
2189 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2190 if test -n "$with_tlib"; then
2191   AC_MSG_RESULT($with_tlib)
2192   LIBS="$LIBS -l$with_tlib"
2193   AC_MSG_CHECKING(for linking with $with_tlib library)
2194   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2195   dnl Need to check for tgetent() below.
2196   olibs="$LIBS"
2197 else
2198   AC_MSG_RESULT([empty: automatic terminal library selection])
2199   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2200   dnl  curses, because curses is much slower.
2201   dnl  Newer versions of ncurses are preferred over anything.
2202   dnl  Older versions of ncurses have bugs, get a new one!
2203   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2204   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2205   case "`uname -s 2>/dev/null`" in
2206         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2207         *)      tlibs="ncurses termlib termcap curses";;
2208   esac
2209   for libname in $tlibs; do
2210     AC_CHECK_LIB(${libname}, tgetent,,)
2211     if test "x$olibs" != "x$LIBS"; then
2212       dnl It's possible that a library is found but it doesn't work
2213       dnl e.g., shared library that cannot be found
2214       dnl compile and run a test program to be sure
2215       AC_TRY_RUN([
2216 #ifdef HAVE_TERMCAP_H
2217 # include <termcap.h>
2218 #endif
2219 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2220                           res="OK", res="FAIL", res="FAIL")
2221       if test "$res" = "OK"; then
2222         break
2223       fi
2224       AC_MSG_RESULT($libname library is not usable)
2225       LIBS="$olibs"
2226     fi
2227   done
2228   if test "x$olibs" = "x$LIBS"; then
2229     AC_MSG_RESULT(no terminal library found)
2230   fi
2233 if test "x$olibs" = "x$LIBS"; then
2234   AC_MSG_CHECKING([for tgetent()])
2235   AC_TRY_LINK([],
2236       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2237         AC_MSG_RESULT(yes),
2238         AC_MSG_ERROR([NOT FOUND!
2239       You need to install a terminal library; for example ncurses.
2240       Or specify the name of the library with --with-tlib.]))
2243 AC_MSG_CHECKING(whether we talk terminfo)
2244 AC_TRY_RUN([
2245 #ifdef HAVE_TERMCAP_H
2246 # include <termcap.h>
2247 #endif
2248 main()
2249 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2250           AC_MSG_RESULT([no -- we are in termcap land]),
2251           AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2252           AC_MSG_ERROR(failed to compile test program.))
2254 if test "x$olibs" != "x$LIBS"; then
2255   AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2256   AC_TRY_RUN([
2257 #ifdef HAVE_TERMCAP_H
2258 # include <termcap.h>
2259 #endif
2260 main()
2261 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2262           AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2263           AC_MSG_RESULT(non-zero),
2264           AC_MSG_ERROR(failed to compile test program.))
2267 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2268 AC_TRY_LINK([
2269 #ifdef HAVE_TERMCAP_H
2270 # include <termcap.h>
2271 #endif
2272                         ], [ospeed = 20000],
2273         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2274         [AC_MSG_RESULT(no)
2275         AC_MSG_CHECKING(whether ospeed can be extern)
2276         AC_TRY_LINK([
2277 #ifdef HAVE_TERMCAP_H
2278 # include <termcap.h>
2279 #endif
2280 extern short ospeed;
2281                         ], [ospeed = 20000],
2282                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2283                 AC_MSG_RESULT(no))]
2284         )
2286 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2287 AC_TRY_LINK([
2288 #ifdef HAVE_TERMCAP_H
2289 # include <termcap.h>
2290 #endif
2291                         ], [if (UP == 0 && BC == 0) PC = 1],
2292         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2293         [AC_MSG_RESULT(no)
2294         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2295         AC_TRY_LINK([
2296 #ifdef HAVE_TERMCAP_H
2297 # include <termcap.h>
2298 #endif
2299 extern char *UP, *BC, PC;
2300                         ], [if (UP == 0 && BC == 0) PC = 1],
2301                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2302                 AC_MSG_RESULT(no))]
2303         )
2305 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2306 AC_TRY_COMPILE([
2307 #ifdef HAVE_TERMCAP_H
2308 # include <termcap.h>
2309 #endif
2310                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2311         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2312         AC_MSG_RESULT(no))
2314 dnl On some SCO machines sys/select redefines struct timeval
2315 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2316 AC_TRY_COMPILE([
2317 #include <sys/types.h>
2318 #include <sys/time.h>
2319 #include <sys/select.h>], ,
2320           AC_MSG_RESULT(yes)
2321                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2322           AC_MSG_RESULT(no))
2324 dnl AC_DECL_SYS_SIGLIST
2326 dnl Checks for pty.c (copied from screen) ==========================
2327 AC_MSG_CHECKING(for /dev/ptc)
2328 if test -r /dev/ptc; then
2329   AC_DEFINE(HAVE_DEV_PTC)
2330   AC_MSG_RESULT(yes)
2331 else
2332   AC_MSG_RESULT(no)
2335 AC_MSG_CHECKING(for SVR4 ptys)
2336 if test -c /dev/ptmx ; then
2337   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2338         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2339         AC_MSG_RESULT(no))
2340 else
2341   AC_MSG_RESULT(no)
2344 AC_MSG_CHECKING(for ptyranges)
2345 if test -d /dev/ptym ; then
2346   pdir='/dev/ptym'
2347 else
2348   pdir='/dev'
2350 dnl SCO uses ptyp%d
2351 AC_EGREP_CPP(yes,
2352 [#ifdef M_UNIX
2353    yes;
2354 #endif
2355         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2356 dnl if test -c /dev/ptyp19; then
2357 dnl ptys=`echo /dev/ptyp??`
2358 dnl else
2359 dnl ptys=`echo $pdir/pty??`
2360 dnl fi
2361 if test "$ptys" != "$pdir/pty??" ; then
2362   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2363   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2364   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2365   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2366   AC_MSG_RESULT([$p0 / $p1])
2367 else
2368   AC_MSG_RESULT([don't know])
2371 dnl    ****  pty mode/group handling ****
2373 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2374 AC_MSG_CHECKING(default tty permissions/group)
2375 rm -f conftest_grp
2376 AC_TRY_RUN([
2377 #include <sys/types.h>
2378 #include <sys/stat.h>
2379 #include <stdio.h>
2380 main()
2382   struct stat sb;
2383   char *x,*ttyname();
2384   int om, m;
2385   FILE *fp;
2387   if (!(x = ttyname(0))) exit(1);
2388   if (stat(x, &sb)) exit(1);
2389   om = sb.st_mode;
2390   if (om & 002) exit(0);
2391   m = system("mesg y");
2392   if (m == -1 || m == 127) exit(1);
2393   if (stat(x, &sb)) exit(1);
2394   m = sb.st_mode;
2395   if (chmod(x, om)) exit(1);
2396   if (m & 002) exit(0);
2397   if (sb.st_gid == getgid()) exit(1);
2398   if (!(fp=fopen("conftest_grp", "w")))
2399     exit(1);
2400   fprintf(fp, "%d\n", sb.st_gid);
2401   fclose(fp);
2402   exit(0);
2405     if test -f conftest_grp; then
2406         ptygrp=`cat conftest_grp`
2407         AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2408         AC_DEFINE(PTYMODE, 0620)
2409         AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2410     else
2411         AC_MSG_RESULT([ptys are world accessable])
2412     fi
2414     AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2415     AC_MSG_ERROR(failed to compile test program))
2416 rm -f conftest_grp
2418 dnl Checks for library functions. ===================================
2420 AC_TYPE_SIGNAL
2422 dnl find out what to use at the end of a signal function
2423 if test $ac_cv_type_signal = void; then
2424   AC_DEFINE(SIGRETURN, [return])
2425 else
2426   AC_DEFINE(SIGRETURN, [return 0])
2429 dnl check if struct sigcontext is defined (used for SGI only)
2430 AC_MSG_CHECKING(for struct sigcontext)
2431 AC_TRY_COMPILE([
2432 #include <signal.h>
2433 test_sig()
2435     struct sigcontext *scont;
2436     scont = (struct sigcontext *)0;
2437     return 1;
2438 } ], ,
2439           AC_MSG_RESULT(yes)
2440                 AC_DEFINE(HAVE_SIGCONTEXT),
2441           AC_MSG_RESULT(no))
2443 dnl tricky stuff: try to find out if getcwd() is implemented with
2444 dnl system("sh -c pwd")
2445 AC_MSG_CHECKING(getcwd implementation)
2446 AC_TRY_RUN([
2447 char *dagger[] = { "IFS=pwd", 0 };
2448 main()
2450   char buffer[500];
2451   extern char **environ;
2452   environ = dagger;
2453   return getcwd(buffer, 500) ? 0 : 1;
2455         AC_MSG_RESULT(it is usable),
2456         AC_MSG_RESULT(it stinks)
2457                 AC_DEFINE(BAD_GETCWD),
2458         AC_MSG_ERROR(failed to compile test program))
2460 dnl Check for functions in one big call, to reduce the size of configure
2461 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2462         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2463         memset nanosleep opendir putenv qsort readlink select setenv \
2464         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2465         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2466         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2467         usleep utime utimes)
2469 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2470 AC_MSG_CHECKING(for st_blksize)
2471 AC_TRY_COMPILE(
2472 [#include <sys/types.h>
2473 #include <sys/stat.h>],
2474 [       struct stat st;
2475         int n;
2477         stat("/", &st);
2478         n = (int)st.st_blksize;],
2479         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2480         AC_MSG_RESULT(no))
2482 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2483 AC_TRY_RUN(
2484 [#include <sys/types.h>
2485 #include <sys/stat.h>
2486 main() {struct stat st;  exit(stat("configure/", &st) != 0); }],
2487         AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2488         AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2490 dnl Link with iconv for charset translation, if not found without library.
2491 dnl check for iconv() requires including iconv.h
2492 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2493 dnl has been installed.
2494 AC_MSG_CHECKING(for iconv_open())
2495 save_LIBS="$LIBS"
2496 LIBS="$LIBS -liconv"
2497 AC_TRY_LINK([
2498 #ifdef HAVE_ICONV_H
2499 # include <iconv.h>
2500 #endif
2501     ], [iconv_open("fr", "to");],
2502     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2503     LIBS="$save_LIBS"
2504     AC_TRY_LINK([
2505 #ifdef HAVE_ICONV_H
2506 # include <iconv.h>
2507 #endif
2508         ], [iconv_open("fr", "to");],
2509         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2510         AC_MSG_RESULT(no)))
2513 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2514 AC_TRY_LINK([
2515 #ifdef HAVE_LANGINFO_H
2516 # include <langinfo.h>
2517 #endif
2518 ], [char *cs = nl_langinfo(CODESET);],
2519         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2520         AC_MSG_RESULT(no))
2522 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2523 dnl when -lacl works, also try to use -lattr (required for Debian).
2524 AC_MSG_CHECKING(--disable-acl argument)
2525 AC_ARG_ENABLE(acl,
2526         [  --disable-acl           Don't check for ACL support.],
2527         , [enable_acl="yes"])
2528 if test "$enable_acl" = "yes"; then
2529 AC_MSG_RESULT(no)
2530 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2531         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2532                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2534 AC_MSG_CHECKING(for POSIX ACL support)
2535 AC_TRY_LINK([
2536 #include <sys/types.h>
2537 #ifdef HAVE_SYS_ACL_H
2538 # include <sys/acl.h>
2539 #endif
2540 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2541         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2542         acl_free(acl);],
2543         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2544         AC_MSG_RESULT(no))
2546 AC_MSG_CHECKING(for Solaris ACL support)
2547 AC_TRY_LINK([
2548 #ifdef HAVE_SYS_ACL_H
2549 # include <sys/acl.h>
2550 #endif], [acl("foo", GETACLCNT, 0, NULL);
2551         ],
2552         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2553         AC_MSG_RESULT(no))
2555 AC_MSG_CHECKING(for AIX ACL support)
2556 AC_TRY_LINK([
2557 #ifdef HAVE_SYS_ACL_H
2558 # include <sys/acl.h>
2559 #endif
2560 #ifdef HAVE_SYS_ACCESS_H
2561 # include <sys/access.h>
2562 #endif
2563 #define _ALL_SOURCE
2565 #include <sys/stat.h>
2567 int aclsize;
2568 struct acl *aclent;], [aclsize = sizeof(struct acl);
2569         aclent = (void *)malloc(aclsize);
2570         statacl("foo", STX_NORMAL, aclent, aclsize);
2571         ],
2572         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2573         AC_MSG_RESULT(no))
2574 else
2575   AC_MSG_RESULT(yes)
2578 AC_MSG_CHECKING(--disable-gpm argument)
2579 AC_ARG_ENABLE(gpm,
2580         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2581         [enable_gpm="yes"])
2583 if test "$enable_gpm" = "yes"; then
2584   AC_MSG_RESULT(no)
2585   dnl Checking if gpm support can be compiled
2586   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2587         [olibs="$LIBS" ; LIBS="-lgpm"]
2588         AC_TRY_LINK(
2589             [#include <gpm.h>
2590             #include <linux/keyboard.h>],
2591             [Gpm_GetLibVersion(NULL);],
2592             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2593             dnl FEAT_MOUSE_GPM if mouse support is included
2594             [vi_cv_have_gpm=yes],
2595             [vi_cv_have_gpm=no])
2596         [LIBS="$olibs"]
2597     )
2598   if test $vi_cv_have_gpm = yes; then
2599     LIBS="$LIBS -lgpm"
2600     AC_DEFINE(HAVE_GPM)
2601   fi
2602 else
2603   AC_MSG_RESULT(yes)
2606 dnl rename needs to be checked separately to work on Nextstep with cc
2607 AC_MSG_CHECKING(for rename)
2608 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2609         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2610         AC_MSG_RESULT(no))
2612 dnl sysctl() may exist but not the arguments we use
2613 AC_MSG_CHECKING(for sysctl)
2614 AC_TRY_COMPILE(
2615 [#include <sys/types.h>
2616 #include <sys/sysctl.h>],
2617 [       int mib[2], r;
2618         size_t len;
2620         mib[0] = CTL_HW;
2621         mib[1] = HW_USERMEM;
2622         len = sizeof(r);
2623         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2624         ],
2625         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2626         AC_MSG_RESULT(not usable))
2628 dnl sysinfo() may exist but not be Linux compatible
2629 AC_MSG_CHECKING(for sysinfo)
2630 AC_TRY_COMPILE(
2631 [#include <sys/types.h>
2632 #include <sys/sysinfo.h>],
2633 [       struct sysinfo sinfo;
2634         int t;
2636         (void)sysinfo(&sinfo);
2637         t = sinfo.totalram;
2638         ],
2639         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2640         AC_MSG_RESULT(not usable))
2642 dnl struct sysinfo may have the mem_unit field or not
2643 AC_MSG_CHECKING(for sysinfo.mem_unit)
2644 AC_TRY_COMPILE(
2645 [#include <sys/types.h>
2646 #include <sys/sysinfo.h>],
2647 [       struct sysinfo sinfo;
2648         sinfo.mem_unit = 1;
2649         ],
2650         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2651         AC_MSG_RESULT(no))
2653 dnl sysconf() may exist but not support what we want to use
2654 AC_MSG_CHECKING(for sysconf)
2655 AC_TRY_COMPILE(
2656 [#include <unistd.h>],
2657 [       (void)sysconf(_SC_PAGESIZE);
2658         (void)sysconf(_SC_PHYS_PAGES);
2659         ],
2660         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2661         AC_MSG_RESULT(not usable))
2663 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2664 dnl be printed with "%d", and avoids a warning for cross-compiling.
2666 AC_MSG_CHECKING(size of int)
2667 AC_CACHE_VAL(ac_cv_sizeof_int,
2668         [AC_TRY_RUN([#include <stdio.h>
2669                 main()
2670                 {
2671                   FILE *f=fopen("conftestval", "w");
2672                   if (!f) exit(1);
2673                   fprintf(f, "%d\n", (int)sizeof(int));
2674                   exit(0);
2675                 }],
2676             ac_cv_sizeof_int=`cat conftestval`,
2677             ac_cv_sizeof_int=0,
2678             AC_MSG_ERROR(failed to compile test program))])
2679 AC_MSG_RESULT($ac_cv_sizeof_int)
2680 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2682 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2683 [bcopy_test_prog='
2684 main() {
2685   char buf[10];
2686   strcpy(buf, "abcdefghi");
2687   mch_memmove(buf, buf + 2, 3);
2688   if (strncmp(buf, "ababcf", 6))
2689     exit(1);
2690   strcpy(buf, "abcdefghi");
2691   mch_memmove(buf + 2, buf, 3);
2692   if (strncmp(buf, "cdedef", 6))
2693     exit(1);
2694   exit(0); /* libc version works properly.  */
2697 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2698 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2700 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2701     AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2702     AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2703         AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2704         AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2705             AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2706             AC_MSG_ERROR(failed to compile test program)),
2707         AC_MSG_ERROR(failed to compile test program)),
2708     AC_MSG_ERROR(failed to compile test program))
2710 dnl Check for multibyte locale functions
2711 dnl Find out if _Xsetlocale() is supported by libX11.
2712 dnl Check if X_LOCALE should be defined.
2714 if test "$enable_multibyte" = "yes"; then
2715   cflags_save=$CFLAGS
2716   ldflags_save=$LDFLAGS
2717   if test -n "$x_includes" ; then
2718     CFLAGS="$CFLAGS -I$x_includes"
2719     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2720     AC_MSG_CHECKING(whether X_LOCALE needed)
2721     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2722         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2723                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2724         AC_MSG_RESULT(no))
2725   fi
2726   CFLAGS=$cflags_save
2727   LDFLAGS=$ldflags_save
2730 dnl Link with xpg4, it is said to make Korean locale working
2731 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2733 dnl Check how we can run ctags
2734 dnl --version for Exuberant ctags (preferred)
2735 dnl       Add --fields=+S to get function signatures for omni completion.
2736 dnl -t for typedefs (many ctags have this)
2737 dnl -s for static functions (Elvis ctags only?)
2738 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2739 dnl -i+m to test for older Exuberant ctags
2740 AC_MSG_CHECKING(how to create tags)
2741 test -f tags && mv tags tags.save
2742 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2743   TAGPRG="ctags -I INIT+ --fields=+S"
2744 else
2745   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2746   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2747   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2748   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2749   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2750   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2751   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2753 test -f tags.save && mv tags.save tags
2754 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2756 dnl Check how we can run man with a section number
2757 AC_MSG_CHECKING(how to run man with a section nr)
2758 MANDEF="man"
2759 (eval man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2760 AC_MSG_RESULT($MANDEF)
2761 if test "$MANDEF" = "man -s"; then
2762   AC_DEFINE(USEMAN_S)
2765 dnl Check if gettext() is working and if it needs -lintl
2766 AC_MSG_CHECKING(--disable-nls argument)
2767 AC_ARG_ENABLE(nls,
2768         [  --disable-nls           Don't support NLS (gettext()).], ,
2769         [enable_nls="yes"])
2771 if test "$enable_nls" = "yes"; then
2772   AC_MSG_RESULT(no)
2774   INSTALL_LANGS=install-languages
2775   AC_SUBST(INSTALL_LANGS)
2776   INSTALL_TOOL_LANGS=install-tool-languages
2777   AC_SUBST(INSTALL_TOOL_LANGS)
2779   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2780   AC_MSG_CHECKING([for NLS])
2781   if test -f po/Makefile; then
2782     have_gettext="no"
2783     if test -n "$MSGFMT"; then
2784       AC_TRY_LINK(
2785         [#include <libintl.h>],
2786         [gettext("Test");],
2787         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2788           olibs=$LIBS
2789           LIBS="$LIBS -lintl"
2790           AC_TRY_LINK(
2791               [#include <libintl.h>],
2792               [gettext("Test");],
2793               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2794               AC_MSG_RESULT([gettext() doesn't work]);
2795               LIBS=$olibs))
2796     else
2797       AC_MSG_RESULT([msgfmt not found - disabled]);
2798     fi
2799     if test $have_gettext = "yes"; then
2800       AC_DEFINE(HAVE_GETTEXT)
2801       MAKEMO=yes
2802       AC_SUBST(MAKEMO)
2803       dnl this was added in GNU gettext 0.10.36
2804       AC_CHECK_FUNCS(bind_textdomain_codeset)
2805       dnl _nl_msg_cat_cntr is required for GNU gettext
2806       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2807       AC_TRY_LINK(
2808                 [#include <libintl.h>
2809                 extern int _nl_msg_cat_cntr;],
2810                 [++_nl_msg_cat_cntr;],
2811                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2812                 AC_MSG_RESULT([no]))
2813     fi
2814   else
2815     AC_MSG_RESULT([no "po/Makefile" - disabled]);
2816   fi
2817 else
2818   AC_MSG_RESULT(yes)
2821 dnl Check for dynamic linking loader
2822 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2823 if test x${DLL} = xdlfcn.h; then
2824   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2825   AC_MSG_CHECKING([for dlopen()])
2826   AC_TRY_LINK(,[
2827                 extern void* dlopen();
2828                 dlopen();
2829       ],
2830       AC_MSG_RESULT(yes);
2831               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2832       AC_MSG_RESULT(no);
2833               AC_MSG_CHECKING([for dlopen() in -ldl])
2834               olibs=$LIBS
2835               LIBS="$LIBS -ldl"
2836               AC_TRY_LINK(,[
2837                                 extern void* dlopen();
2838                                 dlopen();
2839                  ],
2840                  AC_MSG_RESULT(yes);
2841                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2842                  AC_MSG_RESULT(no);
2843                           LIBS=$olibs))
2844   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2845   dnl ick :-)
2846   AC_MSG_CHECKING([for dlsym()])
2847   AC_TRY_LINK(,[
2848                 extern void* dlsym();
2849                 dlsym();
2850       ],
2851       AC_MSG_RESULT(yes);
2852               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2853       AC_MSG_RESULT(no);
2854               AC_MSG_CHECKING([for dlsym() in -ldl])
2855               olibs=$LIBS
2856               LIBS="$LIBS -ldl"
2857               AC_TRY_LINK(,[
2858                                 extern void* dlsym();
2859                                 dlsym();
2860                  ],
2861                  AC_MSG_RESULT(yes);
2862                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2863                  AC_MSG_RESULT(no);
2864                           LIBS=$olibs))
2865 elif test x${DLL} = xdl.h; then
2866   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2867   AC_MSG_CHECKING([for shl_load()])
2868   AC_TRY_LINK(,[
2869                 extern void* shl_load();
2870                 shl_load();
2871      ],
2872      AC_MSG_RESULT(yes);
2873           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2874      AC_MSG_RESULT(no);
2875           AC_MSG_CHECKING([for shl_load() in -ldld])
2876           olibs=$LIBS
2877           LIBS="$LIBS -ldld"
2878           AC_TRY_LINK(,[
2879                         extern void* shl_load();
2880                         shl_load();
2881              ],
2882              AC_MSG_RESULT(yes);
2883                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2884              AC_MSG_RESULT(no);
2885                   LIBS=$olibs))
2887 AC_CHECK_HEADERS(setjmp.h)
2889 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2890   dnl -ldl must come after DynaLoader.a
2891   if echo $LIBS | grep -e '-ldl' >/dev/null; then
2892     LIBS=`echo $LIBS | sed s/-ldl//`
2893     PERL_LIBS="$PERL_LIBS -ldl"
2894   fi
2897 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2898         && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
2899   AC_MSG_CHECKING(whether we need -framework Carbon)
2900   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2901   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2902         || test "x$features" = "xhuge"; then
2903     LIBS="$LIBS -framework Carbon"
2904     AC_MSG_RESULT(yes)
2905   else
2906     AC_MSG_RESULT(no)
2907   fi
2909 if test "x$MACARCH" = "xboth"; then
2910   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2913 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
2914 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2915 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2916 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2917 dnl the number before the version number.
2918 AC_MSG_CHECKING(for GCC 3 or later)
2919 DEPEND_CFLAGS_FILTER=
2920 if test "$GCC" = yes; then
2921   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2922   if test "$gccmajor" -gt "2"; then
2923     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2924   fi
2926 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2927   AC_MSG_RESULT(no)
2928 else
2929   AC_MSG_RESULT(yes)
2931 AC_SUBST(DEPEND_CFLAGS_FILTER)
2933 dnl write output files
2934 AC_OUTPUT(auto/config.mk:config.mk.in)
2936 dnl vim: set sw=2 tw=78 fo+=l: