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