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