build: haskell-build-system: Build static executables by default.
authorLars-Dominik Braun <lars@6xq.net>
Sun, 29 Jan 2023 17:50:10 +0000 (18:50 +0100)
committerLars-Dominik Braun <lars@6xq.net>
Sun, 26 Feb 2023 09:26:16 +0000 (10:26 +0100)
This is the only way to get reasonably small binaries that don’t pull
in a ton of ghc-* packages.

* guix/build/haskell-build-system.scm (configure): Explicitly
add --enable-static and --disable-executable-dynamic, as well as
-split-sections to configure flags.

guix/build/haskell-build-system.scm

index d77f55d..0e94cf5 100644 (file)
@@ -99,10 +99,14 @@ and parameters ~s~%"
                    ,@(if tests?
                          '("--enable-tests")
                          '())
-                   ;; Build and link with shared libraries
+                   ;; Build static and shared libraries.
                    "--enable-shared"
-                   "--enable-executable-dynamic"
+                   "--enable-static"
+                   ;; Link executables statically by default.
+                   "--disable-executable-dynamic"
                    "--ghc-option=-fPIC"
+                   ;; Ensure static libraries can be used with -Wl,--gc-sections for size.
+                   "--ghc-option=-split-sections"
                    ,@configure-flags)))
     ;; Cabal errors if GHC_PACKAGE_PATH is set during 'configure', so unset
     ;; and restore it.