vim72-20100313-kaoriya-w64j
[MacVim/KaoriYa.git] / src / configure.in
blobebcaf14008ca114cd042e2652d19a0d1183c868b
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 lib64 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_MSG_CHECKING(--with-ruby-command argument)
953   AC_ARG_WITH(ruby-command, [  --with-ruby-command=RUBY  name of the Ruby command (default: ruby)],
954         RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
955         RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
956   AC_SUBST(vi_cv_path_ruby)
957   AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
958   if test "X$vi_cv_path_ruby" != "X"; then
959     AC_MSG_CHECKING(Ruby version)
960     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
961       AC_MSG_RESULT(OK)
962       AC_MSG_CHECKING(Ruby header files)
963       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
964       if test "X$rubyhdrdir" != "X"; then
965         AC_MSG_RESULT($rubyhdrdir)
966         RUBY_CFLAGS="-I$rubyhdrdir"
967         rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
968         if test -d "$rubyhdrdir/$rubyarch"; then
969           RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
970         fi
971         rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
972         RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
973         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
974         if test "X$rubylibs" != "X"; then
975           RUBY_LIBS="$rubylibs"
976         fi
977         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
978         if test -f "$rubyhdrdir/$librubyarg"; then
979           librubyarg="$rubyhdrdir/$librubyarg"
980         else
981           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
982           if test -f "$rubylibdir/$librubyarg"; then
983             librubyarg="$rubylibdir/$librubyarg"
984           elif test "$librubyarg" = "libruby.a"; then
985             dnl required on Mac OS 10.3 where libruby.a doesn't exist
986             librubyarg="-lruby"
987           else
988             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
989           fi
990         fi
992         if test "X$librubyarg" != "X"; then
993           RUBY_LIBS="$librubyarg $RUBY_LIBS"
994         fi
995         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
996         if test "X$rubyldflags" != "X"; then
997           dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
998           dnl be included if requested by passing --with-mac-arch to
999           dnl configure, so strip these flags first (if present)
1000           rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1001           if test "X$rubyldflags" != "X"; then
1002             LDFLAGS="$rubyldflags $LDFLAGS"
1003           fi
1004         fi
1005         RUBY_SRC="if_ruby.c"
1006         RUBY_OBJ="objects/if_ruby.o"
1007         RUBY_PRO="if_ruby.pro"
1008         AC_DEFINE(FEAT_RUBY)
1009       else
1010         AC_MSG_RESULT(not found; disabling Ruby)
1011       fi
1012     else
1013       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1014     fi
1015   fi
1017 AC_SUBST(RUBY_SRC)
1018 AC_SUBST(RUBY_OBJ)
1019 AC_SUBST(RUBY_PRO)
1020 AC_SUBST(RUBY_CFLAGS)
1021 AC_SUBST(RUBY_LIBS)
1023 AC_MSG_CHECKING(--enable-cscope argument)
1024 AC_ARG_ENABLE(cscope,
1025         [  --enable-cscope         Include cscope interface.], ,
1026         [enable_cscope="no"])
1027 AC_MSG_RESULT($enable_cscope)
1028 if test "$enable_cscope" = "yes"; then
1029   AC_DEFINE(FEAT_CSCOPE)
1032 AC_MSG_CHECKING(--enable-workshop argument)
1033 AC_ARG_ENABLE(workshop,
1034         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1035         [enable_workshop="no"])
1036 AC_MSG_RESULT($enable_workshop)
1037 if test "$enable_workshop" = "yes"; then
1038   AC_DEFINE(FEAT_SUN_WORKSHOP)
1039   WORKSHOP_SRC="workshop.c integration.c"
1040   AC_SUBST(WORKSHOP_SRC)
1041   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1042   AC_SUBST(WORKSHOP_OBJ)
1043   if test "${enable_gui-xxx}" = xxx; then
1044     enable_gui=motif
1045   fi
1048 AC_MSG_CHECKING(--disable-netbeans argument)
1049 AC_ARG_ENABLE(netbeans,
1050         [  --disable-netbeans      Disable NetBeans integration support.],
1051         , [enable_netbeans="yes"])
1052 if test "$enable_netbeans" = "yes"; then
1053   AC_MSG_RESULT(no)
1054   dnl On Solaris we need the socket and nsl library.
1055   AC_CHECK_LIB(socket, socket)
1056   AC_CHECK_LIB(nsl, gethostbyname)
1057   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1058   AC_TRY_LINK([
1059 #include <stdio.h>
1060 #include <stdlib.h>
1061 #include <stdarg.h>
1062 #include <fcntl.h>
1063 #include <netdb.h>
1064 #include <netinet/in.h>
1065 #include <errno.h>
1066 #include <sys/types.h>
1067 #include <sys/socket.h>
1068         /* Check bitfields */
1069         struct nbbuf {
1070         unsigned int  initDone:1;
1071         ushort signmaplen;
1072         };
1073             ], [
1074                 /* Check creating a socket. */
1075                 struct sockaddr_in server;
1076                 (void)socket(AF_INET, SOCK_STREAM, 0);
1077                 (void)htons(100);
1078                 (void)gethostbyname("microsoft.com");
1079                 if (errno == ECONNREFUSED)
1080                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1081             ],
1082         AC_MSG_RESULT(yes),
1083         AC_MSG_RESULT(no); enable_netbeans="no")
1084 else
1085   AC_MSG_RESULT(yes)
1087 if test "$enable_netbeans" = "yes"; then
1088   AC_DEFINE(FEAT_NETBEANS_INTG)
1089   NETBEANS_SRC="netbeans.c"
1090   AC_SUBST(NETBEANS_SRC)
1091   NETBEANS_OBJ="objects/netbeans.o"
1092   AC_SUBST(NETBEANS_OBJ)
1095 AC_MSG_CHECKING(--enable-sniff argument)
1096 AC_ARG_ENABLE(sniff,
1097         [  --enable-sniff          Include Sniff interface.], ,
1098         [enable_sniff="no"])
1099 AC_MSG_RESULT($enable_sniff)
1100 if test "$enable_sniff" = "yes"; then
1101   AC_DEFINE(FEAT_SNIFF)
1102   SNIFF_SRC="if_sniff.c"
1103   AC_SUBST(SNIFF_SRC)
1104   SNIFF_OBJ="objects/if_sniff.o"
1105   AC_SUBST(SNIFF_OBJ)
1108 AC_MSG_CHECKING(--enable-multibyte argument)
1109 AC_ARG_ENABLE(multibyte,
1110         [  --enable-multibyte      Include multibyte editing support.], ,
1111         [enable_multibyte="no"])
1112 AC_MSG_RESULT($enable_multibyte)
1113 if test "$enable_multibyte" = "yes"; then
1114   AC_DEFINE(FEAT_MBYTE)
1117 AC_MSG_CHECKING(--enable-hangulinput argument)
1118 AC_ARG_ENABLE(hangulinput,
1119         [  --enable-hangulinput    Include Hangul input support.], ,
1120         [enable_hangulinput="no"])
1121 AC_MSG_RESULT($enable_hangulinput)
1123 AC_MSG_CHECKING(--enable-xim argument)
1124 AC_ARG_ENABLE(xim,
1125         [  --enable-xim            Include XIM input support.],
1126         AC_MSG_RESULT($enable_xim),
1127         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1128 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1130 AC_MSG_CHECKING(--enable-fontset argument)
1131 AC_ARG_ENABLE(fontset,
1132         [  --enable-fontset        Include X fontset output support.], ,
1133         [enable_fontset="no"])
1134 AC_MSG_RESULT($enable_fontset)
1135 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1137 test -z "$with_x" && with_x=yes
1138 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1139 if test "$with_x" = no; then
1140   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1141 else
1142   dnl Do this check early, so that its failure can override user requests.
1144   AC_PATH_PROG(xmkmfpath, xmkmf)
1146   AC_PATH_XTRA
1148   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1149   dnl be compiled with a special option.
1150   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1151   if test "$OS390Unix" = "yes"; then
1152     CFLAGS="$CFLAGS -W c,dll"
1153     LDFLAGS="$LDFLAGS -W l,dll"
1154     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1155   fi
1157   dnl On my HPUX system the X include dir is found, but the lib dir not.
1158   dnl This is a desparate try to fix this.
1160   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1161     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1162     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1163     X_LIBS="$X_LIBS -L$x_libraries"
1164     if test "`(uname) 2>/dev/null`" = SunOS &&
1165                                          uname -r | grep '^5' >/dev/null; then
1166       X_LIBS="$X_LIBS -R $x_libraries"
1167     fi
1168   fi
1170   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1171     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1172     AC_MSG_RESULT(Corrected X includes to $x_includes)
1173     X_CFLAGS="$X_CFLAGS -I$x_includes"
1174   fi
1176   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1177   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1178   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1179   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1180   dnl Same for "-R/usr/lib ".
1181   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1184   dnl Check if the X11 header files are correctly installed. On some systems
1185   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1186   dnl is missing.
1187   AC_MSG_CHECKING(if X11 header files can be found)
1188   cflags_save=$CFLAGS
1189   CFLAGS="$CFLAGS $X_CFLAGS"
1190   AC_TRY_COMPILE([#include <X11/Xlib.h>
1191 #include <X11/Intrinsic.h>], ,
1192         AC_MSG_RESULT(yes),
1193         AC_MSG_RESULT(no); no_x=yes)
1194   CFLAGS=$cflags_save
1196   if test "${no_x-no}" = yes; then
1197     with_x=no
1198   else
1199     AC_DEFINE(HAVE_X11)
1200     X_LIB="-lXt -lX11";
1201     AC_SUBST(X_LIB)
1203     ac_save_LDFLAGS="$LDFLAGS"
1204     LDFLAGS="-L$x_libraries $LDFLAGS"
1206     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1207     dnl For HP-UX 10.20 it must be before -lSM -lICE
1208     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1209                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1211     dnl Some systems need -lnsl -lsocket when testing for ICE.
1212     dnl The check above doesn't do this, try here (again).  Also needed to get
1213     dnl them after Xdmcp.  link.sh will remove them when not needed.
1214     dnl Check for other function than above to avoid the cached value
1215     AC_CHECK_LIB(ICE, IceOpenConnection,
1216                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1218     dnl Check for -lXpm (needed for some versions of Motif)
1219     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1220     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1221                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1223     dnl Check that the X11 header files don't use implicit declarations
1224     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1225     cflags_save=$CFLAGS
1226     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1227     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1228         AC_MSG_RESULT(no),
1229         CFLAGS="$CFLAGS -Wno-implicit-int"
1230         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1231             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1232             AC_MSG_RESULT(test failed)
1233         )
1234     )
1235     CFLAGS=$cflags_save
1237     LDFLAGS="$ac_save_LDFLAGS"
1239     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1240     AC_CACHE_VAL(ac_cv_small_wchar_t,
1241         [AC_TRY_RUN([
1242 #include <X11/Xlib.h>
1243 #if STDC_HEADERS
1244 # include <stdlib.h>
1245 # include <stddef.h>
1246 #endif
1247                 main()
1248                 {
1249                   if (sizeof(wchar_t) <= 2)
1250                     exit(1);
1251                   exit(0);
1252                 }],
1253                 ac_cv_small_wchar_t="no",
1254                 ac_cv_small_wchar_t="yes",
1255                 AC_MSG_ERROR(failed to compile test program))])
1256     AC_MSG_RESULT($ac_cv_small_wchar_t)
1257     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1258       AC_DEFINE(SMALL_WCHAR_T)
1259     fi
1261   fi
1264 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1266 AC_MSG_CHECKING(--enable-gui argument)
1267 AC_ARG_ENABLE(gui,
1268  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1270 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1271 dnl Do not use character classes for portability with old tools.
1272 enable_gui_canon=`echo "_$enable_gui" | \
1273         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1275 dnl Skip everything by default.
1276 SKIP_GTK=YES
1277 SKIP_GTK2=YES
1278 SKIP_GNOME=YES
1279 SKIP_MOTIF=YES
1280 SKIP_ATHENA=YES
1281 SKIP_NEXTAW=YES
1282 SKIP_PHOTON=YES
1283 SKIP_CARBON=YES
1284 GUITYPE=NONE
1286 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1287   SKIP_PHOTON=
1288   case "$enable_gui_canon" in
1289     no)         AC_MSG_RESULT(no GUI support)
1290                 SKIP_PHOTON=YES ;;
1291     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1292     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1293     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1294     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1295                 SKIP_PHOTON=YES ;;
1296   esac
1298 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1299   SKIP_CARBON=
1300   case "$enable_gui_canon" in
1301     no)         AC_MSG_RESULT(no GUI support)
1302                 SKIP_CARBON=YES ;;
1303     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1304     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1305     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1306     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1307                 SKIP_CARBON=YES ;;
1308   esac
1310 else
1312   case "$enable_gui_canon" in
1313     no|none)    AC_MSG_RESULT(no GUI support) ;;
1314     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1315                 SKIP_GTK=
1316                 SKIP_GTK2=
1317                 SKIP_GNOME=
1318                 SKIP_MOTIF=
1319                 SKIP_ATHENA=
1320                 SKIP_NEXTAW=
1321                 SKIP_CARBON=;;
1322     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1323                 SKIP_GTK=;;
1324     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1325                 SKIP_GTK=
1326                 SKIP_GTK2=;;
1327     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1328                 SKIP_GNOME=
1329                 SKIP_GTK=;;
1330     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1331                 SKIP_GNOME=
1332                 SKIP_GTK=
1333                 SKIP_GTK2=;;
1334     motif)      AC_MSG_RESULT(Motif GUI support)
1335                 SKIP_MOTIF=;;
1336     athena)     AC_MSG_RESULT(Athena GUI support)
1337                 SKIP_ATHENA=;;
1338     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1339                 SKIP_NEXTAW=;;
1340     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1341   esac
1345 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1346   AC_MSG_CHECKING(whether or not to look for GTK)
1347   AC_ARG_ENABLE(gtk-check,
1348         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1349         , enable_gtk_check="yes")
1350   AC_MSG_RESULT($enable_gtk_check)
1351   if test "x$enable_gtk_check" = "xno"; then
1352     SKIP_GTK=YES
1353     SKIP_GNOME=YES
1354   fi
1357 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1358                                 -a "$enable_gui_canon" != "gnome2"; then
1359   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1360   AC_ARG_ENABLE(gtk2-check,
1361         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1362         , enable_gtk2_check="yes")
1363   AC_MSG_RESULT($enable_gtk2_check)
1364   if test "x$enable_gtk2_check" = "xno"; then
1365     SKIP_GTK2=YES
1366   fi
1369 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1370                                  -a "$enable_gui_canon" != "gnome2"; then
1371   AC_MSG_CHECKING(whether or not to look for GNOME)
1372   AC_ARG_ENABLE(gnome-check,
1373         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1374         , enable_gnome_check="no")
1375   AC_MSG_RESULT($enable_gnome_check)
1376   if test "x$enable_gnome_check" = "xno"; then
1377     SKIP_GNOME=YES
1378   fi
1381 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1382   AC_MSG_CHECKING(whether or not to look for Motif)
1383   AC_ARG_ENABLE(motif-check,
1384         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1385         , enable_motif_check="yes")
1386   AC_MSG_RESULT($enable_motif_check)
1387   if test "x$enable_motif_check" = "xno"; then
1388     SKIP_MOTIF=YES
1389   fi
1392 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1393   AC_MSG_CHECKING(whether or not to look for Athena)
1394   AC_ARG_ENABLE(athena-check,
1395         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1396         , enable_athena_check="yes")
1397   AC_MSG_RESULT($enable_athena_check)
1398   if test "x$enable_athena_check" = "xno"; then
1399     SKIP_ATHENA=YES
1400   fi
1403 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1404   AC_MSG_CHECKING(whether or not to look for neXtaw)
1405   AC_ARG_ENABLE(nextaw-check,
1406         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1407         , enable_nextaw_check="yes")
1408   AC_MSG_RESULT($enable_nextaw_check);
1409   if test "x$enable_nextaw_check" = "xno"; then
1410     SKIP_NEXTAW=YES
1411   fi
1414 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1415   AC_MSG_CHECKING(whether or not to look for Carbon)
1416   AC_ARG_ENABLE(carbon-check,
1417         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1418         , enable_carbon_check="yes")
1419   AC_MSG_RESULT($enable_carbon_check);
1420   if test "x$enable_carbon_check" = "xno"; then
1421     SKIP_CARBON=YES
1422   fi
1426 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1427   AC_MSG_CHECKING(for Carbon GUI)
1428   dnl already did the check, just give the message
1429   AC_MSG_RESULT(yes);
1430   GUITYPE=CARBONGUI
1431   if test "$VIMNAME" = "vim"; then
1432     VIMNAME=Vim
1433   fi
1435   dnl Default install directory is not /usr/local
1436   if test x$prefix = xNONE; then
1437     prefix=/Applications
1438   fi
1440   dnl Sorry for the hard coded default
1441   datadir='${prefix}/Vim.app/Contents/Resources'
1443   dnl skip everything else
1444   SKIP_GTK=YES;
1445   SKIP_GTK2=YES;
1446   SKIP_GNOME=YES;
1447   SKIP_MOTIF=YES;
1448   SKIP_ATHENA=YES;
1449   SKIP_NEXTAW=YES;
1450   SKIP_PHOTON=YES;
1451   SKIP_CARBON=YES
1455 dnl Get the cflags and libraries from the gtk-config script
1458 dnl define an autoconf function to check for a specified version of GTK, and
1459 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1461 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1462 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1464 AC_DEFUN(AM_PATH_GTK,
1466   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1467   {
1468     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1469     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1470     no_gtk=""
1471     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1472           && $PKG_CONFIG --exists gtk+-2.0; then
1473     {
1474       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1475       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1476       dnl something like that.
1477       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1478       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1479       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1480       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1481              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1482       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1483              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1484       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1485              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1486     }
1487     elif test "X$GTK_CONFIG" != "Xno"; then
1488     {
1489       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1490       GTK_LIBDIR=
1491       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1492       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1493              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1494       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1495              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1496       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1497              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1498     }
1499     else
1500       no_gtk=yes
1501     fi
1503     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1504     {
1505       ac_save_CFLAGS="$CFLAGS"
1506       ac_save_LIBS="$LIBS"
1507       CFLAGS="$CFLAGS $GTK_CFLAGS"
1508       LIBS="$LIBS $GTK_LIBS"
1510       dnl
1511       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1512       dnl checks the results of gtk-config to some extent
1513       dnl
1514       rm -f conf.gtktest
1515       AC_TRY_RUN([
1516 #include <gtk/gtk.h>
1517 #include <stdio.h>
1518 #if STDC_HEADERS
1519 # include <stdlib.h>
1520 # include <stddef.h>
1521 #endif
1524 main ()
1526 int major, minor, micro;
1527 char *tmp_version;
1529 system ("touch conf.gtktest");
1531 /* HP/UX 9 (%@#!) writes to sscanf strings */
1532 tmp_version = g_strdup("$min_gtk_version");
1533 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1534    printf("%s, bad version string\n", "$min_gtk_version");
1535    exit(1);
1538 if ((gtk_major_version > major) ||
1539     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1540     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1541                                      (gtk_micro_version >= micro)))
1543     return 0;
1545 return 1;
1547 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1548       CFLAGS="$ac_save_CFLAGS"
1549       LIBS="$ac_save_LIBS"
1550     }
1551     fi
1552     if test "x$no_gtk" = x ; then
1553       if test "x$enable_gtktest" = "xyes"; then
1554         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1555       else
1556         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1557       fi
1558       ifelse([$2], , :, [$2])
1559     else
1560     {
1561       AC_MSG_RESULT(no)
1562       GTK_CFLAGS=""
1563       GTK_LIBS=""
1564       ifelse([$3], , :, [$3])
1565     }
1566     fi
1567   }
1568   else
1569     GTK_CFLAGS=""
1570     GTK_LIBS=""
1571     ifelse([$3], , :, [$3])
1572   fi
1573   AC_SUBST(GTK_CFLAGS)
1574   AC_SUBST(GTK_LIBS)
1575   rm -f conf.gtktest
1578 dnl ---------------------------------------------------------------------------
1579 dnl gnome
1580 dnl ---------------------------------------------------------------------------
1581 AC_DEFUN([GNOME_INIT_HOOK],
1583   AC_SUBST(GNOME_LIBS)
1584   AC_SUBST(GNOME_LIBDIR)
1585   AC_SUBST(GNOME_INCLUDEDIR)
1587   AC_ARG_WITH(gnome-includes,
1588     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1589     [CFLAGS="$CFLAGS -I$withval"]
1590   )
1592   AC_ARG_WITH(gnome-libs,
1593     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1594     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1595   )
1597   AC_ARG_WITH(gnome,
1598     [  --with-gnome            Specify prefix for GNOME files],
1599     if test x$withval = xyes; then
1600       want_gnome=yes
1601       ifelse([$1], [], :, [$1])
1602     else
1603       if test "x$withval" = xno; then
1604         want_gnome=no
1605       else
1606         want_gnome=yes
1607         LDFLAGS="$LDFLAGS -L$withval/lib"
1608         CFLAGS="$CFLAGS -I$withval/include"
1609         gnome_prefix=$withval/lib
1610       fi
1611     fi,
1612     want_gnome=yes)
1614   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1615   {
1616     AC_MSG_CHECKING(for libgnomeui-2.0)
1617     if $PKG_CONFIG --exists libgnomeui-2.0; then
1618       AC_MSG_RESULT(yes)
1619       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1620       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1621       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1623       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1624       dnl This might not be the right way but it works for me...
1625       AC_MSG_CHECKING(for FreeBSD)
1626       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1627         AC_MSG_RESULT(yes, adding -pthread)
1628         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1629         GNOME_LIBS="$GNOME_LIBS -pthread"
1630       else
1631         AC_MSG_RESULT(no)
1632       fi
1633       $1
1634     else
1635       AC_MSG_RESULT(not found)
1636       if test "x$2" = xfail; then
1637         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1638       fi
1639     fi
1640   }
1641   elif test "x$want_gnome" = xyes; then
1642   {
1643     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1644     if test "$GNOME_CONFIG" = "no"; then
1645       no_gnome_config="yes"
1646     else
1647       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1648       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1649         AC_MSG_RESULT(yes)
1650         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1651         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1652         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1653         $1
1654       else
1655         AC_MSG_RESULT(no)
1656         no_gnome_config="yes"
1657       fi
1658     fi
1660     if test x$exec_prefix = xNONE; then
1661       if test x$prefix = xNONE; then
1662         gnome_prefix=$ac_default_prefix/lib
1663       else
1664         gnome_prefix=$prefix/lib
1665       fi
1666     else
1667       gnome_prefix=`eval echo \`echo $libdir\``
1668     fi
1670     if test "$no_gnome_config" = "yes"; then
1671       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1672       if test -f $gnome_prefix/gnomeConf.sh; then
1673         AC_MSG_RESULT(found)
1674         echo "loading gnome configuration from" \
1675           "$gnome_prefix/gnomeConf.sh"
1676         . $gnome_prefix/gnomeConf.sh
1677         $1
1678       else
1679         AC_MSG_RESULT(not found)
1680         if test x$2 = xfail; then
1681           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1682         fi
1683       fi
1684     fi
1685   }
1686   fi
1689 AC_DEFUN([GNOME_INIT],[
1690         GNOME_INIT_HOOK([],fail)
1694 dnl ---------------------------------------------------------------------------
1695 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1696 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1697 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1698 dnl ---------------------------------------------------------------------------
1699 if test -z "$SKIP_GTK"; then
1701   AC_MSG_CHECKING(--with-gtk-prefix argument)
1702   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1703         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1704         gtk_config_prefix=""; AC_MSG_RESULT(no))
1706   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1707   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1708         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1709         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1711   AC_MSG_CHECKING(--disable-gtktest argument)
1712   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1713         , enable_gtktest=yes)
1714   if test "x$enable_gtktest" = "xyes" ; then
1715     AC_MSG_RESULT(gtk test enabled)
1716   else
1717     AC_MSG_RESULT(gtk test disabled)
1718   fi
1720   if test "x$gtk_config_prefix" != "x" ; then
1721     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1722     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1723   fi
1724   if test "x$gtk_config_exec_prefix" != "x" ; then
1725     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1726     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1727   fi
1728   if test "X$GTK_CONFIG" = "X"; then
1729     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1730     if test "X$GTK_CONFIG" = "Xno"; then
1731       dnl Some distributions call it gtk12-config, annoying!
1732       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1733       GTK_CONFIG="$GTK12_CONFIG"
1734     fi
1735   else
1736     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1737   fi
1738   if test "X$PKG_CONFIG" = "X"; then
1739     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1740   fi
1742   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1743     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1744     dnl problems (bold fonts, --remote doesn't work).
1745     if test "X$SKIP_GTK2" != "XYES"; then
1746       AM_PATH_GTK(2.2.0,
1747                   [GUI_LIB_LOC="$GTK_LIBDIR"
1748                    GTK_LIBNAME="$GTK_LIBS"
1749                   GUI_INC_LOC="$GTK_CFLAGS"], )
1750       if test "x$GTK_CFLAGS" != "x"; then
1751         SKIP_ATHENA=YES
1752         SKIP_NEXTAW=YES
1753         SKIP_MOTIF=YES
1754         GUITYPE=GTK
1755         AC_SUBST(GTK_LIBNAME)
1756       fi
1757     fi
1759     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1760     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1761     dnl were test versions.
1762     if test "x$GUITYPE" != "xGTK"; then
1763       SKIP_GTK2=YES
1764       AM_PATH_GTK(1.1.16,
1765                   [GTK_LIBNAME="$GTK_LIBS"
1766                   GUI_INC_LOC="$GTK_CFLAGS"], )
1767       if test "x$GTK_CFLAGS" != "x"; then
1768         SKIP_ATHENA=YES
1769         SKIP_NEXTAW=YES
1770         SKIP_MOTIF=YES
1771         GUITYPE=GTK
1772         AC_SUBST(GTK_LIBNAME)
1773       fi
1774     fi
1775   fi
1776   dnl Give a warning if GTK is older than 1.2.3
1777   if test "x$GUITYPE" = "xGTK"; then
1778     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1779          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1780       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1781     else
1782     {
1783       if test "0$gtk_major_version" -ge 2; then
1784         AC_DEFINE(HAVE_GTK2)
1785         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1786                 || test "0$gtk_minor_version" -ge 2 \
1787                 || test "0$gtk_major_version" -gt 2; then
1788           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1789         fi
1790       fi
1791       dnl
1792       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1793       dnl
1794       if test -z "$SKIP_GNOME"; then
1795       {
1796         GNOME_INIT_HOOK([have_gnome=yes])
1797         if test x$have_gnome = xyes ; then
1798           AC_DEFINE(FEAT_GUI_GNOME)
1799           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1800           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1801         fi
1802       }
1803       fi
1804     }
1805     fi
1806   fi
1809 dnl Check for Motif include files location.
1810 dnl The LAST one found is used, this makes the highest version to be used,
1811 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1813 if test -z "$SKIP_MOTIF"; then
1814   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"
1815   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1816   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1818   AC_MSG_CHECKING(for location of Motif GUI includes)
1819   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1820   GUI_INC_LOC=
1821   for try in $gui_includes; do
1822     if test -f "$try/Xm/Xm.h"; then
1823       GUI_INC_LOC=$try
1824     fi
1825   done
1826   if test -n "$GUI_INC_LOC"; then
1827     if test "$GUI_INC_LOC" = /usr/include; then
1828       GUI_INC_LOC=
1829       AC_MSG_RESULT(in default path)
1830     else
1831       AC_MSG_RESULT($GUI_INC_LOC)
1832     fi
1833   else
1834     AC_MSG_RESULT(<not found>)
1835     SKIP_MOTIF=YES
1836   fi
1839 dnl Check for Motif library files location.  In the same order as the include
1840 dnl files, to avoid a mixup if several versions are present
1842 if test -z "$SKIP_MOTIF"; then
1843   AC_MSG_CHECKING(--with-motif-lib argument)
1844   AC_ARG_WITH(motif-lib,
1845   [  --with-motif-lib=STRING   Library for Motif ],
1846   [ MOTIF_LIBNAME="${withval}" ] )
1848   if test -n "$MOTIF_LIBNAME"; then
1849     AC_MSG_RESULT($MOTIF_LIBNAME)
1850     GUI_LIB_LOC=
1851   else
1852     AC_MSG_RESULT(no)
1854     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1855     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1857     AC_MSG_CHECKING(for location of Motif GUI libs)
1858     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"
1859     GUI_LIB_LOC=
1860     for try in $gui_libs; do
1861       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1862         if test -f "$libtry"; then
1863           GUI_LIB_LOC=$try
1864         fi
1865       done
1866     done
1867     if test -n "$GUI_LIB_LOC"; then
1868       dnl Remove /usr/lib, it causes trouble on some systems
1869       if test "$GUI_LIB_LOC" = /usr/lib; then
1870         GUI_LIB_LOC=
1871         AC_MSG_RESULT(in default path)
1872       else
1873         if test -n "$GUI_LIB_LOC"; then
1874           AC_MSG_RESULT($GUI_LIB_LOC)
1875           if test "`(uname) 2>/dev/null`" = SunOS &&
1876                                          uname -r | grep '^5' >/dev/null; then
1877             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1878           fi
1879         fi
1880       fi
1881       MOTIF_LIBNAME=-lXm
1882     else
1883       AC_MSG_RESULT(<not found>)
1884       SKIP_MOTIF=YES
1885     fi
1886   fi
1889 if test -z "$SKIP_MOTIF"; then
1890   SKIP_ATHENA=YES
1891   SKIP_NEXTAW=YES
1892   GUITYPE=MOTIF
1893   AC_SUBST(MOTIF_LIBNAME)
1896 dnl Check if the Athena files can be found
1898 GUI_X_LIBS=
1900 if test -z "$SKIP_ATHENA"; then
1901   AC_MSG_CHECKING(if Athena header files can be found)
1902   cflags_save=$CFLAGS
1903   CFLAGS="$CFLAGS $X_CFLAGS"
1904   AC_TRY_COMPILE([
1905 #include <X11/Intrinsic.h>
1906 #include <X11/Xaw/Paned.h>], ,
1907         AC_MSG_RESULT(yes),
1908         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1909   CFLAGS=$cflags_save
1912 if test -z "$SKIP_ATHENA"; then
1913   GUITYPE=ATHENA
1916 if test -z "$SKIP_NEXTAW"; then
1917   AC_MSG_CHECKING(if neXtaw header files can be found)
1918   cflags_save=$CFLAGS
1919   CFLAGS="$CFLAGS $X_CFLAGS"
1920   AC_TRY_COMPILE([
1921 #include <X11/Intrinsic.h>
1922 #include <X11/neXtaw/Paned.h>], ,
1923         AC_MSG_RESULT(yes),
1924         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1925   CFLAGS=$cflags_save
1928 if test -z "$SKIP_NEXTAW"; then
1929   GUITYPE=NEXTAW
1932 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1933   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1934   dnl Avoid adding it when it twice
1935   if test -n "$GUI_INC_LOC"; then
1936     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1937   fi
1938   if test -n "$GUI_LIB_LOC"; then
1939     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1940   fi
1942   dnl Check for -lXext and then for -lXmu
1943   ldflags_save=$LDFLAGS
1944   LDFLAGS="$X_LIBS $LDFLAGS"
1945   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1946                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1947   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1948   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1949                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1950   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1951                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1952   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1953                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1954   if test -z "$SKIP_MOTIF"; then
1955     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1956                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1957   fi
1958   LDFLAGS=$ldflags_save
1960   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1961   AC_MSG_CHECKING(for extra X11 defines)
1962   NARROW_PROTO=
1963   rm -fr conftestdir
1964   if mkdir conftestdir; then
1965     cd conftestdir
1966     cat > Imakefile <<'EOF'
1967 acfindx:
1968         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1970     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1971       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1972     fi
1973     cd ..
1974     rm -fr conftestdir
1975   fi
1976   if test -z "$NARROW_PROTO"; then
1977     AC_MSG_RESULT(no)
1978   else
1979     AC_MSG_RESULT($NARROW_PROTO)
1980   fi
1981   AC_SUBST(NARROW_PROTO)
1984 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1985 dnl use the X11 include path
1986 if test "$enable_xsmp" = "yes"; then
1987   cppflags_save=$CPPFLAGS
1988   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1989   AC_CHECK_HEADERS(X11/SM/SMlib.h)
1990   CPPFLAGS=$cppflags_save
1994 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1995   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1996   cppflags_save=$CPPFLAGS
1997   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1998   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2000   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2001   if test ! "$enable_xim" = "no"; then
2002     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2003     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2004                   AC_MSG_RESULT(yes),
2005                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2006   fi
2007   CPPFLAGS=$cppflags_save
2009   dnl automatically enable XIM when hangul input isn't enabled
2010   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2011                 -a "x$GUITYPE" != "xNONE" ; then
2012     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2013     enable_xim="yes"
2014   fi
2017 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2018   cppflags_save=$CPPFLAGS
2019   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2020 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2021   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2022   AC_TRY_COMPILE([
2023 #include <X11/Intrinsic.h>
2024 #include <X11/Xmu/Editres.h>],
2025                       [int i; i = 0;],
2026               AC_MSG_RESULT(yes)
2027                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2028               AC_MSG_RESULT(no))
2029   CPPFLAGS=$cppflags_save
2032 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2033 if test -z "$SKIP_MOTIF"; then
2034   cppflags_save=$CPPFLAGS
2035   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2036   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2037                    Xm/UnhighlightT.h Xm/Notebook.h)
2039   if test $ac_cv_header_Xm_XpmP_h = yes; then
2040     dnl Solaris uses XpmAttributes_21, very annoying.
2041     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2042     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2043         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2044         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2045         )
2046   else
2047     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2048   fi
2049   CPPFLAGS=$cppflags_save
2052 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2053   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2054   enable_xim="no"
2056 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2057   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2058   enable_fontset="no"
2060 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2061   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2062   enable_fontset="no"
2065 if test -z "$SKIP_PHOTON"; then
2066   GUITYPE=PHOTONGUI
2069 AC_SUBST(GUI_INC_LOC)
2070 AC_SUBST(GUI_LIB_LOC)
2071 AC_SUBST(GUITYPE)
2072 AC_SUBST(GUI_X_LIBS)
2074 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2075   AC_MSG_ERROR([cannot use workshop without Motif])
2078 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2079 if test "$enable_xim" = "yes"; then
2080   AC_DEFINE(FEAT_XIM)
2082 if test "$enable_fontset" = "yes"; then
2083   AC_DEFINE(FEAT_XFONTSET)
2087 dnl ---------------------------------------------------------------------------
2088 dnl end of GUI-checking
2089 dnl ---------------------------------------------------------------------------
2092 dnl Only really enable hangul input when GUI and XFONTSET are available
2093 if test "$enable_hangulinput" = "yes"; then
2094   if test "x$GUITYPE" = "xNONE"; then
2095     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2096     enable_hangulinput=no
2097   else
2098     AC_DEFINE(FEAT_HANGULIN)
2099     HANGULIN_SRC=hangulin.c
2100     AC_SUBST(HANGULIN_SRC)
2101     HANGULIN_OBJ=objects/hangulin.o
2102     AC_SUBST(HANGULIN_OBJ)
2103   fi
2106 dnl Check --disable-uimfep option.
2107 AC_MSG_CHECKING(--disable-uimfep argument)
2108 AC_ARG_ENABLE(uimfep,
2109         [  --disable-uimfep        Don't support UIMFEP.],,
2110         [enable_uimfep="yes"])
2111 if test "$enable_uimfep" = "yes"; then
2112   AC_MSG_RESULT(no)
2113   AC_DEFINE(FEAT_UIMFEP)
2114 else
2115   AC_MSG_RESULT(yes)
2119 dnl Checks for libraries and include files.
2121 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2122   [
2123     AC_RUN_IFELSE([[
2124 #include "confdefs.h"
2125 #include <ctype.h>
2126 #if STDC_HEADERS
2127 # include <stdlib.h>
2128 # include <stddef.h>
2129 #endif
2130 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2131   ]],[
2132     vim_cv_toupper_broken=yes
2133   ],[
2134     vim_cv_toupper_broken=no
2135   ],[
2136     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2137   ])])
2139 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2140   AC_DEFINE(BROKEN_TOUPPER)
2143 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2144 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2145         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2146         AC_MSG_RESULT(no))
2148 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2149 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2150         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2151         AC_MSG_RESULT(no))
2153 dnl Checks for header files.
2154 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2155 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2156 if test "$HAS_ELF" = 1; then
2157   AC_CHECK_LIB(elf, main)
2160 AC_HEADER_DIRENT
2162 dnl If sys/wait.h is not found it might still exist but not be POSIX
2163 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2164 if test $ac_cv_header_sys_wait_h = no; then
2165   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2166   AC_TRY_COMPILE([#include <sys/wait.h>],
2167                         [union wait xx, yy; xx = yy],
2168                 AC_MSG_RESULT(yes)
2169                         AC_DEFINE(HAVE_SYS_WAIT_H)
2170                         AC_DEFINE(HAVE_UNION_WAIT),
2171                 AC_MSG_RESULT(no))
2174 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2175         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2176         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2177         migemo.h \
2178         sys/resource.h sys/systeminfo.h locale.h \
2179         sys/stream.h termios.h libc.h sys/statfs.h \
2180         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2181         libgen.h util/debug.h util/msg18n.h frame.h \
2182         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2184 dnl sys/ptem.h depends on sys/stream.h on Solaris
2185 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2186 [#if defined HAVE_SYS_STREAM_H
2187 #  include <sys/stream.h>
2188 #endif])
2190 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2191 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2192 [#if defined HAVE_SYS_PARAM_H
2193 #  include <sys/param.h>
2194 #endif])
2197 dnl pthread_np.h may exist but can only be used after including pthread.h
2198 AC_MSG_CHECKING([for pthread_np.h])
2199 AC_TRY_COMPILE([
2200 #include <pthread.h>
2201 #include <pthread_np.h>],
2202                       [int i; i = 0;],
2203               AC_MSG_RESULT(yes)
2204                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2205               AC_MSG_RESULT(no))
2207 AC_CHECK_HEADERS(strings.h)
2208 if test "x$MACOSX" = "xyes"; then
2209   dnl The strings.h file on OS/X contains a warning and nothing useful.
2210   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2211 else
2213 dnl Check if strings.h and string.h can both be included when defined.
2214 AC_MSG_CHECKING([if strings.h can be included after string.h])
2215 cppflags_save=$CPPFLAGS
2216 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2217 AC_TRY_COMPILE([
2218 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2219 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2220                         /* but don't do it on AIX 5.1 (Uribarri) */
2221 #endif
2222 #ifdef HAVE_XM_XM_H
2223 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2224 #endif
2225 #ifdef HAVE_STRING_H
2226 # include <string.h>
2227 #endif
2228 #if defined(HAVE_STRINGS_H)
2229 # include <strings.h>
2230 #endif
2231                 ], [int i; i = 0;],
2232                 AC_MSG_RESULT(yes),
2233                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2234                 AC_MSG_RESULT(no))
2235 CPPFLAGS=$cppflags_save
2238 dnl Checks for typedefs, structures, and compiler characteristics.
2239 AC_PROG_GCC_TRADITIONAL
2240 AC_C_CONST
2241 AC_C_VOLATILE
2242 AC_TYPE_MODE_T
2243 AC_TYPE_OFF_T
2244 AC_TYPE_PID_T
2245 AC_TYPE_SIZE_T
2246 AC_TYPE_UID_T
2247 AC_HEADER_TIME
2248 AC_CHECK_TYPE(ino_t, long)
2249 AC_CHECK_TYPE(dev_t, unsigned)
2251 AC_MSG_CHECKING(for rlim_t)
2252 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2253   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2254 else
2255   AC_EGREP_CPP(dnl
2256 changequote(<<,>>)dnl
2257 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2258 changequote([,]),
2259   [
2260 #include <sys/types.h>
2261 #if STDC_HEADERS
2262 # include <stdlib.h>
2263 # include <stddef.h>
2264 #endif
2265 #ifdef HAVE_SYS_RESOURCE_H
2266 # include <sys/resource.h>
2267 #endif
2268           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2269           AC_MSG_RESULT($ac_cv_type_rlim_t)
2271 if test $ac_cv_type_rlim_t = no; then
2272   cat >> confdefs.h <<\EOF
2273 #define rlim_t unsigned long
2277 AC_MSG_CHECKING(for stack_t)
2278 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2279   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2280 else
2281   AC_EGREP_CPP(stack_t,
2282   [
2283 #include <sys/types.h>
2284 #if STDC_HEADERS
2285 # include <stdlib.h>
2286 # include <stddef.h>
2287 #endif
2288 #include <signal.h>
2289           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2290           AC_MSG_RESULT($ac_cv_type_stack_t)
2292 if test $ac_cv_type_stack_t = no; then
2293   cat >> confdefs.h <<\EOF
2294 #define stack_t struct sigaltstack
2298 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2299 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2300 AC_TRY_COMPILE([
2301 #include <sys/types.h>
2302 #if STDC_HEADERS
2303 # include <stdlib.h>
2304 # include <stddef.h>
2305 #endif
2306 #include <signal.h>
2307 #include "confdefs.h"
2308                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2309         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2310         AC_MSG_RESULT(no))
2312 olibs="$LIBS"
2313 AC_MSG_CHECKING(--with-tlib argument)
2314 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2315 if test -n "$with_tlib"; then
2316   AC_MSG_RESULT($with_tlib)
2317   LIBS="$LIBS -l$with_tlib"
2318   AC_MSG_CHECKING(for linking with $with_tlib library)
2319   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2320   dnl Need to check for tgetent() below.
2321   olibs="$LIBS"
2322 else
2323   AC_MSG_RESULT([empty: automatic terminal library selection])
2324   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2325   dnl  curses, because curses is much slower.
2326   dnl  Newer versions of ncurses are preferred over anything.
2327   dnl  Older versions of ncurses have bugs, get a new one!
2328   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2329   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2330   case "`uname -s 2>/dev/null`" in
2331         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2332         *)      tlibs="ncurses termlib termcap curses";;
2333   esac
2334   for libname in $tlibs; do
2335     AC_CHECK_LIB(${libname}, tgetent,,)
2336     if test "x$olibs" != "x$LIBS"; then
2337       dnl It's possible that a library is found but it doesn't work
2338       dnl e.g., shared library that cannot be found
2339       dnl compile and run a test program to be sure
2340       AC_TRY_RUN([
2341 #ifdef HAVE_TERMCAP_H
2342 # include <termcap.h>
2343 #endif
2344 #if STDC_HEADERS
2345 # include <stdlib.h>
2346 # include <stddef.h>
2347 #endif
2348 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2349                           res="OK", res="FAIL", res="FAIL")
2350       if test "$res" = "OK"; then
2351         break
2352       fi
2353       AC_MSG_RESULT($libname library is not usable)
2354       LIBS="$olibs"
2355     fi
2356   done
2357   if test "x$olibs" = "x$LIBS"; then
2358     AC_MSG_RESULT(no terminal library found)
2359   fi
2362 if test "x$olibs" = "x$LIBS"; then
2363   AC_MSG_CHECKING([for tgetent()])
2364   AC_TRY_LINK([],
2365       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2366         AC_MSG_RESULT(yes),
2367         AC_MSG_ERROR([NOT FOUND!
2368       You need to install a terminal library; for example ncurses.
2369       Or specify the name of the library with --with-tlib.]))
2372 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2373   [
2374     AC_RUN_IFELSE([[
2375 #include "confdefs.h"
2376 #ifdef HAVE_TERMCAP_H
2377 # include <termcap.h>
2378 #endif
2379 #ifdef HAVE_STRING_H
2380 # include <string.h>
2381 #endif
2382 #if STDC_HEADERS
2383 # include <stdlib.h>
2384 # include <stddef.h>
2385 #endif
2386 main()
2387 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2388     ]],[
2389       vim_cv_terminfo=no
2390     ],[
2391       vim_cv_terminfo=yes
2392     ],[
2393       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2394     ])
2395   ])
2397 if test "x$vim_cv_terminfo" = "xyes" ; then
2398   AC_DEFINE(TERMINFO)
2401 if test "x$olibs" != "x$LIBS"; then
2402   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2403     [
2404       AC_RUN_IFELSE([[
2405 #include "confdefs.h"
2406 #ifdef HAVE_TERMCAP_H
2407 # include <termcap.h>
2408 #endif
2409 #if STDC_HEADERS
2410 # include <stdlib.h>
2411 # include <stddef.h>
2412 #endif
2413 main()
2414 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2415       ]],[
2416         vim_cv_tgent=zero
2417       ],[
2418         vim_cv_tgent=non-zero
2419       ],[
2420         AC_MSG_ERROR(failed to compile test program.)
2421       ])
2422     ])
2423   
2424   if test "x$vim_cv_tgent" = "xzero" ; then
2425     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2426   fi
2429 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2430 AC_TRY_LINK([
2431 #ifdef HAVE_TERMCAP_H
2432 # include <termcap.h>
2433 #endif
2434                         ], [ospeed = 20000],
2435         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2436         [AC_MSG_RESULT(no)
2437         AC_MSG_CHECKING(whether ospeed can be extern)
2438         AC_TRY_LINK([
2439 #ifdef HAVE_TERMCAP_H
2440 # include <termcap.h>
2441 #endif
2442 extern short ospeed;
2443                         ], [ospeed = 20000],
2444                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2445                 AC_MSG_RESULT(no))]
2446         )
2448 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2449 AC_TRY_LINK([
2450 #ifdef HAVE_TERMCAP_H
2451 # include <termcap.h>
2452 #endif
2453                         ], [if (UP == 0 && BC == 0) PC = 1],
2454         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2455         [AC_MSG_RESULT(no)
2456         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2457         AC_TRY_LINK([
2458 #ifdef HAVE_TERMCAP_H
2459 # include <termcap.h>
2460 #endif
2461 extern char *UP, *BC, PC;
2462                         ], [if (UP == 0 && BC == 0) PC = 1],
2463                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2464                 AC_MSG_RESULT(no))]
2465         )
2467 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2468 AC_TRY_COMPILE([
2469 #ifdef HAVE_TERMCAP_H
2470 # include <termcap.h>
2471 #endif
2472                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2473         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2474         AC_MSG_RESULT(no))
2476 dnl On some SCO machines sys/select redefines struct timeval
2477 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2478 AC_TRY_COMPILE([
2479 #include <sys/types.h>
2480 #include <sys/time.h>
2481 #include <sys/select.h>], ,
2482           AC_MSG_RESULT(yes)
2483                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2484           AC_MSG_RESULT(no))
2486 dnl AC_DECL_SYS_SIGLIST
2488 dnl Checks for pty.c (copied from screen) ==========================
2489 AC_MSG_CHECKING(for /dev/ptc)
2490 if test -r /dev/ptc; then
2491   AC_DEFINE(HAVE_DEV_PTC)
2492   AC_MSG_RESULT(yes)
2493 else
2494   AC_MSG_RESULT(no)
2497 AC_MSG_CHECKING(for SVR4 ptys)
2498 if test -c /dev/ptmx ; then
2499   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2500         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2501         AC_MSG_RESULT(no))
2502 else
2503   AC_MSG_RESULT(no)
2506 AC_MSG_CHECKING(for ptyranges)
2507 if test -d /dev/ptym ; then
2508   pdir='/dev/ptym'
2509 else
2510   pdir='/dev'
2512 dnl SCO uses ptyp%d
2513 AC_EGREP_CPP(yes,
2514 [#ifdef M_UNIX
2515    yes;
2516 #endif
2517         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2518 dnl if test -c /dev/ptyp19; then
2519 dnl ptys=`echo /dev/ptyp??`
2520 dnl else
2521 dnl ptys=`echo $pdir/pty??`
2522 dnl fi
2523 if test "$ptys" != "$pdir/pty??" ; then
2524   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2525   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2526   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2527   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2528   AC_MSG_RESULT([$p0 / $p1])
2529 else
2530   AC_MSG_RESULT([don't know])
2533 dnl    ****  pty mode/group handling ****
2535 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2536 rm -f conftest_grp
2537 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2538   [
2539     AC_RUN_IFELSE([[
2540 #include "confdefs.h"
2541 #include <sys/types.h>
2542 #if STDC_HEADERS
2543 # include <stdlib.h>
2544 # include <stddef.h>
2545 #endif
2546 #ifdef HAVE_UNISTD_H
2547 #include <unistd.h>
2548 #endif
2549 #include <sys/stat.h>
2550 #include <stdio.h>
2551 main()
2553   struct stat sb;
2554   char *x,*ttyname();
2555   int om, m;
2556   FILE *fp;
2558   if (!(x = ttyname(0))) exit(1);
2559   if (stat(x, &sb)) exit(1);
2560   om = sb.st_mode;
2561   if (om & 002) exit(0);
2562   m = system("mesg y");
2563   if (m == -1 || m == 127) exit(1);
2564   if (stat(x, &sb)) exit(1);
2565   m = sb.st_mode;
2566   if (chmod(x, om)) exit(1);
2567   if (m & 002) exit(0);
2568   if (sb.st_gid == getgid()) exit(1);
2569   if (!(fp=fopen("conftest_grp", "w")))
2570     exit(1);
2571   fprintf(fp, "%d\n", sb.st_gid);
2572   fclose(fp);
2573   exit(0);
2575     ]],[
2576       if test -f conftest_grp; then
2577         vim_cv_tty_group=`cat conftest_grp`
2578         if test "x$vim_cv_tty_mode" = "x" ; then
2579           vim_cv_tty_mode=0620
2580         fi
2581         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2582       else
2583         vim_cv_tty_group=world
2584         AC_MSG_RESULT([ptys are world accessible])
2585       fi
2586     ],[
2587       vim_cv_tty_group=world
2588       AC_MSG_RESULT([can't determine - assume ptys are world accessible])
2589     ],[
2590       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2591     ])
2592   ])
2593 rm -f conftest_grp
2595 if test "x$vim_cv_tty_group" != "xworld" ; then
2596   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2597   if test "x$vim_cv_tty_mode" = "x" ; then
2598     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)])
2599   else
2600     AC_DEFINE(PTYMODE, 0620)
2601   fi
2604 dnl Checks for library functions. ===================================
2606 AC_TYPE_SIGNAL
2608 dnl find out what to use at the end of a signal function
2609 if test $ac_cv_type_signal = void; then
2610   AC_DEFINE(SIGRETURN, [return])
2611 else
2612   AC_DEFINE(SIGRETURN, [return 0])
2615 dnl check if struct sigcontext is defined (used for SGI only)
2616 AC_MSG_CHECKING(for struct sigcontext)
2617 AC_TRY_COMPILE([
2618 #include <signal.h>
2619 test_sig()
2621     struct sigcontext *scont;
2622     scont = (struct sigcontext *)0;
2623     return 1;
2624 } ], ,
2625           AC_MSG_RESULT(yes)
2626                 AC_DEFINE(HAVE_SIGCONTEXT),
2627           AC_MSG_RESULT(no))
2629 dnl tricky stuff: try to find out if getcwd() is implemented with
2630 dnl system("sh -c pwd")
2631 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2632   [
2633     AC_RUN_IFELSE([[
2634 #include "confdefs.h"
2635 #ifdef HAVE_UNISTD_H
2636 #include <unistd.h>
2637 #endif
2638 char *dagger[] = { "IFS=pwd", 0 };
2639 main()
2641   char buffer[500];
2642   extern char **environ;
2643   environ = dagger;
2644   return getcwd(buffer, 500) ? 0 : 1;
2646     ]],[
2647       vim_cv_getcwd_broken=no
2648     ],[
2649       vim_cv_getcwd_broken=yes
2650     ],[
2651       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2652     ])
2653   ])
2655 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2656   AC_DEFINE(BAD_GETCWD)
2659 dnl Check for functions in one big call, to reduce the size of configure.
2660 dnl Can only be used for functions that do not require any include.
2661 AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
2662         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2663         memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
2664         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2665         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2666         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2667         usleep utime utimes)
2668 AC_FUNC_FSEEKO
2670 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2671 AC_MSG_CHECKING(for st_blksize)
2672 AC_TRY_COMPILE(
2673 [#include <sys/types.h>
2674 #include <sys/stat.h>],
2675 [       struct stat st;
2676         int n;
2678         stat("/", &st);
2679         n = (int)st.st_blksize;],
2680         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2681         AC_MSG_RESULT(no))
2683 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2684   [
2685     AC_RUN_IFELSE([[
2686 #include "confdefs.h"
2687 #if STDC_HEADERS
2688 # include <stdlib.h>
2689 # include <stddef.h>
2690 #endif
2691 #include <sys/types.h>
2692 #include <sys/stat.h>
2693 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2694     ]],[
2695       vim_cv_stat_ignores_slash=yes
2696     ],[
2697       vim_cv_stat_ignores_slash=no
2698     ],[
2699       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2700     ])
2701   ])
2703 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2704   AC_DEFINE(STAT_IGNORES_SLASH)
2706   
2707 dnl Link with iconv for charset translation, if not found without library.
2708 dnl check for iconv() requires including iconv.h
2709 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2710 dnl has been installed.
2711 AC_MSG_CHECKING(for iconv_open())
2712 save_LIBS="$LIBS"
2713 LIBS="$LIBS -liconv"
2714 AC_TRY_LINK([
2715 #ifdef HAVE_ICONV_H
2716 # include <iconv.h>
2717 #endif
2718     ], [iconv_open("fr", "to");],
2719     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2720     LIBS="$save_LIBS"
2721     AC_TRY_LINK([
2722 #ifdef HAVE_ICONV_H
2723 # include <iconv.h>
2724 #endif
2725         ], [iconv_open("fr", "to");],
2726         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2727         AC_MSG_RESULT(no)))
2730 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2731 AC_TRY_LINK([
2732 #ifdef HAVE_LANGINFO_H
2733 # include <langinfo.h>
2734 #endif
2735 ], [char *cs = nl_langinfo(CODESET);],
2736         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2737         AC_MSG_RESULT(no))
2739 dnl Need various functions for floating point support.  Only enable
2740 dnl floating point when they are all present.
2741 AC_CHECK_LIB(m, strtod)
2742 AC_MSG_CHECKING([for strtod() and other floating point functions])
2743 AC_TRY_LINK([
2744 #ifdef HAVE_MATH_H
2745 # include <math.h>
2746 #endif
2747 #if STDC_HEADERS
2748 # include <stdlib.h>
2749 # include <stddef.h>
2750 #endif
2751 ], [char *s; double d;
2752     d = strtod("1.1", &s);
2753     d = fabs(1.11);
2754     d = ceil(1.11);
2755     d = floor(1.11);
2756     d = log10(1.11);
2757     d = pow(1.11, 2.22);
2758     d = sqrt(1.11);
2759     d = sin(1.11);
2760     d = cos(1.11);
2761     d = atan(1.11);
2762     ],
2763         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2764         AC_MSG_RESULT(no))
2766 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2767 dnl when -lacl works, also try to use -lattr (required for Debian).
2768 AC_MSG_CHECKING(--disable-acl argument)
2769 AC_ARG_ENABLE(acl,
2770         [  --disable-acl           Don't check for ACL support.],
2771         , [enable_acl="yes"])
2772 if test "$enable_acl" = "yes"; then
2773 AC_MSG_RESULT(no)
2774 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2775         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2776                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2778 AC_MSG_CHECKING(for POSIX ACL support)
2779 AC_TRY_LINK([
2780 #include <sys/types.h>
2781 #ifdef HAVE_SYS_ACL_H
2782 # include <sys/acl.h>
2783 #endif
2784 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2785         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2786         acl_free(acl);],
2787         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2788         AC_MSG_RESULT(no))
2790 AC_MSG_CHECKING(for Solaris ACL support)
2791 AC_TRY_LINK([
2792 #ifdef HAVE_SYS_ACL_H
2793 # include <sys/acl.h>
2794 #endif], [acl("foo", GETACLCNT, 0, NULL);
2795         ],
2796         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2797         AC_MSG_RESULT(no))
2799 AC_MSG_CHECKING(for AIX ACL support)
2800 AC_TRY_LINK([
2801 #if STDC_HEADERS
2802 # include <stdlib.h>
2803 # include <stddef.h>
2804 #endif
2805 #ifdef HAVE_SYS_ACL_H
2806 # include <sys/acl.h>
2807 #endif
2808 #ifdef HAVE_SYS_ACCESS_H
2809 # include <sys/access.h>
2810 #endif
2811 #define _ALL_SOURCE
2813 #include <sys/stat.h>
2815 int aclsize;
2816 struct acl *aclent;], [aclsize = sizeof(struct acl);
2817         aclent = (void *)malloc(aclsize);
2818         statacl("foo", STX_NORMAL, aclent, aclsize);
2819         ],
2820         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2821         AC_MSG_RESULT(no))
2822 else
2823   AC_MSG_RESULT(yes)
2826 AC_MSG_CHECKING(--disable-gpm argument)
2827 AC_ARG_ENABLE(gpm,
2828         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2829         [enable_gpm="yes"])
2831 if test "$enable_gpm" = "yes"; then
2832   AC_MSG_RESULT(no)
2833   dnl Checking if gpm support can be compiled
2834   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2835         [olibs="$LIBS" ; LIBS="-lgpm"]
2836         AC_TRY_LINK(
2837             [#include <gpm.h>
2838             #include <linux/keyboard.h>],
2839             [Gpm_GetLibVersion(NULL);],
2840             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2841             dnl FEAT_MOUSE_GPM if mouse support is included
2842             [vi_cv_have_gpm=yes],
2843             [vi_cv_have_gpm=no])
2844         [LIBS="$olibs"]
2845     )
2846   if test $vi_cv_have_gpm = yes; then
2847     LIBS="$LIBS -lgpm"
2848     AC_DEFINE(HAVE_GPM)
2849   fi
2850 else
2851   AC_MSG_RESULT(yes)
2854 AC_MSG_CHECKING(--disable-sysmouse argument)
2855 AC_ARG_ENABLE(sysmouse,
2856         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2857         [enable_sysmouse="yes"])
2859 if test "$enable_sysmouse" = "yes"; then
2860   AC_MSG_RESULT(no)
2861   dnl Checking if sysmouse support can be compiled
2862   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2863   dnl defines FEAT_SYSMOUSE if mouse support is included
2864   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2865         AC_TRY_LINK(
2866             [#include <sys/consio.h>
2867              #include <signal.h>
2868              #include <sys/fbio.h>],
2869             [struct mouse_info   mouse;
2870              mouse.operation = MOUSE_MODE;
2871              mouse.operation = MOUSE_SHOW;
2872              mouse.u.mode.mode = 0;
2873              mouse.u.mode.signal = SIGUSR2;],
2874             [vi_cv_have_sysmouse=yes],
2875             [vi_cv_have_sysmouse=no])
2876     )
2877   if test $vi_cv_have_sysmouse = yes; then
2878     AC_DEFINE(HAVE_SYSMOUSE)
2879   fi
2880 else
2881   AC_MSG_RESULT(yes)
2884 dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2885 AC_MSG_CHECKING(for FD_CLOEXEC)
2886 AC_TRY_COMPILE(
2887 [#if HAVE_FCNTL_H
2888 # include <fcntl.h>
2889 #endif],
2890 [       int flag = FD_CLOEXEC;],
2891         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2892         AC_MSG_RESULT(not usable))
2894 dnl rename needs to be checked separately to work on Nextstep with cc
2895 AC_MSG_CHECKING(for rename)
2896 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2897         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2898         AC_MSG_RESULT(no))
2900 dnl sysctl() may exist but not the arguments we use
2901 AC_MSG_CHECKING(for sysctl)
2902 AC_TRY_COMPILE(
2903 [#include <sys/types.h>
2904 #include <sys/sysctl.h>],
2905 [       int mib[2], r;
2906         size_t len;
2908         mib[0] = CTL_HW;
2909         mib[1] = HW_USERMEM;
2910         len = sizeof(r);
2911         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2912         ],
2913         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2914         AC_MSG_RESULT(not usable))
2916 dnl sysinfo() may exist but not be Linux compatible
2917 AC_MSG_CHECKING(for sysinfo)
2918 AC_TRY_COMPILE(
2919 [#include <sys/types.h>
2920 #include <sys/sysinfo.h>],
2921 [       struct sysinfo sinfo;
2922         int t;
2924         (void)sysinfo(&sinfo);
2925         t = sinfo.totalram;
2926         ],
2927         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2928         AC_MSG_RESULT(not usable))
2930 dnl struct sysinfo may have the mem_unit field or not
2931 AC_MSG_CHECKING(for sysinfo.mem_unit)
2932 AC_TRY_COMPILE(
2933 [#include <sys/types.h>
2934 #include <sys/sysinfo.h>],
2935 [       struct sysinfo sinfo;
2936         sinfo.mem_unit = 1;
2937         ],
2938         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2939         AC_MSG_RESULT(no))
2941 dnl sysconf() may exist but not support what we want to use
2942 AC_MSG_CHECKING(for sysconf)
2943 AC_TRY_COMPILE(
2944 [#include <unistd.h>],
2945 [       (void)sysconf(_SC_PAGESIZE);
2946         (void)sysconf(_SC_PHYS_PAGES);
2947         ],
2948         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2949         AC_MSG_RESULT(not usable))
2951 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2952 dnl be printed with "%d", and avoids a warning for cross-compiling.
2954 AC_MSG_CHECKING(size of int)
2955 AC_CACHE_VAL(ac_cv_sizeof_int,
2956         [AC_TRY_RUN([
2957 #include <stdio.h>
2958 #if STDC_HEADERS
2959 # include <stdlib.h>
2960 # include <stddef.h>
2961 #endif
2962 main()
2964   FILE *f=fopen("conftestval", "w");
2965   if (!f) exit(1);
2966   fprintf(f, "%d\n", (int)sizeof(int));
2967   exit(0);
2969             ac_cv_sizeof_int=`cat conftestval`,
2970             ac_cv_sizeof_int=0,
2971             AC_MSG_ERROR(failed to compile test program))])
2972 AC_MSG_RESULT($ac_cv_sizeof_int)
2973 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2975 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2976 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2978 [bcopy_test_prog='
2979 #include "confdefs.h"
2980 #ifdef HAVE_STRING_H
2981 # include <string.h>
2982 #endif
2983 #if STDC_HEADERS
2984 # include <stdlib.h>
2985 # include <stddef.h>
2986 #endif
2987 main() {
2988   char buf[10];
2989   strcpy(buf, "abcdefghi");
2990   mch_memmove(buf, buf + 2, 3);
2991   if (strncmp(buf, "ababcf", 6))
2992     exit(1);
2993   strcpy(buf, "abcdefghi");
2994   mch_memmove(buf + 2, buf, 3);
2995   if (strncmp(buf, "cdedef", 6))
2996     exit(1);
2997   exit(0); /* libc version works properly.  */
3000 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3001   [
3002     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3003       [
3004         vim_cv_memmove_handles_overlap=yes
3005       ],[
3006         vim_cv_memmove_handles_overlap=no
3007       ],[
3008         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3009       ])
3010   ])
3012 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3013   AC_DEFINE(USEMEMMOVE)
3014 else
3015   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3016     [
3017       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3018       [
3019         vim_cv_bcopy_handles_overlap=yes
3020       ],[
3021         vim_cv_bcopy_handles_overlap=no
3022       ],[
3023         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3024       ])
3025     ])
3027   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3028     AC_DEFINE(USEBCOPY)
3029   else
3030     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3031       [
3032         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3033           [
3034             vim_cv_memcpy_handles_overlap=yes
3035           ],[
3036             vim_cv_memcpy_handles_overlap=no
3037           ],[
3038             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3039           ])
3040       ])
3042     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3043       AC_DEFINE(USEMEMCPY)
3044     fi
3045   fi
3049 dnl Check for multibyte locale functions
3050 dnl Find out if _Xsetlocale() is supported by libX11.
3051 dnl Check if X_LOCALE should be defined.
3053 if test "$enable_multibyte" = "yes"; then
3054   cflags_save=$CFLAGS
3055   ldflags_save=$LDFLAGS
3056   if test "x$x_includes" != "xNONE" ; then
3057     CFLAGS="$CFLAGS -I$x_includes"
3058     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3059     AC_MSG_CHECKING(whether X_LOCALE needed)
3060     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3061         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3062                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3063         AC_MSG_RESULT(no))
3064   fi
3065   CFLAGS=$cflags_save
3066   LDFLAGS=$ldflags_save
3069 dnl Link with xpg4, it is said to make Korean locale working
3070 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3072 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3073 dnl --version for Exuberant ctags (preferred)
3074 dnl       Add --fields=+S to get function signatures for omni completion.
3075 dnl -t for typedefs (many ctags have this)
3076 dnl -s for static functions (Elvis ctags only?)
3077 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3078 dnl -i+m to test for older Exuberant ctags
3079 AC_MSG_CHECKING(how to create tags)
3080 test -f tags && mv tags tags.save
3081 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3082   TAGPRG="ctags -I INIT+ --fields=+S"
3083 else
3084   TAGPRG="ctags"
3085   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3086   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3087   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3088   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3089   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3090   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3091   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3093 test -f tags.save && mv tags.save tags
3094 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3096 dnl Check how we can run man with a section number
3097 AC_MSG_CHECKING(how to run man with a section nr)
3098 MANDEF="man"
3099 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3100 AC_MSG_RESULT($MANDEF)
3101 if test "$MANDEF" = "man -s"; then
3102   AC_DEFINE(USEMAN_S)
3105 dnl Check if gettext() is working and if it needs -lintl
3106 AC_MSG_CHECKING(--disable-nls argument)
3107 AC_ARG_ENABLE(nls,
3108         [  --disable-nls           Don't support NLS (gettext()).], ,
3109         [enable_nls="yes"])
3111 if test "$enable_nls" = "yes"; then
3112   AC_MSG_RESULT(no)
3114   INSTALL_LANGS=install-languages
3115   AC_SUBST(INSTALL_LANGS)
3116   INSTALL_TOOL_LANGS=install-tool-languages
3117   AC_SUBST(INSTALL_TOOL_LANGS)
3119   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3120   AC_MSG_CHECKING([for NLS])
3121   if test -f po/Makefile; then
3122     have_gettext="no"
3123     if test -n "$MSGFMT"; then
3124       AC_TRY_LINK(
3125         [#include <libintl.h>],
3126         [gettext("Test");],
3127         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3128           olibs=$LIBS
3129           LIBS="$LIBS -lintl"
3130           AC_TRY_LINK(
3131               [#include <libintl.h>],
3132               [gettext("Test");],
3133               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3134               AC_MSG_RESULT([gettext() doesn't work]);
3135               LIBS=$olibs))
3136     else
3137       AC_MSG_RESULT([msgfmt not found - disabled]);
3138     fi
3139     if test $have_gettext = "yes"; then
3140       AC_DEFINE(HAVE_GETTEXT)
3141       MAKEMO=yes
3142       AC_SUBST(MAKEMO)
3143       dnl this was added in GNU gettext 0.10.36
3144       AC_CHECK_FUNCS(bind_textdomain_codeset)
3145       dnl _nl_msg_cat_cntr is required for GNU gettext
3146       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3147       AC_TRY_LINK(
3148                 [#include <libintl.h>
3149                 extern int _nl_msg_cat_cntr;],
3150                 [++_nl_msg_cat_cntr;],
3151                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3152                 AC_MSG_RESULT([no]))
3153     fi
3154   else
3155     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3156   fi
3157 else
3158   AC_MSG_RESULT(yes)
3161 dnl Check for C/Migemo (regexp pattern expansion).
3162 AC_MSG_CHECKING(--disable-migemo argument)
3163 AC_ARG_ENABLE(migemo,
3164         [  --disable-migemo        Don't support C/Migemo.], ,
3165         [enable_migemo="yes"])
3166 if test "$enable_migemo" = "yes"; then
3167   AC_MSG_RESULT(no)
3168   AC_CHECK_LIB(migemo, migemo_open,
3169         [LIBS="$LIBS -lmigemo" AC_DEFINE(HAVE_MIGEMO)],,)
3170 else
3171   AC_MSG_RESULT(yes)
3174 dnl Check for dynamic linking loader
3175 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3176 if test x${DLL} = xdlfcn.h; then
3177   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3178   AC_MSG_CHECKING([for dlopen()])
3179   AC_TRY_LINK(,[
3180                 extern void* dlopen();
3181                 dlopen();
3182       ],
3183       AC_MSG_RESULT(yes);
3184               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3185       AC_MSG_RESULT(no);
3186               AC_MSG_CHECKING([for dlopen() in -ldl])
3187               olibs=$LIBS
3188               LIBS="$LIBS -ldl"
3189               AC_TRY_LINK(,[
3190                                 extern void* dlopen();
3191                                 dlopen();
3192                  ],
3193                  AC_MSG_RESULT(yes);
3194                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3195                  AC_MSG_RESULT(no);
3196                           LIBS=$olibs))
3197   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3198   dnl ick :-)
3199   AC_MSG_CHECKING([for dlsym()])
3200   AC_TRY_LINK(,[
3201                 extern void* dlsym();
3202                 dlsym();
3203       ],
3204       AC_MSG_RESULT(yes);
3205               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3206       AC_MSG_RESULT(no);
3207               AC_MSG_CHECKING([for dlsym() in -ldl])
3208               olibs=$LIBS
3209               LIBS="$LIBS -ldl"
3210               AC_TRY_LINK(,[
3211                                 extern void* dlsym();
3212                                 dlsym();
3213                  ],
3214                  AC_MSG_RESULT(yes);
3215                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3216                  AC_MSG_RESULT(no);
3217                           LIBS=$olibs))
3218 elif test x${DLL} = xdl.h; then
3219   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3220   AC_MSG_CHECKING([for shl_load()])
3221   AC_TRY_LINK(,[
3222                 extern void* shl_load();
3223                 shl_load();
3224      ],
3225      AC_MSG_RESULT(yes);
3226           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3227      AC_MSG_RESULT(no);
3228           AC_MSG_CHECKING([for shl_load() in -ldld])
3229           olibs=$LIBS
3230           LIBS="$LIBS -ldld"
3231           AC_TRY_LINK(,[
3232                         extern void* shl_load();
3233                         shl_load();
3234              ],
3235              AC_MSG_RESULT(yes);
3236                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3237              AC_MSG_RESULT(no);
3238                   LIBS=$olibs))
3240 AC_CHECK_HEADERS(setjmp.h)
3242 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3243   dnl -ldl must come after DynaLoader.a
3244   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3245     LIBS=`echo $LIBS | sed s/-ldl//`
3246     PERL_LIBS="$PERL_LIBS -ldl"
3247   fi
3250 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3251         && test "x$GUITYPE" != "xCARBONGUI"; then
3252   AC_MSG_CHECKING(whether we need -framework Carbon)
3253   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3254   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3255         || test "x$features" = "xhuge"; then
3256     LIBS="$LIBS -framework Carbon"
3257     AC_MSG_RESULT(yes)
3258   else
3259     AC_MSG_RESULT(no)
3260   fi
3262 if test "x$MACARCH" = "xboth"; then
3263   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3266 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3267 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3268 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3269 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3270 dnl the number before the version number.
3271 DEPEND_CFLAGS_FILTER=
3272 if test "$GCC" = yes; then
3273   AC_MSG_CHECKING(for GCC 3 or later)
3274   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3275   if test "$gccmajor" -gt "2"; then
3276     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3277     AC_MSG_RESULT(yes)
3278   else
3279     AC_MSG_RESULT(no)
3280   fi
3281   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3282   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3283   dnl Also remove duplicate _FORTIFY_SOURCE arguments.
3284   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3285   if test "$gccmajor" -gt "3"; then
3286     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
3287     AC_MSG_RESULT(yes)
3288   else
3289     AC_MSG_RESULT(no)
3290   fi
3292 AC_SUBST(DEPEND_CFLAGS_FILTER)
3294 dnl write output files
3295 AC_OUTPUT(auto/config.mk:config.mk.in)
3297 dnl vim: set sw=2 tw=78 fo+=l: