X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FMakefile;h=f7097685fab4081c5af044e6620d5de21e21a4cc;hb=ef5b4b146aa172d8ac10f39b5eb3d7a0f948d8f1;hp=8d8e452fa4b08dceecfb49b47aae959b218d99e9;hpb=f89def00249034d46351d0c079d0c71804ca7ce2;p=ghc-hetmet.git diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile index 8d8e452..f709768 100644 --- a/ghc/compiler/Makefile +++ b/ghc/compiler/Makefile @@ -235,7 +235,7 @@ CLEAN_FILES += $(CONFIG_HS) ALL_DIRS = \ utils basicTypes types hsSyn prelude rename typecheck deSugar coreSyn \ specialise simplCore stranal stgSyn simplStg codeGen main \ - profiling parser cprAnalysis compMan ndpFlatten cbits iface cmm + profiling parser cprAnalysis compMan ndpFlatten iface cmm # Make sure we include Config.hs even if it doesn't exist yet... ALL_SRCS += $(CONFIG_HS) @@ -273,21 +273,49 @@ compiling_with_4xx = $(shell if (test $(GhcCanonVersion) -lt 500); then echo YES endif endif -# Only include GHCi if we're bootstrapping with at least version 411 +# ----------------------------------------------------------------------------- +# Building a compiler with interpreter support +# +# The interpreter, GHCi interface, and Template Haskell are only +# enabled when we are bootstrapping with the same version of GHC, and +# the interpreter is supported on this platform. + ifeq "$(GhcWithInterpreter) $(bootstrapped)" "YES YES" -# Yes, include the interpreter, readline, and Template Haskell extensions -SRC_HC_OPTS += -DGHCI -package template-haskell + +# Yes, include the interepreter, readline, and Template Haskell extensions +SRC_HC_OPTS += -DGHCI -package template-haskell -package Cabal + ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32" SRC_HC_OPTS += -package unix -ifeq "$(GhcLibsWithReadline)" "YES" -SRC_HC_OPTS += -package readline -endif endif + ALL_DIRS += ghci + +# 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 +# +# But we don't enable readline on Windows, because readline is fairly +# broken there. +# +ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32" +ifeq "$(stage)" "1" +ifeq "$(GhcHasReadline)" "YES" +SRC_HC_OPTS += -package readline -DUSE_READLINE +endif else +ifeq "$(GhcLibsWithReadline)" "YES" +SRC_HC_OPTS += -package readline -DUSE_READLINE +endif +endif # stage=1 +endif # not windows + +else + # No interpreter, so exclude Template Haskell modules EXCLUDED_SRCS += deSugar/DsMeta.hs typecheck/TcSplice.lhs hsSyn/Convert.lhs -endif + +endif # bootstrapped with interpreter # ----------------------------------------------- # mkdependC stuff @@ -479,7 +507,29 @@ primop-usage.hs-incl: prelude/primops.txt #----------------------------------------------------------------------------- # Linking -SRC_LD_OPTS += -no-link-chk +# Include libghccompat in stage1 only. In stage2 onwards, all these +# libraries will be available from the main libraries. +ifeq "$(stage)" "1" +SRC_HC_OPTS += -i$(GHC_LIB_COMPAT_DIR) +SRC_LD_OPTS += -L$(GHC_LIB_COMPAT_DIR) -lghccompat + +ifeq "$(Windows)" "YES" +# not very nice, but required for -lghccompat on Windows +SRC_LD_OPTS += -lshell32 +endif + +# This is horrible. We ought to be able to omit the entire directory +# from mkDependHS. +SRC_MKDEPENDHS_OPTS += \ + -optdep--exclude-module=Compat.RawSystem \ + -optdep--exclude-module=Compat.Directory \ + -optdep--exclude-module=Data.Version \ + -optdep--exclude-module=Distribution.Package \ + -optdep--exclude-module=Distribution.InstalledPackageInfo \ + -optdep--exclude-module=Distribution.Package +endif + +SRC_LD_OPTS += -no-link-chk # ----------------------------------------------------------------------------- # create ghc-inplace, a convenient way to run ghc from the build tree... @@ -562,7 +612,7 @@ ifeq "$(BuildPackageGHC)" "YES" PACKAGE = ghc STANDALONE_PACKAGE = YES -PACKAGE_DEPS = base haskell98 +PACKAGE_DEPS = endif