[project @ 1997-08-25 22:42:15 by sof]
[ghc-hetmet.git] / ghc / lib / Makefile
index 006c382..4d0fcf8 100644 (file)
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.3 1996/12/19 09:13:55 simonpj Exp $
+#################################################################################
+#
+#                          ghc/lib/Makefile
+#
+#              Makefile for building the GHC Prelude libraries umpteen ways
+#
+#      
+#################################################################################
 
-TOP = ../..
-include $(TOP)/ghc/mk/ghc.mk
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
 
+ifeq "$(way)" ""
 SUBDIRS = cbits
 ifeq ($(IncludeTestDirsInBuild),YES)
   SUBDIRS += tests
 endif
+else
+SUBDIRS=
+endif
 
-include $(TOP)/mk/subdir.mk
+#-----------------------------------------------------------------------------
+#      Setting the standard variables
+#
 
-# per-build options: shared with runtime system
-include ../mk/buildflags.mk
+LIB_DIRS = ghc required glaExts concurrent
+
+LIBRARY = libHS$(_way).a
+HS_SRCS        = $(foreach d, $(LIB_DIRS), $(wildcard $(d)/*.lhs))
+HS_OBJS = $(HS_SRCS:.lhs=.$(way_)o)
+LIBOBJS = $(HS_OBJS)
+HS_IFACES= $(HS_SRCS:.lhs=.$(way_)hi) ghc/GHC.$(way_)hi
 
 #-----------------------------------------------------------------------------
-# libHS.a, in several different 'ways'
+#      Setting the GHC compile options
 
-all ::
-       @for i in $(WAY_SUFFIXES); do \
-               echo; \
-               echo =========== Making libraries for way $$i; \
-               echo; \
-               $(MAKE) -f Makefile.libHS suffix=$$i; \
-       done
+SRC_HC_OPTS += -recomp -cpp -fglasgow-exts -fvia-C -Rghc-timing $(GhcLibHcOpts)
 
-# Shortcut for typical case when testing: just make the "normal" version
-libHS.a ::
-       $(MAKE)  -f Makefile.libHS suffix=norm
+#
+# Profiling options
+WAY_p_HC_OPTS += -GPrelude
+WAY_mr_HC_OPTS += -GPrelude
 
-install ::
-       @for i in $(WAY_SUFFIXES); do \
-               $(MAKE) -f Makefile.libHS suffix=$$i install; \
-       done
+#
+# Object and interface files have suffixes tagged with their ways
+#
+ifneq "$(way)" ""
+SRC_HC_OPTS += -hisuf $(way_)hi
+endif
 
-clean ::
-       @for i in $(WAY_SUFFIXES); do \
-               $(MAKE) -f Makefile.libHS suffix=$$i clean; \
-       done
+# per-module flags
+ghc/ArrBase_HC_OPTS         += -monly-2-regs
+glaExts/PackedString_HC_OPTS += -monly-3-regs
+required/Directory_HC_OPTS   += -monly-3-regs 
+concurrent/Parallel_HC_OPTS  += -fglasgow-exts
+required/Time_HC_OPTS        += -monly-3-regs -H12m
+
+# Far too much heap is needed to compile PrelNum with -O at the
+# moment, but there you go..
+ghc/PrelNum_HC_OPTS          += -H30m
+# Note: this option has to go in the Makefile rather than in an
+# OPTIONS line in the source file. The reason being that we want
+# to override the SRC_HC_OPTS of -O, and anything option coming
+# from the Makefile overrides what's in OPTIONS lines. (mumble_HC_OPTS
+# does override SRC_HC_OPTS settings)
+ghc/UnsafeST_HC_OPTS         += -Onot
+
+ghc/PrelBase_HC_OPTS         += -H8m
+ghc/PrelRead_HC_OPTS         += -H8m
+ghc/IOHandle_HC_OPTS         += -H8m
+
+#-----------------------------------------------------------------------------
+#      Dependency generation
 
-# Dependencies are done by Makefile.libHS
+SRC_MKDEPENDHS_OPTS += -ighc:required:glaExts:concurrent -I$(GHC_INCLUDE_DIR)
+
+#-----------------------------------------------------------------------------
+#      Rules
+
+ghc/GHC.$(way_)hi      : ghc/GHC.hi-boot
+       cp $< $@
+
+boot :: ghc/GHC.hi $(foreach way, $(WAYS), ghc/GHC.$(way)_hi)
+
+#-----------------------------------------------------------------------------
+#      Installation; need to install .hi files as well as libraries
+#
+# The interface files are put inside the $(libdir), since they
+# might (potentially) be platform specific..
+#
+# Note: we use `override' here to ignore the setting of datadir
+# which may have been set on the command-line..naughty, as it
+# prevents `datadir' from being used from the command-line.
+# This only applies to binary-distributions, though.n
+
+ifeq "$(BIN_DIST)" "1"
+override datadir:=$(libdir)/imports
+else
+datadir:=$(libdir)/imports
+endif
 
-depend ::
-       @$(MAKE) -f Makefile.libHS depend
+#
+# Files to install from here
+# 
+INSTALL_LIBS  += $(LIBRARY)
+INSTALL_DATAS += $(HS_IFACES)
 
+include $(TOP)/mk/target.mk
 
-# install MODULES file
 
-install ::
-       $(INSTALL) $(INSTDATAFLAGS) MODULES $(INSTDATADIR_GHC)/imports