Fix "make show" in a bindist
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 81ec2f8..287db6d 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -29,9 +29,7 @@
 #     * docs/vh/Makefile
 #     * rts/dotnet/Makefile
 #     * utils/Makefile
-#   * GhcProfiled
 #   * optionally install stage3?
-#   * shared libraries, way dyn
 #   * add Makefiles for the rest of the utils/ programs that aren't built
 #     by default (need to exclude them from 'make all' too)
 #
@@ -282,46 +280,56 @@ include rules/bindist.mk
 # -----------------------------------------------------------------------------
 # Building libraries
 
-# XXX generate from $(TOP)/packages
-PACKAGES = \
-       ghc-prim \
-       integer-gmp \
-       integer \
-       base \
-       filepath \
-       array \
-       bytestring \
-       containers
+define addPackage # args: $1 = package, $2 = condition
+    ifneq "$2" ""
+        ifeq "$$(CLEANING)" "YES"
+            PACKAGES += $1
+        else
+            ifeq $2
+                PACKAGES += $1
+            endif
+        endif
+    else
+        PACKAGES += $1
+    endif
+endef
 
-ifeq "$(Windows)" "YES"
-PACKAGES += Win32
+$(eval $(call addPackage,ghc-prim))
+ifeq "$(CLEANING)" "YES"
+$(eval $(call addPackage,integer-gmp))
+$(eval $(call addPackage,integer-simple))
 else
-PACKAGES += unix
-endif
-
-PACKAGES += \
-       old-locale \
-       old-time \
-       time \
-       directory \
-       process \
-       random \
-       extensible-exceptions \
-       haskell98 \
-       hpc \
-       pretty \
-       syb \
-       template-haskell \
-       base3-compat \
-       Cabal \
-       mtl \
-       utf8-string
-
-ifneq "$(Windows)" "YES"
-PACKAGES += terminfo
-endif
-
-PACKAGES += haskeline
+$(eval $(call addPackage,$(INTEGER_LIBRARY)))
+endif
+$(eval $(call addPackage,base))
+$(eval $(call addPackage,filepath))
+$(eval $(call addPackage,array))
+$(eval $(call addPackage,bytestring))
+$(eval $(call addPackage,containers))
+
+$(eval $(call addPackage,Win32,($$(Windows),YES)))
+$(eval $(call addPackage,unix,($$(Windows),NO)))
+
+$(eval $(call addPackage,old-locale))
+$(eval $(call addPackage,old-time))
+$(eval $(call addPackage,time))
+$(eval $(call addPackage,directory))
+$(eval $(call addPackage,process))
+$(eval $(call addPackage,random))
+$(eval $(call addPackage,extensible-exceptions))
+$(eval $(call addPackage,haskell98))
+$(eval $(call addPackage,hpc))
+$(eval $(call addPackage,pretty))
+$(eval $(call addPackage,syb))
+$(eval $(call addPackage,template-haskell))
+$(eval $(call addPackage,base3-compat))
+$(eval $(call addPackage,Cabal))
+$(eval $(call addPackage,mtl))
+$(eval $(call addPackage,utf8-string))
+
+$(eval $(call addPackage,terminfo,($$(Windows),NO)))
+
+$(eval $(call addPackage,haskeline))
 
 ifneq "$(BootingFromHc)" "YES"
 PACKAGES_STAGE2 += \
@@ -499,8 +507,11 @@ BUILD_DIRS += \
 endif
 endif
 
+ifeq "$(INTEGER_LIBRARY)" "integer-gmp"
+BUILD_DIRS += libraries/integer-gmp/gmp
+endif
+
 BUILD_DIRS += \
-   libraries/integer-gmp/gmp \
    compiler \
    $(GHC_HSC2HS_DIR) \
    $(GHC_PKG_DIR) \
@@ -529,6 +540,18 @@ ifneq "$(findstring $(phase),0 1 2)" ""
 ghc_stage1_DISABLE = YES
 endif
 
+ifneq "$(CLEANING)" "YES"
+ifeq "$(INTEGER_LIBRARY)" "integer-gmp"
+libraries/base_dist-install_CONFIGURE_OPTS += --flags=-integer-simple
+else
+    ifeq "$(INTEGER_LIBRARY)" "integer-simple"
+       libraries/base_dist-install_CONFIGURE_OPTS += --flags=integer-simple
+    else
+$(error Unknown integer library: $(INTEGER_LIBRARY))
+    endif
+endif
+endif
+
 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
@@ -656,7 +679,7 @@ libraries/ghc-prim/dist-install/build/autogen/GHC/PrimopWrappers.hs: \
 # Installation
 
 install: install_packages install_libs install_libexecs install_headers \
-        install_libexec_scripts install_bins
+         install_libexec_scripts install_bins install_docs
 
 install_bins: $(INSTALL_BINS)
        $(INSTALL_DIR) $(DESTDIR)$(bindir)
@@ -704,6 +727,17 @@ install_headers: $(INSTALL_HEADERS)
                $(INSTALL_HEADER) $(INSTALL_OPTS) $$i $(DESTDIR)$(headerdir); \
        done
 
+install_docs: $(INSTALL_HEADERS)
+       $(INSTALL_DIR) $(DESTDIR)$(docdir)
+       for i in $(INSTALL_DOCS); do \
+               $(INSTALL_DOC) $(INSTALL_OPTS) $$i $(DESTDIR)$(docdir); \
+       done
+       $(INSTALL_DIR) $(INSTALL_OPTS) $(DESTDIR)$(docdir)/html; \
+       for i in $(INSTALL_HTML_DOC_DIRS); do \
+               $(INSTALL_DIR) $(INSTALL_OPTS) $(DESTDIR)$(docdir)/html/`basename $$i`; \
+               $(INSTALL_DOC) $(INSTALL_OPTS) $$i/* $(DESTDIR)$(docdir)/html/`basename $$i`; \
+       done
+
 INSTALLED_PACKAGE_CONF=$(DESTDIR)$(libdir)/package.conf
 
 # Install packages in the right order, so that ghc-pkg doesn't complain.