Remove the Unicode alternative for ".." (#3894)
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 9eaa7cd..f770d22 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -269,6 +269,7 @@ include rules/build-perl.mk
 include rules/build-package.mk
 include rules/build-package-way.mk
 include rules/haddock.mk
+include rules/tags-package.mk
 
 # -----------------------------------------------------------------------------
 # Registering hand-written package descriptions (used in libffi and rts)
@@ -339,6 +340,8 @@ $(eval $(call addPackage,terminfo,($$(Windows),NO)))
 
 $(eval $(call addPackage,haskeline))
 
+$(foreach pkg,$(EXTRA_PACKAGES),$(eval $(call addPackage,$(pkg))))
+
 ifneq "$(BootingFromHc)" "YES"
 PACKAGES_STAGE2 += \
        dph/dph-base \
@@ -442,9 +445,8 @@ PRIMOPS_TXT = $(GHC_COMPILER_DIR)/prelude/primops.txt
 libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.hs : $(GENPRIMOP_INPLACE) $(PRIMOPS_TXT) | $$(dir $$@)/.
        "$(GENPRIMOP_INPLACE)" --make-haskell-wrappers <$(PRIMOPS_TXT) >$@
 
-libraries/ghc-prim/GHC/Prim.hs : $(GENPRIMOP_INPLACE) $(PRIMOPS_TXT)
-       "$(GENPRIMOP_INPLACE)" --make-haskell-source <$(PRIMOPS_TXT) >$@
-
+# Required so that Haddock documents the primops.
+libraries/ghc-prim_dist-install_EXTRA_HADDOCK_SRCS = libraries/ghc-prim/dist-install/build/autogen/GHC/Prim.hs
 
 # -----------------------------------------------------------------------------
 # Include build instructions from all subdirs
@@ -492,6 +494,7 @@ endif
 
 BUILD_DIRS += \
    docs/users_guide \
+   docs/ext-core \
    docs/man \
    libraries/Cabal/doc \
    $(GHC_UNLIT_DIR) \
@@ -546,6 +549,7 @@ BUILD_DIRS += \
    compiler \
    $(GHC_HSC2HS_DIR) \
    $(GHC_PKG_DIR) \
+   utils/ghctags \
    utils/hpc \
    utils/runghc \
    ghc
@@ -596,6 +600,7 @@ ifneq "$(findstring $(phase),0 1 2 3)" ""
 # In phases 0-3, we disable stage2-3, the full libraries and haddock
 utils/haddock_dist_DISABLE = YES
 utils/runghc_dist_DISABLE = YES
+utils/ghctags_dist_DISABLE = YES
 utils/hpc_dist_DISABLE = YES
 utils/hsc2hs_dist-install_DISABLE = YES
 utils/ghc-pkg_dist-install_DISABLE = YES
@@ -620,9 +625,7 @@ include $(patsubst %, %/ghc.mk, $(BUILD_DIRS))
 
 # We need -fno-warn-deprecated-flags to avoid failure with -Werror
 GhcLibHcOpts += -fno-warn-deprecated-flags
-ifeq "$(ghc_ge_609)" "YES"
 GhcBootLibHcOpts += -fno-warn-deprecated-flags
-endif
 
 # Add $(GhcLibHcOpts) to all library builds
 $(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-install_HC_OPTS += $$(GhcLibHcOpts)))
@@ -729,7 +732,7 @@ install_perl : $(INPLACE_PERL)
 endif # Windows
 
 ifneq "$(BINDIST)" "YES"
-$(ghc-prim_HADDOCK_FILE): \
+$(ghc-prim-$(libraries/ghc-prim_dist-install_VERSION)_HADDOCK_FILE): \
     libraries/ghc-prim/dist-install/build/autogen/GHC/Prim.hs \
     libraries/ghc-prim/dist-install/build/autogen/GHC/PrimopWrappers.hs
 endif # BINDIST
@@ -744,12 +747,18 @@ libraries/ghc-prim/dist-install/build/autogen/GHC/PrimopWrappers.hs: \
                           | $$(dir $$@)/.
        "$(GENPRIMOP_INPLACE)" --make-haskell-wrappers < $< > $@
 
+.PHONY: tags
+tags: tags_compiler
+
+.PHONY: TAGS
+TAGS: TAGS_compiler
+
 # -----------------------------------------------------------------------------
 # Installation
 
 install: install_packages install_libs install_libexecs install_headers \
          install_libexec_scripts install_bins install_docs \
-                install_topdirs install_topdir_scripts
+                install_topdirs
 
 install_bins: $(INSTALL_BINS)
        $(INSTALL_DIR) "$(DESTDIR)$(bindir)"
@@ -798,12 +807,6 @@ else
        "$(MV)" "$(DESTDIR)$(ghclibexecdir)/ghc-stage2" "$(DESTDIR)$(ghclibexecdir)/ghc"
 endif
 
-install_topdir_scripts: $(INSTALL_TOPDIR_SCRIPTS)
-       $(INSTALL_DIR) "$(DESTDIR)$(topdir)"
-       for i in $(INSTALL_TOPDIR_SCRIPTS); do \
-               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i "$(DESTDIR)$(topdir)"; \
-       done
-
 install_topdirs: $(INSTALL_TOPDIRS)
        $(INSTALL_DIR) "$(DESTDIR)$(topdir)"
        for i in $(INSTALL_TOPDIRS); do \
@@ -852,7 +855,11 @@ INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe
 INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
 endif
 
-INSTALLED_PACKAGES = $(filter-out haskeline mtl terminfo,$(PACKAGES))
+INSTALLED_PACKAGES := $(filter-out haskeline mtl terminfo utf8-string,$(PACKAGES))
+ifeq "$(InstallExtraPackages)" "NO"
+INSTALLED_PACKAGES := $(filter-out $(EXTRA_PACKAGES), $(INSTALLED_PACKAGES))
+endif
+
 HIDDEN_PACKAGES = binary
 
 define set_INSTALL_DISTDIR
@@ -909,6 +916,7 @@ $(eval $(call bindist,.,\
     $(INPLACE_BIN)/ghc-cabal \
     utils/ghc-pwd/ghc-pwd \
        $(BINDIST_WRAPPERS) \
+       $(BINDIST_PERL_SOURCES) \
        $(BINDIST_LIBS) \
        $(BINDIST_HI) \
        $(BINDIST_EXTRAS) \
@@ -921,7 +929,6 @@ $(eval $(call bindist,.,\
     $(INSTALL_LIBEXECS) \
     $(INSTALL_LIBEXEC_SCRIPTS) \
     $(INSTALL_TOPDIRS) \
-    $(INSTALL_TOPDIR_SCRIPTS) \
     $(INSTALL_BINS) \
     $(INSTALL_MANPAGES) \
     $(INSTALL_DOCS) \
@@ -930,6 +937,7 @@ $(eval $(call bindist,.,\
        docs/index.html \
        compiler/stage2/doc \
        $(wildcard libraries/*/dist-install/doc/) \
+       $(wildcard libraries/*/*/dist-install/doc/) \
     $(filter-out extra-gcc-opts,$(INSTALL_LIBS)) \
     $(filter-out %/project.mk mk/config.mk %/mk/install.mk,$(MAKEFILE_LIST)) \
        mk/project.mk \
@@ -973,18 +981,30 @@ else
        "$(ISCC)" /O. /Fbindistprep/$(WINDOWS_INSTALLER_BASE) - < distrib/ghc.iss
 endif
 
-nTimes = set -e; for i in `seq 1 $(1)`; do echo Try "$$i: $(2)"; if $(2); then break; fi; done
+# tryTimes tries to run its third argument multiple times, until it
+# succeeds. Don't call it directly; call try10Times instead.
+# The first and second argument to tryTimes are lists of values.
+# The length of the first argument is the number of times we have
+# already tried. The length of the second argument is the number more
+# times we will try.
+tryTimes = $(if $2, \
+                { echo 'Try $(words x $1): $3' ; $3 ; } || \
+                $(call tryTimes,x $1,$(wordlist 2,$(words $2),$2),$3), \
+                )
+
+# Try to run the argument 10 times. If all 10 fail, fail.
+try10Times = $(call tryTimes,,x x x x x x x x x x,$1) { echo Failed; false; }
 
 .PHONY: publish-binary-dist
 publish-binary-dist:
-       $(call nTimes,10,$(PublishCp) $(BIN_DIST_TAR_BZ2) $(PublishLocation)/dist)
+       $(call try10Times,$(PublishCp) $(BIN_DIST_TAR_BZ2) $(PublishLocation)/dist)
 ifeq "$(mingw32_TARGET_OS)" "1"
-       $(call nTimes,10,$(PublishCp) $(WINDOWS_INSTALLER) $(PublishLocation)/dist)
+       $(call try10Times,$(PublishCp) $(WINDOWS_INSTALLER) $(PublishLocation)/dist)
 endif
 
 .PHONY: publish-docs
 publish-docs:
-       $(call nTimes,10,$(PublishCp) -r bindisttest/installed/share/doc/ghc/* $(PublishLocation)/docs)
+       $(call try10Times,$(PublishCp) -r bindisttest/installed/share/doc/ghc/* $(PublishLocation)/docs)
 
 # -----------------------------------------------------------------------------
 # Source distributions
@@ -1055,8 +1075,8 @@ sdist-prep :
        $(call sdist_file,utils/hpc,dist,,,HpcParser,y)
        $(call sdist_file,utils/genprimopcode,dist,,,Lexer,x)
        $(call sdist_file,utils/genprimopcode,dist,,,Parser,y)
-       $(call sdist_file,utils/haddock,dist,src,Haddock/Interface,Lex,x)
-       $(call sdist_file,utils/haddock,dist,src,Haddock/Interface,Parse,y)
+       $(call sdist_file,utils/haddock,dist,src,Haddock,Lex,x)
+       $(call sdist_file,utils/haddock,dist,src,Haddock,Parse,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)" $(XARGS_OPTS) "$(RM)" $(RM_OPTS) -r
 
@@ -1072,7 +1092,7 @@ sdist-manifest : $(SRC_DIST_TARBALL)
 # over SSH.
 ifneq "$(PublishLocation)" ""
 publish-sdist :
-       $(call nTimes,10,$(PublishCp) $(SRC_DIST_TARBALL) $(PublishLocation)/dist)
+       $(call try10Times,$(PublishCp) $(SRC_DIST_TARBALL) $(PublishLocation)/dist)
 endif
 
 ifeq "$(BootingFromHc)" "YES"