configure.in 15.2 KB
Newer Older
1
dnl == autoconf source for the Glasgow FP tools ==
sof's avatar
sof committed
2 3
dnl (run "grep '^dnl \*' configure.in | sed -e 's/dnl / /g; s/\*\*/   +/g;'"
dnl  (or some such) to see the outline of this file)
4 5
dnl
#
sof's avatar
sof committed
6
# (c) The AQUA Project, Glasgow University, 1994-1998
7
#
sof's avatar
sof committed
8
# Configure script template for the Glasgow functional programming tools
9
#
sof's avatar
sof committed
10
# Process with 'autoconf' to get a working configure script.
11
#
sof's avatar
sof committed
12 13 14 15
# For the generated configure script, do "./configure --help" to
# see what flags are available. (Better yet, read the documentation!)
#

16 17
# First off, a distrib sanity check..
AC_INIT(mk/config.mk.in)
18

19 20 21
# -------------------------------------------------------------------------
# Prepare to generate the following header files
#
22 23
#
AC_CONFIG_HEADER(mk/config.h)
24

sof's avatar
sof committed
25
# No, semi-sadly, we don't do `--srcdir'...
26
if test x"$srcdir" != 'x.' ; then
27
    echo "This configuration does not support the \`--srcdir' option.."
28 29 30
    exit 1
fi

31
#
sof's avatar
sof committed
32
# Remove common automounter nonsense + convert from UNC to DOS style paths
sof's avatar
sof committed
33
# (UNC awareness isn't quite there yet for cygwin32-beta18 and consituent tools.)
34
#
35
hardtop=`pwd`
sof's avatar
sof committed
36
hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|' | sed 's|^//\(.\)/|\1:/|' `
37

38 39 40 41
echo ''
echo "*** The top of your build tree is: $hardtop"
AC_SUBST(hardtop)

sof's avatar
sof committed
42 43 44 45 46
dnl--------------------------------------------------------------------
dnl * Choose host(/target/build) platform
dnl--------------------------------------------------------------------

dnl Guess host/target/build platform(s) if necessary.
47
AC_CANONICAL_SYSTEM
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

# "$host" defaults to "$target"
if test "x$host" = xNONE ; then
    host=$target
fi

dnl ** canonicalize platform names
BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1

if test x"$TargetPlatform" != x"$HostPlatform" ; then
    echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
    exit 1
fi
sof's avatar
sof committed
63 64

exeext=''
65
#
66 67 68 69 70
# The following will be more difficult when we *are* cross-compiling.
# Suitable names to slam in *_CPP are in platform.h.in.
# We also record the architecture, vendor, and operating system (OS)
# separately.
case $HostPlatform in
71
alpha-dec-osf[[12]]*)
72
	HostPlatform=alpha-dec-osf1   # canonicalise for our purposes
73
	TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
74
	BuildPlatform=alpha-dec-osf1  # hack
75 76 77 78 79
        HostPlatform_CPP='alpha_dec_osf1'
        HostArch_CPP='alpha'
        HostVendor_CPP='dec'
        HostOS_CPP='osf1'
        ;;
80 81 82 83 84 85 86 87 88
alpha-dec-osf[[34]]*)
	HostPlatform=alpha-dec-osf3   # canonicalise for our purposes
	TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
	BuildPlatform=alpha-dec-osf3  # hack
        HostPlatform_CPP='alpha_dec_osf3'
        HostArch_CPP='alpha'
        HostVendor_CPP='dec'
        HostOS_CPP='osf3'
        ;;
89
hppa1.1-hp-hpux*)
90
	HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
91 92 93 94 95 96 97
	TargetPlatform=hppa1.1-hp-hpux
	BuildPlatform=hppa1.1-hp-hpux
        HostPlatform_CPP='hppa1_1_hp_hpux'
        HostArch_CPP='hppa1_1'
        HostVendor_CPP='hp'
        HostOS_CPP='hpux'
        ;;
98
i[[3456]]86-*-linuxaout*)
99
	HostPlatform=i386-unknown-linuxaout   # hack again
100 101 102 103 104 105 106
	TargetPlatform=i386-unknown-linuxaout
	BuildPlatform=i386-unknown-linuxaout
        HostPlatform_CPP='i386_unknown_linuxaout'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='linuxaout'
        ;;
107
i[[3456]]86-*-linux*)
108 109 110 111 112 113 114 115
	HostPlatform=i386-unknown-linux # hack again
	TargetPlatform=i386-unknown-linux
	BuildPlatform=i386-unknown-linux
        HostPlatform_CPP='i386_unknown_linux'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='linux'
        ;;
116 117 118 119
i[[3456]]86-*-freebsd*)
	HostPlatform=i386-unknown-freebsd # hack again
	TargetPlatform=i386-unknown-freebsd
	BuildPlatform=i386-unknown-freebsd
120 121 122 123 124
        HostPlatform_CPP='i386_unknown_freebsd'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='freebsd'
        ;;
125 126 127 128
i[[3456]]86-*-netbsd*)
	HostPlatform=i386-unknown-netbsd # hack again
	TargetPlatform=i386-unknown-netbsd
	BuildPlatform=i386-unknown-netbsd
129 130 131 132 133
        HostPlatform_CPP='i386_unknown_netbsd'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='netbsd'
        ;;
134
i[[3456]]86-*-solaris2*)
135 136 137 138 139 140 141 142
	HostPlatform=i386-unknown-solaris2 # hack again
	TargetPlatform=i386-unknown-solaris2
	BuildPlatform=i386-unknown-solaris2
        HostPlatform_CPP='i386_unknown_solaris2'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='solaris2'
        ;;
143 144 145 146 147 148 149 150
i[[3456]]86-*-cygwin32*)
	HostPlatform=i386-unknown-cygwin32 # hack again
	TargetPlatform=i386-unknown-cygwin32
	BuildPlatform=i386-unknown-cygwin32
        HostPlatform_CPP='i386_unknown_cygwin32'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='cygwin32'
sof's avatar
sof committed
151
	exeext='.exe'
152
        ;;
153 154 155 156 157 158 159 160 161 162 163 164
m68k-next-nextstep2)
        HostPlatform_CPP='m68k_next_nextstep2'
        HostArch_CPP='m68k'
        HostVendor_CPP='next'
        HostOS_CPP='nextstep2'
        ;;
m68k-next-nextstep3)
        HostPlatform_CPP='m68k_next_nextstep3'
        HostArch_CPP='m68k'
        HostVendor_CPP='next'
        HostOS_CPP='nextstep3'
        ;;
165
i[[3456]]86-next-nextstep3)
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
	HostPlatform=i386-next-nextstep3 # hack again
	TargetPlatform=i386-next-nextstep3
	BuildPlatform=i386-next-nextstep3
        HostPlatform_CPP='i386_next_nextstep3'
        HostArch_CPP='i386'
        HostVendor_CPP='next'
        HostOS_CPP='nextstep3'
        ;;
m68k-sun-sunos4*)
	HostPlatform=m68k-sun-sunos4
	TargetPlatform=m68k-sun-sunos4 #hack
	BuildPlatform=m68k-sun-sunos4 #hack
        HostPlatform_CPP='m68k_sun_sunos4'
        HostArch_CPP='m68k'
        HostVendor_CPP='sun'
        HostOS_CPP='sunos4'
        ;;
mips-dec-ultrix*)
        HostPlatform_CPP='mips_dec_ultrix'
        HostArch_CPP='mipsel'   # NB a little different
        HostVendor_CPP='dec'
        HostOS_CPP='ultrix'
        ;;
mips-sgi-irix*)
	HostPlatform=mips-sgi-irix
	TargetPlatform=mips-sgi-irix #hack
	BuildPlatform=mips-sgi-irix #hack
        HostPlatform_CPP='mips_sgi_irix'
        HostArch_CPP='mipseb'   # NB a little different
        HostVendor_CPP='sgi'
        HostOS_CPP='irix'
        ;;
198 199 200 201 202 203 204 205 206
rs6000-ibm-aix*)
	HostPlatform=rs6000-ibm-aix
	TargetPlatform=rs6000-ibm-aix #hack
	BuildPlatform=rs6000-ibm-aix #hack
        HostPlatform_CPP='rs6000_ibm_aix'
        HostArch_CPP='rs6000'
        HostVendor_CPP='ibm'
        HostOS_CPP='aix'
        ;;
207 208 209 210 211 212
powerpc-ibm-aix*)
	HostPlatform=powerpc-ibm-aix
	TargetPlatform=powerpc-ibm-aix #hack
	BuildPlatform=powerpc-ibm-aix #hack
        HostPlatform_CPP='powerpc_ibm_aix'
        HostArch_CPP='powerpc'
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
        HostVendor_CPP='ibm'
        HostOS_CPP='aix'
        ;;
sparc-sun-sunos4*)
	HostPlatform=sparc-sun-sunos4
	TargetPlatform=sparc-sun-sunos4 #hack
	BuildPlatform=sparc-sun-sunos4 #hack
        HostPlatform_CPP='sparc_sun_sunos4'
        HostArch_CPP='sparc'
        HostVendor_CPP='sun'
        HostOS_CPP='sunos4'
        ;;
sparc-sun-solaris2*)
	HostPlatform=sparc-sun-solaris2
	TargetPlatform=sparc-sun-solaris2 #hack
	BuildPlatform=sparc-sun-solaris2 #hack
        HostPlatform_CPP='sparc_sun_solaris2'
        HostArch_CPP='sparc'
        HostVendor_CPP='sun'
        HostOS_CPP='solaris2'
        ;;
*)
        echo "Unrecognised platform: $HostPlatform"
        exit 1
        ;;
esac
sof's avatar
sof committed
239
echo "Canonicalised to: $HostPlatform"
240 241
test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
242 243 244 245 246 247

BuildPlatform_CPP=$HostPlatform_CPP
TargetPlatform_CPP=$HostPlatform_CPP
BuildArch_CPP=$HostArch_CPP
TargetArch_CPP=$HostArch_CPP
BuildOS_CPP=$HostOS_CPP
sof's avatar
sof committed
248
HostOS_Full=$host_os
249 250 251
TargetOS_CPP=$HostOS_CPP
BuildVendor_CPP=$HostVendor_CPP
TargetVendor_CPP=$HostVendor_CPP
252 253

dnl Cannot afford all these SUBSTs (because of braindead seds w/ 99 cmd limits)
254
dnl AC_SUBST(BuildPlatform)
sof's avatar
sof committed
255

256
AC_SUBST(HostPlatform)
257
AC_SUBST(TargetPlatform)
258 259 260
AC_SUBST(HostPlatform_CPP)
dnl AC_SUBST(BuildPlatform_CPP)
dnl AC_SUBST(TargetPlatform_CPP)
sof's avatar
sof committed
261

262 263 264
AC_SUBST(HostArch_CPP)
dnl AC_SUBST(BuildArch_CPP)
dnl AC_SUBST(TargetArch_CPP)
sof's avatar
sof committed
265

266
AC_SUBST(HostOS_CPP)
sof's avatar
sof committed
267
AC_SUBST(HostOS_Full)
268 269
dnl AC_SUBST(BuildOS_CPP)
dnl AC_SUBST(TargetOS_CPP)
sof's avatar
sof committed
270

271 272 273 274
AC_SUBST(HostVendor_CPP)
dnl AC_SUBST(BuildVendor_CPP)
dnl AC_SUBST(TargetVendor_CPP)

sof's avatar
sof committed
275 276
AC_SUBST(exeext)

sof's avatar
sof committed
277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
dnl --------------------------------------------------------------
dnl * Project specific configuration options
dnl --------------------------------------------------------------
dnl What follows is a bunch of options that can either be configured
dnl through command line options to the configure script or by
dnl supplying defns in the build tree's mk/build.mk. Having the option to
dnl use either is considered a Feature.

dnl ** What command to use to compile compiler sources ?
dnl --------------------------------------------------------------
AC_ARG_WITH(ghc-hc,
[  --with-ghc-hc=<haskell compiler>
        Use a command different from 'ghc-2.10' to compile up the GHC compiler sources.
         (no claims currently made that this will work with a compiler other than a
          recent version of GHC, but you could always try...)
sof's avatar
sof committed
292
],
sof's avatar
sof committed
293 294
[WithGhcHc="$withval"],
[WithGhcHc="ghc-2.10"]
sof's avatar
sof committed
295
)
sof's avatar
sof committed
296
AC_SUBST(WithGhcHc)
sof's avatar
sof committed
297

sof's avatar
sof committed
298 299
dnl ** Which gcc to use?
dnl --------------------------------------------------------------
sof's avatar
sof committed
300 301 302 303 304 305 306 307 308
AC_ARG_WITH(gcc,
[  --with-gcc=<gcc command>
        Use a different command instead of 'gcc' for the GNU C compiler.
],
[WhatGccIsCalled="$withval"],
[WhatGccIsCalled="gcc"]
)
AC_SUBST(WhatGccIsCalled)

sof's avatar
sof committed
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
dnl ** Booting from .hc files?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(hc-boot,
[  --enable-hc-boot
        Boot the Glasgow Haskell Compiler from intermediate .hc files.
        (This option is mostly of interest to porters.)
],
[BootingFromHc=YES],
[BootingFromHc=NO]
)
AC_SUBST(BootingFromHc)


dnl --------------------------------------------------------------
dnl End of configure script option section
dnl --------------------------------------------------------------


dnl --------------------------------------------------------------
dnl * General configuration checks
dnl --------------------------------------------------------------
sof's avatar
sof committed
330

331 332
dnl ** does #! work?
AC_SYS_INTERPRETER()
sof's avatar
sof committed
333

334
dnl ** look for `perl', but watch out for version 4.035
sof's avatar
sof committed
335
AC_PATH_PROG(PerlCmd,perl)
336
if test -z "$PerlCmd"; then
sof's avatar
sof committed
337 338 339
   echo "You must install perl before you can continue"
   echo "Perhaps it is already installed, but not in your PATH?"
   exit 1
340
else
sof's avatar
sof committed
341
FPTOOLS_CHECK_PERL_VERSION
342
fi
sof's avatar
sof committed
343

sof's avatar
sof committed
344
dnl ** does #! path/to/perl work? (sometimes it's too long...)
sof's avatar
sof committed
345
FPTOOLS_SHEBANG_PERL
sof's avatar
sof committed
346

sof's avatar
sof committed
347

348
dnl ** look for GCC and find out which version
sof's avatar
sof committed
349 350 351
dnl     Figure out which C compiler to use.  Gcc is preferred.
dnl     If gcc, make sure it's at least 2.1
dnl
352
AC_PROG_CC
sof's avatar
sof committed
353
FPTOOLS_HAVE_GCC
sof's avatar
sof committed
354 355 356

dnl ** figure out how to invoke cpp directly (gcc -E is no good)
AC_PROG_CPP
sof's avatar
sof committed
357
FPTOOLS_PROG_GNUCPP
358

359
dnl ** figure out how to do context diffs
sof's avatar
sof committed
360
FPTOOLS_PROG_DIFF
sof's avatar
sof committed
361

sof's avatar
sof committed
362

363
dnl ** look for a decent parser generator (bison preferred)
sof's avatar
sof committed
364 365
dnl (FPTOOLS_PROG_YACCY is AC_PROG_YACC, but with some extra testing 
dnl  on the suitability of the 'yacc' returned.)
sof's avatar
sof committed
366
FPTOOLS_PROG_YACCY
367

368
dnl ** Find lex command (lex or flex) and library (-ll or -lfl)
sof's avatar
sof committed
369
dnl     ( not that we care about the latter, see mk/config.mk.in )
370 371
AC_PROG_LEX

sof's avatar
sof committed
372

373 374
dnl ** figure out how to do a BSD-ish install
AC_PROG_INSTALL
sof's avatar
sof committed
375

sof's avatar
sof committed
376
dnl ** how to invoke `ar' and `ranlib'
sof's avatar
sof committed
377
FPTOOLS_PROG_AR_AND_RANLIB
sof's avatar
sof committed
378

sof's avatar
sof committed
379

380
dnl ** Check to see whether ln -s works
sof's avatar
sof committed
381 382
AC_PROG_LN_S

sof's avatar
sof committed
383 384

dnl ** Find the path to sed
sof's avatar
sof committed
385 386
AC_PATH_PROG(SedCmd,sed)

sof's avatar
sof committed
387 388

dnl ** check for time command
sof's avatar
sof committed
389 390
AC_PATH_PROG(TimeCmd,time)

sof's avatar
sof committed
391 392 393

dnl ** check for tar
dnl   if GNU tar is named gtar, look for it first.
394
AC_PATH_PROGS(TarCmd,gtar tar,tar)
sof's avatar
sof committed
395

sof's avatar
sof committed
396
dnl ** check for gzip/compress
397 398 399 400 401 402 403 404 405 406 407
AC_PATH_PROGS(CompressCmd,gzip compress,gzip)

compress_nm=`basename $CompressCmd`
if test x"$compress_nm" = xgzip; then
  CompressCmd="$CompressCmd -d"
  CompressSuffix="gz"
else
  CompressSuffix="Z"
fi
AC_SUBST(CompressCmd)
AC_SUBST(CompressSuffix)
sof's avatar
sof committed
408 409

dnl ** check for installed happy binary + version
sof's avatar
sof committed
410 411
dnl    (don't do it if we're booting from .hc files though.)
if (test "$BootingFromHc" = "NO"); then
sof's avatar
sof committed
412
FPTOOLS_HAPPY
sof's avatar
sof committed
413
fi;
sof's avatar
sof committed
414

sof's avatar
sof committed
415 416 417
dnl --------------------------------------------------
dnl ### program checking section ends here ###
dnl --------------------------------------------------
sof's avatar
sof committed
418

sof's avatar
sof committed
419 420 421
dnl --------------------------------------------------
dnl * Platform header file and syscall feature tests
dnl ### checking the state of the local header files and syscalls ###
sof's avatar
sof committed
422

423 424
dnl ** check for full ANSI header (.h) files
AC_HEADER_STDC
sof's avatar
sof committed
425

426
dnl ** check for specific header (.h) files that we are interested in
427
AC_CHECK_HEADERS(dirent.h fcntl.h grp.h malloc.h memory.h nlist.h pwd.h siginfo.h signal.h stdlib.h string.h sys/fault.h sys/file.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 termios.h time.h types.h unistd.h utime.h vfork.h readline/readline.h bfd.h)
sof's avatar
sof committed
428

429 430
dnl ** check if it is safe to include both <time.h> and <sys/time.h>
AC_HEADER_TIME
sof's avatar
sof committed
431

sof's avatar
sof committed
432
dnl ** how do we get a timezone name, and UTC offset ?
433
AC_STRUCT_TIMEZONE
sof's avatar
sof committed
434

reid's avatar
reid committed
435
dnl ** what's the type of timezone?
sof's avatar
sof committed
436
FPTOOLS_TYPE_TIMEZONE
sof's avatar
sof committed
437

reid's avatar
reid committed
438
dnl ** do we have altzone?
sof's avatar
sof committed
439
FPTOOLS_ALTZONE
sof's avatar
sof committed
440

sof's avatar
sof committed
441 442 443
dnl ** does struct stat contain st_blksize?
AC_STRUCT_ST_BLKSIZE

reid's avatar
reid committed
444 445 446
dnl ** what are the sizes of various types
dnl    (these must come before GHC_CHECK_ALIGNMENT)
AC_CHECK_SIZEOF(unsigned int,4)
447 448 449 450
AC_CHECK_SIZEOF(float,       4)
AC_CHECK_SIZEOF(double,      8)
AC_CHECK_SIZEOF(long,        4)
AC_CHECK_SIZEOF(void *,      4)
reid's avatar
reid committed
451 452

dnl ** what are alignment constraints on various types
sof's avatar
sof committed
453 454 455 456 457 458 459
FPTOOLS_CHECK_ALIGNMENT(unsigned int) dnl redundant but harmless
FPTOOLS_CHECK_ALIGNMENT(long)
FPTOOLS_CHECK_ALIGNMENT(float)
FPTOOLS_CHECK_ALIGNMENT(double)

dnl ** do we have long longs?
FPTOOLS_C_LONG_LONG
reid's avatar
reid committed
460

sof's avatar
sof committed
461 462 463
dnl ** can we open files in binary mode?
FPTOOLS_O_BINARY

464 465
dnl ** check for specific library functions that we are interested in
AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect setitimer stat sysconf timelocal times vadvise vfork)
sof's avatar
sof committed
466

sof's avatar
sof committed
467
dnl ** check whether this machine has gmp2 installed
468 469 470
AC_CHECK_LIB(gmp,  mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
  AC_CHECK_LIB(gmp2, mpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp2,
    HaveLibGmp=No; LibGmp=not-installed))
471
AC_SUBST(HaveLibGmp)
472
AC_SUBST(LibGmp)
473

reid's avatar
reid committed
474
dnl ** check whether this machine has BFD and liberty installed (used for debugging)
sof's avatar
sof committed
475
dnl    the order of these tests matters: bfd needs liberty
reid's avatar
reid committed
476 477
AC_CHECK_LIB(iberty, xmalloc)
AC_CHECK_LIB(bfd,    bfd_init)
reid's avatar
reid committed
478

sof's avatar
sof committed
479 480 481 482 483

dnl --------------------------------------------------
dnl * Miscellaneous feature tests
dnl --------------------------------------------------

sof's avatar
sof committed
484
dnl ** can we get alloca?
485
AC_FUNC_ALLOCA
sof's avatar
sof committed
486

487 488
dnl ** determine whether or not const works
AC_C_CONST
sof's avatar
sof committed
489

490 491
dnl ** are we big endian?
AC_C_BIGENDIAN
sof's avatar
sof committed
492 493

dnl ** determine the return type of signal()
sof's avatar
sof committed
494 495
AC_TYPE_SIGNAL

496
dnl ** check for leading underscores in symbol names
sof's avatar
sof committed
497
FPTOOLS_UNDERSCORE
498

499
AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
500

501
echo ''
502
echo '************************************************'
503
echo '*** NOW DO: gmake boot followed by gmake all'
sof's avatar
sof committed
504
echo '***         (where gmake == GNU make)'
505 506
echo '************************************************'
exit 0