Merged from the latest developing branch.
[MacVim.git] / src / configure.in
blobfa58c6e75014df07a4ae96249aa76314f63a0e9b
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 Check for standard headers.  We don't use this in Vim but other stuff
27 dnl in autoconf needs it, where it uses STDC_HEADERS.
28 AC_HEADER_STDC
29 AC_HEADER_SYS_WAIT
31 dnl Set default value for CFLAGS if none is defined or it's empty
32 if test -z "$CFLAGS"; then
33   CFLAGS="-O"
34   test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
36 if test "$GCC" = yes; then
37   dnl method that should work for nearly all versions
38   gccversion=`"$CC" -dumpversion`
39   if test "x$gccversion" = "x"; then
40     dnl old method; fall-back for when -dumpversion doesn't work
41     gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
42   fi
43   dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
44   if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
45     echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
46     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
47   else
48     if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
49       echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
50       CFLAGS="$CFLAGS -fno-strength-reduce"
51     fi
52   fi
55 dnl If configure thinks we are cross compiling, there might be something
56 dnl wrong with the CC or CFLAGS settings, give a useful warning message
57 if test "$cross_compiling" = yes; then
58   AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
61 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
62 dnl But gcc 3.1 changed the meaning!  See near the end.
63 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
65 if test -f ./toolcheck; then
66   AC_CHECKING(for buggy tools)
67   sh ./toolcheck 1>&AC_FD_MSG
70 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
72 dnl Check for BeOS, which needs an extra source file
73 AC_MSG_CHECKING(for BeOS)
74 case `uname` in
75     BeOS)       OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
76                 BEOS=yes; AC_MSG_RESULT(yes);;
77     *)          BEOS=no; AC_MSG_RESULT(no);;
78 esac
80 dnl If QNX is found, assume we don't want to use Xphoton
81 dnl unless it was specifically asked for (--with-x)
82 AC_MSG_CHECKING(for QNX)
83 case `uname` in
84     QNX)        OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
85                 test -z "$with_x" && with_x=no
86                 QNX=yes; AC_MSG_RESULT(yes);;
87     *)          QNX=no; AC_MSG_RESULT(no);;
88 esac
90 dnl Check for Darwin and MacOS X
91 dnl We do a check for MacOS X in the very beginning because there
92 dnl are a lot of other things we need to change besides GUI stuff
93 AC_MSG_CHECKING([for Darwin (Mac OS X)])
94 if test "`(uname) 2>/dev/null`" = Darwin; then
95   AC_MSG_RESULT(yes)
97   AC_MSG_CHECKING(--disable-darwin argument)
98   AC_ARG_ENABLE(darwin,
99           [  --disable-darwin        Disable Darwin (Mac OS X) support.],
100           , [enable_darwin="yes"])
101   if test "$enable_darwin" = "yes"; then
102     AC_MSG_RESULT(no)
103     AC_MSG_CHECKING(if Darwin files are there)
104     if test -f os_macosx.c; then
105       AC_MSG_RESULT(yes)
106     else
107       AC_MSG_RESULT([no, Darwin support disabled])
108       enable_darwin=no
109     fi
110   else
111     AC_MSG_RESULT([yes, Darwin support excluded])
112   fi
114   AC_MSG_CHECKING(--with-mac-arch argument)
115   AC_ARG_WITH(mac-arch, [  --with-mac-arch=ARCH    current, intel, ppc or both],
116         MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
117         MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
119   if test "x$MACARCH" = "xboth"; then
120     AC_MSG_CHECKING(for 10.4 universal SDK)
121     dnl There is a terrible inconsistency (but we appear to get away with it):
122     dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
123     dnl doesn't, because "gcc -E" doesn't grok it.  That means the configure
124     dnl tests using the preprocessor are actually done with the wrong header
125     dnl files. $LDFLAGS is set at the end, because configure uses it together
126     dnl with $CFLAGS and we can only have one -sysroot argument.
127     save_cppflags="$CPPFLAGS"
128     save_cflags="$CFLAGS"
129     save_ldflags="$LDFLAGS"
130     CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
131     AC_TRY_LINK([ ], [ ],
132         AC_MSG_RESULT(found, will make universal binary),
134         AC_MSG_RESULT(not found)
135         CFLAGS="$save_cflags"
136         AC_MSG_CHECKING(if Intel architecture is supported)
137         CPPFLAGS="$CPPFLAGS -arch i386"
138         LDFLAGS="$save_ldflags -arch i386"
139         AC_TRY_LINK([ ], [ ],
140             AC_MSG_RESULT(yes); MACARCH="intel",
141             AC_MSG_RESULT(no, using PowerPC)
142                 MACARCH="ppc"
143                 CPPFLAGS="$save_cppflags -arch ppc"
144                 LDFLAGS="$save_ldflags -arch ppc"))
145   elif test "x$MACARCH" = "xintel"; then
146     CPPFLAGS="$CPPFLAGS -arch intel"
147     LDFLAGS="$LDFLAGS -arch intel"
148   elif test "x$MACARCH" = "xppc"; then
149     CPPFLAGS="$CPPFLAGS -arch ppc"
150     LDFLAGS="$LDFLAGS -arch ppc"
151   fi
153   if test "$enable_darwin" = "yes"; then
154     MACOSX=yes
155     OS_EXTRA_SRC="os_macosx.c os_mac_conv.c";
156     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
157     dnl TODO: use -arch i386 on Intel machines
158     CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
159     if test "x$MACARCH" = "xboth"; then
160       CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
161     else
162       CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
163     fi
165     dnl If Carbon is found, assume we don't want X11
166     dnl unless it was specifically asked for (--with-x)
167     dnl or Motif, Athena or GTK GUI is used.
168     AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
169     if test "x$CARBON" = "xyes"; then
170       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
171         with_x=no
172       fi
173     fi
174   fi
176   dnl Avoid a bug with -O2 with gcc 4.0.1.  Symptom: malloc() reports double
177   dnl free.  This happens in expand_filename(), because the optimizer swaps
178   dnl two blocks of code, both using "repl", that can't be swapped.
179   if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
180     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
181   fi
183 else
184   AC_MSG_RESULT(no)
187 AC_SUBST(OS_EXTRA_SRC)
188 AC_SUBST(OS_EXTRA_OBJ)
190 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
191 dnl Only when the directory exists and it wasn't there yet.
192 dnl For gcc don't do this when it is already in the default search path.
193 dnl Skip all of this when cross-compiling.
194 if test "$cross_compiling" = no; then
195   AC_MSG_CHECKING(--with-local-dir argument)
196   have_local_include=''
197   have_local_lib=''
198   AC_ARG_WITH([local-dir], [  --with-local-dir=PATH   search PATH instead of /usr/local for local libraries.
199   --without-local-dir     do not search /usr/local for local libraries.], [
200     local_dir="$withval"
201     case "$withval" in
202     */*) ;;
203     no)
204       # avoid adding local dir to LDFLAGS and CPPFLAGS
205       have_local_dir=yes
206       have_local_lib=yes
207       ;;
208     *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
209     esac
210         AC_MSG_RESULT($local_dir)
211   ], [
212     local_dir=/usr/local
213     AC_MSG_RESULT(Defaulting to $local_dir)
214   ])
215   if test "$GCC" = yes -a "$local_dir" != no; then
216     echo 'void f(){}' > conftest.c
217     dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
218     have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
219     have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
220     rm -f conftest.c conftest.o
221   fi
222   if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
223     tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
224     if test "$tt" = "$LDFLAGS"; then
225       LDFLAGS="$LDFLAGS -L${local_dir}/lib"
226     fi
227   fi
228   if test -z "$have_local_include" -a -d "${local_dir}/include"; then
229     tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
230     if test "$tt" = "$CPPFLAGS"; then
231       CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
232     fi
233   fi
236 AC_MSG_CHECKING(--with-vim-name argument)
237 AC_ARG_WITH(vim-name, [  --with-vim-name=NAME    what to call the Vim executable],
238         VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
239         VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
240 AC_SUBST(VIMNAME)
241 AC_MSG_CHECKING(--with-ex-name argument)
242 AC_ARG_WITH(ex-name, [  --with-ex-name=NAME     what to call the Ex executable],
243         EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
244         EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
245 AC_SUBST(EXNAME)
246 AC_MSG_CHECKING(--with-view-name argument)
247 AC_ARG_WITH(view-name, [  --with-view-name=NAME   what to call the View executable],
248         VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
249         VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
250 AC_SUBST(VIEWNAME)
252 AC_MSG_CHECKING(--with-global-runtime argument)
253 AC_ARG_WITH(global-runtime, [  --with-global-runtime=DIR    global runtime directory in 'runtimepath'],
254         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
255         AC_MSG_RESULT(no))
257 AC_MSG_CHECKING(--with-modified-by argument)
258 AC_ARG_WITH(modified-by, [  --with-modified-by=NAME       name of who modified a release version],
259         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
260         AC_MSG_RESULT(no))
262 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
263 AC_MSG_CHECKING(if character set is EBCDIC)
264 AC_TRY_COMPILE([ ],
265 [ /* TryCompile function for CharSet.
266    Treat any failure as ASCII for compatibility with existing art.
267    Use compile-time rather than run-time tests for cross-compiler
268    tolerance.  */
269 #if '0'!=240
270 make an error "Character set is not EBCDIC"
271 #endif ],
272 [ # TryCompile action if true
273 cf_cv_ebcdic=yes ],
274 [ # TryCompile action if false
275 cf_cv_ebcdic=no])
276 # end of TryCompile ])
277 # end of CacheVal CvEbcdic
278 AC_MSG_RESULT($cf_cv_ebcdic)
279 case "$cf_cv_ebcdic" in  #(vi
280     yes)        AC_DEFINE(EBCDIC)
281                 line_break='"\\n"'
282                 ;;
283     *)          line_break='"\\012"';;
284 esac
285 AC_SUBST(line_break)
287 if test "$cf_cv_ebcdic" = "yes"; then
288 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
289 AC_MSG_CHECKING(for OS/390 Unix)
290 case `uname` in
291     OS/390)     OS390Unix="yes";
292                 dnl If using cc the environment variable _CC_CCMODE must be
293                 dnl set to "1", so that some compiler extensions are enabled.
294                 dnl If using c89 the environment variable is named _CC_C89MODE.
295                 dnl Note: compile with c89 never tested.
296                 if test "$CC" = "cc"; then
297                   ccm="$_CC_CCMODE"
298                   ccn="CC"
299                 else
300                   if test "$CC" = "c89"; then
301                     ccm="$_CC_C89MODE"
302                     ccn="C89"
303                   else
304                     ccm=1
305                   fi
306                 fi
307                 if test "$ccm" != "1"; then
308                   echo ""
309                   echo "------------------------------------------"
310                   echo " On OS/390 Unix, the environment variable"
311                   echo " __CC_${ccn}MODE must be set to \"1\"!"
312                   echo " Do:"
313                   echo "    export _CC_${ccn}MODE=1"
314                   echo " and then call configure again."
315                   echo "------------------------------------------"
316                   exit 1
317                 fi
318                 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
319                 AC_MSG_RESULT(yes)
320                 ;;
321     *)          OS390Unix="no";
322                 AC_MSG_RESULT(no)
323                 ;;
324 esac
327 dnl Link with -lselinux for SELinux stuff; if not found
328 AC_MSG_CHECKING(--disable-selinux argument)
329 AC_ARG_ENABLE(selinux,
330         [  --disable-selinux      Don't check for SELinux support.],
331         , enable_selinux="yes")
332 if test "$enable_selinux" = "yes"; then
333   AC_MSG_RESULT(no)
334   AC_CHECK_LIB(selinux, is_selinux_enabled,
335           [LIBS="$LIBS -lselinux"
336            AC_DEFINE(HAVE_SELINUX)])
337 else
338    AC_MSG_RESULT(yes)
341 dnl Check user requested features.
343 AC_MSG_CHECKING(--with-features argument)
344 AC_ARG_WITH(features, [  --with-features=TYPE    tiny, small, normal, big or huge (default: normal)],
345         features="$withval"; AC_MSG_RESULT($features),
346         features="normal"; AC_MSG_RESULT(Defaulting to normal))
348 dovimdiff=""
349 dogvimdiff=""
350 case "$features" in
351   tiny)         AC_DEFINE(FEAT_TINY) ;;
352   small)        AC_DEFINE(FEAT_SMALL) ;;
353   normal)       AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
354                         dogvimdiff="installgvimdiff" ;;
355   big)          AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
356                         dogvimdiff="installgvimdiff" ;;
357   huge)         AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
358                         dogvimdiff="installgvimdiff" ;;
359   *)            AC_MSG_RESULT([Sorry, $features is not supported]) ;;
360 esac
362 AC_SUBST(dovimdiff)
363 AC_SUBST(dogvimdiff)
365 AC_MSG_CHECKING(--with-compiledby argument)
366 AC_ARG_WITH(compiledby, [  --with-compiledby=NAME  name to show in :version message],
367         compiledby="$withval"; AC_MSG_RESULT($withval),
368         compiledby=""; AC_MSG_RESULT(no))
369 AC_SUBST(compiledby)
371 AC_MSG_CHECKING(--disable-xsmp argument)
372 AC_ARG_ENABLE(xsmp,
373         [  --disable-xsmp          Disable XSMP session management],
374         , enable_xsmp="yes")
376 if test "$enable_xsmp" = "yes"; then
377   AC_MSG_RESULT(no)
378   AC_MSG_CHECKING(--disable-xsmp-interact argument)
379   AC_ARG_ENABLE(xsmp-interact,
380           [  --disable-xsmp-interact Disable XSMP interaction],
381           , enable_xsmp_interact="yes")
382   if test "$enable_xsmp_interact" = "yes"; then
383     AC_MSG_RESULT(no)
384     AC_DEFINE(USE_XSMP_INTERACT)
385   else
386     AC_MSG_RESULT(yes)
387   fi
388 else
389   AC_MSG_RESULT(yes)
392 dnl Check for MzScheme feature.
393 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
394 AC_ARG_ENABLE(mzschemeinterp,
395         [  --enable-mzschemeinterp   Include MzScheme interpreter.], ,
396         [enable_mzschemeinterp="no"])
397 AC_MSG_RESULT($enable_mzschemeinterp)
399 if test "$enable_mzschemeinterp" = "yes"; then
400   dnl -- find the mzscheme executable
401   AC_SUBST(vi_cv_path_mzscheme)
403   AC_MSG_CHECKING(--with-plthome argument)
404   AC_ARG_WITH(plthome,
405         [  --with-plthome=PLTHOME   Use PLTHOME.],
406         with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
407         with_plthome="";AC_MSG_RESULT("no"))
409   if test "X$with_plthome" != "X"; then
410        vi_cv_path_mzscheme_pfx="$with_plthome"
411   else
412     AC_MSG_CHECKING(PLTHOME environment var)
413     if test "X$PLTHOME" != "X"; then
414         AC_MSG_RESULT("$PLTHOME")
415         vi_cv_path_mzscheme_pfx="$PLTHOME"
416     else
417         AC_MSG_RESULT(not set)
418         dnl -- try to find MzScheme executable
419         AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
421         dnl resolve symbolic link, the executable is often elsewhere and there
422         dnl are no links for the include files.
423         if test "X$vi_cv_path_mzscheme" != "X"; then
424           lsout=`ls -l $vi_cv_path_mzscheme`
425           if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
426             vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
427           fi
428         fi
430         if test "X$vi_cv_path_mzscheme" != "X"; then
431             dnl -- find where MzScheme thinks it was installed
432             AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
433             dnl different versions of MzScheme differ in command line processing
434             dnl use universal approach
435             echo "(display (simplify-path               \
436                (build-path (call-with-values    \
437                 (lambda () (split-path (find-system-path (quote exec-file)))) \
438                 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
439             dnl Remove a trailing slash
440             [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
441                 sed -e 's+/$++'` ])
442             rm -f mzdirs.scm
443         fi
444     fi
445   fi
447   SCHEME_INC=
448   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
449     AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
450     if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
451       SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
452       AC_MSG_RESULT(yes)
453     else
454       AC_MSG_RESULT(no)
455       AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
456       if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
457         AC_MSG_RESULT(yes)
458         SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
459       else
460         AC_MSG_RESULT(no)
461         AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
462         if test -f /usr/include/plt/scheme.h; then
463           AC_MSG_RESULT(yes)
464           SCHEME_INC=/usr/include/plt
465         else
466           AC_MSG_RESULT(no)
467           vi_cv_path_mzscheme_pfx=
468         fi
469       fi
470     fi
471   fi
473   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
474     if test "x$MACOSX" = "xyes"; then
475       MZSCHEME_LIBS="-framework PLT_MzScheme"
476     elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
477       MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
478       MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
479     elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
480       MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
481     else
482       dnl Using shared objects
483       if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
484         MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
485         MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
486       else
487         MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
488       fi
489       if test "$GCC" = yes; then
490         dnl Make Vim remember the path to the library.  For when it's not in
491         dnl $LD_LIBRARY_PATH.
492         MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
493       elif test "`(uname) 2>/dev/null`" = SunOS &&
494                                uname -r | grep '^5' >/dev/null; then
495         MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
496       fi
497     fi
498     if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
499       SCHEME_COLLECTS=lib/plt/
500     fi
501     if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
502       dnl need to generate bytecode for MzScheme base
503       MZSCHEME_EXTRA="mzscheme_base.c"
504       MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
505       MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
506     fi
507     MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
508       -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
509     MZSCHEME_SRC="if_mzsch.c"
510     MZSCHEME_OBJ="objects/if_mzsch.o"
511     MZSCHEME_PRO="if_mzsch.pro"
512     AC_DEFINE(FEAT_MZSCHEME)
513   fi
514   AC_SUBST(MZSCHEME_SRC)
515   AC_SUBST(MZSCHEME_OBJ)
516   AC_SUBST(MZSCHEME_PRO)
517   AC_SUBST(MZSCHEME_LIBS)
518   AC_SUBST(MZSCHEME_CFLAGS)
519   AC_SUBST(MZSCHEME_EXTRA)
520   AC_SUBST(MZSCHEME_MZC)
524 AC_MSG_CHECKING(--enable-perlinterp argument)
525 AC_ARG_ENABLE(perlinterp,
526         [  --enable-perlinterp     Include Perl interpreter.], ,
527         [enable_perlinterp="no"])
528 AC_MSG_RESULT($enable_perlinterp)
529 if test "$enable_perlinterp" = "yes"; then
530   AC_SUBST(vi_cv_path_perl)
531   AC_PATH_PROG(vi_cv_path_perl, perl)
532   if test "X$vi_cv_path_perl" != "X"; then
533     AC_MSG_CHECKING(Perl version)
534     if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
535      eval `$vi_cv_path_perl -V:usethreads`
536      if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
537        badthreads=no
538      else
539        if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
540          eval `$vi_cv_path_perl -V:use5005threads`
541          if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
542            badthreads=no
543          else
544            badthreads=yes
545            AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
546          fi
547        else
548          badthreads=yes
549          AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
550        fi
551      fi
552      if test $badthreads = no; then
553       AC_MSG_RESULT(OK)
554       eval `$vi_cv_path_perl -V:shrpenv`
555       if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
556         shrpenv=""
557       fi
558       vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
559       AC_SUBST(vi_cv_perllib)
560       dnl Remove "-fno-something", it breaks using cproto.
561       perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
562               -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
563       dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
564       perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
565                 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
566                         -e 's/-bE:perl.exp//' -e 's/-lc //'`
567       dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
568       dnl a test in configure may fail because of that.
569       perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
570                 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
572       dnl check that compiling a simple program still works with the flags
573       dnl added for Perl.
574       AC_MSG_CHECKING([if compile and link flags for Perl are sane])
575       cflags_save=$CFLAGS
576       libs_save=$LIBS
577       ldflags_save=$LDFLAGS
578       CFLAGS="$CFLAGS $perlcppflags"
579       LIBS="$LIBS $perllibs"
580       LDFLAGS="$perlldflags $LDFLAGS"
581       AC_TRY_LINK(,[ ],
582              AC_MSG_RESULT(yes); perl_ok=yes,
583              AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
584       CFLAGS=$cflags_save
585       LIBS=$libs_save
586       LDFLAGS=$ldflags_save
587       if test $perl_ok = yes; then
588         if test "X$perlcppflags" != "X"; then
589           dnl remove -pipe and -Wxxx, it confuses cproto
590           PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
591         fi
592         if test "X$perlldflags" != "X"; then
593           LDFLAGS="$perlldflags $LDFLAGS"
594         fi
595         PERL_LIBS=$perllibs
596         PERL_SRC="auto/if_perl.c if_perlsfio.c"
597         PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
598         PERL_PRO="if_perl.pro if_perlsfio.pro"
599         AC_DEFINE(FEAT_PERL)
600       fi
601      fi
602     else
603       AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
604     fi
605   fi
607   if test "x$MACOSX" = "xyes"; then
608     dnl Mac OS X 10.2 or later
609     dir=/System/Library/Perl
610     darwindir=$dir/darwin
611     if test -d $darwindir; then
612       PERL=/usr/bin/perl
613     else
614       dnl Mac OS X 10.3
615       dir=/System/Library/Perl/5.8.1
616       darwindir=$dir/darwin-thread-multi-2level
617       if test -d $darwindir; then
618         PERL=/usr/bin/perl
619       fi
620     fi
621     if test -n "$PERL"; then
622       PERL_DIR="$dir"
623       PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
624       PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
625       PERL_LIBS="-L$darwindir/CORE -lperl"
626     fi
627   fi
629 AC_SUBST(shrpenv)
630 AC_SUBST(PERL_SRC)
631 AC_SUBST(PERL_OBJ)
632 AC_SUBST(PERL_PRO)
633 AC_SUBST(PERL_CFLAGS)
634 AC_SUBST(PERL_LIBS)
636 AC_MSG_CHECKING(--enable-pythoninterp argument)
637 AC_ARG_ENABLE(pythoninterp,
638         [  --enable-pythoninterp   Include Python interpreter.], ,
639         [enable_pythoninterp="no"])
640 AC_MSG_RESULT($enable_pythoninterp)
641 if test "$enable_pythoninterp" = "yes"; then
642   dnl -- find the python executable
643   AC_PATH_PROG(vi_cv_path_python, python)
644   if test "X$vi_cv_path_python" != "X"; then
646     dnl -- get its version number
647     AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
648     [[vi_cv_var_python_version=`
649             ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
650     ]])
652     dnl -- it must be at least version 1.4
653     AC_MSG_CHECKING(Python is 1.4 or better)
654     if ${vi_cv_path_python} -c \
655         "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
656     then
657       AC_MSG_RESULT(yep)
659       dnl -- find where python thinks it was installed
660       AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
661       [ vi_cv_path_python_pfx=`
662             ${vi_cv_path_python} -c \
663                 "import sys; print sys.prefix"` ])
665       dnl -- and where it thinks it runs
666       AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
667       [ vi_cv_path_python_epfx=`
668             ${vi_cv_path_python} -c \
669                 "import sys; print sys.exec_prefix"` ])
671       dnl -- python's internal library path
673       AC_CACHE_VAL(vi_cv_path_pythonpath,
674       [ vi_cv_path_pythonpath=`
675             unset PYTHONPATH;
676             ${vi_cv_path_python} -c \
677                 "import sys, string; print string.join(sys.path,':')"` ])
679       dnl -- where the Python implementation library archives are
681       AC_ARG_WITH(python-config-dir,
682         [  --with-python-config-dir=PATH  Python's config directory],
683         [ vi_cv_path_python_conf="${withval}" ] )
685       AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
686       [
687         vi_cv_path_python_conf=
688         for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
689           for subdir in lib share; do
690             d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
691             if test -d "$d" && test -f "$d/config.c"; then
692               vi_cv_path_python_conf="$d"
693             fi
694           done
695         done
696       ])
698       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
700       if test "X$PYTHON_CONFDIR" = "X"; then
701         AC_MSG_RESULT([can't find it!])
702       else
704         dnl -- we need to examine Python's config/Makefile too
705         dnl    see what the interpreter is built from
706         AC_CACHE_VAL(vi_cv_path_python_plibs,
707         [
708             pwd=`pwd`
709             tmp_mkf="$pwd/config-PyMake$$"
710             cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
712         @echo "python_MODLIBS='$(MODLIBS)'"
713         @echo "python_LIBS='$(LIBS)'"
714         @echo "python_SYSLIBS='$(SYSLIBS)'"
715         @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
717             dnl -- delete the lines from make about Entering/Leaving directory
718             eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
719             rm -f -- "${tmp_mkf}"
720             if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
721                 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
722               vi_cv_path_python_plibs="-framework Python"
723             else
724               if test "${vi_cv_var_python_version}" = "1.4"; then
725                   vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
726               else
727                   vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
728               fi
729               vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
730               dnl remove -ltermcap, it can conflict with an earlier -lncurses
731               vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
732             fi
733         ])
735         PYTHON_LIBS="${vi_cv_path_python_plibs}"
736         if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
737           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
738         else
739           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}"
740         fi
741         PYTHON_SRC="if_python.c"
742         dnl For Mac OSX 10.2 config.o is included in the Python library.
743         if test "x$MACOSX" = "xyes"; then
744           PYTHON_OBJ="objects/if_python.o"
745         else
746           PYTHON_OBJ="objects/if_python.o objects/py_config.o"
747         fi
748         if test "${vi_cv_var_python_version}" = "1.4"; then
749            PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
750         fi
751         PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
753         dnl On FreeBSD linking with "-pthread" is required to use threads.
754         dnl _THREAD_SAFE must be used for compiling then.
755         dnl The "-pthread" is added to $LIBS, so that the following check for
756         dnl sigaltstack() will look in libc_r (it's there in libc!).
757         dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS.  GCC
758         dnl will then define target-specific defines, e.g., -D_REENTRANT.
759         dnl Don't do this for Mac OSX, -pthread will generate a warning.
760         AC_MSG_CHECKING([if -pthread should be used])
761         threadsafe_flag=
762         thread_lib=
763         dnl if test "x$MACOSX" != "xyes"; then
764         if test "`(uname) 2>/dev/null`" != Darwin; then
765           test "$GCC" = yes && threadsafe_flag="-pthread"
766           if test "`(uname) 2>/dev/null`" = FreeBSD; then
767             threadsafe_flag="-D_THREAD_SAFE"
768             thread_lib="-pthread"
769           fi
770         fi
771         libs_save_old=$LIBS
772         if test -n "$threadsafe_flag"; then
773           cflags_save=$CFLAGS
774           CFLAGS="$CFLAGS $threadsafe_flag"
775           LIBS="$LIBS $thread_lib"
776           AC_TRY_LINK(,[ ],
777              AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
778              AC_MSG_RESULT(no); LIBS=$libs_save_old
779              )
780           CFLAGS=$cflags_save
781         else
782           AC_MSG_RESULT(no)
783         fi
785         dnl check that compiling a simple program still works with the flags
786         dnl added for Python.
787         AC_MSG_CHECKING([if compile and link flags for Python are sane])
788         cflags_save=$CFLAGS
789         libs_save=$LIBS
790         CFLAGS="$CFLAGS $PYTHON_CFLAGS"
791         LIBS="$LIBS $PYTHON_LIBS"
792         AC_TRY_LINK(,[ ],
793                AC_MSG_RESULT(yes); python_ok=yes,
794                AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
795         CFLAGS=$cflags_save
796         LIBS=$libs_save
797         if test $python_ok = yes; then
798           AC_DEFINE(FEAT_PYTHON)
799         else
800           LIBS=$libs_save_old
801           PYTHON_SRC=
802           PYTHON_OBJ=
803           PYTHON_LIBS=
804           PYTHON_CFLAGS=
805         fi
807       fi
808     else
809       AC_MSG_RESULT(too old)
810     fi
811   fi
813 AC_SUBST(PYTHON_CONFDIR)
814 AC_SUBST(PYTHON_LIBS)
815 AC_SUBST(PYTHON_GETPATH_CFLAGS)
816 AC_SUBST(PYTHON_CFLAGS)
817 AC_SUBST(PYTHON_SRC)
818 AC_SUBST(PYTHON_OBJ)
820 AC_MSG_CHECKING(--enable-tclinterp argument)
821 AC_ARG_ENABLE(tclinterp,
822         [  --enable-tclinterp      Include Tcl interpreter.], ,
823         [enable_tclinterp="no"])
824 AC_MSG_RESULT($enable_tclinterp)
826 if test "$enable_tclinterp" = "yes"; then
828   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
829   AC_MSG_CHECKING(--with-tclsh argument)
830   AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
831         tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
832         tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
833   AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
834   AC_SUBST(vi_cv_path_tcl)
836   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
837   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
838     tclsh_name="tclsh8.4"
839     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
840   fi
841   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
842     tclsh_name="tclsh8.2"
843     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
844   fi
845   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
846     tclsh_name="tclsh8.0"
847     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
848   fi
849   dnl still didn't find it, try without version number
850   if test "X$vi_cv_path_tcl" = "X"; then
851     tclsh_name="tclsh"
852     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
853   fi
854   if test "X$vi_cv_path_tcl" != "X"; then
855     AC_MSG_CHECKING(Tcl version)
856     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
857       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
858       AC_MSG_RESULT($tclver - OK);
859       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 -`
861       AC_MSG_CHECKING(for location of Tcl include)
862       if test "x$MACOSX" != "xyes"; then
863         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
864       else
865         dnl For Mac OS X 10.3, use the OS-provided framework location
866         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
867       fi
868       TCL_INC=
869       for try in $tclinc; do
870         if test -f "$try/tcl.h"; then
871           AC_MSG_RESULT($try/tcl.h)
872           TCL_INC=$try
873           break
874         fi
875       done
876       if test -z "$TCL_INC"; then
877         AC_MSG_RESULT(<not found>)
878         SKIP_TCL=YES
879       fi
880       if test -z "$SKIP_TCL"; then
881         AC_MSG_CHECKING(for location of tclConfig.sh script)
882         if test "x$MACOSX" != "xyes"; then
883           tclcnf=`echo $tclinc | sed s/include/lib/g`
884           tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
885         else
886           dnl For Mac OS X 10.3, use the OS-provided framework location
887           tclcnf="/System/Library/Frameworks/Tcl.framework"
888         fi
889         for try in $tclcnf; do
890           if test -f $try/tclConfig.sh; then
891             AC_MSG_RESULT($try/tclConfig.sh)
892             . $try/tclConfig.sh
893             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
894             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
895             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
896             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
897             TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
898             break
899           fi
900         done
901         if test -z "$TCL_LIBS"; then
902           AC_MSG_RESULT(<not found>)
903           AC_MSG_CHECKING(for Tcl library by myself)
904           tcllib=`echo $tclinc | sed s/include/lib/g`
905           tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
906           for ext in .so .a ; do
907             for ver in "" $tclver ; do
908               for try in $tcllib ; do
909                 trylib=tcl$ver$ext
910                 if test -f $try/lib$trylib ; then
911                   AC_MSG_RESULT($try/lib$trylib)
912                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
913                   if test "`(uname) 2>/dev/null`" = SunOS &&
914                                          uname -r | grep '^5' >/dev/null; then
915                     TCL_LIBS="$TCL_LIBS -R $try"
916                   fi
917                   break 3
918                 fi
919               done
920             done
921           done
922           if test -z "$TCL_LIBS"; then
923             AC_MSG_RESULT(<not found>)
924             SKIP_TCL=YES
925           fi
926         fi
927         if test -z "$SKIP_TCL"; then
928           AC_DEFINE(FEAT_TCL)
929           TCL_SRC=if_tcl.c
930           TCL_OBJ=objects/if_tcl.o
931           TCL_PRO=if_tcl.pro
932           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
933         fi
934       fi
935     else
936       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
937     fi
938   fi
940 AC_SUBST(TCL_SRC)
941 AC_SUBST(TCL_OBJ)
942 AC_SUBST(TCL_PRO)
943 AC_SUBST(TCL_CFLAGS)
944 AC_SUBST(TCL_LIBS)
946 AC_MSG_CHECKING(--enable-rubyinterp argument)
947 AC_ARG_ENABLE(rubyinterp,
948         [  --enable-rubyinterp     Include Ruby interpreter.], ,
949         [enable_rubyinterp="no"])
950 AC_MSG_RESULT($enable_rubyinterp)
951 if test "$enable_rubyinterp" = "yes"; then
952   AC_SUBST(vi_cv_path_ruby)
953   AC_PATH_PROG(vi_cv_path_ruby, ruby)
954   if test "X$vi_cv_path_ruby" != "X"; then
955     AC_MSG_CHECKING(Ruby version)
956     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
957       AC_MSG_RESULT(OK)
958       AC_MSG_CHECKING(Ruby header files)
959       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
960       if test "X$rubyhdrdir" != "X"; then
961         AC_MSG_RESULT($rubyhdrdir)
962         RUBY_CFLAGS="-I$rubyhdrdir"
963         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
964         if test "X$rubylibs" != "X"; then
965           RUBY_LIBS="$rubylibs"
966         fi
967         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
968         if test -f "$rubyhdrdir/$librubyarg"; then
969           librubyarg="$rubyhdrdir/$librubyarg"
970         else
971           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
972           if test -f "$rubylibdir/$librubyarg"; then
973             librubyarg="$rubylibdir/$librubyarg"
974           elif test "$librubyarg" = "libruby.a"; then
975             dnl required on Mac OS 10.3 where libruby.a doesn't exist
976             librubyarg="-lruby"
977           else
978             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
979           fi
980         fi
982         if test "X$librubyarg" != "X"; then
983           RUBY_LIBS="$librubyarg $RUBY_LIBS"
984         fi
985         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
986         if test "X$rubyldflags" != "X"; then
987           dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
988           dnl be included if requested by passing --with-mac-arch to
989           dnl configure, so strip these flags first (if present)
990           rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
991           if test "X$rubyldflags" != "X"; then
992             LDFLAGS="$rubyldflags $LDFLAGS"
993           fi
994         fi
995         RUBY_SRC="if_ruby.c"
996         RUBY_OBJ="objects/if_ruby.o"
997         RUBY_PRO="if_ruby.pro"
998         AC_DEFINE(FEAT_RUBY)
999       else
1000         AC_MSG_RESULT(not found, disabling Ruby)
1001       fi
1002     else
1003       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1004     fi
1005   fi
1007 AC_SUBST(RUBY_SRC)
1008 AC_SUBST(RUBY_OBJ)
1009 AC_SUBST(RUBY_PRO)
1010 AC_SUBST(RUBY_CFLAGS)
1011 AC_SUBST(RUBY_LIBS)
1013 AC_MSG_CHECKING(--enable-cscope argument)
1014 AC_ARG_ENABLE(cscope,
1015         [  --enable-cscope         Include cscope interface.], ,
1016         [enable_cscope="no"])
1017 AC_MSG_RESULT($enable_cscope)
1018 if test "$enable_cscope" = "yes"; then
1019   AC_DEFINE(FEAT_CSCOPE)
1022 AC_MSG_CHECKING(--enable-workshop argument)
1023 AC_ARG_ENABLE(workshop,
1024         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1025         [enable_workshop="no"])
1026 AC_MSG_RESULT($enable_workshop)
1027 if test "$enable_workshop" = "yes"; then
1028   AC_DEFINE(FEAT_SUN_WORKSHOP)
1029   WORKSHOP_SRC="workshop.c integration.c"
1030   AC_SUBST(WORKSHOP_SRC)
1031   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1032   AC_SUBST(WORKSHOP_OBJ)
1033   if test "${enable_gui-xxx}" = xxx; then
1034     enable_gui=motif
1035   fi
1038 AC_MSG_CHECKING(--disable-netbeans argument)
1039 AC_ARG_ENABLE(netbeans,
1040         [  --disable-netbeans      Disable NetBeans integration support.],
1041         , [enable_netbeans="yes"])
1042 if test "$enable_netbeans" = "yes"; then
1043   AC_MSG_RESULT(no)
1044   dnl On Solaris we need the socket and nsl library.
1045   AC_CHECK_LIB(socket, socket)
1046   AC_CHECK_LIB(nsl, gethostbyname)
1047   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1048   AC_TRY_LINK([
1049 #include <stdio.h>
1050 #include <stdlib.h>
1051 #include <stdarg.h>
1052 #include <fcntl.h>
1053 #include <netdb.h>
1054 #include <netinet/in.h>
1055 #include <errno.h>
1056 #include <sys/types.h>
1057 #include <sys/socket.h>
1058         /* Check bitfields */
1059         struct nbbuf {
1060         unsigned int  initDone:1;
1061         ushort signmaplen;
1062         };
1063             ], [
1064                 /* Check creating a socket. */
1065                 struct sockaddr_in server;
1066                 (void)socket(AF_INET, SOCK_STREAM, 0);
1067                 (void)htons(100);
1068                 (void)gethostbyname("microsoft.com");
1069                 if (errno == ECONNREFUSED)
1070                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1071             ],
1072         AC_MSG_RESULT(yes),
1073         AC_MSG_RESULT(no); enable_netbeans="no")
1074 else
1075   AC_MSG_RESULT(yes)
1077 if test "$enable_netbeans" = "yes"; then
1078   AC_DEFINE(FEAT_NETBEANS_INTG)
1079   NETBEANS_SRC="netbeans.c"
1080   AC_SUBST(NETBEANS_SRC)
1081   NETBEANS_OBJ="objects/netbeans.o"
1082   AC_SUBST(NETBEANS_OBJ)
1085 AC_MSG_CHECKING(--enable-sniff argument)
1086 AC_ARG_ENABLE(sniff,
1087         [  --enable-sniff          Include Sniff interface.], ,
1088         [enable_sniff="no"])
1089 AC_MSG_RESULT($enable_sniff)
1090 if test "$enable_sniff" = "yes"; then
1091   AC_DEFINE(FEAT_SNIFF)
1092   SNIFF_SRC="if_sniff.c"
1093   AC_SUBST(SNIFF_SRC)
1094   SNIFF_OBJ="objects/if_sniff.o"
1095   AC_SUBST(SNIFF_OBJ)
1098 AC_MSG_CHECKING(--enable-multibyte argument)
1099 AC_ARG_ENABLE(multibyte,
1100         [  --enable-multibyte      Include multibyte editing support.], ,
1101         [enable_multibyte="no"])
1102 AC_MSG_RESULT($enable_multibyte)
1103 if test "$enable_multibyte" = "yes"; then
1104   AC_DEFINE(FEAT_MBYTE)
1107 AC_MSG_CHECKING(--enable-hangulinput argument)
1108 AC_ARG_ENABLE(hangulinput,
1109         [  --enable-hangulinput    Include Hangul input support.], ,
1110         [enable_hangulinput="no"])
1111 AC_MSG_RESULT($enable_hangulinput)
1113 AC_MSG_CHECKING(--enable-xim argument)
1114 AC_ARG_ENABLE(xim,
1115         [  --enable-xim            Include XIM input support.],
1116         AC_MSG_RESULT($enable_xim),
1117         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1118 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1120 AC_MSG_CHECKING(--enable-fontset argument)
1121 AC_ARG_ENABLE(fontset,
1122         [  --enable-fontset        Include X fontset output support.], ,
1123         [enable_fontset="no"])
1124 AC_MSG_RESULT($enable_fontset)
1125 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1127 test -z "$with_x" && with_x=yes
1128 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1129 if test "$with_x" = no; then
1130   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1131 else
1132   dnl Do this check early, so that its failure can override user requests.
1134   AC_PATH_PROG(xmkmfpath, xmkmf)
1136   AC_PATH_XTRA
1138   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1139   dnl be compiled with a special option.
1140   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1141   if test "$OS390Unix" = "yes"; then
1142     CFLAGS="$CFLAGS -W c,dll"
1143     LDFLAGS="$LDFLAGS -W l,dll"
1144     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1145   fi
1147   dnl On my HPUX system the X include dir is found, but the lib dir not.
1148   dnl This is a desparate try to fix this.
1150   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1151     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1152     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1153     X_LIBS="$X_LIBS -L$x_libraries"
1154     if test "`(uname) 2>/dev/null`" = SunOS &&
1155                                          uname -r | grep '^5' >/dev/null; then
1156       X_LIBS="$X_LIBS -R $x_libraries"
1157     fi
1158   fi
1160   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1161     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1162     AC_MSG_RESULT(Corrected X includes to $x_includes)
1163     X_CFLAGS="$X_CFLAGS -I$x_includes"
1164   fi
1166   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1167   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1168   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1169   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1170   dnl Same for "-R/usr/lib ".
1171   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1174   dnl Check if the X11 header files are correctly installed. On some systems
1175   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1176   dnl is missing.
1177   AC_MSG_CHECKING(if X11 header files can be found)
1178   cflags_save=$CFLAGS
1179   CFLAGS="$CFLAGS $X_CFLAGS"
1180   AC_TRY_COMPILE([#include <X11/Xlib.h>
1181 #include <X11/Intrinsic.h>], ,
1182         AC_MSG_RESULT(yes),
1183         AC_MSG_RESULT(no); no_x=yes)
1184   CFLAGS=$cflags_save
1186   if test "${no_x-no}" = yes; then
1187     with_x=no
1188   else
1189     AC_DEFINE(HAVE_X11)
1190     X_LIB="-lXt -lX11";
1191     AC_SUBST(X_LIB)
1193     ac_save_LDFLAGS="$LDFLAGS"
1194     LDFLAGS="-L$x_libraries $LDFLAGS"
1196     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1197     dnl For HP-UX 10.20 it must be before -lSM -lICE
1198     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1199                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1201     dnl Some systems need -lnsl -lsocket when testing for ICE.
1202     dnl The check above doesn't do this, try here (again).  Also needed to get
1203     dnl them after Xdmcp.  link.sh will remove them when not needed.
1204     dnl Check for other function than above to avoid the cached value
1205     AC_CHECK_LIB(ICE, IceOpenConnection,
1206                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1208     dnl Check for -lXpm (needed for some versions of Motif)
1209     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1210     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1211                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1213     dnl Check that the X11 header files don't use implicit declarations
1214     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1215     cflags_save=$CFLAGS
1216     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1217     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1218         AC_MSG_RESULT(no),
1219         CFLAGS="$CFLAGS -Wno-implicit-int"
1220         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1221             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1222             AC_MSG_RESULT(test failed)
1223         )
1224     )
1225     CFLAGS=$cflags_save
1227     LDFLAGS="$ac_save_LDFLAGS"
1229     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1230     AC_CACHE_VAL(ac_cv_small_wchar_t,
1231         [AC_TRY_RUN([
1232 #include <X11/Xlib.h>
1233 #if STDC_HEADERS
1234 # include <stdlib.h>
1235 # include <stddef.h>
1236 #endif
1237                 main()
1238                 {
1239                   if (sizeof(wchar_t) <= 2)
1240                     exit(1);
1241                   exit(0);
1242                 }],
1243                 ac_cv_small_wchar_t="no",
1244                 ac_cv_small_wchar_t="yes",
1245                 AC_MSG_ERROR(failed to compile test program))])
1246     AC_MSG_RESULT($ac_cv_small_wchar_t)
1247     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1248       AC_DEFINE(SMALL_WCHAR_T)
1249     fi
1251   fi
1254 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1256 AC_MSG_CHECKING(--enable-gui argument)
1257 AC_ARG_ENABLE(gui,
1258  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1260 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1261 dnl Do not use character classes for portability with old tools.
1262 enable_gui_canon=`echo "_$enable_gui" | \
1263         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1265 dnl Skip everything by default.
1266 SKIP_GTK=YES
1267 SKIP_GTK2=YES
1268 SKIP_GNOME=YES
1269 SKIP_MOTIF=YES
1270 SKIP_ATHENA=YES
1271 SKIP_NEXTAW=YES
1272 SKIP_PHOTON=YES
1273 SKIP_CARBON=YES
1274 GUITYPE=NONE
1276 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1277   SKIP_PHOTON=
1278   case "$enable_gui_canon" in
1279     no)         AC_MSG_RESULT(no GUI support)
1280                 SKIP_PHOTON=YES ;;
1281     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1282     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1283     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1284     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1285                 SKIP_PHOTON=YES ;;
1286   esac
1288 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1289   SKIP_CARBON=
1290   case "$enable_gui_canon" in
1291     no)         AC_MSG_RESULT(no GUI support)
1292                 SKIP_CARBON=YES ;;
1293     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1294     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1295     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1296     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1297                 SKIP_CARBON=YES ;;
1298   esac
1300 else
1302   case "$enable_gui_canon" in
1303     no|none)    AC_MSG_RESULT(no GUI support) ;;
1304     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1305                 SKIP_GTK=
1306                 SKIP_GTK2=
1307                 SKIP_GNOME=
1308                 SKIP_MOTIF=
1309                 SKIP_ATHENA=
1310                 SKIP_NEXTAW=
1311                 SKIP_CARBON=;;
1312     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1313                 SKIP_GTK=;;
1314     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1315                 SKIP_GTK=
1316                 SKIP_GTK2=;;
1317     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1318                 SKIP_GNOME=
1319                 SKIP_GTK=;;
1320     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1321                 SKIP_GNOME=
1322                 SKIP_GTK=
1323                 SKIP_GTK2=;;
1324     motif)      AC_MSG_RESULT(Motif GUI support)
1325                 SKIP_MOTIF=;;
1326     athena)     AC_MSG_RESULT(Athena GUI support)
1327                 SKIP_ATHENA=;;
1328     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1329                 SKIP_NEXTAW=;;
1330     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1331   esac
1335 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1336   AC_MSG_CHECKING(whether or not to look for GTK)
1337   AC_ARG_ENABLE(gtk-check,
1338         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1339         , enable_gtk_check="yes")
1340   AC_MSG_RESULT($enable_gtk_check)
1341   if test "x$enable_gtk_check" = "xno"; then
1342     SKIP_GTK=YES
1343     SKIP_GNOME=YES
1344   fi
1347 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1348                                 -a "$enable_gui_canon" != "gnome2"; then
1349   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1350   AC_ARG_ENABLE(gtk2-check,
1351         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1352         , enable_gtk2_check="yes")
1353   AC_MSG_RESULT($enable_gtk2_check)
1354   if test "x$enable_gtk2_check" = "xno"; then
1355     SKIP_GTK2=YES
1356   fi
1359 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1360                                  -a "$enable_gui_canon" != "gnome2"; then
1361   AC_MSG_CHECKING(whether or not to look for GNOME)
1362   AC_ARG_ENABLE(gnome-check,
1363         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1364         , enable_gnome_check="no")
1365   AC_MSG_RESULT($enable_gnome_check)
1366   if test "x$enable_gnome_check" = "xno"; then
1367     SKIP_GNOME=YES
1368   fi
1371 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1372   AC_MSG_CHECKING(whether or not to look for Motif)
1373   AC_ARG_ENABLE(motif-check,
1374         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1375         , enable_motif_check="yes")
1376   AC_MSG_RESULT($enable_motif_check)
1377   if test "x$enable_motif_check" = "xno"; then
1378     SKIP_MOTIF=YES
1379   fi
1382 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1383   AC_MSG_CHECKING(whether or not to look for Athena)
1384   AC_ARG_ENABLE(athena-check,
1385         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1386         , enable_athena_check="yes")
1387   AC_MSG_RESULT($enable_athena_check)
1388   if test "x$enable_athena_check" = "xno"; then
1389     SKIP_ATHENA=YES
1390   fi
1393 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1394   AC_MSG_CHECKING(whether or not to look for neXtaw)
1395   AC_ARG_ENABLE(nextaw-check,
1396         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1397         , enable_nextaw_check="yes")
1398   AC_MSG_RESULT($enable_nextaw_check);
1399   if test "x$enable_nextaw_check" = "xno"; then
1400     SKIP_NEXTAW=YES
1401   fi
1404 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1405   AC_MSG_CHECKING(whether or not to look for Carbon)
1406   AC_ARG_ENABLE(carbon-check,
1407         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1408         , enable_carbon_check="yes")
1409   AC_MSG_RESULT($enable_carbon_check);
1410   if test "x$enable_carbon_check" = "xno"; then
1411     SKIP_CARBON=YES
1412   fi
1416 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1417   AC_MSG_CHECKING(for Carbon GUI)
1418   dnl already did the check, just give the message
1419   AC_MSG_RESULT(yes);
1420   GUITYPE=CARBONGUI
1421   if test "$VIMNAME" = "vim"; then
1422     VIMNAME=Vim
1423   fi
1425   dnl Default install directory is not /usr/local
1426   if test x$prefix = xNONE; then
1427     prefix=/Applications
1428   fi
1430   dnl Sorry for the hard coded default
1431   datadir='${prefix}/Vim.app/Contents/Resources'
1433   dnl skip everything else
1434   SKIP_GTK=YES;
1435   SKIP_GTK2=YES;
1436   SKIP_GNOME=YES;
1437   SKIP_MOTIF=YES;
1438   SKIP_ATHENA=YES;
1439   SKIP_NEXTAW=YES;
1440   SKIP_PHOTON=YES;
1441   SKIP_CARBON=YES
1445 dnl Get the cflags and libraries from the gtk-config script
1448 dnl define an autoconf function to check for a specified version of GTK, and
1449 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1451 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1452 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1454 AC_DEFUN(AM_PATH_GTK,
1456   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1457   {
1458     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1459     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1460     no_gtk=""
1461     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1462           && $PKG_CONFIG --exists gtk+-2.0; then
1463     {
1464       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1465       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1466       dnl something like that.
1467       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1468       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1469       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1470       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1471              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1472       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1473              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1474       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1475              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1476     }
1477     elif test "X$GTK_CONFIG" != "Xno"; then
1478     {
1479       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1480       GTK_LIBDIR=
1481       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1482       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1483              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1484       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1485              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1486       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1487              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1488     }
1489     else
1490       no_gtk=yes
1491     fi
1493     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1494     {
1495       ac_save_CFLAGS="$CFLAGS"
1496       ac_save_LIBS="$LIBS"
1497       CFLAGS="$CFLAGS $GTK_CFLAGS"
1498       LIBS="$LIBS $GTK_LIBS"
1500       dnl
1501       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1502       dnl checks the results of gtk-config to some extent
1503       dnl
1504       rm -f conf.gtktest
1505       AC_TRY_RUN([
1506 #include <gtk/gtk.h>
1507 #include <stdio.h>
1508 #if STDC_HEADERS
1509 # include <stdlib.h>
1510 # include <stddef.h>
1511 #endif
1514 main ()
1516 int major, minor, micro;
1517 char *tmp_version;
1519 system ("touch conf.gtktest");
1521 /* HP/UX 9 (%@#!) writes to sscanf strings */
1522 tmp_version = g_strdup("$min_gtk_version");
1523 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1524    printf("%s, bad version string\n", "$min_gtk_version");
1525    exit(1);
1528 if ((gtk_major_version > major) ||
1529     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1530     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1531                                      (gtk_micro_version >= micro)))
1533     return 0;
1535 return 1;
1537 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1538       CFLAGS="$ac_save_CFLAGS"
1539       LIBS="$ac_save_LIBS"
1540     }
1541     fi
1542     if test "x$no_gtk" = x ; then
1543       if test "x$enable_gtktest" = "xyes"; then
1544         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1545       else
1546         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1547       fi
1548       ifelse([$2], , :, [$2])
1549     else
1550     {
1551       AC_MSG_RESULT(no)
1552       GTK_CFLAGS=""
1553       GTK_LIBS=""
1554       ifelse([$3], , :, [$3])
1555     }
1556     fi
1557   }
1558   else
1559     GTK_CFLAGS=""
1560     GTK_LIBS=""
1561     ifelse([$3], , :, [$3])
1562   fi
1563   AC_SUBST(GTK_CFLAGS)
1564   AC_SUBST(GTK_LIBS)
1565   rm -f conf.gtktest
1568 dnl ---------------------------------------------------------------------------
1569 dnl gnome
1570 dnl ---------------------------------------------------------------------------
1571 AC_DEFUN([GNOME_INIT_HOOK],
1573   AC_SUBST(GNOME_LIBS)
1574   AC_SUBST(GNOME_LIBDIR)
1575   AC_SUBST(GNOME_INCLUDEDIR)
1577   AC_ARG_WITH(gnome-includes,
1578     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1579     [CFLAGS="$CFLAGS -I$withval"]
1580   )
1582   AC_ARG_WITH(gnome-libs,
1583     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1584     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1585   )
1587   AC_ARG_WITH(gnome,
1588     [  --with-gnome            Specify prefix for GNOME files],
1589     if test x$withval = xyes; then
1590       want_gnome=yes
1591       ifelse([$1], [], :, [$1])
1592     else
1593       if test "x$withval" = xno; then
1594         want_gnome=no
1595       else
1596         want_gnome=yes
1597         LDFLAGS="$LDFLAGS -L$withval/lib"
1598         CFLAGS="$CFLAGS -I$withval/include"
1599         gnome_prefix=$withval/lib
1600       fi
1601     fi,
1602     want_gnome=yes)
1604   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1605   {
1606     AC_MSG_CHECKING(for libgnomeui-2.0)
1607     if $PKG_CONFIG --exists libgnomeui-2.0; then
1608       AC_MSG_RESULT(yes)
1609       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1610       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1611       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1613       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1614       dnl This might not be the right way but it works for me...
1615       AC_MSG_CHECKING(for FreeBSD)
1616       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1617         AC_MSG_RESULT(yes, adding -pthread)
1618         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1619         GNOME_LIBS="$GNOME_LIBS -pthread"
1620       else
1621         AC_MSG_RESULT(no)
1622       fi
1623       $1
1624     else
1625       AC_MSG_RESULT(not found)
1626       if test "x$2" = xfail; then
1627         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1628       fi
1629     fi
1630   }
1631   elif test "x$want_gnome" = xyes; then
1632   {
1633     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1634     if test "$GNOME_CONFIG" = "no"; then
1635       no_gnome_config="yes"
1636     else
1637       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1638       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1639         AC_MSG_RESULT(yes)
1640         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1641         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1642         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1643         $1
1644       else
1645         AC_MSG_RESULT(no)
1646         no_gnome_config="yes"
1647       fi
1648     fi
1650     if test x$exec_prefix = xNONE; then
1651       if test x$prefix = xNONE; then
1652         gnome_prefix=$ac_default_prefix/lib
1653       else
1654         gnome_prefix=$prefix/lib
1655       fi
1656     else
1657       gnome_prefix=`eval echo \`echo $libdir\``
1658     fi
1660     if test "$no_gnome_config" = "yes"; then
1661       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1662       if test -f $gnome_prefix/gnomeConf.sh; then
1663         AC_MSG_RESULT(found)
1664         echo "loading gnome configuration from" \
1665           "$gnome_prefix/gnomeConf.sh"
1666         . $gnome_prefix/gnomeConf.sh
1667         $1
1668       else
1669         AC_MSG_RESULT(not found)
1670         if test x$2 = xfail; then
1671           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1672         fi
1673       fi
1674     fi
1675   }
1676   fi
1679 AC_DEFUN([GNOME_INIT],[
1680         GNOME_INIT_HOOK([],fail)
1684 dnl ---------------------------------------------------------------------------
1685 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1686 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1687 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1688 dnl ---------------------------------------------------------------------------
1689 if test -z "$SKIP_GTK"; then
1691   AC_MSG_CHECKING(--with-gtk-prefix argument)
1692   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1693         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1694         gtk_config_prefix=""; AC_MSG_RESULT(no))
1696   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1697   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1698         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1699         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1701   AC_MSG_CHECKING(--disable-gtktest argument)
1702   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1703         , enable_gtktest=yes)
1704   if test "x$enable_gtktest" = "xyes" ; then
1705     AC_MSG_RESULT(gtk test enabled)
1706   else
1707     AC_MSG_RESULT(gtk test disabled)
1708   fi
1710   if test "x$gtk_config_prefix" != "x" ; then
1711     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1712     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1713   fi
1714   if test "x$gtk_config_exec_prefix" != "x" ; then
1715     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1716     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1717   fi
1718   if test "X$GTK_CONFIG" = "X"; then
1719     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1720     if test "X$GTK_CONFIG" = "Xno"; then
1721       dnl Some distributions call it gtk12-config, annoying!
1722       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1723       GTK_CONFIG="$GTK12_CONFIG"
1724     fi
1725   else
1726     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1727   fi
1728   if test "X$PKG_CONFIG" = "X"; then
1729     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1730   fi
1732   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1733     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1734     dnl problems (bold fonts, --remote doesn't work).
1735     if test "X$SKIP_GTK2" != "XYES"; then
1736       AM_PATH_GTK(2.2.0,
1737                   [GUI_LIB_LOC="$GTK_LIBDIR"
1738                    GTK_LIBNAME="$GTK_LIBS"
1739                   GUI_INC_LOC="$GTK_CFLAGS"], )
1740       if test "x$GTK_CFLAGS" != "x"; then
1741         SKIP_ATHENA=YES
1742         SKIP_NEXTAW=YES
1743         SKIP_MOTIF=YES
1744         GUITYPE=GTK
1745         AC_SUBST(GTK_LIBNAME)
1746       fi
1747     fi
1749     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1750     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1751     dnl were test versions.
1752     if test "x$GUITYPE" != "xGTK"; then
1753       SKIP_GTK2=YES
1754       AM_PATH_GTK(1.1.16,
1755                   [GTK_LIBNAME="$GTK_LIBS"
1756                   GUI_INC_LOC="$GTK_CFLAGS"], )
1757       if test "x$GTK_CFLAGS" != "x"; then
1758         SKIP_ATHENA=YES
1759         SKIP_NEXTAW=YES
1760         SKIP_MOTIF=YES
1761         GUITYPE=GTK
1762         AC_SUBST(GTK_LIBNAME)
1763       fi
1764     fi
1765   fi
1766   dnl Give a warning if GTK is older than 1.2.3
1767   if test "x$GUITYPE" = "xGTK"; then
1768     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1769          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1770       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1771     else
1772     {
1773       if test "0$gtk_major_version" -ge 2; then
1774         AC_DEFINE(HAVE_GTK2)
1775         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1776                 || test "0$gtk_minor_version" -ge 2 \
1777                 || test "0$gtk_major_version" -gt 2; then
1778           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1779         fi
1780       fi
1781       dnl
1782       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1783       dnl
1784       if test -z "$SKIP_GNOME"; then
1785       {
1786         GNOME_INIT_HOOK([have_gnome=yes])
1787         if test x$have_gnome = xyes ; then
1788           AC_DEFINE(FEAT_GUI_GNOME)
1789           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1790           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1791         fi
1792       }
1793       fi
1794     }
1795     fi
1796   fi
1799 dnl Check for Motif include files location.
1800 dnl The LAST one found is used, this makes the highest version to be used,
1801 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1803 if test -z "$SKIP_MOTIF"; then
1804   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"
1805   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1806   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1808   AC_MSG_CHECKING(for location of Motif GUI includes)
1809   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1810   GUI_INC_LOC=
1811   for try in $gui_includes; do
1812     if test -f "$try/Xm/Xm.h"; then
1813       GUI_INC_LOC=$try
1814     fi
1815   done
1816   if test -n "$GUI_INC_LOC"; then
1817     if test "$GUI_INC_LOC" = /usr/include; then
1818       GUI_INC_LOC=
1819       AC_MSG_RESULT(in default path)
1820     else
1821       AC_MSG_RESULT($GUI_INC_LOC)
1822     fi
1823   else
1824     AC_MSG_RESULT(<not found>)
1825     SKIP_MOTIF=YES
1826   fi
1829 dnl Check for Motif library files location.  In the same order as the include
1830 dnl files, to avoid a mixup if several versions are present
1832 if test -z "$SKIP_MOTIF"; then
1833   AC_MSG_CHECKING(--with-motif-lib argument)
1834   AC_ARG_WITH(motif-lib,
1835   [  --with-motif-lib=STRING   Library for Motif ],
1836   [ MOTIF_LIBNAME="${withval}" ] )
1838   if test -n "$MOTIF_LIBNAME"; then
1839     AC_MSG_RESULT($MOTIF_LIBNAME)
1840     GUI_LIB_LOC=
1841   else
1842     AC_MSG_RESULT(no)
1844     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1845     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1847     AC_MSG_CHECKING(for location of Motif GUI libs)
1848     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"
1849     GUI_LIB_LOC=
1850     for try in $gui_libs; do
1851       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1852         if test -f "$libtry"; then
1853           GUI_LIB_LOC=$try
1854         fi
1855       done
1856     done
1857     if test -n "$GUI_LIB_LOC"; then
1858       dnl Remove /usr/lib, it causes trouble on some systems
1859       if test "$GUI_LIB_LOC" = /usr/lib; then
1860         GUI_LIB_LOC=
1861         AC_MSG_RESULT(in default path)
1862       else
1863         if test -n "$GUI_LIB_LOC"; then
1864           AC_MSG_RESULT($GUI_LIB_LOC)
1865           if test "`(uname) 2>/dev/null`" = SunOS &&
1866                                          uname -r | grep '^5' >/dev/null; then
1867             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1868           fi
1869         fi
1870       fi
1871       MOTIF_LIBNAME=-lXm
1872     else
1873       AC_MSG_RESULT(<not found>)
1874       SKIP_MOTIF=YES
1875     fi
1876   fi
1879 if test -z "$SKIP_MOTIF"; then
1880   SKIP_ATHENA=YES
1881   SKIP_NEXTAW=YES
1882   GUITYPE=MOTIF
1883   AC_SUBST(MOTIF_LIBNAME)
1886 dnl Check if the Athena files can be found
1888 GUI_X_LIBS=
1890 if test -z "$SKIP_ATHENA"; then
1891   AC_MSG_CHECKING(if Athena header files can be found)
1892   cflags_save=$CFLAGS
1893   CFLAGS="$CFLAGS $X_CFLAGS"
1894   AC_TRY_COMPILE([
1895 #include <X11/Intrinsic.h>
1896 #include <X11/Xaw/Paned.h>], ,
1897         AC_MSG_RESULT(yes),
1898         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1899   CFLAGS=$cflags_save
1902 if test -z "$SKIP_ATHENA"; then
1903   GUITYPE=ATHENA
1906 if test -z "$SKIP_NEXTAW"; then
1907   AC_MSG_CHECKING(if neXtaw header files can be found)
1908   cflags_save=$CFLAGS
1909   CFLAGS="$CFLAGS $X_CFLAGS"
1910   AC_TRY_COMPILE([
1911 #include <X11/Intrinsic.h>
1912 #include <X11/neXtaw/Paned.h>], ,
1913         AC_MSG_RESULT(yes),
1914         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1915   CFLAGS=$cflags_save
1918 if test -z "$SKIP_NEXTAW"; then
1919   GUITYPE=NEXTAW
1922 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1923   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1924   dnl Avoid adding it when it twice
1925   if test -n "$GUI_INC_LOC"; then
1926     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1927   fi
1928   if test -n "$GUI_LIB_LOC"; then
1929     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1930   fi
1932   dnl Check for -lXext and then for -lXmu
1933   ldflags_save=$LDFLAGS
1934   LDFLAGS="$X_LIBS $LDFLAGS"
1935   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1936                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1937   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1938   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1939                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1940   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1941                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1942   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1943                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1944   if test -z "$SKIP_MOTIF"; then
1945     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1946                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1947   fi
1948   LDFLAGS=$ldflags_save
1950   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1951   AC_MSG_CHECKING(for extra X11 defines)
1952   NARROW_PROTO=
1953   rm -fr conftestdir
1954   if mkdir conftestdir; then
1955     cd conftestdir
1956     cat > Imakefile <<'EOF'
1957 acfindx:
1958         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1960     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1961       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1962     fi
1963     cd ..
1964     rm -fr conftestdir
1965   fi
1966   if test -z "$NARROW_PROTO"; then
1967     AC_MSG_RESULT(no)
1968   else
1969     AC_MSG_RESULT($NARROW_PROTO)
1970   fi
1971   AC_SUBST(NARROW_PROTO)
1974 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1975 dnl use the X11 include path
1976 if test "$enable_xsmp" = "yes"; then
1977   cppflags_save=$CPPFLAGS
1978   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1979   AC_CHECK_HEADERS(X11/SM/SMlib.h)
1980   CPPFLAGS=$cppflags_save
1984 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1985   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1986   cppflags_save=$CPPFLAGS
1987   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1988   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1990   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1991   if test ! "$enable_xim" = "no"; then
1992     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1993     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1994                   AC_MSG_RESULT(yes),
1995                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1996   fi
1997   CPPFLAGS=$cppflags_save
1999   dnl automatically enable XIM when hangul input isn't enabled
2000   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2001                 -a "x$GUITYPE" != "xNONE" ; then
2002     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2003     enable_xim="yes"
2004   fi
2007 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2008   cppflags_save=$CPPFLAGS
2009   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2010 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2011   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2012   AC_TRY_COMPILE([
2013 #include <X11/Intrinsic.h>
2014 #include <X11/Xmu/Editres.h>],
2015                       [int i; i = 0;],
2016               AC_MSG_RESULT(yes)
2017                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2018               AC_MSG_RESULT(no))
2019   CPPFLAGS=$cppflags_save
2022 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2023 if test -z "$SKIP_MOTIF"; then
2024   cppflags_save=$CPPFLAGS
2025   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2026   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2027                    Xm/UnhighlightT.h Xm/Notebook.h)
2029   if test $ac_cv_header_Xm_XpmP_h = yes; then
2030     dnl Solaris uses XpmAttributes_21, very annoying.
2031     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2032     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2033         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2034         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2035         )
2036   else
2037     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2038   fi
2039   CPPFLAGS=$cppflags_save
2042 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2043   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2044   enable_xim="no"
2046 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2047   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2048   enable_fontset="no"
2050 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2051   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2052   enable_fontset="no"
2055 if test -z "$SKIP_PHOTON"; then
2056   GUITYPE=PHOTONGUI
2059 AC_SUBST(GUI_INC_LOC)
2060 AC_SUBST(GUI_LIB_LOC)
2061 AC_SUBST(GUITYPE)
2062 AC_SUBST(GUI_X_LIBS)
2064 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2065   AC_MSG_ERROR([cannot use workshop without Motif])
2068 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2069 if test "$enable_xim" = "yes"; then
2070   AC_DEFINE(FEAT_XIM)
2072 if test "$enable_fontset" = "yes"; then
2073   AC_DEFINE(FEAT_XFONTSET)
2077 dnl ---------------------------------------------------------------------------
2078 dnl end of GUI-checking
2079 dnl ---------------------------------------------------------------------------
2082 dnl Only really enable hangul input when GUI and XFONTSET are available
2083 if test "$enable_hangulinput" = "yes"; then
2084   if test "x$GUITYPE" = "xNONE"; then
2085     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2086     enable_hangulinput=no
2087   else
2088     AC_DEFINE(FEAT_HANGULIN)
2089     HANGULIN_SRC=hangulin.c
2090     AC_SUBST(HANGULIN_SRC)
2091     HANGULIN_OBJ=objects/hangulin.o
2092     AC_SUBST(HANGULIN_OBJ)
2093   fi
2096 dnl Checks for libraries and include files.
2098 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2099   [
2100     AC_RUN_IFELSE([[
2101 #include "confdefs.h"
2102 #include <ctype.h>
2103 #if STDC_HEADERS
2104 # include <stdlib.h>
2105 # include <stddef.h>
2106 #endif
2107 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2108   ]],[
2109     vim_cv_toupper_broken=yes
2110   ],[
2111     vim_cv_toupper_broken=no
2112   ],[
2113     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2114   ])])
2116 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2117   AC_DEFINE(BROKEN_TOUPPER)
2120 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2121 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2122         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2123         AC_MSG_RESULT(no))
2125 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2126 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2127         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2128         AC_MSG_RESULT(no))
2130 dnl Checks for header files.
2131 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2132 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2133 if test "$HAS_ELF" = 1; then
2134   AC_CHECK_LIB(elf, main)
2137 AC_HEADER_DIRENT
2139 dnl If sys/wait.h is not found it might still exist but not be POSIX
2140 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2141 if test $ac_cv_header_sys_wait_h = no; then
2142   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2143   AC_TRY_COMPILE([#include <sys/wait.h>],
2144                         [union wait xx, yy; xx = yy],
2145                 AC_MSG_RESULT(yes)
2146                         AC_DEFINE(HAVE_SYS_WAIT_H)
2147                         AC_DEFINE(HAVE_UNION_WAIT),
2148                 AC_MSG_RESULT(no))
2151 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2152         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2153         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2154         sys/resource.h sys/systeminfo.h locale.h \
2155         sys/stream.h termios.h libc.h sys/statfs.h \
2156         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2157         libgen.h util/debug.h util/msg18n.h frame.h \
2158         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2160 dnl sys/ptem.h depends on sys/stream.h on Solaris
2161 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2162 [#if defined HAVE_SYS_STREAM_H
2163 #  include <sys/stream.h>
2164 #endif])
2166 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2167 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2168 [#if defined HAVE_SYS_PARAM_H
2169 #  include <sys/param.h>
2170 #endif])
2173 dnl pthread_np.h may exist but can only be used after including pthread.h
2174 AC_MSG_CHECKING([for pthread_np.h])
2175 AC_TRY_COMPILE([
2176 #include <pthread.h>
2177 #include <pthread_np.h>],
2178                       [int i; i = 0;],
2179               AC_MSG_RESULT(yes)
2180                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2181               AC_MSG_RESULT(no))
2183 AC_CHECK_HEADERS(strings.h)
2184 if test "x$MACOSX" = "xyes"; then
2185   dnl The strings.h file on OS/X contains a warning and nothing useful.
2186   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2187 else
2189 dnl Check if strings.h and string.h can both be included when defined.
2190 AC_MSG_CHECKING([if strings.h can be included after string.h])
2191 cppflags_save=$CPPFLAGS
2192 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2193 AC_TRY_COMPILE([
2194 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2195 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2196                         /* but don't do it on AIX 5.1 (Uribarri) */
2197 #endif
2198 #ifdef HAVE_XM_XM_H
2199 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2200 #endif
2201 #ifdef HAVE_STRING_H
2202 # include <string.h>
2203 #endif
2204 #if defined(HAVE_STRINGS_H)
2205 # include <strings.h>
2206 #endif
2207                 ], [int i; i = 0;],
2208                 AC_MSG_RESULT(yes),
2209                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2210                 AC_MSG_RESULT(no))
2211 CPPFLAGS=$cppflags_save
2214 dnl Checks for typedefs, structures, and compiler characteristics.
2215 AC_PROG_GCC_TRADITIONAL
2216 AC_C_CONST
2217 AC_C_VOLATILE
2218 AC_TYPE_MODE_T
2219 AC_TYPE_OFF_T
2220 AC_TYPE_PID_T
2221 AC_TYPE_SIZE_T
2222 AC_TYPE_UID_T
2223 AC_HEADER_TIME
2224 AC_CHECK_TYPE(ino_t, long)
2225 AC_CHECK_TYPE(dev_t, unsigned)
2227 AC_MSG_CHECKING(for rlim_t)
2228 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2229   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2230 else
2231   AC_EGREP_CPP(dnl
2232 changequote(<<,>>)dnl
2233 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2234 changequote([,]),
2235   [
2236 #include <sys/types.h>
2237 #if STDC_HEADERS
2238 # include <stdlib.h>
2239 # include <stddef.h>
2240 #endif
2241 #ifdef HAVE_SYS_RESOURCE_H
2242 # include <sys/resource.h>
2243 #endif
2244           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2245           AC_MSG_RESULT($ac_cv_type_rlim_t)
2247 if test $ac_cv_type_rlim_t = no; then
2248   cat >> confdefs.h <<\EOF
2249 #define rlim_t unsigned long
2253 AC_MSG_CHECKING(for stack_t)
2254 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2255   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2256 else
2257   AC_EGREP_CPP(stack_t,
2258   [
2259 #include <sys/types.h>
2260 #if STDC_HEADERS
2261 # include <stdlib.h>
2262 # include <stddef.h>
2263 #endif
2264 #include <signal.h>
2265           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2266           AC_MSG_RESULT($ac_cv_type_stack_t)
2268 if test $ac_cv_type_stack_t = no; then
2269   cat >> confdefs.h <<\EOF
2270 #define stack_t struct sigaltstack
2274 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2275 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2276 AC_TRY_COMPILE([
2277 #include <sys/types.h>
2278 #if STDC_HEADERS
2279 # include <stdlib.h>
2280 # include <stddef.h>
2281 #endif
2282 #include <signal.h>
2283 #include "confdefs.h"
2284                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2285         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2286         AC_MSG_RESULT(no))
2288 olibs="$LIBS"
2289 AC_MSG_CHECKING(--with-tlib argument)
2290 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2291 if test -n "$with_tlib"; then
2292   AC_MSG_RESULT($with_tlib)
2293   LIBS="$LIBS -l$with_tlib"
2294   AC_MSG_CHECKING(for linking with $with_tlib library)
2295   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2296   dnl Need to check for tgetent() below.
2297   olibs="$LIBS"
2298 else
2299   AC_MSG_RESULT([empty: automatic terminal library selection])
2300   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2301   dnl  curses, because curses is much slower.
2302   dnl  Newer versions of ncurses are preferred over anything.
2303   dnl  Older versions of ncurses have bugs, get a new one!
2304   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2305   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2306   case "`uname -s 2>/dev/null`" in
2307         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2308         *)      tlibs="ncurses termlib termcap curses";;
2309   esac
2310   for libname in $tlibs; do
2311     AC_CHECK_LIB(${libname}, tgetent,,)
2312     if test "x$olibs" != "x$LIBS"; then
2313       dnl It's possible that a library is found but it doesn't work
2314       dnl e.g., shared library that cannot be found
2315       dnl compile and run a test program to be sure
2316       AC_TRY_RUN([
2317 #ifdef HAVE_TERMCAP_H
2318 # include <termcap.h>
2319 #endif
2320 #if STDC_HEADERS
2321 # include <stdlib.h>
2322 # include <stddef.h>
2323 #endif
2324 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2325                           res="OK", res="FAIL", res="FAIL")
2326       if test "$res" = "OK"; then
2327         break
2328       fi
2329       AC_MSG_RESULT($libname library is not usable)
2330       LIBS="$olibs"
2331     fi
2332   done
2333   if test "x$olibs" = "x$LIBS"; then
2334     AC_MSG_RESULT(no terminal library found)
2335   fi
2338 if test "x$olibs" = "x$LIBS"; then
2339   AC_MSG_CHECKING([for tgetent()])
2340   AC_TRY_LINK([],
2341       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2342         AC_MSG_RESULT(yes),
2343         AC_MSG_ERROR([NOT FOUND!
2344       You need to install a terminal library; for example ncurses.
2345       Or specify the name of the library with --with-tlib.]))
2348 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2349   [
2350     AC_RUN_IFELSE([[
2351 #include "confdefs.h"
2352 #ifdef HAVE_TERMCAP_H
2353 # include <termcap.h>
2354 #endif
2355 #ifdef HAVE_STRING_H
2356 # include <string.h>
2357 #endif
2358 #if STDC_HEADERS
2359 # include <stdlib.h>
2360 # include <stddef.h>
2361 #endif
2362 main()
2363 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2364     ]],[
2365       vim_cv_terminfo=no
2366     ],[
2367       vim_cv_terminfo=yes
2368     ],[
2369       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2370     ])
2371   ])
2373 if test "x$vim_cv_terminfo" = "xyes" ; then
2374   AC_DEFINE(TERMINFO)
2377 if test "x$olibs" != "x$LIBS"; then
2378   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2379     [
2380       AC_RUN_IFELSE([[
2381 #include "confdefs.h"
2382 #ifdef HAVE_TERMCAP_H
2383 # include <termcap.h>
2384 #endif
2385 #if STDC_HEADERS
2386 # include <stdlib.h>
2387 # include <stddef.h>
2388 #endif
2389 main()
2390 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2391       ]],[
2392         vim_cv_tgent=zero
2393       ],[
2394         vim_cv_tgent=non-zero
2395       ],[
2396         AC_MSG_ERROR(failed to compile test program.)
2397       ])
2398     ])
2399   
2400   if test "x$vim_cv_tgent" = "xzero" ; then
2401     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2402   fi
2405 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2406 AC_TRY_LINK([
2407 #ifdef HAVE_TERMCAP_H
2408 # include <termcap.h>
2409 #endif
2410                         ], [ospeed = 20000],
2411         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2412         [AC_MSG_RESULT(no)
2413         AC_MSG_CHECKING(whether ospeed can be extern)
2414         AC_TRY_LINK([
2415 #ifdef HAVE_TERMCAP_H
2416 # include <termcap.h>
2417 #endif
2418 extern short ospeed;
2419                         ], [ospeed = 20000],
2420                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2421                 AC_MSG_RESULT(no))]
2422         )
2424 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2425 AC_TRY_LINK([
2426 #ifdef HAVE_TERMCAP_H
2427 # include <termcap.h>
2428 #endif
2429                         ], [if (UP == 0 && BC == 0) PC = 1],
2430         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2431         [AC_MSG_RESULT(no)
2432         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2433         AC_TRY_LINK([
2434 #ifdef HAVE_TERMCAP_H
2435 # include <termcap.h>
2436 #endif
2437 extern char *UP, *BC, PC;
2438                         ], [if (UP == 0 && BC == 0) PC = 1],
2439                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2440                 AC_MSG_RESULT(no))]
2441         )
2443 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2444 AC_TRY_COMPILE([
2445 #ifdef HAVE_TERMCAP_H
2446 # include <termcap.h>
2447 #endif
2448                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2449         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2450         AC_MSG_RESULT(no))
2452 dnl On some SCO machines sys/select redefines struct timeval
2453 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2454 AC_TRY_COMPILE([
2455 #include <sys/types.h>
2456 #include <sys/time.h>
2457 #include <sys/select.h>], ,
2458           AC_MSG_RESULT(yes)
2459                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2460           AC_MSG_RESULT(no))
2462 dnl AC_DECL_SYS_SIGLIST
2464 dnl Checks for pty.c (copied from screen) ==========================
2465 AC_MSG_CHECKING(for /dev/ptc)
2466 if test -r /dev/ptc; then
2467   AC_DEFINE(HAVE_DEV_PTC)
2468   AC_MSG_RESULT(yes)
2469 else
2470   AC_MSG_RESULT(no)
2473 AC_MSG_CHECKING(for SVR4 ptys)
2474 if test -c /dev/ptmx ; then
2475   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2476         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2477         AC_MSG_RESULT(no))
2478 else
2479   AC_MSG_RESULT(no)
2482 AC_MSG_CHECKING(for ptyranges)
2483 if test -d /dev/ptym ; then
2484   pdir='/dev/ptym'
2485 else
2486   pdir='/dev'
2488 dnl SCO uses ptyp%d
2489 AC_EGREP_CPP(yes,
2490 [#ifdef M_UNIX
2491    yes;
2492 #endif
2493         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2494 dnl if test -c /dev/ptyp19; then
2495 dnl ptys=`echo /dev/ptyp??`
2496 dnl else
2497 dnl ptys=`echo $pdir/pty??`
2498 dnl fi
2499 if test "$ptys" != "$pdir/pty??" ; then
2500   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2501   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2502   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2503   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2504   AC_MSG_RESULT([$p0 / $p1])
2505 else
2506   AC_MSG_RESULT([don't know])
2509 dnl    ****  pty mode/group handling ****
2511 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2512 rm -f conftest_grp
2513 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2514   [
2515     AC_RUN_IFELSE([[
2516 #include "confdefs.h"
2517 #include <sys/types.h>
2518 #if STDC_HEADERS
2519 # include <stdlib.h>
2520 # include <stddef.h>
2521 #endif
2522 #ifdef HAVE_UNISTD_H
2523 #include <unistd.h>
2524 #endif
2525 #include <sys/stat.h>
2526 #include <stdio.h>
2527 main()
2529   struct stat sb;
2530   char *x,*ttyname();
2531   int om, m;
2532   FILE *fp;
2534   if (!(x = ttyname(0))) exit(1);
2535   if (stat(x, &sb)) exit(1);
2536   om = sb.st_mode;
2537   if (om & 002) exit(0);
2538   m = system("mesg y");
2539   if (m == -1 || m == 127) exit(1);
2540   if (stat(x, &sb)) exit(1);
2541   m = sb.st_mode;
2542   if (chmod(x, om)) exit(1);
2543   if (m & 002) exit(0);
2544   if (sb.st_gid == getgid()) exit(1);
2545   if (!(fp=fopen("conftest_grp", "w")))
2546     exit(1);
2547   fprintf(fp, "%d\n", sb.st_gid);
2548   fclose(fp);
2549   exit(0);
2551     ]],[
2552       if test -f conftest_grp; then
2553         vim_cv_tty_group=`cat conftest_grp`
2554         if test "x$vim_cv_tty_mode" = "x" ; then
2555           vim_cv_tty_mode=0620
2556         fi
2557         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2558       else
2559         vim_cv_tty_group=world
2560         AC_MSG_RESULT([ptys are world accessable])
2561       fi
2562     ],[
2563       vim_cv_tty_group=world
2564       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2565     ],[
2566       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2567     ])
2568   ])
2569 rm -f conftest_grp
2571 if test "x$vim_cv_tty_group" != "xworld" ; then
2572   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2573   if test "x$vim_cv_tty_mode" = "x" ; then
2574     AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2575   else
2576     AC_DEFINE(PTYMODE, 0620)
2577   fi
2580 dnl Checks for library functions. ===================================
2582 AC_TYPE_SIGNAL
2584 dnl find out what to use at the end of a signal function
2585 if test $ac_cv_type_signal = void; then
2586   AC_DEFINE(SIGRETURN, [return])
2587 else
2588   AC_DEFINE(SIGRETURN, [return 0])
2591 dnl check if struct sigcontext is defined (used for SGI only)
2592 AC_MSG_CHECKING(for struct sigcontext)
2593 AC_TRY_COMPILE([
2594 #include <signal.h>
2595 test_sig()
2597     struct sigcontext *scont;
2598     scont = (struct sigcontext *)0;
2599     return 1;
2600 } ], ,
2601           AC_MSG_RESULT(yes)
2602                 AC_DEFINE(HAVE_SIGCONTEXT),
2603           AC_MSG_RESULT(no))
2605 dnl tricky stuff: try to find out if getcwd() is implemented with
2606 dnl system("sh -c pwd")
2607 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2608   [
2609     AC_RUN_IFELSE([[
2610 #include "confdefs.h"
2611 #ifdef HAVE_UNISTD_H
2612 #include <unistd.h>
2613 #endif
2614 char *dagger[] = { "IFS=pwd", 0 };
2615 main()
2617   char buffer[500];
2618   extern char **environ;
2619   environ = dagger;
2620   return getcwd(buffer, 500) ? 0 : 1;
2622     ]],[
2623       vim_cv_getcwd_broken=no
2624     ],[
2625       vim_cv_getcwd_broken=yes
2626     ],[
2627       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2628     ])
2629   ])
2631 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2632   AC_DEFINE(BAD_GETCWD)
2635 dnl Check for functions in one big call, to reduce the size of configure
2636 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2637         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2638         memset nanosleep opendir putenv qsort readlink select setenv \
2639         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2640         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2641         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2642         usleep utime utimes)
2644 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2645 AC_MSG_CHECKING(for st_blksize)
2646 AC_TRY_COMPILE(
2647 [#include <sys/types.h>
2648 #include <sys/stat.h>],
2649 [       struct stat st;
2650         int n;
2652         stat("/", &st);
2653         n = (int)st.st_blksize;],
2654         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2655         AC_MSG_RESULT(no))
2657 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2658   [
2659     AC_RUN_IFELSE([[
2660 #include "confdefs.h"
2661 #if STDC_HEADERS
2662 # include <stdlib.h>
2663 # include <stddef.h>
2664 #endif
2665 #include <sys/types.h>
2666 #include <sys/stat.h>
2667 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2668     ]],[
2669       vim_cv_stat_ignores_slash=yes
2670     ],[
2671       vim_cv_stat_ignores_slash=no
2672     ],[
2673       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2674     ])
2675   ])
2677 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2678   AC_DEFINE(STAT_IGNORES_SLASH)
2680   
2681 dnl Link with iconv for charset translation, if not found without library.
2682 dnl check for iconv() requires including iconv.h
2683 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2684 dnl has been installed.
2685 AC_MSG_CHECKING(for iconv_open())
2686 save_LIBS="$LIBS"
2687 LIBS="$LIBS -liconv"
2688 AC_TRY_LINK([
2689 #ifdef HAVE_ICONV_H
2690 # include <iconv.h>
2691 #endif
2692     ], [iconv_open("fr", "to");],
2693     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2694     LIBS="$save_LIBS"
2695     AC_TRY_LINK([
2696 #ifdef HAVE_ICONV_H
2697 # include <iconv.h>
2698 #endif
2699         ], [iconv_open("fr", "to");],
2700         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2701         AC_MSG_RESULT(no)))
2704 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2705 AC_TRY_LINK([
2706 #ifdef HAVE_LANGINFO_H
2707 # include <langinfo.h>
2708 #endif
2709 ], [char *cs = nl_langinfo(CODESET);],
2710         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2711         AC_MSG_RESULT(no))
2713 dnl Need various functions for floating point support.  Only enable
2714 dnl floating point when they are all present.
2715 AC_CHECK_LIB(m, strtod)
2716 AC_MSG_CHECKING([for strtod() and other floating point functions])
2717 AC_TRY_LINK([
2718 #ifdef HAVE_MATH_H
2719 # include <math.h>
2720 #endif
2721 #if STDC_HEADERS
2722 # include <stdlib.h>
2723 # include <stddef.h>
2724 #endif
2725 ], [char *s; double d;
2726     d = strtod("1.1", &s);
2727     d = fabs(1.11);
2728     d = ceil(1.11);
2729     d = floor(1.11);
2730     d = log10(1.11);
2731     d = pow(1.11, 2.22);
2732     d = sqrt(1.11);
2733     d = sin(1.11);
2734     d = cos(1.11);
2735     d = atan(1.11);
2736     ],
2737         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2738         AC_MSG_RESULT(no))
2740 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2741 dnl when -lacl works, also try to use -lattr (required for Debian).
2742 AC_MSG_CHECKING(--disable-acl argument)
2743 AC_ARG_ENABLE(acl,
2744         [  --disable-acl           Don't check for ACL support.],
2745         , [enable_acl="yes"])
2746 if test "$enable_acl" = "yes"; then
2747 AC_MSG_RESULT(no)
2748 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2749         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2750                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2752 AC_MSG_CHECKING(for POSIX ACL support)
2753 AC_TRY_LINK([
2754 #include <sys/types.h>
2755 #ifdef HAVE_SYS_ACL_H
2756 # include <sys/acl.h>
2757 #endif
2758 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2759         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2760         acl_free(acl);],
2761         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2762         AC_MSG_RESULT(no))
2764 AC_MSG_CHECKING(for Solaris ACL support)
2765 AC_TRY_LINK([
2766 #ifdef HAVE_SYS_ACL_H
2767 # include <sys/acl.h>
2768 #endif], [acl("foo", GETACLCNT, 0, NULL);
2769         ],
2770         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2771         AC_MSG_RESULT(no))
2773 AC_MSG_CHECKING(for AIX ACL support)
2774 AC_TRY_LINK([
2775 #if STDC_HEADERS
2776 # include <stdlib.h>
2777 # include <stddef.h>
2778 #endif
2779 #ifdef HAVE_SYS_ACL_H
2780 # include <sys/acl.h>
2781 #endif
2782 #ifdef HAVE_SYS_ACCESS_H
2783 # include <sys/access.h>
2784 #endif
2785 #define _ALL_SOURCE
2787 #include <sys/stat.h>
2789 int aclsize;
2790 struct acl *aclent;], [aclsize = sizeof(struct acl);
2791         aclent = (void *)malloc(aclsize);
2792         statacl("foo", STX_NORMAL, aclent, aclsize);
2793         ],
2794         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2795         AC_MSG_RESULT(no))
2796 else
2797   AC_MSG_RESULT(yes)
2800 AC_MSG_CHECKING(--disable-gpm argument)
2801 AC_ARG_ENABLE(gpm,
2802         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2803         [enable_gpm="yes"])
2805 if test "$enable_gpm" = "yes"; then
2806   AC_MSG_RESULT(no)
2807   dnl Checking if gpm support can be compiled
2808   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2809         [olibs="$LIBS" ; LIBS="-lgpm"]
2810         AC_TRY_LINK(
2811             [#include <gpm.h>
2812             #include <linux/keyboard.h>],
2813             [Gpm_GetLibVersion(NULL);],
2814             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2815             dnl FEAT_MOUSE_GPM if mouse support is included
2816             [vi_cv_have_gpm=yes],
2817             [vi_cv_have_gpm=no])
2818         [LIBS="$olibs"]
2819     )
2820   if test $vi_cv_have_gpm = yes; then
2821     LIBS="$LIBS -lgpm"
2822     AC_DEFINE(HAVE_GPM)
2823   fi
2824 else
2825   AC_MSG_RESULT(yes)
2828 AC_MSG_CHECKING(--disable-sysmouse argument)
2829 AC_ARG_ENABLE(sysmouse,
2830         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2831         [enable_sysmouse="yes"])
2833 if test "$enable_sysmouse" = "yes"; then
2834   AC_MSG_RESULT(no)
2835   dnl Checking if sysmouse support can be compiled
2836   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2837   dnl defines FEAT_SYSMOUSE if mouse support is included
2838   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2839         AC_TRY_LINK(
2840             [#include <sys/consio.h>
2841              #include <signal.h>
2842              #include <sys/fbio.h>],
2843             [struct mouse_info   mouse;
2844              mouse.operation = MOUSE_MODE;
2845              mouse.operation = MOUSE_SHOW;
2846              mouse.u.mode.mode = 0;
2847              mouse.u.mode.signal = SIGUSR2;],
2848             [vi_cv_have_sysmouse=yes],
2849             [vi_cv_have_sysmouse=no])
2850     )
2851   if test $vi_cv_have_sysmouse = yes; then
2852     AC_DEFINE(HAVE_SYSMOUSE)
2853   fi
2854 else
2855   AC_MSG_RESULT(yes)
2858 dnl rename needs to be checked separately to work on Nextstep with cc
2859 AC_MSG_CHECKING(for rename)
2860 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2861         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2862         AC_MSG_RESULT(no))
2864 dnl sysctl() may exist but not the arguments we use
2865 AC_MSG_CHECKING(for sysctl)
2866 AC_TRY_COMPILE(
2867 [#include <sys/types.h>
2868 #include <sys/sysctl.h>],
2869 [       int mib[2], r;
2870         size_t len;
2872         mib[0] = CTL_HW;
2873         mib[1] = HW_USERMEM;
2874         len = sizeof(r);
2875         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2876         ],
2877         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2878         AC_MSG_RESULT(not usable))
2880 dnl sysinfo() may exist but not be Linux compatible
2881 AC_MSG_CHECKING(for sysinfo)
2882 AC_TRY_COMPILE(
2883 [#include <sys/types.h>
2884 #include <sys/sysinfo.h>],
2885 [       struct sysinfo sinfo;
2886         int t;
2888         (void)sysinfo(&sinfo);
2889         t = sinfo.totalram;
2890         ],
2891         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2892         AC_MSG_RESULT(not usable))
2894 dnl struct sysinfo may have the mem_unit field or not
2895 AC_MSG_CHECKING(for sysinfo.mem_unit)
2896 AC_TRY_COMPILE(
2897 [#include <sys/types.h>
2898 #include <sys/sysinfo.h>],
2899 [       struct sysinfo sinfo;
2900         sinfo.mem_unit = 1;
2901         ],
2902         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2903         AC_MSG_RESULT(no))
2905 dnl sysconf() may exist but not support what we want to use
2906 AC_MSG_CHECKING(for sysconf)
2907 AC_TRY_COMPILE(
2908 [#include <unistd.h>],
2909 [       (void)sysconf(_SC_PAGESIZE);
2910         (void)sysconf(_SC_PHYS_PAGES);
2911         ],
2912         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2913         AC_MSG_RESULT(not usable))
2915 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2916 dnl be printed with "%d", and avoids a warning for cross-compiling.
2918 AC_MSG_CHECKING(size of int)
2919 AC_CACHE_VAL(ac_cv_sizeof_int,
2920         [AC_TRY_RUN([
2921 #include <stdio.h>
2922 #if STDC_HEADERS
2923 # include <stdlib.h>
2924 # include <stddef.h>
2925 #endif
2926 main()
2928   FILE *f=fopen("conftestval", "w");
2929   if (!f) exit(1);
2930   fprintf(f, "%d\n", (int)sizeof(int));
2931   exit(0);
2933             ac_cv_sizeof_int=`cat conftestval`,
2934             ac_cv_sizeof_int=0,
2935             AC_MSG_ERROR(failed to compile test program))])
2936 AC_MSG_RESULT($ac_cv_sizeof_int)
2937 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2939 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2940 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2942 [bcopy_test_prog='
2943 #include "confdefs.h"
2944 #ifdef HAVE_STRING_H
2945 # include <string.h>
2946 #endif
2947 #if STDC_HEADERS
2948 # include <stdlib.h>
2949 # include <stddef.h>
2950 #endif
2951 main() {
2952   char buf[10];
2953   strcpy(buf, "abcdefghi");
2954   mch_memmove(buf, buf + 2, 3);
2955   if (strncmp(buf, "ababcf", 6))
2956     exit(1);
2957   strcpy(buf, "abcdefghi");
2958   mch_memmove(buf + 2, buf, 3);
2959   if (strncmp(buf, "cdedef", 6))
2960     exit(1);
2961   exit(0); /* libc version works properly.  */
2964 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
2965   [
2966     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
2967       [
2968         vim_cv_memmove_handles_overlap=yes
2969       ],[
2970         vim_cv_memmove_handles_overlap=no
2971       ],[
2972         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
2973       ])
2974   ])
2976 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
2977   AC_DEFINE(USEMEMMOVE)
2978 else
2979   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
2980     [
2981       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
2982       [
2983         vim_cv_bcopy_handles_overlap=yes
2984       ],[
2985         vim_cv_bcopy_handles_overlap=no
2986       ],[
2987         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
2988       ])
2989     ])
2991   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
2992     AC_DEFINE(USEBCOPY)
2993   else
2994     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
2995       [
2996         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
2997           [
2998             vim_cv_memcpy_handles_overlap=yes
2999           ],[
3000             vim_cv_memcpy_handles_overlap=no
3001           ],[
3002             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3003           ])
3004       ])
3006     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3007       AC_DEFINE(USEMEMCPY)
3008     fi
3009   fi
3013 dnl Check for multibyte locale functions
3014 dnl Find out if _Xsetlocale() is supported by libX11.
3015 dnl Check if X_LOCALE should be defined.
3017 if test "$enable_multibyte" = "yes"; then
3018   cflags_save=$CFLAGS
3019   ldflags_save=$LDFLAGS
3020   if test "x$x_includes" != "xNONE" ; then
3021     CFLAGS="$CFLAGS -I$x_includes"
3022     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3023     AC_MSG_CHECKING(whether X_LOCALE needed)
3024     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3025         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3026                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3027         AC_MSG_RESULT(no))
3028   fi
3029   CFLAGS=$cflags_save
3030   LDFLAGS=$ldflags_save
3033 dnl Link with xpg4, it is said to make Korean locale working
3034 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3036 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3037 dnl --version for Exuberant ctags (preferred)
3038 dnl       Add --fields=+S to get function signatures for omni completion.
3039 dnl -t for typedefs (many ctags have this)
3040 dnl -s for static functions (Elvis ctags only?)
3041 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3042 dnl -i+m to test for older Exuberant ctags
3043 AC_MSG_CHECKING(how to create tags)
3044 test -f tags && mv tags tags.save
3045 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3046   TAGPRG="ctags -I INIT+ --fields=+S"
3047 else
3048   TAGPRG="ctags"
3049   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3050   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3051   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3052   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3053   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3054   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3055   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3057 test -f tags.save && mv tags.save tags
3058 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3060 dnl Check how we can run man with a section number
3061 AC_MSG_CHECKING(how to run man with a section nr)
3062 MANDEF="man"
3063 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3064 AC_MSG_RESULT($MANDEF)
3065 if test "$MANDEF" = "man -s"; then
3066   AC_DEFINE(USEMAN_S)
3069 dnl Check if gettext() is working and if it needs -lintl
3070 AC_MSG_CHECKING(--disable-nls argument)
3071 AC_ARG_ENABLE(nls,
3072         [  --disable-nls           Don't support NLS (gettext()).], ,
3073         [enable_nls="yes"])
3075 if test "$enable_nls" = "yes"; then
3076   AC_MSG_RESULT(no)
3078   INSTALL_LANGS=install-languages
3079   AC_SUBST(INSTALL_LANGS)
3080   INSTALL_TOOL_LANGS=install-tool-languages
3081   AC_SUBST(INSTALL_TOOL_LANGS)
3083   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3084   AC_MSG_CHECKING([for NLS])
3085   if test -f po/Makefile; then
3086     have_gettext="no"
3087     if test -n "$MSGFMT"; then
3088       AC_TRY_LINK(
3089         [#include <libintl.h>],
3090         [gettext("Test");],
3091         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3092           olibs=$LIBS
3093           LIBS="$LIBS -lintl"
3094           AC_TRY_LINK(
3095               [#include <libintl.h>],
3096               [gettext("Test");],
3097               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3098               AC_MSG_RESULT([gettext() doesn't work]);
3099               LIBS=$olibs))
3100     else
3101       AC_MSG_RESULT([msgfmt not found - disabled]);
3102     fi
3103     if test $have_gettext = "yes"; then
3104       AC_DEFINE(HAVE_GETTEXT)
3105       MAKEMO=yes
3106       AC_SUBST(MAKEMO)
3107       dnl this was added in GNU gettext 0.10.36
3108       AC_CHECK_FUNCS(bind_textdomain_codeset)
3109       dnl _nl_msg_cat_cntr is required for GNU gettext
3110       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3111       AC_TRY_LINK(
3112                 [#include <libintl.h>
3113                 extern int _nl_msg_cat_cntr;],
3114                 [++_nl_msg_cat_cntr;],
3115                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3116                 AC_MSG_RESULT([no]))
3117     fi
3118   else
3119     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3120   fi
3121 else
3122   AC_MSG_RESULT(yes)
3125 dnl Check for dynamic linking loader
3126 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3127 if test x${DLL} = xdlfcn.h; then
3128   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3129   AC_MSG_CHECKING([for dlopen()])
3130   AC_TRY_LINK(,[
3131                 extern void* dlopen();
3132                 dlopen();
3133       ],
3134       AC_MSG_RESULT(yes);
3135               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3136       AC_MSG_RESULT(no);
3137               AC_MSG_CHECKING([for dlopen() in -ldl])
3138               olibs=$LIBS
3139               LIBS="$LIBS -ldl"
3140               AC_TRY_LINK(,[
3141                                 extern void* dlopen();
3142                                 dlopen();
3143                  ],
3144                  AC_MSG_RESULT(yes);
3145                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3146                  AC_MSG_RESULT(no);
3147                           LIBS=$olibs))
3148   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3149   dnl ick :-)
3150   AC_MSG_CHECKING([for dlsym()])
3151   AC_TRY_LINK(,[
3152                 extern void* dlsym();
3153                 dlsym();
3154       ],
3155       AC_MSG_RESULT(yes);
3156               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3157       AC_MSG_RESULT(no);
3158               AC_MSG_CHECKING([for dlsym() in -ldl])
3159               olibs=$LIBS
3160               LIBS="$LIBS -ldl"
3161               AC_TRY_LINK(,[
3162                                 extern void* dlsym();
3163                                 dlsym();
3164                  ],
3165                  AC_MSG_RESULT(yes);
3166                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3167                  AC_MSG_RESULT(no);
3168                           LIBS=$olibs))
3169 elif test x${DLL} = xdl.h; then
3170   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3171   AC_MSG_CHECKING([for shl_load()])
3172   AC_TRY_LINK(,[
3173                 extern void* shl_load();
3174                 shl_load();
3175      ],
3176      AC_MSG_RESULT(yes);
3177           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3178      AC_MSG_RESULT(no);
3179           AC_MSG_CHECKING([for shl_load() in -ldld])
3180           olibs=$LIBS
3181           LIBS="$LIBS -ldld"
3182           AC_TRY_LINK(,[
3183                         extern void* shl_load();
3184                         shl_load();
3185              ],
3186              AC_MSG_RESULT(yes);
3187                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3188              AC_MSG_RESULT(no);
3189                   LIBS=$olibs))
3191 AC_CHECK_HEADERS(setjmp.h)
3193 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3194   dnl -ldl must come after DynaLoader.a
3195   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3196     LIBS=`echo $LIBS | sed s/-ldl//`
3197     PERL_LIBS="$PERL_LIBS -ldl"
3198   fi
3201 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3202         && test "x$GUITYPE" != "xCARBONGUI"; then
3203   AC_MSG_CHECKING(whether we need -framework Carbon)
3204   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3205   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3206         || test "x$features" = "xhuge"; then
3207     LIBS="$LIBS -framework Carbon"
3208     AC_MSG_RESULT(yes)
3209   else
3210     AC_MSG_RESULT(no)
3211   fi
3213 if test "x$MACARCH" = "xboth"; then
3214   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3217 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3218 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3219 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3220 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3221 dnl the number before the version number.
3222 DEPEND_CFLAGS_FILTER=
3223 if test "$GCC" = yes; then
3224   AC_MSG_CHECKING(for GCC 3 or later)
3225   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3226   if test "$gccmajor" -gt "2"; then
3227     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3228     AC_MSG_RESULT(yes)
3229   else
3230     AC_MSG_RESULT(no)
3231   fi
3232   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3233   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3234   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3235   if test "$gccmajor" -gt "3"; then
3236     CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
3237     AC_MSG_RESULT(yes)
3238   else
3239     AC_MSG_RESULT(no)
3240   fi
3242 AC_SUBST(DEPEND_CFLAGS_FILTER)
3244 dnl write output files
3245 AC_OUTPUT(auto/config.mk:config.mk.in)
3247 dnl vim: set sw=2 tw=78 fo+=l: