2551da6bd8f0854ba75ddf3e0ca9e88dece06a5e
[ghc-hetmet.git] / configure.in
1 dnl == autoconf source for the Glasgow FP tools ==
2 dnl (run "grep '^dnl \*' configure.in | sed -e 's/dnl / /g; s/\*\*/   +/g;'"
3 dnl  (or some such) to see the outline of this file)
4 dnl
5 #
6 # (c) The AQUA Project, Glasgow University, 1994-1998
7 #
8 # Configure script template for the Glasgow functional programming tools
9 #
10 # Process with 'autoconf' to get a working configure script.
11 #
12 # For the generated configure script, do "./configure --help" to
13 # see what flags are available. (Better yet, read the documentation!)
14 #
15
16 # First off, a distrib sanity check..
17 AC_INIT(mk/config.mk.in)
18
19 dnl * Declare subdirectories that have a private configure script
20 dnl
21 dnl After the toplevel configuration is complete, the script will recurse into
22 dnl these subdirectories (the use of cache values makes repeated checks cheap)
23 AC_CONFIG_SUBDIRS(ghc)
24
25 # -------------------------------------------------------------------------
26 # Prepare to generate the following header files
27 #
28 #
29 AC_CONFIG_HEADER(mk/config.h)
30
31 # No, semi-sadly, we don't do `--srcdir'...
32 if test x"$srcdir" != 'x.' ; then
33     echo "This configuration does not support the \`--srcdir' option.."
34     exit 1
35 fi
36
37 #
38 # Remove common automounter nonsense + convert from UNC to DOS style paths
39 # (UNC awareness isn't quite there yet for cygwin32-beta18 and consituent tools.)
40 #
41 hardtop=`pwd`
42 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|' | sed 's|^//\(.\)/|\1:/|' `
43
44 echo ''
45 echo "*** The top of your build tree is: $hardtop"
46 AC_SUBST(hardtop)
47
48 dnl--------------------------------------------------------------------
49 dnl * Choose host(/target/build) platform
50 dnl--------------------------------------------------------------------
51
52 dnl Guess host/target/build platform(s) if necessary.
53 AC_CANONICAL_SYSTEM
54
55 # "$host" defaults to "$target"
56 if test "x$host" = xNONE ; then
57     host=$target
58 fi
59
60 dnl ** canonicalize platform names
61 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
62 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
63 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
64
65 if test x"$TargetPlatform" != x"$HostPlatform" ; then
66     echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
67     exit 1
68 fi
69
70 exeext=''
71 #
72 # The following will be more difficult when we *are* cross-compiling.
73 # Suitable names to slam in *_CPP are in platform.h.in.
74 # We also record the architecture, vendor, and operating system (OS)
75 # separately.
76 case $HostPlatform in
77 alpha-dec-osf[[12]]*)
78         HostPlatform=alpha-dec-osf1   # canonicalise for our purposes
79         TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
80         BuildPlatform=alpha-dec-osf1  # hack
81         HostPlatform_CPP='alpha_dec_osf1'
82         HostArch_CPP='alpha'
83         HostVendor_CPP='dec'
84         HostOS_CPP='osf1'
85         ;;
86 alpha-dec-osf[[34]]*)
87         HostPlatform=alpha-dec-osf3   # canonicalise for our purposes
88         TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
89         BuildPlatform=alpha-dec-osf3  # hack
90         HostPlatform_CPP='alpha_dec_osf3'
91         HostArch_CPP='alpha'
92         HostVendor_CPP='dec'
93         HostOS_CPP='osf3'
94         ;;
95 alpha-unknown-linux)
96         HostPlatform=alpha-unknown-linux
97         TargetPlatform=alpha-unknown-linux
98         BuildPlatform=alpha-unknown-linux
99         HostPlatform_CPP='alpha_unknown_linux'
100         HostArch_CPP='alpha'
101         HostVendor_CPP='unknown'
102         HostOS_CPP='linux'
103         ;;
104 alpha-unknown-freebsd*)
105         HostPlatform=alpha-unknown-freebsd
106         TargetPlatform=alpha-unknown-freebsd
107         BuildPlatform=alpha-unknown-freebsd
108         HostPlatform_CPP='alpha_unknown_freebsd'
109         HostArch_CPP='alpha'
110         HostVendor_CPP='unknown'
111         HostOS_CPP='freebsd'
112         ;;
113 hppa1.1-hp-hpux*)
114         HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
115         TargetPlatform=hppa1.1-hp-hpux
116         BuildPlatform=hppa1.1-hp-hpux
117         HostPlatform_CPP='hppa1_1_hp_hpux'
118         HostArch_CPP='hppa1_1'
119         HostVendor_CPP='hp'
120         HostOS_CPP='hpux'
121         ;;
122 i[[3456]]86-*-linuxaout*)
123         HostPlatform=i386-unknown-linuxaout   # hack again
124         TargetPlatform=i386-unknown-linuxaout
125         BuildPlatform=i386-unknown-linuxaout
126         HostPlatform_CPP='i386_unknown_linuxaout'
127         HostArch_CPP='i386'
128         HostVendor_CPP='unknown'
129         HostOS_CPP='linuxaout'
130         ;;
131 i[[3456]]86-*-linux*)
132         HostPlatform=i386-unknown-linux # hack again
133         TargetPlatform=i386-unknown-linux
134         BuildPlatform=i386-unknown-linux
135         HostPlatform_CPP='i386_unknown_linux'
136         HostArch_CPP='i386'
137         HostVendor_CPP='unknown'
138         HostOS_CPP='linux'
139         ;;
140 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
141         HostPlatform=i386-unknown-freebsd # hack again
142         TargetPlatform=i386-unknown-freebsd
143         BuildPlatform=i386-unknown-freebsd
144         HostPlatform_CPP='i386_unknown_freebsd'
145         HostArch_CPP='i386'
146         HostVendor_CPP='unknown'
147         HostOS_CPP='freebsd'
148         ;;
149 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
150         HostPlatform=i386-unknown-freebsd2 # hack again
151         TargetPlatform=i386-unknown-freebsd2
152         BuildPlatform=i386-unknown-freebsd2
153         HostPlatform_CPP='i386_unknown_freebsd2'
154         HostArch_CPP='i386'
155         HostVendor_CPP='unknown'
156         HostOS_CPP='freebsd2'
157         ;;
158 i[[3456]]86-*-netbsd*)
159         HostPlatform=i386-unknown-netbsd # hack again
160         TargetPlatform=i386-unknown-netbsd
161         BuildPlatform=i386-unknown-netbsd
162         HostPlatform_CPP='i386_unknown_netbsd'
163         HostArch_CPP='i386'
164         HostVendor_CPP='unknown'
165         HostOS_CPP='netbsd'
166         ;;
167 i[[3456]]86-*-solaris2*)
168         HostPlatform=i386-unknown-solaris2 # hack again
169         TargetPlatform=i386-unknown-solaris2
170         BuildPlatform=i386-unknown-solaris2
171         HostPlatform_CPP='i386_unknown_solaris2'
172         HostArch_CPP='i386'
173         HostVendor_CPP='unknown'
174         HostOS_CPP='solaris2'
175         ;;
176 i[[3456]]86-*-cygwin32*)
177         HostPlatform=i386-unknown-cygwin32 # hack again
178         TargetPlatform=i386-unknown-cygwin32
179         BuildPlatform=i386-unknown-cygwin32
180         HostPlatform_CPP='i386_unknown_cygwin32'
181         HostArch_CPP='i386'
182         HostVendor_CPP='unknown'
183         HostOS_CPP='cygwin32'
184         exeext='.exe'
185         ;;
186 i[[3456]]86-*-mingw32*)
187         HostPlatform=i386-unknown-mingw32 # hack again
188         TargetPlatform=i386-unknown-mingw32
189         BuildPlatform=i386-unknown-mingw32
190         HostPlatform_CPP='i386_unknown_mingw32'
191         HostArch_CPP='i386'
192         HostVendor_CPP='unknown'
193         HostOS_CPP='mingw32'
194         exeext='.exe'
195         # We assume you're using mingw32 via the gcc that comes
196         # with cygwin, and not the native port, so let's augment
197         # the gcc command-line used here with -mno-cygwin to
198         # arrange for good things to happen.
199         CFLAGS="-mno-cygwin $CFLAGS"
200         ;;
201 m68k-next-nextstep2)
202         HostPlatform_CPP='m68k_next_nextstep2'
203         HostArch_CPP='m68k'
204         HostVendor_CPP='next'
205         HostOS_CPP='nextstep2'
206         ;;
207 m68k-next-nextstep3)
208         HostPlatform_CPP='m68k_next_nextstep3'
209         HostArch_CPP='m68k'
210         HostVendor_CPP='next'
211         HostOS_CPP='nextstep3'
212         ;;
213 i[[3456]]86-next-nextstep3)
214         HostPlatform=i386-next-nextstep3 # hack again
215         TargetPlatform=i386-next-nextstep3
216         BuildPlatform=i386-next-nextstep3
217         HostPlatform_CPP='i386_next_nextstep3'
218         HostArch_CPP='i386'
219         HostVendor_CPP='next'
220         HostOS_CPP='nextstep3'
221         ;;
222 m68k-sun-sunos4*)
223         HostPlatform=m68k-sun-sunos4
224         TargetPlatform=m68k-sun-sunos4 #hack
225         BuildPlatform=m68k-sun-sunos4 #hack
226         HostPlatform_CPP='m68k_sun_sunos4'
227         HostArch_CPP='m68k'
228         HostVendor_CPP='sun'
229         HostOS_CPP='sunos4'
230         ;;
231 mips-dec-ultrix*)
232         HostPlatform_CPP='mips_dec_ultrix'
233         HostArch_CPP='mipsel'   # NB a little different
234         HostVendor_CPP='dec'
235         HostOS_CPP='ultrix'
236         ;;
237 mips-sgi-irix*)
238         HostPlatform=mips-sgi-irix
239         TargetPlatform=mips-sgi-irix #hack
240         BuildPlatform=mips-sgi-irix #hack
241         HostPlatform_CPP='mips_sgi_irix'
242         HostArch_CPP='mipseb'   # NB a little different
243         HostVendor_CPP='sgi'
244         HostOS_CPP='irix'
245         ;;
246 rs6000-ibm-aix*)
247         HostPlatform=rs6000-ibm-aix
248         TargetPlatform=rs6000-ibm-aix #hack
249         BuildPlatform=rs6000-ibm-aix #hack
250         HostPlatform_CPP='rs6000_ibm_aix'
251         HostArch_CPP='rs6000'
252         HostVendor_CPP='ibm'
253         HostOS_CPP='aix'
254         ;;
255 powerpc-ibm-aix*)
256         HostPlatform=powerpc-ibm-aix
257         TargetPlatform=powerpc-ibm-aix #hack
258         BuildPlatform=powerpc-ibm-aix #hack
259         HostPlatform_CPP='powerpc_ibm_aix'
260         HostArch_CPP='powerpc'
261         HostVendor_CPP='ibm'
262         HostOS_CPP='aix'
263         ;;
264 sparc-sun-sunos4*)
265         HostPlatform=sparc-sun-sunos4
266         TargetPlatform=sparc-sun-sunos4 #hack
267         BuildPlatform=sparc-sun-sunos4 #hack
268         HostPlatform_CPP='sparc_sun_sunos4'
269         HostArch_CPP='sparc'
270         HostVendor_CPP='sun'
271         HostOS_CPP='sunos4'
272         ;;
273 sparc-sun-solaris2*)
274         HostPlatform=sparc-sun-solaris2
275         TargetPlatform=sparc-sun-solaris2 #hack
276         BuildPlatform=sparc-sun-solaris2 #hack
277         HostPlatform_CPP='sparc_sun_solaris2'
278         HostArch_CPP='sparc'
279         HostVendor_CPP='sun'
280         HostOS_CPP='solaris2'
281         ;;
282 *)
283         echo "Unrecognised platform: $HostPlatform"
284         exit 1
285         ;;
286 esac
287 echo "Canonicalised to: $HostPlatform"
288 test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
289 test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
290
291 BuildPlatform_CPP=$HostPlatform_CPP
292 TargetPlatform_CPP=$HostPlatform_CPP
293 BuildArch_CPP=$HostArch_CPP
294 TargetArch_CPP=$HostArch_CPP
295 BuildOS_CPP=$HostOS_CPP
296 HostOS_Full=$host_os
297 TargetOS_CPP=$HostOS_CPP
298 BuildVendor_CPP=$HostVendor_CPP
299 TargetVendor_CPP=$HostVendor_CPP
300
301 dnl Cannot afford all these SUBSTs (because of braindead seds w/ 99 cmd limits)
302 dnl AC_SUBST(BuildPlatform)
303
304 AC_SUBST(HostPlatform)
305 AC_SUBST(TargetPlatform)
306 AC_SUBST(HostPlatform_CPP)
307 dnl AC_SUBST(BuildPlatform_CPP)
308 dnl AC_SUBST(TargetPlatform_CPP)
309
310 AC_SUBST(HostArch_CPP)
311 dnl AC_SUBST(BuildArch_CPP)
312 dnl AC_SUBST(TargetArch_CPP)
313
314 AC_SUBST(HostOS_CPP)
315 AC_SUBST(HostOS_Full)
316 dnl AC_SUBST(BuildOS_CPP)
317 dnl AC_SUBST(TargetOS_CPP)
318
319 AC_SUBST(HostVendor_CPP)
320 dnl AC_SUBST(BuildVendor_CPP)
321 dnl AC_SUBST(TargetVendor_CPP)
322
323 AC_SUBST(exeext)
324
325 if test "$GHC" = ""; then
326   AC_PATH_PROG(GHC,ghc)
327 fi
328 if test "$GHC" != ""; then
329   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
330   AC_SUBST(GhcVersion)dnl
331   AC_SUBST(GhcMajVersion)dnl
332   AC_SUBST(GhcMinVersion)dnl
333   AC_SUBST(GhcPatchLevel)dnl
334 fi
335
336 AC_PATH_PROGS(NHC,nhc nhc98)
337 AC_PATH_PROG(HBC,hbc)
338
339 dnl --------------------------------------------------------------
340 dnl * Project specific configuration options
341 dnl --------------------------------------------------------------
342 dnl What follows is a bunch of options that can either be configured
343 dnl through command line options to the configure script or by
344 dnl supplying defns in the build tree's mk/build.mk. Having the option to
345 dnl use either is considered a Feature.
346
347 dnl ** What command to use to compile compiler sources ?
348 dnl --------------------------------------------------------------
349 AC_ARG_WITH(hc,
350 [  --with-hc=<haskell compiler>
351         Use a command different from 'ghc' to compile up Haskell code.
352         (no claims currently made that this will work with a compiler other than a
353          recent version of GHC, but you could always try...)
354 ],
355 [WithHc="$withval"],
356 [WithHc=$GHC]
357 )
358 AC_SUBST(WithHc)
359
360 dnl ** Which gcc to use?
361 dnl --------------------------------------------------------------
362 AC_ARG_WITH(gcc,
363 [  --with-gcc=<gcc command>
364         Use a different command instead of 'gcc' for the GNU C compiler.
365 ],
366 [WhatGccIsCalled="$withval"],
367 [WhatGccIsCalled="gcc"]
368 )
369 AC_SUBST(WhatGccIsCalled)
370
371 dnl ** Booting from .hc files?
372 dnl --------------------------------------------------------------
373 AC_ARG_ENABLE(hc-boot,
374 [  --enable-hc-boot
375         Boot the Glasgow Haskell Compiler from intermediate .hc files.
376         (This option is mostly of interest to porters.)
377 ],
378 [BootingFromHc=YES],
379 [BootingFromHc=NO]
380 )
381 AC_SUBST(BootingFromHc)
382
383
384 dnl ** Enable the construction of Win32 DLLs?
385 dnl --------------------------------------------------------------
386 AC_ARG_ENABLE(win32-dlls,
387 [  --enable-win32-dlls
388         If on a Win32 platform running mingw32/cygwin, enable the
389         construction of DLLs containing ghc-compiled code.
390 ],
391 [
392 case $HostOS_CPP in
393 cygwin32) ;;
394 mingw32)  ;;
395 *)    echo "Unrecognised win32 platform: $HostPlatform"
396       exit 1
397       ;;
398 esac
399 EnableWin32DLLs=YES
400 ],
401 [EnableWin32DLLs=NO]
402 )
403 AC_SUBST(EnableWin32DLLs)
404 if test x"$EnableWin32DLLs" = "xYES" ; then
405  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
406 fi
407
408 dnl --------------------------------------------------------------
409 dnl End of configure script option section
410 dnl --------------------------------------------------------------
411
412
413 dnl --------------------------------------------------------------
414 dnl * General configuration checks
415 dnl --------------------------------------------------------------
416
417 dnl ** does #! work?
418 AC_SYS_INTERPRETER()
419
420 dnl ** look for `perl', but only in /bin on Windows
421 case $HostOS_CPP in
422 cygwin32|mingw32)
423    AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
424    if test -z "$PerlCmd"; then
425       echo "You must install the version of Perl shipped with GHC"
426       echo "(or a compatible one) in /bin."
427       exit 1
428    fi
429    ;;
430 *)
431    AC_PATH_PROG(PerlCmd,perl)
432    if test -z "$PerlCmd"; then
433       echo "You must install perl before you can continue"
434       echo "Perhaps it is already installed, but not in your PATH?"
435       exit 1
436    else
437    FPTOOLS_CHECK_PERL_VERSION
438    fi
439    ;;
440 esac
441
442 dnl ** does #! path/to/perl work? (sometimes it's too long...)
443 FPTOOLS_SHEBANG_PERL
444
445
446 dnl ** look for GCC and find out which version
447 dnl     Figure out which C compiler to use.  Gcc is preferred.
448 dnl     If gcc, make sure it's at least 2.1
449 dnl
450 AC_PROG_CC
451 FPTOOLS_HAVE_GCC
452
453 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
454 AC_PROG_CPP
455
456 dnl ** figure out how to do context diffs
457 FPTOOLS_PROG_DIFF
458
459 dnl ** Find find command (for Win32's benefit)
460 AC_PATH_PROG(FindCmd, find)
461
462 dnl ** look for a decent parser generator (bison preferred)
463 dnl (FPTOOLS_PROG_YACCY is AC_PROG_YACC, but with some extra testing 
464 dnl  on the suitability of the 'yacc' returned.)
465 FPTOOLS_PROG_YACCY
466
467 dnl ** Find lex command (lex or flex) and library (-ll or -lfl)
468 dnl     ( not that we care about the latter, see mk/config.mk.in )
469 AC_PROG_LEX
470
471
472 dnl ** figure out how to do a BSD-ish install
473 AC_PROG_INSTALL
474
475 dnl If you can run configure, you certainly have /bin/sh
476 AC_DEFINE(HAVE_BIN_SH)
477
478 dnl ** how to invoke `ar' and `ranlib'
479 FPTOOLS_PROG_AR_AND_RANLIB
480
481
482 dnl ** Check to see whether ln -s works
483 AC_PROG_LN_S
484
485
486 dnl ** Find the path to sed
487 AC_PATH_PROG(SedCmd,sed)
488
489
490 dnl ** check for time command
491 AC_PATH_PROG(TimeCmd,time)
492
493
494 dnl ** check for tar
495 dnl   if GNU tar is named gtar, look for it first.
496 AC_PATH_PROGS(TarCmd,gtar tar,tar)
497
498 dnl ** check for gzip/compress
499 AC_PATH_PROGS(CompressCmd,gzip compress,gzip)
500
501 dnl ** check for jade/openjade & determine a working catalog
502 AC_PATH_PROGS(JadeCmd,openjade jade,jade)
503 FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl, 
504                         /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl $hardtop/glafp-utils/docbook/CATALOG*)
505 if test -z "$Catalog"; then
506   AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
507 fi
508 AC_SUBST(Catalog)
509
510 compress_nm=`basename $CompressCmd`
511 if test x"$compress_nm" = xgzip; then
512   CompressCmd="$CompressCmd -d"
513   CompressSuffix="gz"
514 else
515   CompressSuffix="Z"
516 fi
517 AC_SUBST(CompressCmd)
518 AC_SUBST(CompressSuffix)
519
520 dnl ** check for installed happy binary + version
521 dnl    (don't do it if we're booting from .hc files though.)
522 if (test "$BootingFromHc" = "NO"); then
523 FPTOOLS_HAPPY
524 fi;
525
526 dnl --------------------------------------------------
527 dnl ### program checking section ends here ###
528 dnl --------------------------------------------------
529
530 dnl --------------------------------------------------
531 dnl * Platform header file and syscall feature tests
532 dnl ### checking the state of the local header files and syscalls ###
533
534 dnl ** check for full ANSI header (.h) files
535 AC_HEADER_STDC
536
537 dnl ** check for specific header (.h) files that we are interested in
538 AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/limits.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h vfork.h bfd.h winsock.h)
539
540 AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO)
541 AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO)
542
543 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
544   HaveReadlineHeaders=YES
545   AC_DEFINE(HAVE_READLINE_HEADERS,1)
546 else
547   HaveReadlineHeaders=NO
548   AC_DEFINE(HAVE_READLINE_HEADERS,0)
549 fi
550 AC_SUBST(HaveReadlineHeaders)
551
552 dnl ** check for DOS include files
553 AC_CHECK_HEADERS(dos.h conio.h io.h std.h) 
554
555 dnl ** check for Windows include files
556 AC_CHECK_HEADERS(windows.h)
557
558 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
559 AC_HEADER_TIME
560
561 dnl dynamic loading include files
562 AC_CHECK_HEADERS(dlfcn.h dl.h) 
563
564 dnl ** check for farcalloc (in bcc)
565 AC_CHECK_HEADER(alloc.h,AC_CHECK_FUNCS(farcalloc))
566
567 dnl ** check for valloc (in sunos, solaris, mips, amiga, next, minix, ultrix)
568 AC_CHECK_HEADER(malloc.h,AC_CHECK_FUNCS(valloc))
569
570 dnl ** how do we get a timezone name, and UTC offset ?
571 AC_STRUCT_TIMEZONE
572
573 dnl ** what's the type of timezone?
574 FPTOOLS_HAVE_TIMEZONE
575 FPTOOLS_TYPE_TIMEZONE
576
577 dnl ** do we have altzone?
578 FPTOOLS_ALTZONE
579
580 dnl ** does struct stat contain st_blksize?
581 AC_STRUCT_ST_BLKSIZE
582
583 dnl ** do we have long longs?
584 FPTOOLS_C_LONG_LONG
585
586 dnl ** what are the sizes of various types
587 dnl    (these must come before GHC_CHECK_ALIGNMENT)
588 AC_CHECK_SIZEOF(char,               1)
589 AC_CHECK_SIZEOF(double,             8)
590 AC_CHECK_SIZEOF(float,              4)
591 AC_CHECK_SIZEOF(int,                4)
592 AC_CHECK_SIZEOF(long,               4)
593 if test "$fptools_cv_have_long_long" = yes; then
594 AC_CHECK_SIZEOF(long long,          8)
595 fi
596 AC_CHECK_SIZEOF(short,              2)
597 AC_CHECK_SIZEOF(unsigned char,      1)
598 AC_CHECK_SIZEOF(unsigned int,       4)
599 AC_CHECK_SIZEOF(unsigned long,      4)
600 if test "$fptools_cv_have_long_long" = yes; then
601 AC_CHECK_SIZEOF(unsigned long long, 8)
602 fi
603 AC_CHECK_SIZEOF(unsigned short,     2)
604 AC_CHECK_SIZEOF(void *,             4)
605
606 dnl ** what are alignment constraints on various types
607 FPTOOLS_CHECK_ALIGNMENT(char)
608 FPTOOLS_CHECK_ALIGNMENT(double)
609 FPTOOLS_CHECK_ALIGNMENT(float)
610 FPTOOLS_CHECK_ALIGNMENT(int)
611 FPTOOLS_CHECK_ALIGNMENT(long)
612 if test "$fptools_cv_have_long_long" = yes; then
613 FPTOOLS_CHECK_ALIGNMENT(long long)
614 fi
615 FPTOOLS_CHECK_ALIGNMENT(short)
616 FPTOOLS_CHECK_ALIGNMENT(unsigned char)
617 FPTOOLS_CHECK_ALIGNMENT(unsigned int)
618 FPTOOLS_CHECK_ALIGNMENT(unsigned long)
619 if test "$fptools_cv_have_long_long" = yes; then
620 FPTOOLS_CHECK_ALIGNMENT(unsigned long long)
621 fi
622 FPTOOLS_CHECK_ALIGNMENT(unsigned short)
623 FPTOOLS_CHECK_ALIGNMENT(void *)
624
625 dnl ** map standard C types and ISO types to Haskell types
626 FPTOOLS_CHECK_HTYPE(char)
627 FPTOOLS_CHECK_HTYPE(signed char)
628 FPTOOLS_CHECK_HTYPE(unsigned char)
629 FPTOOLS_CHECK_HTYPE(short)
630 FPTOOLS_CHECK_HTYPE(unsigned short)
631 FPTOOLS_CHECK_HTYPE(int)
632 FPTOOLS_CHECK_HTYPE(unsigned int)
633 FPTOOLS_CHECK_HTYPE(long)
634 FPTOOLS_CHECK_HTYPE(unsigned long)
635 if test "$fptools_cv_have_long_long" = yes; then
636 FPTOOLS_CHECK_HTYPE(long long)
637 FPTOOLS_CHECK_HTYPE(unsigned long long)
638 fi
639 FPTOOLS_CHECK_HTYPE(float)
640 FPTOOLS_CHECK_HTYPE(double)
641 FPTOOLS_CHECK_HTYPE(ptrdiff_t)
642 FPTOOLS_CHECK_HTYPE(size_t)
643 FPTOOLS_CHECK_HTYPE(wchar_t)
644 dnl Int32 is a HACK for non-ISO C compilers
645 FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32)
646 FPTOOLS_CHECK_HTYPE(clock_t)
647 FPTOOLS_CHECK_HTYPE(time_t)
648
649 dnl ** can we open files in binary mode?
650 FPTOOLS_O_BINARY
651
652 dnl ** check for GetModuleFileName and WinExec (windows only)
653 dnl Old: AC_CHECK_FUNCS(WinExec GetModuleFileName)       dnl Windows
654 dnl Doesn't work because the linker can't see the functions if
655 dnl you omit the #include <windows.h>.  (I've no idea why not...)
656
657 FPTOOLS_TRY_LINK_NOWARN(,[
658 #if HAVE_WINDOWS_H
659 #include <windows.h>
660 #endif
661 main() { 
662   WinExec("",0);
663   exit(0);
664 }
665 ],
666 [have_winexec=1],
667 [have_winexec=0])
668 if test "$have_winexec" = "1"; then
669 AC_DEFINE(HAVE_WINEXEC)
670 fi
671
672 FPTOOLS_TRY_LINK_NOWARN(,[
673 #if HAVE_WINDOWS_H
674 #include <windows.h>
675 #endif
676 main() { 
677   char* dir;
678   GetModuleFileName((HMODULE)0,dir,0);
679   exit(0);
680 }
681 ],
682 [have_getmodulefilename=1],
683 [have_getmodulefilename=0])
684 if test "$have_getmodulefilename" = "1"; then
685 AC_DEFINE(HAVE_GETMODULEFILENAME)
686 fi
687
688 dnl ** check return type of signal handlers
689 dnl Foo: assumes we can use prototypes.
690 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
691 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
692 dnl [AC_TRY_COMPILE([#include <sys/types.h>
693 dnl #include <signal.h>
694 dnl #ifdef signal
695 dnl #undef signal
696 dnl #endif
697 dnl void (*signal (int, void (*)(int)))(int);
698 dnl ],
699 dnl [int i;], 
700 dnl ac_cv_type_signal_handler=void_int,
701 dnl ac_cv_type_signal_handler=int_void)])
702 dnl if test "$ac_cv_type_signal_handler" = void_int; then
703 dnl AC_DEFINE(VOID_INT_SIGNALS)
704 dnl fi
705
706 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
707 AC_TYPE_SIGNAL
708 if test "$ac_cv_type_signal" = void; then
709 AC_DEFINE(VOID_INT_SIGNALS)
710 fi
711
712 dnl ** check for more functions
713 AC_CHECK_FUNCS(strcasecmp _stricmp stricmp strcmpi)
714 AC_CHECK_FUNCS(strcmp)
715 AC_CHECK_FUNCS(realpath _fullpath)  
716 AC_CHECK_FUNCS(PBHSetVolSync macsystem)  
717 AC_CHECK_FUNCS(fgetpos fsetpos fseek ftell)
718 AC_CHECK_FUNCS(vsnprintf _vsnprintf)
719 AC_CHECK_FUNCS(snprintf  _snprintf )  
720 AC_CHECK_FUNCS(popen     _popen )  
721 AC_CHECK_FUNCS(pclose    _pclose )  
722
723
724 dnl ** check for specific library functions that we are interested in
725 AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat symlink sysconf timelocal times vadvise vfork)
726
727 dnl ** check whether this machine has gmp2 installed
728 AC_CHECK_LIB(gmp,  mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
729   AC_CHECK_LIB(gmp2, mpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp2,
730     HaveLibGmp=No; LibGmp=not-installed))
731 AC_SUBST(HaveLibGmp)
732 AC_SUBST(LibGmp)
733
734 dnl ** check whether this machine has GNU regex in libc.
735 FPTOOLS_REGEX_IN_LIBC
736
737 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
738 dnl    the order of these tests matters: bfd needs liberty
739 AC_CHECK_LIB(iberty, xmalloc)
740 AC_CHECK_LIB(bfd,    bfd_init)
741
742 dnl ** check for readline, for Hugs and hslibs' Readline
743 dnl ncurses supersedes termcap and curses, but for compatibility,
744 dnl we have to check for all...
745 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
746   AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
747     AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
748       HaveLibTermcap=NO; LibTermcap=not-installed)))
749
750 if test $HaveLibTermcap = YES ; then
751   LIBS="-l$LibTermcap $LIBS"
752   AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
753 fi
754
755 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
756   AC_DEFINE(HAVE_READLINE_LIBS,1)
757   LibsReadline="-lreadline -l$LibTermcap"
758 else
759   AC_DEFINE(HAVE_READLINE_LIBS,0)
760   LibsReadline=
761 fi
762 AC_SUBST(LibsReadline)
763
764 dnl ################################################################
765 dnl Check for libraries
766 dnl ################################################################
767
768 FPTOOLS_CHECK_LIB_NOWARN(dl, dlopen)
769 FPTOOLS_CHECK_LIB_NOWARN(dld, shl_load)
770 FPTOOLS_CHECK_LIB_NOWARN(m, atan)
771
772 dnl --------------------------------------------------
773 dnl * Miscellaneous feature tests
774 dnl --------------------------------------------------
775
776 dnl ** can we get alloca?
777 AC_FUNC_ALLOCA
778
779 dnl ** determine whether or not const works
780 AC_C_CONST
781
782 dnl ** determine whether ANSI-function prototypes work?
783 AC_C_PROTOTYPES          
784
785 dnl ** are we big endian?
786 AC_C_BIGENDIAN
787 # Allay users' general fear of warnings of any kind.
788 errprint((fptools configure script wizard sez: "don't worry, the above warning is harmless (to us.)")
789 )
790
791 dnl ** check for leading underscores in symbol names
792 FPTOOLS_UNDERSCORE
793
794 dnl ** how is the end of text section signalled?
795 FPTOOLS_END_TEXT_SECTION
796
797 dnl ** how is the end of data section signalled?
798 FPTOOLS_END_DATA_SECTION
799
800 dnl ** code before data?
801 FPTOOLS_CODE_BEFORE_DATA
802
803 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
804
805 echo ''
806 echo '************************************************'
807 echo '*** NOW DO: gmake boot followed by gmake all'
808 echo '***         (where gmake == GNU make)'
809 echo '************************************************'
810 exit 0