diff --git a/WORKSPACE b/WORKSPACE index 6c2ec6ea4f..39158c5594 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -363,6 +363,10 @@ haskell_register_ghc_nixpkgs( "-fexternal-dynamic-refs", ] + (["-g3"] if enable_ghc_dwarf else ([ "-optl-unexported_symbols_list=*", + "-optc-mmacosx-version-min=10.14", + "-opta-mmacosx-version-min=10.14", + "-optl-mmacosx-version-min=10.14", + "-optP-mmacosx-version-min=10.14", ] if is_darwin else ["-optl-s"])), compiler_flags_select = { "@com_github_digital_asset_daml//:profiling_build": ["-fprof-auto"], diff --git a/bazel_tools/haskell-pgmc.patch b/bazel_tools/haskell-pgmc.patch new file mode 100644 index 0000000000..7a743cbb70 --- /dev/null +++ b/bazel_tools/haskell-pgmc.patch @@ -0,0 +1,23 @@ +diff --git a/haskell/private/cabal_wrapper.py.tpl b/haskell/private/cabal_wrapper.py.tpl +index 81269cc7..35c24cf4 100755 +--- a/haskell/private/cabal_wrapper.py.tpl ++++ b/haskell/private/cabal_wrapper.py.tpl +@@ -143,6 +143,18 @@ with tmpdir() as distdir: + "--with-hc-pkg=" + ghc_pkg, + "--with-ar=" + ar, + "--with-gcc=" + cc, ++ "--ghc-option=-pgmc=" + cc, ++ "--ghc-option=-pgma=" + cc, ++ "--ghc-option=-pgmP=" + cc, ++ "--ghc-option=-pgml=" + cc, ++ # Setting -pgm* flags explicitly has the unfortunate side effect ++ # of resetting any program flags in the GHC settings file. So we ++ # restore them here. See ++ # https://ghc.haskell.org/trac/ghc/ticket/7929. ++ "--ghc-option=-optc-fno-stack-protector", ++ "--ghc-option=-optP-E", ++ "--ghc-option=-optP-undef", ++ "--ghc-option=-optP-traditional", + "--with-strip=" + strip, + "--enable-deterministic", \ + ] + diff --git a/compatibility/deps.bzl b/compatibility/deps.bzl index 8c82f168e0..b1a4baaef6 100644 --- a/compatibility/deps.bzl +++ b/compatibility/deps.bzl @@ -50,6 +50,7 @@ def daml_deps(): "@daml//bazel_tools:haskell-strict-source-names.patch", "@daml//bazel_tools:haskell-windows-remove-fake-libs.patch", "@daml//bazel_tools:haskell-windows-extra-libraries.patch", + "@daml//bazel_tools:haskell-pgmc.patch", ], patch_args = ["-p1"], sha256 = rules_haskell_sha256, diff --git a/deps.bzl b/deps.bzl index 3d0901366a..93f51b0c12 100644 --- a/deps.bzl +++ b/deps.bzl @@ -73,6 +73,8 @@ def daml_deps(): # This should be made configurable in rules_haskell. # Remove this patch once that's available. "@com_github_digital_asset_daml//bazel_tools:haskell-opt.patch", + # This can be upstreamed. + "@com_github_digital_asset_daml//bazel_tools:haskell-pgmc.patch", ], patch_args = ["-p1"], sha256 = rules_haskell_sha256,