ghc: compile with DWARF support by default

This allows our GHCs to build programs with DWARF debug information
when -g is passed, see https://ghc.haskell.org/trac/ghc/wiki/DWARF.

Compiling with debug symbols is off by default until GHC ticket #15960
(Using -g causes differences in generated core) is fixed.
This commit is contained in:
Domen Kožar 2019-09-09 17:57:13 +02:00 committed by Peter Simons
parent f2bf25e53a
commit f4316473d9
6 changed files with 36 additions and 6 deletions

View file

@ -8,6 +8,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, useLLVM ? !stdenv.targetPlatform.isx86 || (stdenv.targetPlatform.isMusl && stdenv.hostPlatform != stdenv.targetPlatform)
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
@ -69,7 +71,8 @@ let
# Splicer will pull out correct variations
libDeps = platform: [ ncurses ]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc") libiconv;
++ stdenv.lib.optional (platform.libc != "glibc") libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -203,6 +206,8 @@ stdenv.mkDerivation (rec {
] ++ stdenv.lib.optionals (targetPlatform.isDarwin && targetPlatform.isAarch64) [
# fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Dont add -liconv to LDFLAGS automatically so that GHC will add it itself.

View file

@ -7,6 +7,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, useLLVM ? !stdenv.targetPlatform.isx86 || (stdenv.targetPlatform.isMusl && stdenv.hostPlatform != stdenv.targetPlatform)
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
@ -71,7 +73,8 @@ let
# Splicer will pull out correct variations
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -180,6 +183,8 @@ stdenv.mkDerivation (rec {
] ++ stdenv.lib.optionals (targetPlatform.isDarwin && targetPlatform.isAarch64) [
# fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Make sure we never relax`$PATH` and hooks support for compatability.

View file

@ -7,6 +7,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, # GHC can be built with system libffi or a bundled one.
libffi ? null
@ -76,7 +78,8 @@ let
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
++ [libffi]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -179,6 +182,8 @@ stdenv.mkDerivation (rec {
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Make sure we never relax`$PATH` and hooks support for compatability.

View file

@ -7,6 +7,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, # GHC can be built with system libffi or a bundled one.
libffi ? null
@ -76,7 +78,8 @@ let
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
++ [libffi]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -179,6 +182,8 @@ stdenv.mkDerivation (rec {
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Make sure we never relax`$PATH` and hooks support for compatability.

View file

@ -7,6 +7,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, # GHC can be built with system libffi or a bundled one.
libffi ? null
@ -76,7 +78,8 @@ let
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
++ [libffi]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -164,6 +167,8 @@ stdenv.mkDerivation (rec {
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Make sure we never relax`$PATH` and hooks support for compatability.

View file

@ -7,6 +7,8 @@
, libiconv ? null, ncurses
, enableDwarf ? !stdenv.isDarwin, elfutils # for DWARF support
, useLLVM ? !stdenv.targetPlatform.isx86
, # LLVM is conceptually a run-time-only depedendency, but for
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
@ -73,7 +75,8 @@ let
# Splicer will pull out correct variations
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
++ stdenv.lib.optional (!enableIntegerSimple) gmp
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv
++ stdenv.lib.optional enableDwarf elfutils;
toolsForTarget = [
pkgsBuildTarget.targetPackages.stdenv.cc
@ -176,6 +179,8 @@ stdenv.mkDerivation (rec {
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ stdenv.lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
] ++ stdenv.lib.optional enableDwarf [
"--enable-dwarf-unwind"
];
# Make sure we never relax`$PATH` and hooks support for compatability.