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