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