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 <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.fptools
Message-ID <200501140801.j0E81Ykt015366__4221.613033633$1105690082$gmane$org@glass.cse.ogi.edu>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.