cvs commit: fptools/libraries/base base.conf.in fptools/libraries /haskell98 haskell98.conf.in fptools/libraries/haskell-src haskell-src.con f.in fptools/libraries/network network.conf.in fptools/libraries/OpenGL OpenGL.conf.in fptools/libraries/readline readline.conf.in ...

Simon Marlow simonmar@glass.cse.ogi.edu
Wed, 18 Dec 2002 08:29:34 -0800


  Modified files:
    libraries/base       base.conf.in 
    libraries/haskell98  haskell98.conf.in 
    libraries/haskell-src haskell-src.conf.in 
    libraries/network    network.conf.in 
    libraries/OpenGL     OpenGL.conf.in 
    libraries/readline   readline.conf.in 
    libraries/unix       unix.conf.in 
    ghc/compiler/main    CodeOutput.lhs DriverPipeline.hs 
                         DriverState.hs Finder.lhs HscMain.lhs 
                         Main.hs Packages.lhs ParsePkgConf.y 
    ghc/compiler/compMan CompManager.lhs 
    ghc/compiler/ghci    Linker.lhs 
    ghc/utils/ghc-pkg    Package.hs ParsePkgConfLite.y 
  Log:
  "Auto" packages.
  
  The big change here is that it is no longer necessary to explicitly
  say '-package X' on the command line if X is a package containing
  hierarchical Haskell modules.  All packages marked "auto" contribute
  to the import path, so their modules are always available.  At link
  time, the compiler knows which packages are actually used by the
  program, and it links in only those libraries needed.
  
  There's one exception: one-shot linking.  If you link a program using
  
      ghc -o prog A.o B.o ...
  
  then you need to explicitly add -package flags for each package
  required (except base & haskell98) because the compiler has no
  information about the package dependencies in this case.
  
  Package configs have a new field: auto, which is either True or False.
  Non-auto packages must be mentioned on the command-line as usual.
  Non-auto packages are still required for:
  
    - non-hierarchical libraries (to avoid polluting the module namespace)
  
    - packages with no Haskell content
  
    - if you want more than one version of a package, or packages
      providing overlapping functionality where the user must decide
      which one to use.
  
  Doc changes to follow...
  
  Revision  Changes    Path
  1.9       +1 -0      fptools/libraries/base/base.conf.in
  1.6       +1 -0      fptools/libraries/haskell98/haskell98.conf.in
  1.3       +1 -0      fptools/libraries/haskell-src/haskell-src.conf.in
  1.5       +1 -0      fptools/libraries/network/network.conf.in
  1.2       +1 -0      fptools/libraries/OpenGL/OpenGL.conf.in
  1.3       +1 -0      fptools/libraries/readline/readline.conf.in
  1.3       +1 -0      fptools/libraries/unix/unix.conf.in
  1.43      +50 -39    fptools/ghc/compiler/main/CodeOutput.lhs
  1.144     +81 -89    fptools/ghc/compiler/main/DriverPipeline.hs
  1.88      +99 -84    fptools/ghc/compiler/main/DriverState.hs
  1.61      +0 -4      fptools/ghc/compiler/main/Finder.lhs
  1.174     +3 -4      fptools/ghc/compiler/main/HscMain.lhs
  1.116     +17 -12    fptools/ghc/compiler/main/Main.hs
  1.12      +36 -53    fptools/ghc/compiler/main/Packages.lhs
  1.12      +11 -0     fptools/ghc/compiler/main/ParsePkgConf.y
  1.128     +3 -3      fptools/ghc/compiler/compMan/CompManager.lhs
  1.25      +3 -4      fptools/ghc/compiler/ghci/Linker.lhs
  1.6       +4 -1      fptools/ghc/utils/ghc-pkg/Package.hs
  1.4       +10 -0     fptools/ghc/utils/ghc-pkg/ParsePkgConfLite.y