Make 'ghc' a wired in package.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Sat, 19 Jul 2014 15:24:59 +0000 (16:24 +0100)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Mon, 21 Jul 2014 09:27:58 +0000 (02:27 -0700)
Summary:
Previously, the GHC API was "semi" wired-in: it was installed with a
version number, but that version number was hard-coded into the compiler
and it wasn't really possible to install other copies of the GHC API.
This patch makes the GHC API more similar to existing wired-in packages
such as ghc-prim, and will be helpful when we start extending the amount
of information passed to -package-name.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: simonmar, simonpj, hvr, austin

Subscribers: simonmar, relrod, carter

Differential Revision: https://phabricator.haskell.org/D78

compiler/basicTypes/Module.lhs
compiler/ghc.cabal.in
compiler/main/Packages.lhs

index 080ae47..bd2d119 100644 (file)
@@ -367,7 +367,7 @@ rtsPackageId         = fsToPackageId (fsLit "rts")
 thPackageId          = fsToPackageId (fsLit "template-haskell")
 dphSeqPackageId      = fsToPackageId (fsLit "dph-seq")
 dphParPackageId      = fsToPackageId (fsLit "dph-par")
-thisGhcPackageId     = fsToPackageId (fsLit ("ghc-" ++ cProjectVersion))
+thisGhcPackageId     = fsToPackageId (fsLit "ghc")
 interactivePackageId = fsToPackageId (fsLit "interactive")
 
 -- | This is the package Id for the current program.  It is the default
index e6f86c9..838a908 100644 (file)
@@ -104,6 +104,13 @@ Library
 
     Include-Dirs: . parser utils
 
+    if impl( ghc >= 7.9 )
+        -- We need to set the package name to ghc (without a version number)
+        -- as it's magic.  But we can't set it for old versions of GHC (e.g.
+        -- when bootstrapping) because those versions of GHC don't understand
+        -- that GHC is wired-in.
+        GHC-Options: -package-name ghc
+
     if flag(stage1)
         Include-Dirs: stage1
     else
index bb2e048..360519e 100644 (file)
@@ -481,6 +481,7 @@ findWiredInPackages dflags pkgs = do
                             basePackageId,
                             rtsPackageId,
                             thPackageId,
+                            thisGhcPackageId,
                             dphSeqPackageId,
                             dphParPackageId ]