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