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