cvs commit: fptools/mk target.mk package.mk fptools/ghc/lib/compat Makefile fptools/ghc/compiler/main Packages.lhs DriverPipeline.hs fptools/ghc/compiler/ghci Linker.lhs

Wolfgang Thaller wolfgang at haskell.org
Fri Jan 14 03:01:34 EST 2005


wolfgang    2005/01/14 00:01:34 PST

  Modified files:
    mk                   target.mk package.mk 
    ghc/lib/compat       Makefile 
    ghc/compiler/main    Packages.lhs DriverPipeline.hs 
    ghc/compiler/ghci    Linker.lhs 
  Log:
  Dynamic Linking, Part 2:
  
  Hack the Makefiles to build dynamic libraries.
  This allows you to actually use dynamic libraries to greatly reduce binary
  sizes on Darwin/PowerPC and on powerpc64-linux (for now).
  
  To use this, add the following to your build.mk
  
  SplitObjs=NO
  GhcBuildDylibs=YES
  GhcStage2HcOpts=-dynamic
  GhcLibHcOpts+=-fPIC -dynamic
  GhcRtsHcOpts+=-fPIC -dynamic
  GHC_CC_OPTS+=-fPIC
  
  (You can leave out the last three lines on powerpc64-linux).
  
  Then, to compile a program using dynamic libraries, pass the -dynamic option to GHC.
  To make GHCi use the dynamic libraries instead of .o files, just delete the HS*.o files.
  
  The dynamic library files are named libHSfoo_dyn.dylib or libHSfoo_dyn.so.
  
  Note that the dynamic and static libraries are build from the same .o files,
  but we really want to build the static libraries with SplitObjs and without
  -fPIC -dynamic to achieve better code size and performance.
  
  ghc/compiler/ghci/Linker.lhs:
      When looking for a library, look for HSfoo.o first (as before),
      then look for libHSfoo_dyn.[so/dylib] before looking for
      libHSfoo.[so/dylib].
  
  ghc/compiler/main/DriverPipeline.hs:
      Main.dll_o and PrelMain.dll_o are dead, at least for now.
  
  ghc/compiler/main/Packages.lhs:
      When -dynamic is specified, add "_dyn" to all libraries specified in
      hs-libraries (not to the extra-libs).
  
  ghc/lib/compat/Makefile:
      Never build libghccompat as a dynamic lib.
  
  mk/package.mk:
      if GhcBuildDylibs is set to YES, build dynamic libraries.
  
  mk/target.mk:
      When installing .dylibs (Darwin only), update the install_name to point
      to the final location.
      (Somebody please read Apple's documentation on what install_names are,
      and then comment on whether this is a useful feature or whether it should
      be done the "normal" unix way).
  
  Revision  Changes    Path
  1.195     +3 -0      fptools/mk/target.mk
  1.43      +47 -1     fptools/mk/package.mk
  1.12      +3 -0      fptools/ghc/lib/compat/Makefile
  1.23      +3 -4      fptools/ghc/compiler/main/Packages.lhs
  1.174     +1 -2      fptools/ghc/compiler/main/DriverPipeline.hs
  1.47      +6 -1      fptools/ghc/compiler/ghci/Linker.lhs


More information about the Cvs-ghc mailing list