Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#
# @configure_input@
#
#################################################################################
#
# config.mk.in-template
#
# This file defines all the variables that set the configuration of
# a particular build.
#
#
#################################################################################
# The configuration is defined in two steps:
#
# 1. The builder (i.e. the person doing the build)
# copies this file, config.mk.in-template
# to config.mk.in
#
# 2. S/he then edits it manually (gasp) to reflect any configuration
# options s/he wants.
#
# 3. Then s/he runs "configure", which generates config.mk from
# config.mk.in, substituting for system/platform-dependent things
# enclosed in @at-signs@.
#
# This is one of only two files that configure generates (the other is config.h)
#
# Note that after subsequent edits of config.mk.in for a build, the configure script
# will have to be re-run manually to have the change reflected in config.mk.
#
# There is a section below for each project within the fptools suite
#
# PLUS
#
# a section corresponding to each of the main .mk files
# included by boilerplate.mk (see boilerplate.mk for a list).
#################################################################################
#
# project-wide flags
#
# Set of options applicable to all fptools projects
#
#################################################################################
#
# What parts to build: An fptools build tree does not have to be built
# all in one go. By setting the list of ProjectsToBuild in build.mk you can
# control which projects are built.
#
# Caution: the projects are built in the order given here, so if some
# projects use others you must list them in the correct order.
#
# Generally: * glafp-utils should be first
# * literate next
# * happy next
# * ghc&hslibs next
# then it's up to you
ProjectsToBuild = glafp-utils literate ghc hslibs
#
# Should the various project tests directories be built?
#
IncludeTestDirsInBuild=NO
#################################################################################
#
# GHC project
#
# Set of (configurable) options needed by the ghc tree
# plus their default options (if any).
#
#################################################################################
#
# Name variables for ghc:
#
GhcProjectName =The Glorious Glasgow Haskell Compilation System
GhcProjectNameShort =ghc
GhcProjectVersion =2.02
GhcProjectPatchLevel =0
GhcBuildeeVersion =202
GhcBuilderVersion =29
#
# Name variables for the fptools, for now equal to the above
# ghc stuff
#
ProjectName =$(GhcProjectName)
ProjectNameShort =$(GhcProjectNameShort)
ProjectVersion =$(GhcProjectVersion)
ProjectPatchLevel =$(GhcProjectPatchLevel)
#---------------------------------------------------------------
#
# Variables that control how the compiler itself is built
# Specify the Haskell compiler to be used to compile the compiler itself
# WithGhcHc Path name of the compiler to use
# Ghc2_0 Whether this compiler is GHC 2.0 or later
# (which affects gruesome details about
# how mutually recursive modules are handled)
# WithGhcHcType What "type" of compiler is being used
# Valid options:
# HC_CHALMERS_HBC
# HC_GLASGOW_GHC
# HC_ROJEMO_NHC
# HC_UNSPECIFIED
WithGhcHc = ghc-0.29
Ghc2_0=NO
# Unused, we think
# WithGhcHcType=HC_GLASGOW_GHC
# Extra ways in which to build the compiler (for example, you might want to
# build a profiled compiler so you can see where it spends its time)
GhcCompilerWays=
# Extra option flags to pass to the compiler that compiles the compiler
# (Ones that are essential are wired into ghc/compiler/Makefile)
# Typical ones:
# -O compiler an optimised compiler
# -DDEBUG include consistency/assertion checks in the compiled compiler
# -fshow-import-specs show import specialisations
GhcHcOpts=
# GhcWithHscBuiltViaC - build GHC compiler proper (\`hsc') from .hc files?
GhcWithHscBuiltViaC=NO
# Build hsc with -O and turn optimising flag on when compiling
# the intermediate C file
GhcUseGccForOptAsm=YES
# Compile intermediate C file with debugging options set.
GhcUseGccForDebuggingAsm=YES
# Build a registerised version of hsc and runtime
# (you'd be desperate or silly not to).
GhcWithRegisterised=YES
# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
# i386, alpha & sparc
GhcWithNativeCodeGen=YES
# Build the compiler with the deforester included?
GhcWithDeforester=NO
#---------------------------------------------------------------
#
# Variables that control how the prelude libararies and runtime system are built
# What extra ways to build the libraries in
# In addition to the normal sequential way, the default is to also build
# profiled prelude libraries.
GhcLibWays=p
# Option flags to pass to GHC when it's compiling prelude modules
# Typically these are things like -O or -dcore-lint
# The ones that are *essential* are wired into ghc/lib/Makefile
GhcLibHcOpts= -split-objs -odir $(basename $*)
#################################################################################
#
# hslibs project
#
# Set of (configurable) options needed by the Haskell libraries (hslibs)
# plus their default options (if any).
#
#################################################################################
# Build the Haskell Readline bindings?
#
#
# Include path to readline.h
# (no path == in standard include path)
#
ReadlineIncludePath=
# Build the socket libraries?
#
HsLibsWithSockets=YES
#
# The different ways to build hslibs. Default is just to mirror
# what is done for the ghc prelude libraries.
#
HsLibWays=$(GhcLibWays)
# Option flags for hslibs are by default the same as for the options
# used for the prelude libs (see above).
HsLibHcOpts=$(GhcLibHcOpts)
203
204
205
206
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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
#################################################################################
#
# happy project
#
# Happy specific options
#
#################################################################################
#################################################################################
#
# haggis project
#
# Haggis specific options
#
#################################################################################
#################################################################################
#
# green-card project
#
# Green-card specific options
#
#################################################################################
#################################################################################
#
# nofib project
#
# nofib specific options
#
#################################################################################
# NoFibSubDirs controls which set of tests should be run
# You can run one or more of
# imaginary
# spectral
# real
# parallel
# PRIVATE
# GHC_ONLY
# PENDING
# UNUSED
NoFibSubDirs = imaginary spectral real GHC_ONLY PRIVATE
# The different ways to build nofib. Default is just to mirror
# what is done for the ghc prelude libraries.
#
NoFibWays=$(GhcLibWays)
# Haskell compiler options for nofib
NoFibHcOpts=
# ==============================================================================
#
# END OF PROJECT-SPECIFIC STUFF
#
# Now come the generic configuration options
#
# ==============================================================================
#################################################################################
#
# Paths (see paths.mk)
#
#################################################################################
# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path.
FPTOOLS_TOP_ABS = @hardtop@
#
# Installation directories, we don't use half of these,
# but since the configure script has them on offer while
# passing through, we might as well set them.
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @datadir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
includedir = @includedir@
oldincludedir = @oldincludedir@
mandir = @mandir@
srcdir = @srcdir@
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
#################################################################################
#
# Utilities programs: flags
#
#################################################################################
# If you want to give any standard flags to pretty much any utility
# (see utils.mk for a complete list), by adding a line here
#
# SRC_P_OPTS += ...
#
# where P is the utility. For example, to add -O to all Haskell
# compilations,
#
# SRC_HC_OPTS += -O
#################################################################################
#
# Platform
#
#################################################################################
# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
# specifier. E.g. sparc-sun-solaris2
HOSTPLATFORM = @HostPlatform@
TARGETPLATFORM = @TargetPlatform@
BUILDPLATFORM = @HostPlatform@
HostPlatform_CPP = @HostPlatform_CPP@
HostArch_CPP = @HostArch_CPP@
HostOS_CPP = @HostOS_CPP@
HostVendor_CPP = @HostVendor_CPP@
#
# ToDo: check if these can be purged now. -- sof
#
@HostPlatform_CPP@_HOST = 1
@HostPlatform_CPP@_TARGET = 1
@HostPlatform_CPP@_BUILD = 1
@HostArch_CPP@_HOST_ARCH = 1
@HostArch_CPP@_TARGET_ARCH = 1
@HostArch_CPP@_BUILD_ARCH = 1
@HostOS_CPP@_HOST_OS = 1
@HostOS_CPP@_TARGET_OS = 1
@HostOS_CPP@_BUILD_OS = 1
@HostVendor_CPP@_HOST_VENDOR = 1
@HostVendor_CPP@_TARGET_VENDOR = 1
@HostVendor_CPP@_BUILD_VENDOR = 1
# Leading underscores on symbol names in object files
# Valid options: YES/NO
#
LeadingUnderscore=@LeadingUnderscore@
#################################################################################
#
# Utilities programs: where to find them
#
#################################################################################
#-----------------------------------------------------------------------------
# FPtools Utility locations
# By default, the various utils needed to be build ghc and chums
# is set up to point to the utils/ directory. Define here the
# path prefix for the utilities. Notice that it's a prefix with
# a trailing slash, so that it can be concatenated directly on
# front of a program name; if it's not set then we just look
# along the shell's $(PATH)
#
# If instead you want to use installed or your own versions of these,
# override the various *_PREFIX in build.mk, i.e., having the following
# in build.mk:
#
# FASTMAKE_PREFIX=
#
# will force `make' to rummage around in your PATH to find `fastmake' (not
# sure it would need it in the first place, but still).
#
GLAFP_UTILS = $(FPTOOLS_TOP)/glafp-utils
SCRIPT_PREFIX = $(GLAFP_UTILS)/scripts/
FASTMAKE_PREFIX = $(GLAFP_UTILS)/fastmake/
MKDEPENDC_PREFIX = $(GLAFP_UTILS)/mkdependC/
LTX_PREFIX = $(GLAFP_UTILS)/ltx/
RUNTEST_PREFIX = $(GLAFP_UTILS)/runstdtest/
VERBATIM_PREFIX = $(GLAFP_UTILS)/verbatim/
ETAGS_PREFIX = $(GLAFP_UTILS)/etags/
MSUB_PREFIX = $(GLAFP_UTILS)/msub/
LNDIR_PREFIX = $(GLAFP_UTILS)/lndir/
MKDIRHIER_PREFIX = $(GLAFP_UTILS)/mkdirhier/
# Still used?
LITERATE = $(FPTOOLS_TOP)/literate
LITERATE_PREFIX = $(FPTOOLS_TOP)/literate/
INFO_PREFIX = $(FPTOOLS_TOP)/literate/info-utils/
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
TEXI2HTML_PREFIX = $(LITERATE_PREFIX)texi2html/
HAPPY_PREFIX = $(FPTOOLS_TOP)/happy/src/
UNLIT_PREFIX = $(FPTOOLS_TOP)/ghc/utils/unlit/
UGEN_PREFIX = $(FPTOOLS_TOP)/ghc/utils/ugen/
STAT2RESID_PREFIX = $(FPTOOLS_TOP)/ghc/utils/stat2resid/
HP2PS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hp2ps/
HSCPP_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hscpp/
HSTAGS_PREFIX = $(FPTOOLS_TOP)/ghc/utils/hstags/
#-----------------------------------------------------------------------------
# Haskell compiler and mkdependHS
HC = $(FPTOOLS_TOP)/ghc/driver/ghc
MKDEPENDHS = $(HC)
#
# The compiler proper is built with the 1.2 compiler,
# so when building the dependencies, we need mkdependHS
# for the 1.2 compiler.
#
MKDEPENDHS_1_2 = mkdependHS-1.2
#-----------------------------------------------------------------------------
# C compiler
#
#
HaveGcc = @HaveGcc@
UseGcc = YES
WhatGccIsCalled = gcc
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))" "YES"
CC = cc
else
CC = $(WhatGccIsCalled)
endif
endif
#-----------------------------------------------------------------------------
# Flex
FLEX = @LEX@
FLEX_LIB = @LEXLIB@
#-----------------------------------------------------------------------------
# Other standard (ha!) Unix utilities
AR = @ArCmd@
# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
BASH = /usr/local/bin/bash
#
# Could be either gzip or compress
#
COMPRESS = @CompressCmd@
COMPRESS_SUFFIX = @CompressSuffix@
CONTEXT_DIFF = @ContextDiffCmd@
CP = cp
CPP = @RAWCPP@
CTAGS = $(ETAGS)
RAWCPP = @RAWCPP@
GNUCPP = @GNUCPP@
INSTALL = @INSTALL@
LATEX = latex
LN_S = @LN_S@
MANMACROS = -man
MSMACROS = -ms
MV = mv
NROFF = nroff
PERL = @PerlCmd@
PIC = pic
PREPROCESSCMD = $(CC) -E
PRINTER = lpr
RANLIB = @RANLIB@
RM = rm -f
SED = @SedCmd@
SHELL = /bin/sh
SIZE = size
STRIP = strip
TAR = @TarCmd@
#
# This is special to literate/, ToDo: add literate-specific
# configure setup to literate/.
#
TBL = tbl
TEX = tex
TGRIND = tgrind
TGRIND_HELPER = /usr/local/lib/tgrind/tfontedpr # XXX
TIB = tib
TIME = @TimeCmd@
TROFF = troff
UNAME = uname
YACC = @YaccCmd@
#-----------------------------------------------------------------------------
# FPtools support software
# Stuff from fptools/glafp-utils
MKDEPENDC = $(MKDEPENDC_PREFIX)mkdependC
FASTMAKE = $(FASTMAKE_PREFIX)fastmake
LTX = $(LTX_PREFIX)ltx
MKDIRHIER = $(MKDIRHIER_PREFIX)mkdirhier
LNDIR = $(LNDIR_PREFIX)lndir
MSUB = $(MSUB_PREFIX)msub
ETAGS = $(ETAGS_PREFIX)etags
VERBATIM = $(VERBATIM_PREFIX)verbatim
RUNTEST = $(RUNTEST_PREFIX)runstdtest
HAPPY = @HappyCmd@
LX = @LxCmd@
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
HAPPY = $(HAPPY_PREFIX)happy
endif
#
# Stuff from fptools/literate
#
INFO = $(UTIL_PREFIX)info
MAKEINFO = $(INFO_PREFIX)makeinfo
POSTMAKEINFO = $(INFO_PREFIX)postmakeinfo
LIT2PGM = $(LITERATE_PREFIX)lit2pgm
LIT2TEXI = $(LITERATE_PREFIX)lit2texi
LIT2HTML = $(LITERATE_PREFIX)lit2html
LIT2LATEX = $(LITERATE_PREFIX)lit2latex
MKDEPENDLIT = $(LITERATE_PREFIX)mkdependlit
LIT2CHANGELOG = $(LITERATE_PREFIX)lit2changelog
LIT2TEXT = $(LITERATE_PREFIX)lit2text
TEXI2HTML = $(TEXI2HTML_PREFIX)texi2html
#
# Stuff from fptools/ghc/utils
#
UNLIT = $(UNLIT_PREFIX)unlit
UGEN = $(UGEN_PREFIX)ugen
STAT2RESID = $(STAT2RESID_PREFIX)stat2resid
HP2PS = $(HP2PS_PREFIX)hp2ps
HSCPP = $(HSCPP_PREFIX)hscpp
HSTAGS = $(HSTAGS_PREFIX)hstags
#
# Options for the compiling different `ways'. Various projects within
# the glorious fptools tree support building in various user-configured
# ways. For instance, you could set up one `way' such that the prelude
# libraries and hslibs all were built with the option -ffoldr-build-on.
#
# To configure up your own way, have a look at some of the standard ways
# such as profiling, and create your own set of WAY_*_OPTS defs below.
# After having done that, add your way string to WAYS, and after having
# run the configure script, the different projects will add the new way
# to the list of ways they support.
#
#
# IMPORTANT! The WAYS variable configures the different `ways'
# you want to build a project (or maybe just parts of it, as is
# the case for ghc/). This variable is intended set inside the
# project mk setup, enforcing a global fptools WAYS is a bit too
# much (do you *really* want to build glafp-utils the profiled-concurrent
# way?)
#
#
# Definitions of the different ways:
#
# * their name:
# - tag, e.g., p
# - description, e.g., profiling
# * what they mean to the driver:
# - WAY_p_HC_OPTS gives the list of command-line options
# to the driver.
#
#
# The ways currently defined.
#
ALL_WAYS=p t u mc mr mt mp mg 1s 2s du a b c d e f g h i j k l m n o A B
#
# The following ways currently have treated specially, p u t mc mt my mp mg 1s 2d du,
# as the driver script treats these guys specially and needs to carefully be told
# about the options for these. Hence, we hide the required command line options
# for these in the ghc/driver, as this is the only place they are needed.
#
# If you want to add to these default options, fill in the variables below:
#
WAY_p_NAME=profiling
WAY_p_HC_OPTS= -prof
# Way t:
WAY_t_NAME=ticky-ticky profiling
WAY_t_HC_OPTS= -ticky
# Way `u':
WAY_u_NAME=unregisterized (using portable C only)
WAY_u_HC_OPTS=
# Way `mc': concurrent
WAY_mc_NAME=concurrent
WAY_mc_HC_OPTS=-concurrent
# Way `mr':
WAY_mr_NAME=profiled concurrent
WAY_mr_HC_OPTS=-prof -concurrent
# Way `mt':
WAY_mt_NAME=ticky-ticky concurrent
WAY_mt_HC_OPTS=-ticky -concurrent
# Way `mp':
WAY_mp_NAME=parallel
WAY_mp_HC_OPTS=-parallel
#
# Way `mg':
#
WAY_mg_NAME=GranSim
WAY_mg_HC_OPTS=-gransim
#
# Ways for different garbage collectors
#
WAY_2s_NAME=2-space GC
WAY_2s_HC_OPTS=-2s
WAY_1s_NAME=1-space GC
WAY_1s_HC_OPTS=-1s
WAY_du_NAME=dual-mode GC
WAY_du_HC_OPTS=-du
#
# Add user-way configurations here:
#
WAY_A_NAME=
WAY_A_HC_OPTS=
WAY_B_NAME=
WAY_B_HC_OPTS=
WAY_a_NAME=
WAY_a_HC_OPTS=
WAY_b_NAME=
WAY_b_HC_OPTS=
WAY_c_NAME=
WAY_c_HC_OPTS=
WAY_d_NAME=
WAY_d_HC_OPTS=
WAY_e_NAME=
WAY_e_HC_OPTS=
WAY_f_NAME=
WAY_f_HC_OPTS=
WAY_g_NAME=
WAY_g_HC_OPTS=
WAY_h_NAME=
WAY_h_HC_OPTS=
WAY_i_NAME=
WAY_i_HC_OPTS=
WAY_j_NAME=
WAY_j_HC_OPTS=
WAY_k_NAME=
WAY_k_HC_OPTS=
WAY_l_NAME=
WAY_l_HC_OPTS=
WAY_m_NAME=
WAY_m_HC_OPTS=
WAY_n_NAME=
WAY_n_HC_OPTS=
WAY_o_NAME=
WAY_o_HC_OPTS=