X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FMakefile;h=062791e56f4238ffb616fcab2e0aae03cc523789;hb=8b5a06b88e202d770e40208b7468a0f7a32668f1;hp=fde3a7ca57dd8f6df86c79bdf5ace93e341da49a;hpb=931de17ed344e8b63fc086ba9e1b28a86cd7b531;p=ghc-hetmet.git diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile index fde3a7c..062791e 100644 --- a/ghc/compiler/Makefile +++ b/ghc/compiler/Makefile @@ -181,7 +181,6 @@ endif # be to do `env PATH=$(PATH) make ghc' to minimise the environment. (or the # equivalent of `env' if it doesn't exist locally). # -ifneq "$(BuildPackageGHC)" "YES" ifneq "$(way)" "dll" ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32" HS_PROG=$(odir)/ghc$(_way)-$(ProjectVersion) @@ -191,7 +190,6 @@ endif else HS_PROG=$(odir)/ghc-$(ProjectVersion) endif -endif # ----------------------------------------------------------------------------- # Create compiler configuration @@ -369,9 +367,6 @@ ALL_SRCS += $(CONFIG_HS) # HsGeneric.hs is not used just now EXCLUDED_SRCS += hsSyn/HsGeneric.hs -# main/GHC.hs is not ready yet -EXCLUDED_SRCS += main/GHC.hs - ifeq ($(GhcWithNativeCodeGen),YES) ALL_DIRS += nativeGen else @@ -410,9 +405,20 @@ ifeq "$(GhcWithInterpreter) $(bootstrapped)" "YES YES" # Yes, include the interepreter, readline, and Template Haskell extensions SRC_HC_OPTS += -DGHCI -package template-haskell +PKG_DEPENDS += template-haskell ALL_DIRS += ghci +# If we are going to use dynamic libraries instead of .o files for ghci, +# we will need to always retain CAFs in the compiler. +# ghci/keepCAFsForGHCi contains a GNU C __attribute__((constructor)) +# function which sets the keepCAFs flag for the RTS before any Haskell +# code is run. +ifeq "$(GhcBuildDylibs)" "YES" +else +EXCLUDED_SRCS += ghci/keepCAFsForGHCi.c +endif + # Enable readline if either: # - we're building stage 1 and $(GhcHasReadline)="YES" # - we're building stage 2/3, and we have built the readline package @@ -424,10 +430,12 @@ ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32" ifeq "$(stage)" "1" ifeq "$(GhcHasReadline)" "YES" SRC_HC_OPTS += -package readline -DUSE_READLINE +PKG_DEPENDS += readline endif else ifeq "$(GhcLibsWithReadline)" "YES" SRC_HC_OPTS += -package readline -DUSE_READLINE +PKG_DEPENDS += readline endif endif # stage=1 endif # not windows @@ -479,11 +487,20 @@ ifeq "$(bootstrapped) $(ghc_ge_601)" "NO NO" SRC_HC_OPTS += -package posix else SRC_HC_OPTS += -package unix +PKG_DEPENDS += unix endif endif ifneq "$(findstring YES, $(bootstrapped) $(ghc_ge_603))" "" SRC_HC_OPTS += -package Cabal +PKG_DEPENDS += Cabal +endif + +ifeq "$(ghc_ge_603)" "YES" +# Ignore lang, to avoid potential clash with the Generics module if +# lang happens to be a dependency of some exposed package in the local +# GHC installation (eg. wxHaskell did this around 6.4). +SRC_HC_OPTS += -ignore-package lang endif SRC_CC_OPTS += -Iparser -I. -O @@ -550,13 +567,11 @@ utils/FastMutInt_HC_OPTS += -O compMan/CompManager_HC_OPTS = -fno-cse ghci/InteractiveUI_HC_OPTS = -fno-cse main/CmdLineOpts_HC_OPTS = -fno-cse -main/DriverFlags_HC_OPTS = -fno-cse main/DriverMkDepend_HC_OPTS = -fno-cse main/DriverPipeline_HC_OPTS = -fno-cse -main/DriverState_HC_OPTS = -fno-cse -main/DriverUtil_HC_OPTS = -fno-cse main/Finder_HC_OPTS = -fno-cse main/SysTools_HC_OPTS = -fno-cse +main/StaticFlags_HC_OPTS = -fno-cse # The #include is vital for the via-C route, else the C # compiler doesn't realise that the stcall foreign imports are indeed @@ -737,15 +752,36 @@ endif coreSyn/CorePrep_HC_OPTS += -auto-all #----------------------------------------------------------------------------- -# Building GHC package +# Building the GHC package -ifeq "$(BuildPackageGHC)" "YES" +# The GHC package is made from the stage 2 build. Fortunately the +# package build system framework more or less does the right thing for +# us here. +ifeq "$(stage)" "2" PACKAGE = ghc -VERSION = 6.4 -STANDALONE_PACKAGE = YES -PACKAGE_DEPS = +HIERARCHICAL_LIB = NO +VERSION = $(ProjectVersion) +PKG_DEPENDS += base haskell98 +PACKAGE_CPP_OPTS += -DPKG_DEPENDS='$(PKG_DEPENDS)' + +# disable splitting: it won't really help with GHC, and the specialised +# build system for ghc/compiler isn't set up to handle it. +SplitObjs = NO + +# the package build system likes to set WAYS=$(GhcLibWays), but we don't +# really want to build the whole of GHC multiple ways... if you do, +# set GhcCompilerWays instead. +GhcLibWays = $(GhcCompilerWays) + +# override $(GhcLibHcOpts): we want GhcStage2HcOpts to take precedence +GhcLibHcOpts = + +# override default definition of HS_IFACES so we can add $(odir) +HS_IFACES = $(addsuffix .$(way_)hi,$(basename $(HS_OBJS))) +# Haddock can't handle recursive modules currently, so we disable it for now. +NO_HADDOCK_DOCS = YES endif #-----------------------------------------------------------------------------