Allow building static libs.
authorMoritz Angermann <moritz.angermann@gmail.com>
Sat, 25 Jun 2016 16:07:57 +0000 (17:07 +0100)
committerTamar Christina <tamar@zhox.com>
Sat, 25 Jun 2016 16:11:10 +0000 (17:11 +0100)
Summary:
Commit 90538d86af579595987826cd893828d6f379f35a, seems to have broken static linking.
The introduction of `argFixup` in `runLink` rearranges libs, and considers
anything with an `-l` prefix or `.a` suffix a lib, which fails for libs that are
just being linked together (e.g. `-o lib.a`).

The proposed solution explicitly checks for the existance of the `-o` flag.

Reviewers: rwbarton, erikd, Phyx, bgamari, austin

Reviewed By: Phyx

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2362

compiler/main/SysTools.hs

index c86935e..6cdb07e 100644 (file)
@@ -928,6 +928,8 @@ runLink dflags args = do
        This functions moves libraries on the link all the way back
        but keeps the order amongst them the same. -}
     argFixup []                        r = [] ++ r
+    -- retain any lib in "-o" position.
+    argFixup (o@(Option "-o"):o'@(FileOption _ _):xs) r = o:o':argFixup xs r
     argFixup (o@(Option       opt):xs) r = if testLib opt
                                               then argFixup xs (r ++ [o])
                                               else o:argFixup xs r