[commit: ghc] master: Add gen-dll as replacement for dll-split (5f6a820)

git at git.haskell.org git at git.haskell.org
Tue Aug 29 22:09:35 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/5f6a82040694f7c8c2b394c1b418c0167b963e0b/ghc

>---------------------------------------------------------------

commit 5f6a82040694f7c8c2b394c1b418c0167b963e0b
Author: Tamar Christina <tamar at zhox.com>
Date:   Tue Aug 29 23:09:09 2017 +0100

    Add gen-dll as replacement for dll-split
    
    Summary:
    This tool can be used to generate dll's for any list of object files
    given to it. It will then repartition them automatically to fit within
    a dll and generates as many dll's as needed to do this. Cyclic dependencies
    between these generated dlls are handle automatically so there is no need
    to tell it how to partition.
    
    It is also a lot more general than `dll-split` as it is able to split any
    package not just `libGHC`. It also uses a trick using GNU style import libraries
    to hide the splitting from the rest of the pipeline. Which means come linking time
    you don't need to know which dll contains what symbol or how many split dlls were
    created.
    
    The import libraries are by default created with libtool. However since libtool is BFD
    based it is very slow. So if present and detected by configure the `genlib` tool
    from the msys2 project is used. This makes a difference of about ~45 minutes when compiling.
    
    To install `genlib` run `pacman -Sy mingw-w64-$(uname -m)-tools-git`.
    
    More detailed explaination of the process can be found here
    https://ghc.haskell.org/trac/ghc/wiki/WindowsDynamicLinking
    
    Test Plan: ./validate
    
    Reviewers: austin, hvr, bgamari, erikd, simonmar
    
    Reviewed By: bgamari
    
    Subscribers: snowleopard, rwbarton, thomie, erikd, #ghc_windows_task_force
    
    GHC Trac Issues: #5987
    
    Differential Revision: https://phabricator.haskell.org/D3883


>---------------------------------------------------------------

5f6a82040694f7c8c2b394c1b418c0167b963e0b
 .gitignore                              |   1 +
 aclocal.m4                              |   3 +
 configure.ac                            |  47 ++-
 docs/users_guide/8.4.1-notes.rst        |  10 +
 ghc.mk                                  |   7 +
 rts/ghc.mk                              |  24 +-
 rules/build-package-way.mk              |  31 +-
 utils/gen-dll/Main.hs                   | 510 ++++++++++++++++++++++++++++++++
 {driver/ghci => utils/gen-dll}/Makefile |   2 +-
 utils/gen-dll/gen-dll.cabal.in          |  37 +++
 {driver/split => utils/gen-dll}/ghc.mk  |  13 +-
 11 files changed, 642 insertions(+), 43 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 5f6a82040694f7c8c2b394c1b418c0167b963e0b


More information about the ghc-commits mailing list