[project @ 1998-02-12 12:37:22 by simonm]
[ghc-hetmet.git] / aclocal.m4
1 # $Id: aclocal.m4,v 1.17 1998/02/12 12:37:22 simonm Exp $
2 #
3 # Extra autoconf macros for the Glasgow fptools
4 #
5
6 #
7 # Has timezone the type time_t or long (HP-UX 10.20 apparently
8 # has `long'..)
9 #
10 AC_DEFUN(AC_TYPE_TIMEZONE,
11 [AC_CACHE_CHECK([type of timezone], ac_cv_type_timezone,
12 [AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
13 # include <sys/time.h>
14 # include <time.h>
15 #else
16 # if HAVE_SYS_TIME_H
17 #  include <sys/time.h>
18 # else
19 #  include <time.h>
20 # endif
21 #endif
22
23 extern time_t timezone;
24 ],
25 [int i;], ac_cv_type_timezone=time_t, ac_cv_type_timezone=long)])
26 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $ac_cv_type_timezone)
27 ])
28
29 #
30 # Is altzone available?
31 #
32 AC_DEFUN(AC_ALTZONE,
33 [AC_CACHE_CHECK([altzone], ac_cv_altzone,
34 [AC_TRY_LINK([#if TIME_WITH_SYS_TIME
35 # include <sys/time.h>
36 # include <time.h>
37 #else
38 # if HAVE_SYS_TIME_H
39 #  include <sys/time.h>
40 # else
41 #  include <time.h>
42 # endif
43 #endif
44 ], [return altzone;], 
45 ac_cv_altzone=yes, ac_cv_altzone=no)])
46 if test "$ac_cv_altzone" = yes; then
47   AC_DEFINE(HAVE_ALTZONE)
48 fi
49 ])
50
51 #
52 dnl ** check for leading underscores in symbol names
53 #
54 # Test for determining whether symbol names have a leading
55 # underscore.
56 #
57 # We assume that they _haven't_ if anything goes wrong.
58 #
59 AC_DEFUN(AC_UNDERSCORE,
60 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
61 AC_CACHE_CHECK([leading underscore in symbol names], ac_cv_lead_uscore,
62 #
63 # Hack!: nlist() under Digital UNIX insist on there being an _,
64 # but symbol table listings show none. What is going on here?!?
65 #
66 changequote(<<, >>)dnl
67 <<
68 case $HostPlatform in
69 alpha-dec-osf*) ac_cv_lead_uscore='no';;
70 *) >>
71 changequote([, ])dnl
72 AC_TRY_RUN([#ifdef HAVE_NLIST_H
73 #include <nlist.h>
74 changequote(<<, >>)dnl
75 <<
76 struct nlist xYzzY[] = {{"_xYzzY", 0},{0}};
77 #endif
78
79 main(argc, argv)
80 int argc;
81 char **argv;
82 {
83 #ifdef HAVE_NLIST_H
84     if(nlist(argv[0], xYzzY) == 0 && xYzzY[0].n_value != 0)
85         exit(0);>>
86 changequote([, ])dnl
87 #endif
88     exit(1);
89 }], ac_cv_lead_uscore=yes, ac_cv_lead_uscore=no, ac_cv_lead_uscore=NO)
90 ;;
91 esac);
92 LeadingUnderscore=`echo $ac_cv_lead_uscore | sed 'y/yesno/YESNO/'`
93 AC_SUBST(LeadingUnderscore)
94 ])
95
96 #
97 # Check for Happy and version.
98 #
99 AC_DEFUN(AC_HAPPY,
100 [AC_PATH_PROG(HappyCmd,happy)
101 AC_CACHE_CHECK([for version of happy], ac_cv_happy_version,
102 [if test x"$HappyCmd" != x; then
103    ac_cv_happy_version="`$HappyCmd -v |
104 changequote(, )dnl
105                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
106 changequote([, ])dnl
107 else
108    ac_cv_happy_version="";
109 fi;
110 if expr "$ac_cv_happy_version" "<" 1.4 > /dev/null 2>&1; then
111    echo
112    echo "Happy version 1.4 or later is required to compile GHC."
113    exit 1;
114 fi;
115 ])
116 HappyVersion=$ac_cv_happy_version;
117 AC_SUBST(HappyVersion)
118 ])
119
120 #
121 # What's the best way of doing context diffs?
122 #
123 # (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
124 #
125 AC_DEFUN(AC_PROG_DIFF,
126 [AC_CACHE_CHECK([for ok way to do context diffs], ac_cv_context_diffs,
127 [echo foo > conftest1
128 echo foo > conftest2
129 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
130     ac_cv_context_diffs='diff -C 1'
131 else
132     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
133         ac_cv_context_diffs='diff -c1'
134     else
135         echo "Can't figure out how to do context diffs."
136         echo "Neither \`diff -C 1' nor \`diff -c1' works."
137         exit 1
138     fi
139 fi
140 rm -f conftest1 conftest2
141 ])
142 ContextDiffCmd=$ac_cv_context_diffs
143 AC_SUBST(ContextDiffCmd)
144 ])
145
146 #
147 # Finding the Right Yacc
148 #
149 AC_DEFUN(AC_PROG_YACCY,
150 [AC_PROG_YACC
151 if test "$YACC" = "yacc"; then
152    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
153    [AC_CHECK_PROG(WhatCmd, what, what, :)
154     $WhatCmd $YACC > conftest.out
155     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
156         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
157         if test -f /usr/lang/yacc; then
158            echo "I'm going to use /usr/lang/yacc instead"
159            ac_cv_prog_yacc=/usr/lang/yacc
160         else
161            echo "I'm assuming the worst...no parser generator at all"
162            ac_cv_prog_yacc=:
163         fi
164     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
165         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
166         echo "I'm assuming the worst...no parser generator at all"
167         ac_cv_prog_yacc=:
168     else
169         ac_cv_prog_yacc=$YACC
170     fi
171     rm -fr conftest*
172 ])
173 else
174     ac_cv_prog_yacc=$YACC
175 fi
176 YaccCmd=$ac_cv_prog_yacc
177 AC_SUBST(YaccCmd)
178 ])
179
180 dnl Checking for ar and its arguments + whether we need ranlib.
181 #
182 # ArCmd and RANLIB are AC_SUBST'ed
183 #
184 AC_DEFUN(AC_PROG_AR_AND_RANLIB,
185 [AC_PATH_PROG(ArCmd,ar)
186 if test -z "$ArCmd"; then
187     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
188     exit 1;
189 fi
190 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
191     ArCmd="$ArCmd clqs"
192     NeedRanLib=''
193 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
194     ArCmd="$ArCmd cqs"
195     NeedRanLib=''
196 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
197     ArCmd="$ArCmd clq"
198     NeedRanLib='YES'
199 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
200     ArCmd="$ArCmd cq"
201     NeedRanLib='YES'
202 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
203     ArCmd="$ArCmd cq"
204     NeedRanLib='YES'
205 else
206     echo "I can't figure out how to use your $ArCmd"
207     exit 1
208 fi
209 rm -rf conftest*
210 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
211 AC_SUBST(ArCmd)
212 if test -z "$NeedRanLib"; then
213     RANLIB=':'
214     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
215     AC_SUBST(RANLIB)
216 else
217     AC_PROG_RANLIB
218 fi
219 ])
220
221 #
222 dnl AC_SHEBANG_PERL - can we she-bang perl?
223 #
224 AC_DEFUN(AC_SHEBANG_PERL,
225 [AC_CACHE_CHECK([if your perl works in shell scripts], ac_cv_shebang_perl,
226 [echo "#!$PerlCmd"'
227 exit $1;
228 ' > conftest
229 chmod u+x conftest
230 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
231 if test $? -ne 69; then
232    ac_cv_shebang_perl=yes
233 else
234    ac_cv_shebang_perl=no
235 fi
236 rm -f conftest
237 ])])
238
239 #
240 # Extra testing of the result AC_PROG_CC, testing the gcc version no.
241 # *Must* be called after AC_PROG_CC
242 #
243 AC_DEFUN(AC_HAVE_GCC,
244 [AC_CACHE_CHECK([whether you have an ok gcc], ac_cv_have_gcc,
245 [if test -z "$GCC"; then
246     echo ''
247     echo "You would be better off with gcc"
248     echo "Perhaps it is already installed, but not in your PATH?"
249     ac_cv_have_gcc='no'
250 else
251 changequote(, )dnl
252     cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \2/g' `"
253 changequote([, ])dnl
254     if test `eval $cmd_string 2>/dev/null` != "1"; then
255         echo ''
256         echo "I'm not sure if your version of gcc will work,"
257         echo "but it's worth a shot, eh?"
258     fi
259     ac_cv_have_gcc='yes'
260 fi
261 ])
262 HaveGcc=`echo $ac_cv_have_gcc | sed 'y/yesno/YESNO/'`
263 AC_SUBST(HaveGcc)
264 ])
265
266 #
267 # AC_PROG_GNUCPP gathers the path to the cpp that the
268 # gcc driver calls upon.
269 #
270 # Substitutes: GNUCPP and RAWCPP (latter is 'GNUCPP -traditional')
271 #
272 AC_DEFUN(AC_PROG_GNUCPP,
273 [AC_CACHE_CHECK([how to invoke GNU cpp directly], ac_cv_gnu_cpp,
274 [if test "$HaveGcc" = "YES"; then
275         echo > conftest.c
276         gcc -v -E conftest.c >/dev/null 2>conftest.out
277         echo '/(\S+(\/|\\\\)cpp)/ && print "[$]1";' > conftest.pl
278         ac_cv_gnu_cpp="`eval $PerlCmd -n conftest.pl conftest.out`"
279         rm -fr conftest*
280  else
281         # We need to be able to invoke CPP directly, preferably
282         # with input from stdin (mkdependHS and hscpp depend on
283         # this at the moment).
284         # Take a guess at what to use, this probably won't work.
285         echo Warning: GNU cpp not found, using $CPP
286         ac_cv_gnu_cpp = $CPP
287  fi
288 ])
289 GNUCPP=$ac_cv_gnu_cpp
290 RAWCPP="$GNUCPP -traditional"
291 AC_SUBST(GNUCPP)
292 AC_SUBST(RAWCPP)
293 ])
294
295 #
296 # Small feature test for perl version. Assumes PerlCmd
297 # contains path to perl binary
298 #
299 AC_DEFUN(AC_CHECK_PERL_VERSION,
300 [$PerlCmd -v >conftest.out 2>&1
301 if grep "version 4" conftest.out >/dev/null 2>&1; then
302    if grep "Patch level: 35" conftest.out >/dev/null 2>&1; then
303       echo "
304 ************************************************************************
305 Uh-oh...looks like you have Perl 4.035.
306
307 Perl version 4.035 has a bug to do with recursion that will bite if
308 you run the lit2texi script, when making Info files from
309 literate files of various sorts.  Either use perl5, the last version of perl4 
310 (4.036), or an older version (e.g., perl 4.019). Failing that, don't create
311 any Info files :-)
312 ************************************************************************
313 "
314    fi
315 else
316    if grep "version 5" conftest.out >/dev/null 2>&1; then
317       :
318    else
319      echo "I'm not sure if your version of perl will work,"
320      echo "but it's worth a shot, eh?"
321    fi
322 fi
323 rm -fr conftest*
324 ])