gnat{11,12,13}: fix build on x86_64-darwin
- gnat11: make sure to use the gnat-bootstrap gcc in the stdenv; and - Drop the dual assemblers. x86_64-darwin uses the clang assembler by default, so it no longer needs the workaround for the GNU assembler.
This commit is contained in:
parent
42a5d29b6f
commit
dbe34b193d
2 changed files with 7 additions and 25 deletions
|
@ -38,31 +38,6 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) ''
|
||||||
export GFORTRAN_FOR_TARGET=${pkgsBuildTarget.gfortran}/bin/${stdenv.targetPlatform.config}-gfortran
|
export GFORTRAN_FOR_TARGET=${pkgsBuildTarget.gfortran}/bin/${stdenv.targetPlatform.config}-gfortran
|
||||||
''
|
''
|
||||||
|
|
||||||
# On x86_64-darwin, the gnat-bootstrap bootstrap compiler that we need to build a
|
|
||||||
# native GCC with Ada support emits assembly that is accepted by the Clang
|
|
||||||
# integrated assembler, but not by the GNU assembler in cctools-port that Nix
|
|
||||||
# usually in the x86_64-darwin stdenv. In particular, x86_64-darwin gnat-bootstrap
|
|
||||||
# emits MOVQ as the mnemonic for quadword interunit moves, such as between XMM
|
|
||||||
# and general registers (e.g "movq %xmm0, %rbp"); the cctools-port assembler,
|
|
||||||
# however, only recognises MOVD for such moves.
|
|
||||||
#
|
|
||||||
# Therefore, for native x86_64-darwin builds that support Ada, we have to use
|
|
||||||
# the Clang integrated assembler to build (at least stage 1 of) GCC, but have to
|
|
||||||
# target GCC at the cctools-port GNU assembler. In the wrapped x86_64-darwin
|
|
||||||
# gnat-bootstrap, the former is provided as `as`, while the latter is provided as
|
|
||||||
# `gas`.
|
|
||||||
#
|
|
||||||
+ lib.optionalString (
|
|
||||||
langAda
|
|
||||||
&& buildPlatform == hostPlatform
|
|
||||||
&& hostPlatform == targetPlatform
|
|
||||||
&& targetPlatform.isx86_64
|
|
||||||
&& targetPlatform.isDarwin
|
|
||||||
) ''
|
|
||||||
export AS_FOR_BUILD=${gnat-bootstrap}/bin/as
|
|
||||||
export AS_FOR_TARGET=${gnat-bootstrap}/bin/gas
|
|
||||||
''
|
|
||||||
|
|
||||||
# NOTE 2020/3/18: This environment variable prevents configure scripts from
|
# NOTE 2020/3/18: This environment variable prevents configure scripts from
|
||||||
# detecting the presence of aligned_alloc on Darwin. There are many facts that
|
# detecting the presence of aligned_alloc on Darwin. There are many facts that
|
||||||
# collectively make this fix necessary:
|
# collectively make this fix necessary:
|
||||||
|
|
|
@ -15791,6 +15791,13 @@ with pkgs;
|
||||||
&& stdenv.buildPlatform == stdenv.hostPlatform
|
&& stdenv.buildPlatform == stdenv.hostPlatform
|
||||||
then buildPackages.gnat-bootstrap11
|
then buildPackages.gnat-bootstrap11
|
||||||
else buildPackages.gnat11;
|
else buildPackages.gnat11;
|
||||||
|
stdenv =
|
||||||
|
if stdenv.hostPlatform == stdenv.targetPlatform
|
||||||
|
&& stdenv.buildPlatform == stdenv.hostPlatform
|
||||||
|
&& stdenv.buildPlatform.isDarwin
|
||||||
|
&& stdenv.buildPlatform.isx86_64
|
||||||
|
then overrideCC stdenv gnat-bootstrap11
|
||||||
|
else stdenv;
|
||||||
});
|
});
|
||||||
|
|
||||||
gnat12 = wrapCC (gcc12.cc.override {
|
gnat12 = wrapCC (gcc12.cc.override {
|
||||||
|
|
Loading…
Reference in a new issue