1 # -----------------------------------------------------------------------------
2 # $Id: Makefile,v 1.4 1996/12/18 18:42:48 dnt Exp $
7 SuffixRule_WantStdOnes = NO
8 include $(TOP)/ghc/mk/ghc.mk
10 # Problem: don't know whether GhcWithHscBuiltViaC until now, so we have
11 # to re-include rules.mk to get the correct suffix rules.
15 ifeq ($(GhcWithHscBuiltViaC),YES)
19 HaskellSuffixRules = YES
21 include $(TOP)/mk/rules.mk
23 #-----------------------------------------------------------------------------
27 CFLAGS = -Iparser -I. -IcodeGen
29 DESTDIR = $(INSTLIBDIR_GHC)
30 UGN = $(wildcard parser/*.ugn)
31 UGNC = $(patsubst %.ugn, %.c, $(UGN))
32 UGNH = $(patsubst %.ugn, %.h, $(UGN))
33 UGNHS = $(patsubst parser/%.ugn, parser/U_%.hs, $(UGN))
35 $(patsubst %.c, %.o, $(UGNC)) parser/hslexer.o parser/hsparser.tab.o \
36 parser/id.o parser/infix.o parser/syntax.o parser/type2context.o \
39 parser/%.h parser/%.c parser/U_%.hs : parser/%.ugn
40 @$(RM) $@ parser/$*.hs parser/U_$*.hs parser/$*.h
41 $(UGEN) $< || $(RM) parser/$*.h parser/$*.hs
42 @$(MV) -f parser/$*.hs parser/U_$*.hs
43 @chmod 444 parser/$*.h parser/U_$*.hs
45 parser/%.o : parser/%.c $(UGNH)
47 $(CC) $(CFLAGS) -c $< -o $@
50 $(RM) parser/hslexer.c parser/hsparser.tab.h parser/hsparser.tab.c
52 parser/hslexer.o : parser/hslexer.c parser/hsparser.tab.h
54 include $(TOP)/mk/lib.mk
56 #-----------------------------------------------------------------------------
58 ifeq ($(IncludeTestDirsInBuild),YES)
65 $(GHC_UNLIT) $< $@ || ( $(RM) $@ && exit 1 )
70 $(GHC_UNLIT) $< $@ || ( $(RM) $@ && exit 1 )
75 utils basicTypes types hsSyn prelude rename typecheck deSugar coreSyn \
76 specialise simplCore stranal stgSyn simplStg codeGen absCSyn main \
77 reader profiling parser
79 # -----------------------------------------------------------------------------
80 # optional directories
82 ifeq ($(GhcWithDeforester),YES)
86 ifeq ($(GhcWithNativeCodeGen),YES)
89 ifeq ($(GhcWithHscBuiltViaC),YES)
90 # If building via C, we *assume* that it is the distributed C files,
91 # which do not have a native-code generator in them
97 # -----------------------------------------------------------------------------
98 # wildcard to get the lists of sources/objects
100 INCLUDEDIRS = $(foreach dir,$(DIRS),-i$(dir))
102 $(foreach dir,$(DIRS),$(wildcard $(dir)/*.lhs)) \
103 $(UGNHS) rename/ParseIface.hs
104 LOOPS = $(patsubst %.lhi, %.hi, $(wildcard */*.lhi))
105 HCS = $(patsubst %.hs, %.hc, $(patsubst %.lhs, %.hc, $(SRCS)))
107 $(patsubst %.hc, %.o, $(HCS)) rename/ParseIface.o \
108 parser/hsclink.o parser/hschooks.o libhsp.a
110 # -----------------------------------------------------------------------------
111 # options for the Haskell compiler
113 MAKEFLAGS += --no-builtin-rules
116 -cpp $(HcMaxHeapFlag) $(HcMaxStackFlag) -fhaskell-1.3 \
117 -fglasgow-exts -DCOMPILING_GHC -Rghc-timing -I. -IcodeGen \
118 -InativeGen -Iparser $(INCLUDEDIRS)
120 # expect 12 shift/reduce conflicts and 0 reduce/reduce conflicts
122 ifeq ($(GhcWithHscDebug),YES)
127 ifneq ($(Ghc2_0),YES)
128 HC_OPTS += -fomit-derived-read -fomit-reexported-instances
131 ifeq ($(GhcWithHscOptimised),YES)
132 HC_OPTS += -O -fshow-import-specs
135 ifeq ($(GhcWithDeforester),NO)
136 HC_OPTS += -DOMIT_DEFORESTER
139 # ----------------------------------------------------------------------------
144 $(HC) $(HC_OPTS) -o $@ $^
146 parser/hschooks.o : parser/hschooks.c
148 $(HC) -c -o $@ $(HCFLAGS) parser/hschooks.c
150 rename/ParseIface.hs : rename/ParseIface.y
151 @$(RM) rename/ParseIface.hs rename/ParseIface.hinfo
152 happy -g rename/ParseIface.y
153 @chmod 444 rename/ParseIface.hs
155 # ----------------------------------------------------------------------------
156 # Special extra dependencies for yukky ugen stuff
159 parser/UgenAll.o : parser/hspincl.h
160 parser/UgenUtil.o : parser/hspincl.h
161 parser/U_constr.o : parser/hspincl.h
162 parser/U_binding.o : parser/hspincl.h
163 parser/U_pbinding.o : parser/hspincl.h
164 parser/U_entidt.o : parser/hspincl.h
165 parser/U_list.o : parser/hspincl.h
166 parser/U_literal.o : parser/hspincl.h
167 parser/U_maybe.o : parser/hspincl.h
168 parser/U_either.o : parser/hspincl.h
169 parser/U_qid.o : parser/hspincl.h
170 parser/U_tree.o : parser/hspincl.h
171 parser/U_ttype.o : parser/hspincl.h
172 reader/ReadPrefix.o : parser/hspincl.h
174 # ----------------------------------------------------------------------------
175 # Special flags for particular modules
177 absCSyn/AbsCSyn_flags = -fno-omit-reexported-instances
178 hsSyn/HsExpr_flags = -K2m
179 hsSyn/HsSyn_flags = -fno-omit-reexported-instances
180 main/Main_flags = -fvia-C
181 basicTypes/IdInfo_flags = -K2m
182 main/CmdLineOpts_flags = -fvia-C
183 coreSyn/AnnCoreSyn_flags = -fno-omit-reexported-instances
184 nativeGen/PprMach_flags = -K2m
185 parser/UgenAll_flags = -fvia-C '-\#include"hspincl.h"'
186 parser/UgenUtil_flags = -fvia-C '-\#include"hspincl.h"'
187 parser/U_constr_flags = -fvia-C '-\#include"hspincl.h"'
188 parser/U_binding_flags = -fvia-C '-\#include"hspincl.h"'
189 parser/U_pbinding_flags = -fvia-C '-\#include"hspincl.h"'
190 parser/U_entidt_flags = -fvia-C '-\#include"hspincl.h"'
191 parser/U_list_flags = -fvia-C '-\#include"hspincl.h"'
192 parser/U_literal_flags = -fvia-C '-\#include"hspincl.h"'
193 parser/U_maybe_flags = -fvia-C '-\#include"hspincl.h"'
194 parser/U_either_flags = -fvia-C '-\#include"hspincl.h"'
195 parser/U_qid_flags = -fvia-C '-\#include"hspincl.h"'
196 parser/U_tree_flags = -fvia-C '-\#include"hspincl.h"'
197 parser/U_ttype_flags = -fvia-C '-\#include"hspincl.h"'
198 prelude/PrimOp_flags = -K3m
199 reader/ReadPrefix_flags = -fvia-C '-\#include"hspincl.h"'
200 rename/ParseIface_flags = -Onot -H16m
201 rename/RnMonad_flags = -fvia-C
202 rename/RnSource_flags = -H12m
203 rename/RnIfaces_flags = -H8m
204 rename/RnNames_flags = -H12m
205 specialise/Specialise_flags = -Onot -H12m
206 stgSyn/StgSyn_flags = -fno-omit-reexported-instances
207 typecheck/TcMonad_flags = -fvia-C
208 typecheck/TcGenDeriv_flags = -H10m
209 typecheck/TcExpr_flags = -H10m
210 utils/Argv_flags = -fvia-C
211 utils/CharSeq_flags = -fvia-C
212 utils/SST_flags = -fvia-C
214 #-----------------------------------------------------------------------------
215 # make depend, clean, tags and install
219 MKDEPENDHSFLAGS = -f .depend -I../includes -x HsVersions.h
220 ifeq ($(GhcWithDeforester),NO)
221 MKDEPENDHSFLAGS += -DOMIT_DEFORESTER
224 ifeq ($(GhcWithHscBuiltViaC),YES)
225 MKDEPENDHSFLAGS += -o .hc
227 HS_DEP_SRCS = $(SRCS) # should add $(LOOPS) ?
228 include $(TOP)/mk/hsdepend.mk
232 $(RM) */*.o */*.hi $(UGNC) $(UGNH) $(UGNHS)
233 $(RM) rename/ParseIface.hs
241 $(HSTAGS) -I../includes $(HSTAGSFLAGS) $(SRCS)
244 $(INSTALL) $(INSTBINFLAGS) hsc $(INSTLIBDIR_GHC)