Rewrite the foreign import string parser using ReadP
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index b6df093..b2701bf 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -282,45 +282,51 @@ include rules/bindist.mk
 # -----------------------------------------------------------------------------
 # Building libraries
 
-# XXX generate from $(TOP)/packages
-PACKAGES = \
-       ghc-prim \
-       integer-gmp \
-       integer \
-       base \
-       filepath \
-       array \
-       bytestring \
-       containers
-
-ifeq "$(Windows)" "YES"
-PACKAGES += Win32
-else
-PACKAGES += unix
-endif
-
-PACKAGES += \
-       old-locale \
-       old-time \
-       directory \
-       process \
-       random \
-       extensible-exceptions \
-       haskell98 \
-       hpc \
-       pretty \
-       syb \
-       template-haskell \
-       base3-compat \
-       Cabal \
-       mtl \
-       utf8-string
-
-ifneq "$(Windows)" "YES"
-PACKAGES += terminfo
-endif
+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
 
-PACKAGES += haskeline
+$(eval $(call addPackage,ghc-prim))
+$(eval $(call addPackage,$(INTEGER_LIBRARY)))
+$(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 += \
@@ -498,8 +504,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) \
@@ -528,6 +537,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