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