# * install libgmp.a, gmp.h
# * need to fix Cabal for new Windows layout, see
# Distribution/Simple/GHC.configureToolchain.
-# * separate the logic of whether to do something from the test for
-# existence of the tool to do it. For example, rather than checking
-# if $DIR_DOCBOOK_XSL or $XSLTPROC is "", we should have a variable
-# for controlling the building of the docs.
# * remove old Makefiles, add new stubs for building in subdirs
-# * utils/hsc2hs/Makefile
-# * utils/haddock/Makefile
# * docs/Makefile
# * docs/docbook-cheat-sheet/Makefile
# * docs/ext-core/Makefile
# * docs/man/Makefile
# * docs/storage-mgmt/Makefile
# * docs/vh/Makefile
-# * driver/Makefile
# * rts/dotnet/Makefile
# * utils/Makefile
# * GhcProfiled
include rules/includes-sources.mk
include rules/hs-objs.mk
include rules/c-objs.mk
+include rules/cmm-objs.mk
# -----------------------------------------------------------------------------
# Suffix rules
include rules/c-suffix-rules.mk
+#-----------------------------------------------------------------------------
+# CMM-related suffix rules
+
+include rules/cmm-suffix-rules.mk
+
endif
# -----------------------------------------------------------------------------
PACKAGES = \
ghc-prim \
integer-gmp \
+ integer \
base \
filepath \
array \
extensible-exceptions \
haskell98 \
hpc \
- packedstring \
pretty \
syb \
template-haskell \
ifeq "$(BuildSharedLibs)" "YES"
OTHER_LIBS += libffi/libHSffi$(dyn_libsuf)
endif
-ifeq "$(HaveLibGmp)" "NO"
-GMP_LIB = gmp/libgmp.a
-OTHER_LIBS += $(GMP_LIB)
-endif
# We cannot run ghc-cabal to configure a package until we have
# configured and registered all of its dependencies. So the following
endif
BUILD_DIRS += \
- gmp \
docs/users_guide \
libraries/Cabal/doc \
$(GHC_UNLIT_DIR) \
endif
BUILD_DIRS += \
+ libraries/integer-gmp/gmp \
compiler \
$(GHC_HSC2HS_DIR) \
$(GHC_PKG_DIR) \
# out the ones it thinks aren't supported.
libraries/base3-compat_dist-install_HC_OPTS += -XPackageImports
+# A useful pseudo-target
+.PHONY: stage1_libs
+stage1_libs : $(ALL_STAGE1_LIBS)
+
# -----------------------------------------------------------------------------
# Bootstrapping libraries
binary-dist:
"$(RM)" $(RM_OPTS) -r $(BIN_DIST_NAME)
mkdir $(BIN_DIST_NAME)
- set -e; for i in LICENSE compiler ghc rts libraries utils gmp docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../$$i $(BIN_DIST_NAME)/; done
+ set -e; for i in LICENSE compiler ghc rts libraries utils docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../$$i $(BIN_DIST_NAME)/; done
ln -s ../distrib/configure-bin.ac $(BIN_DIST_NAME)/configure.ac
cd $(BIN_DIST_NAME) && autoreconf
"$(RM)" $(RM_OPTS) $(BIN_DIST_TAR)
#
# Files to include in source distributions
#
-SRC_DIST_DIRS = mk rules docs distrib bindisttest gmp libffi includes utils docs rts compiler ghc driver libraries
+SRC_DIST_DIRS = mk rules docs distrib bindisttest libffi includes utils docs rts compiler ghc driver libraries
SRC_DIST_FILES += \
configure.ac config.guess config.sub configure \
aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \
- ghc.spec.in ghc.spec extra-gcc-opts.in VERSION boot ghc.mk
+ ghc.spec.in ghc.spec extra-gcc-opts.in VERSION \
+ boot boot-pkgs packages ghc.mk
SRC_DIST_TARBALL = $(SRC_DIST_NAME)-src.tar.bz2
"$(RM)" $(RM_OPTS) $(CLEAN_FILES)
.PHONY: clean_libraries
+clean_libraries: $(patsubst %,clean_libraries/%_dist-install,$(PACKAGES) $(PACKAGES_STAGE2))
+clean_libraries: $(patsubst %,clean_libraries/%_dist-boot,$(BOOT_PKGS))
+
clean_libraries:
"$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2))
- "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2))
- "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2))
+ "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/*.buildinfo, $(PACKAGES) $(PACKAGES_STAGE2))
+
+# We have to define a clean target for each library manually, because the
+# libraries/*/ghc.mk files are not included when we're cleaning.
+ifeq "$(CLEANING)" "YES"
+$(foreach lib,$(PACKAGES) $(PACKAGES_STAGE2),\
+ $(eval $(call clean-target,libraries/$(lib),dist-install,libraries/$(lib)/dist-install)))
+endif
distclean : clean
"$(RM)" $(RM_OPTS) config.cache config.status config.log mk/config.h mk/stamp-h
"$(RM)" $(RM_OPTS) mk/config.mk mk/are-validating.mk mk/project.mk
+ "$(RM)" $(RM_OPTS) mk/config.mk.old mk/project.mk.old
"$(RM)" $(RM_OPTS) extra-gcc-opts docs/users_guide/ug-book.xml
- "$(RM)" $(RM_OPTS) compiler/ghc.cabal ghc/ghc-bin.cabal
+ "$(RM)" $(RM_OPTS) compiler/ghc.cabal compiler/ghc.cabal.old
+ "$(RM)" $(RM_OPTS) ghc/ghc-bin.cabal
"$(RM)" $(RM_OPTS) libraries/base/include/HsBaseConfig.h
"$(RM)" $(RM_OPTS) libraries/directory/include/HsDirectoryConfig.h
"$(RM)" $(RM_OPTS) libraries/process/include/HsProcessConfig.h
"$(RM)" $(RM_OPTS) libraries/unix/include/HsUnixConfig.h
"$(RM)" $(RM_OPTS) libraries/old-time/include/HsTimeConfig.h
+
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))
bootstrapping-files: includes/DerivedConstants.h
bootstrapping-files: includes/GHCConstants.h
+.DELETE_ON_ERROR:
+