X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FMakefile;h=12e50eb711652fba7fa76490c38424afd154e968;hb=ab3a88f2dc64677df8fb92dacef47570ac3c5023;hp=399757fdf5123eb626d5646c3126854bfddef568;hpb=e3d95da870e58a799d8db4079192ba2471d7853d;p=ghc-hetmet.git diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile index 399757f..12e50eb 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 + +# Yes, include the interepreter, readline, and Template Haskell extensions SRC_HC_OPTS += -DGHCI -package template-haskell + 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,28 @@ 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=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 +611,7 @@ ifeq "$(BuildPackageGHC)" "YES" PACKAGE = ghc STANDALONE_PACKAGE = YES -PACKAGE_DEPS = base haskell98 +PACKAGE_DEPS = endif @@ -582,6 +631,16 @@ MKDEPENDC_SRCS = parser/Parser.y : parser/Parser.y.pp EXTRA_SRCS += parser/Parser.y + +#----------------------------------------------------------------------------- +# Source files for tags file generation +# +# We want to excluded derived sources, because they won't be in the source +# tree, which is where we are going to move the TAGS file to.a + +TAGS_HS_SRCS = parser/Parser.y.pp $(filter-out $(DERIVED_SRCS) main/Config.hs parser/Parser.y, $(sort $(SRCS))) + + include $(TOP)/mk/target.mk # -----------------------------------------------------------------------------