1 #-----------------------------------------------------------------------------
2 # $Id: Makefile.libHS,v 1.5 1997/01/07 01:17:38 simonpj Exp $
5 include $(TOP)/ghc/mk/ghc.mk
7 # per-build options: shared with runtime system
8 include ../mk/buildflags.mk
10 # ============= ADDED BY SIMON =============
11 ifeq ($(GhcWithHscBuiltViaC),YES)
15 HaskellSuffixRules = YES
17 include $(TOP)/mk/rules.mk
18 # ===========================================
20 # Everything here *must* be compiled with the Glasgow Haskell compiler.
21 # (Hence the use of $(GHC), rather than $(HC).)
22 # The driver will give warnings if -split-objs, but that's cool...
25 -recomp -cpp -fglasgow-exts -fvia-C \
26 $(HcMaxHeapFlag) $(EXTRA_HC_OPTS)
28 SRCS = $(wildcard ghc/*.lhs required/*.lhs glaExts/*.lhs concurrent/*.lhs)
29 ifeq ($(suffix), norm)
30 OBJS = $(SRCS:.lhs=.o)
32 OBJS = $(SRCS:.lhs=.$(suffix)_o)
35 #-----------------------------------------------------------------------------
36 # Rules for building various types of objects from HS files
38 # Note: the $(*_flags) module-specific flags come after the $(GHC_OPTS_..)
39 # so that things like -O can be overriden on a per-module basis.
41 ifeq ($(SplitObjs),YES)
42 LIB_GHC = $(GHC) $(GHCFLAGS) -split-objs $(notdir $*) -o $@ -c
44 LIB_GHC = $(GHC) $(GHCFLAGS) -o $@ -c
47 ifneq ($(GhcWithHscBuiltViaC),YES)
49 $(LIB_GHC) $($*_flags) $*.lhs
52 $(LIB_GHC) $(GHC_OPTS_$(suffix)) $($*_flags) $*.hs
54 else # $(GhcWithHscBuiltViaC) == YES
57 $(LIB_GHC) $(GHC_OPTS_$(suffix)) $($*_flags) $*.hs
60 #-----------------------------------------------------------------------------
61 # build the library itself...
63 ifeq ($(suffix), norm)
64 LIB = libHS.a # this one is special
66 LIB = libHS_$(suffix).a
80 $(INSTALL) $(INSTLIBFLAGS) $(LIB) $(INSTLIBDIR_GHC)
81 $(RANLIB) $(INSTLIBDIR_GHC)/$(LIB)
86 #-----------------------------------------------------------------------------
89 # The -Onots are only because -O would not go through on
90 # a reasonably-sized machine (i.e., one I have)
92 ghc/PackedString_flags = '-\#include"cbits/stgio.h"' -monly-3-regs
93 required/Directory_flags = '-\#include"cbits/stgio.h"' -monly-3-regs
94 required/System_flags = '-\#include"cbits/stgio.h"'
96 ghc/ArrBase_flags = '-fno-implicit-prelude'
97 ghc/IOBase_flags = '-fno-implicit-prelude'
98 ghc/IOHandle_flags = '-fno-implicit-prelude'
99 ghc/PrelBase_flags = '-fno-implicit-prelude'
100 ghc/PrelIO_flags = '-fno-implicit-prelude'
101 ghc/PrelList_flags = '-fno-implicit-prelude'
102 ghc/PrelNum_flags = '-fno-implicit-prelude'
103 ghc/PrelRead_flags = '-fno-implicit-prelude'
104 ghc/PrelTup_flags = '-fno-implicit-prelude'
105 ghc/STBase_flags = '-fno-implicit-prelude'
106 glaExts/Foreign_flags = '-fno-implicit-prelude'
107 glaExts/PackedString_flags = '-fno-implicit-prelude'
108 glaExts/ST_flags = '-fno-implicit-prelude'
109 required/Array_flags = '-fno-implicit-prelude'
110 required/Char_flags = '-fno-implicit-prelude'
111 required/IO_flags = '-fno-implicit-prelude'
112 required/Ix_flags = '-fno-implicit-prelude'
113 required/Maybe_flags = '-fno-implicit-prelude'
114 required/Monad_flags = '-fno-implicit-prelude'
115 required/Ratio_flags = '-fno-implicit-prelude'
117 concurrent/Merge_flags = -iconcurrent
118 concurrent/Parallel_flags = -fglasgow-exts
119 concurrent/Concurrent_flags = -iconcurrent
121 #-----------------------------------------------------------------------------
122 # Depend and install stuff
124 MKDEPENDHS_OPTS += -I$(GHC_INCLUDES)
125 MKDEPENDHS_OPTS += -irequired:ghc:hbc:glaExts:concurrent
126 MKDEPENDHS_OPTS += $(foreach way,$(WAY_SUFFIXES),-s .$(way))
128 # Todo: make this a generic include of hsdepend.mk or something.
130 $(MKDEPENDHS) $(MKDEPENDHSFLAGS) -- $(GHCFLAGS) -- -f .depend $(SRCS)
132 #-----------------------------------------------------------------------------
135 ifeq ($(suffix),norm)
136 HI_FILES = $(SRCS:.hs=.hi)
138 HI_FILES = $(SRCS:.hs=.$(suffix)_hi)
141 install :: $(HI_FILES)
142 $(INSTALL) $(INSTDATAFLAGS) $(HI_FILES) $(INSTIMPORTSDIR_GHC)