08f69313c4b5ba08f71b1e5d95db053266a51569
[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 if test $HostPlatform = "alpha-dec-osf1"; then
66    ac_cv_lead_uscore='no'
67 else
68 AC_TRY_RUN([#ifdef HAVE_NLIST_H
69 #include <nlist.h>
70 changequote(<<, >>)dnl
71 <<
72 struct nlist xYzzY[] = {{"_xYzzY", 0},{0}};
73 #endif
74
75 main(argc, argv)
76 int argc;
77 char **argv;
78 {
79 #ifdef HAVE_NLIST_H
80     if(nlist(argv[0], xYzzY) == 0 && xYzzY[0].n_value != 0)
81         exit(0);>>
82 changequote([, ])dnl
83 #endif
84     exit(1);
85 }], ac_cv_lead_uscore=yes, ac_cv_lead_uscore=no, ac_cv_lead_uscore=NO)
86 fi);
87 LeadingUnderscore=`echo $ac_cv_lead_uscore | sed 'y/yesno/YESNO/'`
88 AC_SUBST(LeadingUnderscore)
89 ])
90
91 #
92 # Check for Happy and version.
93 #
94 AC_DEFUN(AC_HAPPY,
95 [AC_PATH_PROG(HappyCmd,happy)
96 AC_CACHE_CHECK([for version of happy], ac_cv_happy_version,
97 [if test x"$HappyCmd" != x; then
98    ac_cv_happy_version="`$HappyCmd -v |
99 changequote(, )dnl
100                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
101 changequote([, ])dnl
102 else
103    ac_cv_happy_version="";
104 fi;
105 if expr "$ac_cv_happy_version" "<" 1.4 > /dev/null 2>&1; then
106    echo
107    echo "Happy version 1.4 or later is required to compile GHC."
108    exit 1;
109 fi;
110 ])
111 HappyVersion=$ac_cv_happy_version;
112 AC_SUBST(HappyVersion)
113 ])
114
115 #
116 # What's the best way of doing context diffs?
117 #
118 # (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
119 #
120 AC_DEFUN(AC_PROG_DIFF,
121 [AC_CACHE_CHECK([for ok way to do context diffs], ac_cv_context_diffs,
122 [echo foo > conftest1
123 echo foo > conftest2
124 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
125     ac_cv_context_diffs='diff -C 1'
126 else
127     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
128         ac_cv_context_diffs='diff -c1'
129     else
130         echo "Can't figure out how to do context diffs."
131         echo "Neither \`diff -C 1' nor \`diff -c1' works."
132         exit 1
133     fi
134 fi
135 rm -f conftest1 conftest2
136 ])
137 ContextDiffCmd=$ac_cv_context_diffs
138 AC_SUBST(ContextDiffCmd)
139 ])
140
141 #
142 # Finding the Right Yacc
143 #
144 AC_DEFUN(AC_PROG_YACCY,
145 [AC_PROG_YACC
146 if test "$YACC" = "yacc"; then
147    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
148    [AC_CHECK_PROG(WhatCmd, what, what, :)
149     $WhatCmd $YACC > conftest.out
150     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
151         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
152         if test -f /usr/lang/yacc; then
153            echo "I'm going to use /usr/lang/yacc instead"
154            ac_cv_prog_yacc=/usr/lang/yacc
155         else
156            echo "I'm assuming the worst...no parser generator at all"
157            ac_cv_prog_yacc=:
158         fi
159     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
160         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
161         echo "I'm assuming the worst...no parser generator at all"
162         ac_cv_prog_yacc=:
163     else
164         ac_cv_prog_yacc=$YACC
165     fi
166     rm -fr conftest*
167 ])
168 else
169     ac_cv_prog_yacc=$YACC
170 fi
171 YaccCmd=$ac_cv_prog_yacc
172 AC_SUBST(YaccCmd)
173 ])
174
175 dnl Checking for ar and its arguments + whether we need ranlib.
176 #
177 # ArCmd and RANLIB are AC_SUBST'ed
178 #
179 AC_DEFUN(AC_PROG_AR_AND_RANLIB,
180 [AC_PATH_PROG(ArCmd,ar)
181 if test -z "$ArCmd"; then
182     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
183     exit 1;
184 fi
185 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
186     ArCmd="$ArCmd clqs"
187     NeedRanLib=''
188 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
189     ArCmd="$ArCmd cqs"
190     NeedRanLib=''
191 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
192     ArCmd="$ArCmd clq"
193     NeedRanLib='YES'
194 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
195     ArCmd="$ArCmd cq"
196     NeedRanLib='YES'
197 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
198     ArCmd="$ArCmd cq"
199     NeedRanLib='YES'
200 else
201     echo "I can't figure out how to use your $ArCmd"
202     exit 1
203 fi
204 rm -rf conftest*
205 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
206 AC_SUBST(ArCmd)
207 if test -z "$NeedRanLib"; then
208     RANLIB=':'
209     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
210     AC_SUBST(RANLIB)
211 else
212     AC_PROG_RANLIB
213 fi
214 ])
215
216 #
217 dnl AC_SHEBANG_PERL - can we she-bang perl?
218 #
219 AC_DEFUN(AC_SHEBANG_PERL,
220 [AC_CACHE_CHECK([if your perl works in shell scripts], ac_cv_shebang_perl,
221 [echo "#!$PerlCmd"'
222 exit $1;
223 ' > conftest
224 chmod u+x conftest
225 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
226 if test $? -ne 69; then
227    ac_cv_shebang_perl=yes
228 else
229    ac_cv_shebang_perl=no
230 fi
231 rm -f conftest
232 ])])
233
234 #
235 # Extra testing of the result AC_PROG_CC, testing the gcc version no.
236 # *Must* be called after AC_PROG_CC
237 #
238 AC_DEFUN(AC_HAVE_GCC,
239 [AC_CACHE_CHECK([whether you have an ok gcc], ac_cv_have_gcc,
240 [if test -z "$GCC"; then
241     echo ''
242     echo "You would be better off with gcc"
243     echo "Perhaps it is already installed, but not in your PATH?"
244     ac_cv_have_gcc='no'
245 else
246 changequote(, )dnl
247     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' `"
248 changequote([, ])dnl
249     if test `eval $cmd_string 2>/dev/null` != "1"; then
250         echo ''
251         echo "I'm not sure if your version of gcc will work,"
252         echo "but it's worth a shot, eh?"
253     fi
254     ac_cv_have_gcc='yes'
255 fi
256 ])
257 HaveGcc=`echo $ac_cv_have_gcc | sed 'y/yesno/YESNO/'`
258 AC_SUBST(HaveGcc)
259 ])
260
261 #
262 # AC_PROG_GNUCPP gathers the path to the cpp that the
263 # gcc driver calls upon.
264 #
265 # Substitutes: GNUCPP and RAWCPP (latter is 'GNUCPP -traditional')
266 #
267 AC_DEFUN(AC_PROG_GNUCPP,
268 [AC_CACHE_CHECK([how to invoke GNU cpp directly], ac_cv_gnu_cpp,
269 [if test "$HaveGcc" = "YES"; then
270         echo > conftest.c
271         gcc -v -E conftest.c >/dev/null 2>conftest.out
272         echo '/(\S+(\/|\\)cpp)/ && print "[$]1";' > conftest.pl
273         ac_cv_gnu_cpp="`eval $PerlCmd -n conftest.pl conftest.out | tr '\\\' / `"
274         rm -fr conftest*
275  else
276         # We need to be able to invoke CPP directly, preferably
277         # with input from stdin (mkdependHS and hscpp depend on
278         # this at the moment).
279         # Take a guess at what to use, this probably won't work.
280         echo Warning: GNU cpp not found, using $CPP
281         ac_cv_gnu_cpp = $CPP
282  fi
283 ])
284 GNUCPP=$ac_cv_gnu_cpp
285 RAWCPP="$GNUCPP -traditional"
286 AC_SUBST(GNUCPP)
287 AC_SUBST(RAWCPP)
288 ])
289
290 #
291 # Small feature test for perl version. Assumes PerlCmd
292 # contains path to perl binary
293 #
294 AC_DEFUN(AC_CHECK_PERL_VERSION,
295 [$PerlCmd -v >conftest.out 2>&1
296 if grep "version 4" conftest.out >/dev/null 2>&1; then
297    if grep "Patch level: 35" conftest.out >/dev/null 2>&1; then
298       echo "
299 ************************************************************************
300 Uh-oh...looks like you have Perl 4.035.
301
302 Perl version 4.035 has a bug to do with recursion that will bite if
303 you run the lit2texi script, when making Info files from
304 literate files of various sorts.  Either use perl5, the last version of perl4 
305 (4.036), or an older version (e.g., perl 4.019). Failing that, don't create
306 any Info files :-)
307 ************************************************************************
308 "
309    fi
310 else
311    if grep "version 5" conftest.out >/dev/null 2>&1; then
312       :
313    else
314      echo "I'm not sure if your version of perl will work,"
315      echo "but it's worth a shot, eh?"
316    fi
317 fi
318 rm -fr conftest*
319 ])