configure.in 12.3 KB
Newer Older
1
2
3
4
5
6
dnl == autoconf source for the Glasgow FP tools ==
dnl (grep for '^dnl' to see the outline of this file)
dnl
dnl * INITIAL SETUP, CHOICE OF PLATFORM(S)
#!/bin/sh
#
7
# (c) The AQUA Project, Glasgow University, 1994-1997
8
9
10
11
12
13
14
#
# Configure script for the Glasgow functional programming tools
# (created automagically by autoconf...do not edit by hand)
#
# Do "./configure --help" to see what flags are available.
# (Better yet, read the documentation!)
#
15
16
# First off, a distrib sanity check..
AC_INIT(mk/config.mk.in)
17

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

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

30
31
32
#
# Remove some automounter nonsense (Glasgow specific gruff)
#
33
hardtop=`pwd`
34
hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|'`
35

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

sof's avatar
sof committed
40
####--------------------------------------------------------------------
41
dnl ** choose host(/target/build) platform
42
#
43
44
# Guess host/target/build platform(s) if necessary.
#
45
AC_CANONICAL_SYSTEM
46
47
48
49
50
51

# "$host" defaults to "$target"
if test "x$host" = xNONE ; then
    host=$target
fi
# "$build" defaults to "$host"
52
53
54
55
56
57
#if test "x$build" = xNONE ; then
#    build=$host
#else
#    echo "This configuration does not support the \`--build' option."
#    exit 1
#fi
58
59
60
61
62
63
64
65
66
67
68

dnl ** canonicalize platform names
# Canonicali[sz]e those babies
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
69
#
70
71
72
73
74
# 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
75
alpha-dec-osf[[1234]]*)
76
	HostPlatform=alpha-dec-osf1   # canonicalise for our purposes
77
	TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
78
	BuildPlatform=alpha-dec-osf1  # hack
79
80
81
82
83
84
        HostPlatform_CPP='alpha_dec_osf1'
        HostArch_CPP='alpha'
        HostVendor_CPP='dec'
        HostOS_CPP='osf1'
        ;;
hppa1.1-hp-hpux*)
85
	HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
86
87
88
89
90
91
92
	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'
        ;;
93
i[[3456]]86-*-linuxaout*)
94
	HostPlatform=i386-unknown-linuxaout   # hack again
95
96
97
98
99
100
101
	TargetPlatform=i386-unknown-linuxaout
	BuildPlatform=i386-unknown-linuxaout
        HostPlatform_CPP='i386_unknown_linuxaout'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='linuxaout'
        ;;
102
i[[3456]]86-*-linux*)
103
104
105
106
107
108
109
110
	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'
        ;;
111
112
113
114
i[[3456]]86-*-freebsd*)
	HostPlatform=i386-unknown-freebsd # hack again
	TargetPlatform=i386-unknown-freebsd
	BuildPlatform=i386-unknown-freebsd
115
116
117
118
119
        HostPlatform_CPP='i386_unknown_freebsd'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='freebsd'
        ;;
120
121
122
123
i[[3456]]86-*-netbsd*)
	HostPlatform=i386-unknown-netbsd # hack again
	TargetPlatform=i386-unknown-netbsd
	BuildPlatform=i386-unknown-netbsd
124
125
126
127
128
        HostPlatform_CPP='i386_unknown_netbsd'
        HostArch_CPP='i386'
        HostVendor_CPP='unknown'
        HostOS_CPP='netbsd'
        ;;
129
i[[3456]]86-*-solaris2*)
130
131
132
133
134
135
136
137
	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'
        ;;
138
139
140
141
142
143
144
145
146
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'
        ;;
147
148
149
150
151
152
153
154
155
156
157
158
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'
        ;;
159
i[[3456]]86-next-nextstep3)
160
161
162
163
164
165
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
	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'
        ;;
192
193
194
195
196
197
198
199
200
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'
        ;;
201
202
203
204
205
206
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'
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
        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
233
echo "Canonicalised to: $HostPlatform"
234
235
test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
236
237
238
239
240
241

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
242
HostOS_Full=$host_os
243
244
245
TargetOS_CPP=$HostOS_CPP
BuildVendor_CPP=$HostVendor_CPP
TargetVendor_CPP=$HostVendor_CPP
246
247

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

250
AC_SUBST(HostPlatform)
251
AC_SUBST(TargetPlatform)
252
253
254
AC_SUBST(HostPlatform_CPP)
dnl AC_SUBST(BuildPlatform_CPP)
dnl AC_SUBST(TargetPlatform_CPP)
sof's avatar
sof committed
255

256
257
258
AC_SUBST(HostArch_CPP)
dnl AC_SUBST(BuildArch_CPP)
dnl AC_SUBST(TargetArch_CPP)
sof's avatar
sof committed
259

260
AC_SUBST(HostOS_CPP)
sof's avatar
sof committed
261
AC_SUBST(HostOS_Full)
262
263
dnl AC_SUBST(BuildOS_CPP)
dnl AC_SUBST(TargetOS_CPP)
sof's avatar
sof committed
264

265
266
267
268
AC_SUBST(HostVendor_CPP)
dnl AC_SUBST(BuildVendor_CPP)
dnl AC_SUBST(TargetVendor_CPP)

sof's avatar
sof committed
269
####--------------------------------------------------------------------
270
271
272
dnl
dnl * _GENERAL_ CONFIGURATION CHECKS
#
sof's avatar
sof committed
273

274
275
276
277
278
279
280
#
dnl ** does #! work?
#
AC_SYS_INTERPRETER()
#
dnl ** look for `perl', but watch out for version 4.035
#
sof's avatar
sof committed
281
AC_PATH_PROG(PerlCmd,perl)
282
if test -z "$PerlCmd"; then
sof's avatar
sof committed
283
284
285
   echo "You must install perl before you can continue"
   echo "Perhaps it is already installed, but not in your PATH?"
   exit 1
286
else
sof's avatar
sof committed
287
AC_CHECK_PERL_VERSION
288
fi
sof's avatar
sof committed
289

290
291
292
#
dnl ** does #!.../perl work? (sometimes it's too long...)
#
sof's avatar
sof committed
293
294
295
296
297
298
299
AC_SHEBANG_PERL

# Remove: we work around the problem in the single place
# where we rely on something (getopts) from the libraries.
#
#dnl ** check if perl library is properly installed
# 
300
# (by seeing if a "do 'getopts.pl'" works...
sof's avatar
sof committed
301
302
303
304
305
306
307
308
#if $PerlCmd -e 'do "getopts.pl" || exit(1); exit(0);' > /dev/null 2>&1 ; then
#    :
#else
#    echo "I think your perl library is misinstalled:"
#    echo "The following script did not work:"
#    echo '      do "getopts.pl" || exit(1); exit(0);'
#    echo 'But, anyway, we will continue in our quest..'
#fi
309
#
sof's avatar
sof committed
310

311
312
313
314
315
316
#
dnl ** look for GCC and find out which version
# Figure out which C compiler to use.  Gcc is preferred.
# If gcc, make sure it's at least 2.1
#
AC_PROG_CC
sof's avatar
sof committed
317
318
319
320
321
322
323
AC_HAVE_GCC

#
dnl ** figure out how to invoke cpp directly (gcc -E is no good)
#
AC_PROG_CPP
AC_PROG_GNUCPP
324

325
326
327
#
dnl ** figure out how to do context diffs
#
sof's avatar
sof committed
328
329
AC_PROG_DIFF

330
331
332
#
dnl ** look for a decent parser generator (bison preferred)
#
sof's avatar
sof committed
333
334
335
# (AC_PROG_YACCY is AC_PROG_YACC, but with some extra testing 
# on the suitability of the 'yacc' returned.)
AC_PROG_YACCY
336

sof's avatar
sof committed
337
#
338
339
340
341
dnl ** Find lex command (lex or flex) and library (-ll or -lfl)
#
AC_PROG_LEX

342
343
344
345
346
#
dnl ** figure out how to do a BSD-ish install
#
AC_PROG_INSTALL
#
sof's avatar
sof committed
347
dnl ** how to invoke `ar' and `ranlib'
348
#
sof's avatar
sof committed
349
350
AC_PROG_AR_AND_RANLIB

351
#
352
353
354
#
dnl ** Check to see whether ln -s works
#
sof's avatar
sof committed
355
356
AC_PROG_LN_S

357
358
359
#
dnl ** Find the path to sed **
#
sof's avatar
sof committed
360
361
AC_PATH_PROG(SedCmd,sed)

362
363
#
dnl ** check for time command **
sof's avatar
sof committed
364
365
AC_PATH_PROG(TimeCmd,time)

366
367
368
369
370
371
#
dnl ** check for tar **
#
# if GNU tar is named gtar, look for it first.
#
AC_PATH_PROGS(TarCmd,gtar tar,tar)
sof's avatar
sof committed
372

373
374
375
376
377
378
379
380
381
382
383
384
385
#
dnl ** check for gzip/compress **
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
386

387
#
sof's avatar
sof committed
388
dnl ** check for installed happy binary + version
389
#
sof's avatar
sof committed
390
AC_HAPPY
391
392
393

if test x"$HappyCmd" != x; then
   if expr $HappyVersion \< "1.3" >/dev/null; then
394
395
396
	echo "   Happy Version 1.3 or later is required to compile GHC."
	echo "   Using the Happy sources in the tree.";
	HappyCmd=""
397
398
   fi
fi
sof's avatar
sof committed
399

400
401
402
403
404
#
#
dnl ** check for installed lx binary
#
AC_PATH_PROG(LxCmd,lx)
sof's avatar
sof committed
405

406
#
reid's avatar
reid committed
407
408
409
dnl ** check for installed green-card binary
#
AC_PATH_PROG(GreencardCmd,green-card)
sof's avatar
sof committed
410

sof's avatar
sof committed
411
412
413
414
415
416
#### program checking section ends here ####

####--------------------------------------------------
#### checking the state of the local header files and syscalls ####

#
417
418
419
dnl ** check for full ANSI header (.h) files
#
AC_HEADER_STDC
sof's avatar
sof committed
420

421
422
423
#
dnl ** check for specific header (.h) files that we are interested in
#
sof's avatar
sof committed
424
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 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 )
sof's avatar
sof committed
425

426
427
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
dnl ** how do we get a timezone name, and UTC offset ?
432
433
#
AC_STRUCT_TIMEZONE
sof's avatar
sof committed
434

435
# 
sof's avatar
sof committed
436
437
438
dnl what's the type of timezone?
AC_TYPE_TIMEZONE

439
#
sof's avatar
sof committed
440
441
442
dnl do we have altzone?
AC_ALTZONE

443
444
445
446
#
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
447

448
#
sof's avatar
sof committed
449
# Misc
450
#
sof's avatar
sof committed
451
dnl ** can we get alloca?
452
453
454
AC_FUNC_ALLOCA
dnl ** determine whether or not const works
AC_C_CONST
sof's avatar
sof committed
455
456
457
dnl ** determine the type of signal()
AC_TYPE_SIGNAL

458
459
#
dnl ** check for leading underscores in symbol names
sof's avatar
sof committed
460
461
#
AC_UNDERSCORE
462

463
AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
464

465
echo ''
466
echo '************************************************'
467
echo '*** NOW DO: gmake boot followed by gmake all'
sof's avatar
sof committed
468
echo '***         (where gmake == GNU make)'
469
470
echo '************************************************'
exit 0