# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.35 1998/03/05 09:21:47 sof Exp $
+# $Id: Makefile,v 1.43 1998/07/02 08:44:24 simonm Exp $
TOP = ..
include $(TOP)/mk/boilerplate.mk
# be to do ` env PATH=$(PATH) make hsc 'to minimise the environment. (or the
# equivalent of `env' if it doesn't exist locally).
#
-HS_PROG=hsc
+HS_PROG=hsc$(_way)
# -----------------------------------------------------------------------------
HCS = $(patsubst %.lhs, %.hc, $(patsubst %.hs, %.hc, $(HS_SRCS)))
-#
-# There's no need to compute dependencies when booting from .hc files
-#
-ifneq "$(GhcWithHscBuiltViaC)" "YES"
-MKDEPENDHS_SRCS = $(HS_SRCS)
-else
-MKDEPENDHS_SRCS =
-endif
HS_OBJS = \
$(patsubst %.hc, %.o, $(HCS)) \
# -----------------------------------------------------------------------------
# Haskell compilations
-# Compiler to use for building hsc
#
+# Compiler to use for building hsc, use the build tree
+# driver when booting.
+#
+ifneq "$(GhcWithHscBuiltViaC)" "YES"
HC=$(WithGhcHc)
+else
+HC=$(GHC_DRIVER_DIR)/ghc
+endif
# magic from GNU make manual to convert a list of values
# into a colon-separated list
# The standard suffix rule for compiling a Haskell file
# adds these flags to the command line
-absCSyn/AbsCSyn_HC_OPTS = -fno-omit-reexported-instances
-absCSyn/CStrings_HC_OPTS = -monly-3-regs
-
# Was 6m with 2.10
absCSyn/PprAbsC_HC_OPTS = -H10m
basicTypes/IdInfo_HC_OPTS = -K2m
-coreSyn/AnnCoreSyn_HC_OPTS = -fno-omit-reexported-instances
hsSyn/HsExpr_HC_OPTS = -K2m
-hsSyn/HsSyn_HC_OPTS = -fno-omit-reexported-instances
main/Main_HC_OPTS = -fvia-C -DPROJECTVERSION=$(GhcProjectVersion)
main/MkIface_HC_OPTS = -DPROJECTVERSION=$(GhcProjectVersionInt)
main/CmdLineOpts_HC_OPTS = -fvia-C
reader/ReadPrefix_HC_OPTS = -fvia-C '-\#include"hspincl.h"' -H10m
rename/ParseIface_HC_OPTS += -Onot -H30m -fno-warn-incomplete-patterns
+rename/ParseIface_HAPPY_OPTS += -g
ifeq "$(TARGETPLATFORM)" "hppa1.1-hp-hpux9"
rename/RnMonad_HC_OPTS = -fvia-C -O2 -O2-for-C
-else
endif
+
rename/RnEnv_HC_OPTS = -fvia-C
rename/RnSource_HC_OPTS = -H12m
rename/RnIfaces_HC_OPTS = -H8m -fvia-C
rename/RnExpr_HC_OPTS = -H10m
rename/RnNames_HC_OPTS = -H12m
rename/RnMonad_HC_OPTS = -fvia-C
-# Urk! Really big heap for ParseUnfolding
-#rename/ParseUnfolding_HC_OPTS = -H45m
specialise/Specialise_HC_OPTS = -Onot -H12m
-stgSyn/StgSyn_HC_OPTS = -fno-omit-reexported-instances
typecheck/TcGenDeriv_HC_OPTS = -H10m
# Was 10m for 2.10
typecheck/TcExpr_HC_OPTS = -H15m
typecheck/TcEnv_HC_OPTS = -H10m
-utils/Argv_HC_OPTS = -fvia-C -monly-3-regs
+utils/Argv_HC_OPTS = -fvia-C
utils/SST_HC_OPTS = -fvia-C
-utils/PrimPacked_HC_OPTS = -fvia-C -monly-3-regs
-utils/FastString_HC_OPTS = -fvia-C -monly-3-regs
-utils/StringBuffer_HC_OPTS = -fvia-C
+utils/FastString_HC_OPTS = -fvia-C
+utils/StringBuffer_HC_OPTS = -fvia-C -fno-prune-tydecls
utils/Digraph_HC_OPTS = -fglasgow-exts -fvia-C
-utils/Outputable_HC_OPTS = -monly-3-regs
+utils/DirUtils_HC_OPTS = -fvia-C
+
+ifeq "$(alpha_HOST_ARCH)" "1"
+# "stbu" bug in alpha native code generator...
+basicTypes/Unique_HC_OPTS = -fvia-C
+endif
+
+# flags for PrimPacked:
+#
+# -monly-3-regs
+# because it contains a 'ccall strlen', which gets inlined by
+# gcc, causing a lack of registers.
+#
+# -optC-funfolding-interface-threshold10
+# To stop the definition of 'strLength', which calls strlen, getting
+# into the interface file and spreading the -monly-3-regs virus.
+# We need -optC here because the driver before 3.02 didn't understand
+# the -funfolding flags.
+
+utils/PrimPacked_HC_OPTS = -fvia-C -monly-3-regs -optC-funfolding-interface-threshold10
# Strictness analyser misbehaving in 2.10, fails to terminate on
# UpdAnal.lhs due to weird recursive datatype. Bug was exposed by a
# ----------------------------------------------------------------------------
-# Parsers
+# Parsers/lexers
# Main parser uses Yacc/Bison
SRC_YACC_OPTS += -d -v
+# Suppress the generation of a default rule
+SRC_FLEX_OPTS += -s
#
# Want to keep the intermediate (included in src distribs).
#
depend :: $(LOOPS) $(SRCS_UGNHS) rename/ParseIface.hs
-
-ifeq "$(GhcWithHscBuiltViaC)" "YES"
-SRC_MKDEPENDHS_OPTS += -optdep-o -optdephc
-
-# When booting from .hc, (hackily) remove the suffix rule for
-# .l?hs -> .o, so that the .hc -> .o is used instead.
-%.$(way_)o : %.lhs
-%.$(way_)o : %.hs
-endif
-
-
#-----------------------------------------------------------------------------
# clean