libraries/Cabal_dist-boot_DO_HADDOCK = NO
libraries/extensible-exceptions_dist-boot_DO_HADDOCK = NO
libraries/filepath_dist-boot_DO_HADDOCK = NO
+libraries/binary_dist-boot_DO_HADDOCK = NO
+libraries/bin-package-db_dist-boot_DO_HADDOCK = NO
# -----------------------------------------------------------------------------
# Ways
$(eval $(call addPackage,template-haskell))
$(eval $(call addPackage,base3-compat))
$(eval $(call addPackage,Cabal))
+$(eval $(call addPackage,binary))
+$(eval $(call addPackage,bin-package-db))
$(eval $(call addPackage,mtl))
$(eval $(call addPackage,utf8-string))
dph/dph-par
endif
-BOOT_PKGS = Cabal hpc extensible-exceptions
+# We assume that the stage0 compiler has a suitable bytestring package,
+# so we don't have to include it below.
+BOOT_PKGS = Cabal hpc extensible-exceptions binary bin-package-db
# The actual .a and .so/.dll files: needed for dependencies.
ALL_STAGE1_LIBS = $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_v_LIB))
$(eval $(call build-package,libraries/hpc,dist-boot,0))
$(eval $(call build-package,libraries/extensible-exceptions,dist-boot,0))
$(eval $(call build-package,libraries/Cabal,dist-boot,0))
+$(eval $(call build-package,libraries/binary,dist-boot,0))
+$(eval $(call build-package,libraries/bin-package-db,dist-boot,0))
# register the boot packages in strict sequence, because running
# multiple ghc-pkgs in parallel doesn't work (registrations may get
compiler/stage1/package-data.mk : \
libraries/Cabal/dist-boot/package-data.mk \
libraries/hpc/dist-boot/package-data.mk \
- libraries/extensible-exceptions/dist-boot/package-data.mk
+ libraries/extensible-exceptions/dist-boot/package-data.mk \
+ libraries/bin-package-db/dist-boot/package-data.mk
# These are necessary because the bootstrapping compiler may not know
# about cross-package dependencies:
$(compiler_stage1_depfile) : $(BOOT_LIBS)
$(ghc_stage1_depfile) : $(compiler_stage1_v_LIB)
+# A few careful dependencies between bootstrapping packages. When we
+# can rely on the stage 0 compiler being able to generate
+# cross-package dependencies with -M (fixed in GHC 6.12.1) we can drop
+# these, and also some of the phases.
+#
+# If you miss any out here, then 'make -j8' will probably tell you.
+#
+libraries/bin-package-db/dist-boot/build/Distribution/InstalledPackageInfo/Binary.$(v_osuf) : libraries/binary/dist-boot/build/Data/Binary.$(v_hisuf) libraries/Cabal/dist-boot/build/Distribution/InstalledPackageInfo.$(v_hisuf)
+
$(foreach pkg,$(BOOT_PKGS),$(eval libraries/$(pkg)_dist-boot_HC_OPTS += $$(GhcBootLibHcOpts)))
endif
$(INSTALL_DOC) $(INSTALL_OPTS) $$i/* $(DESTDIR)$(docdir)/html/`basename $$i`; \
done
-INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf
+INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf.d
# Install packages in the right order, so that ghc-pkg doesn't complain.
# Also, install ghc-pkg first.
INSTALLED_GHC_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-stage2
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-pkg
else
-INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc-stage2.exe
+INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
endif
install_packages: install_libexecs
install_packages: libffi/package.conf.install rts/package.conf.install
$(INSTALL_DIR) $(DESTDIR)$(topdir)
- "$(RM)" $(RM_OPTS) $(INSTALLED_PACKAGE_CONF)
- $(CREATE_DATA) $(INSTALLED_PACKAGE_CONF)
- echo "[]" >> $(INSTALLED_PACKAGE_CONF)
+ "$(RM)" -r $(RM_OPTS) $(INSTALLED_PACKAGE_CONF)
+ $(INSTALL_DIR) $(INSTALLED_PACKAGE_CONF)
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update libffi/package.conf.install
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
$(foreach p, $(PACKAGES) $(PACKAGES_STAGE2),\
# -----------------------------------------------------------------------------
# Binary distributions
+ifneq "$(CLEANING)" "YES"
+# This rule seems to hold some files open on Windows which prevents
+# cleaning, perhaps due to the $(wildcard).
+
$(eval $(call bindist,.,\
LICENSE \
configure config.sub config.guess install-sh \
$(BINDIST_LIBS) \
$(BINDIST_HI) \
$(BINDIST_EXTRAS) \
+ $(includes_H_CONFIG) \
+ $(includes_H_PLATFORM) \
+ includes/ghcconfig.h \
+ includes/rts/Config.h \
$(INSTALL_HEADERS) \
$(INSTALL_LIBEXECS) \
$(INSTALL_LIBEXEC_SCRIPTS) \
bindist.mk \
libraries/dph/LICENSE \
))
+endif
# mk/project.mk gets an absolute path, so we manually include it in
# the bindist with a relative path
"$(CP)" $(TOP)/$1/$2/build/$4.hs $1/$3/ ; \
mv $1/$3/$4.$5 $1/$3/$4.$5.source ;\
else \
- echo "does not exist: $1/$2//build/$4.hs"; \
+ echo "does not exist: $1/$2/build/$4.hs"; \
exit 1; \
fi
"$(RM)" $(RM_OPTS) -r $(SRC_DIST_DIR)
"$(RM)" $(RM_OPTS) $(SRC_DIST_TARBALL)
mkdir $(SRC_DIST_DIR)
- ( cd $(SRC_DIST_DIR) \
- && for i in $(SRC_DIST_DIRS); do mkdir $$i; (cd $$i && lndir $(TOP)/$$i ); done \
- && for i in $(SRC_DIST_FILES); do $(LN_S) $(TOP)/$$i .; done \
- && $(MAKE) distclean \
- && if test -f $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs; then "$(CP)" $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs libraries/haskell-src/Language/Haskell/ ; mv libraries/haskell-src/Language/Haskell/Parser.ly libraries/haskell-src/Language/Haskell/Parser.ly.source ; fi \
- && $(call sdist_file,compiler,stage2,cmm,CmmLex,x) \
- && $(call sdist_file,compiler,stage2,cmm,CmmParse,y) \
- && $(call sdist_file,compiler,stage2,main,ParsePkgConf,y) \
- && $(call sdist_file,compiler,stage2,parser,HaddockLex,x) \
- && $(call sdist_file,compiler,stage2,parser,HaddockParse,y) \
- && $(call sdist_file,compiler,stage2,parser,Lexer,x) \
- && $(call sdist_file,compiler,stage2,parser,Parser,y.pp) \
- && $(call sdist_file,compiler,stage2,parser,ParserCore,y) \
- && $(call sdist_file,utils/hpc,dist,,HpcParser,y) \
- && $(call sdist_file,utils/genprimopcode,dist,,Lexer,x) \
- && $(call sdist_file,utils/genprimopcode,dist,,Parser,y) \
- && "$(RM)" $(RM_OPTS) -r compiler/stage[123] mk/build.mk \
- && "$(FIND)" $(SRC_DIST_DIRS) \( -name _darcs -o -name SRC -o -name "autom4te*" -o -name "*~" -o -name ".cvsignore" -o -name "\#*" -o -name ".\#*" -o -name "log" -o -name "*-SAVE" -o -name "*.orig" -o -name "*.rej" -o -name "*-darcs-backup*" \) -print | xargs "$(RM)" $(RM_OPTS) -r \
- )
+ cd $(SRC_DIST_DIR) && for i in $(SRC_DIST_DIRS); do mkdir $$i; ( cd $$i && lndir $(TOP)/$$i ); done
+ cd $(SRC_DIST_DIR) && for i in $(SRC_DIST_FILES); do $(LN_S) $(TOP)/$$i .; done
+ cd $(SRC_DIST_DIR) && $(MAKE) distclean
+ cd $(SRC_DIST_DIR) && if test -f $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs; then "$(CP)" $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs libraries/haskell-src/Language/Haskell/ ; mv libraries/haskell-src/Language/Haskell/Parser.ly libraries/haskell-src/Language/Haskell/Parser.ly.source ; fi
+ cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,cmm,CmmLex,x)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,cmm,CmmParse,y)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,parser,Lexer,x)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,parser,Parser,y.pp)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,compiler,stage2,parser,ParserCore,y)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,utils/hpc,dist,,HpcParser,y)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,utils/genprimopcode,dist,,Lexer,x)
+ cd $(SRC_DIST_DIR) && $(call sdist_file,utils/genprimopcode,dist,,Parser,y)
+ cd $(SRC_DIST_DIR) && "$(RM)" $(RM_OPTS) -r compiler/stage[123] mk/build.mk
+ cd $(SRC_DIST_DIR) && "$(FIND)" $(SRC_DIST_DIRS) \( -name _darcs -o -name SRC -o -name "autom4te*" -o -name "*~" -o -name ".cvsignore" -o -name "\#*" -o -name ".\#*" -o -name "log" -o -name "*-SAVE" -o -name "*.orig" -o -name "*.rej" -o -name "*-darcs-backup*" \) -print | xargs "$(RM)" $(RM_OPTS) -r
.PHONY: sdist
sdist : sdist-prep
CLEAN_FILES += utils/ghc-pwd/ghc-pwd.hi
CLEAN_FILES += utils/ghc-pwd/ghc-pwd.o
CLEAN_FILES += libraries/bootstrapping.conf
-CLEAN_FILES += libraries/integer-gmp/gmp/gmp.h
-CLEAN_FILES += libraries/integer-gmp/gmp/libgmp.a
CLEAN_FILES += libraries/integer-gmp/cbits/GmpDerivedConstants.h
CLEAN_FILES += libraries/integer-gmp/cbits/mkGmpDerivedConstants
-clean : clean_files clean_libraries clean_gmp
+clean : clean_files clean_libraries
.PHONY: clean_files
clean_files :
"$(RM)" $(RM_OPTS) $(CLEAN_FILES)
+ifneq "$(NO_CLEAN_GMP)" "YES"
+CLEAN_FILES += libraries/integer-gmp/gmp/gmp.h
+CLEAN_FILES += libraries/integer-gmp/gmp/libgmp.a
+
+clean : clean_gmp
+.PHONY: clean_gmp
clean_gmp:
"$(RM)" $(RM_OPTS) -r libraries/integer-gmp/gmp/objs
"$(RM)" $(RM_OPTS) -r libraries/integer-gmp/gmp/gmpbuild
+endif
.PHONY: clean_libraries
clean_libraries: $(patsubst %,clean_libraries/%_dist-install,$(PACKAGES) $(PACKAGES_STAGE2))