Merge pull request #322259 from martijnbastiaan/add-ghdl-gcc
ghdl-gcc: init at 4.1.0
This commit is contained in:
commit
45aa2e2c5e
125
pkgs/by-name/gh/ghdl/package.nix
Normal file
125
pkgs/by-name/gh/ghdl/package.nix
Normal file
@ -0,0 +1,125 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, callPackage
|
||||
, gnat
|
||||
, zlib
|
||||
, llvm
|
||||
, lib
|
||||
, gcc-unwrapped
|
||||
, texinfo
|
||||
, gmp
|
||||
, mpfr
|
||||
, libmpc
|
||||
, gnutar
|
||||
, glibc
|
||||
, makeWrapper
|
||||
, backend ? "mcode"
|
||||
}:
|
||||
|
||||
assert backend == "mcode" || backend == "llvm" || backend == "gcc";
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ghdl-${backend}";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ghdl";
|
||||
repo = "ghdl";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-tPSHer3qdtEZoPh9BsEyuTOrXgyENFUyJqnUS3UYAvM=";
|
||||
};
|
||||
|
||||
LIBRARY_PATH = "${stdenv.cc.libc}/lib";
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnat
|
||||
] ++ lib.optionals (backend == "gcc") [
|
||||
texinfo
|
||||
makeWrapper
|
||||
];
|
||||
buildInputs = [
|
||||
zlib
|
||||
] ++ lib.optionals (backend == "llvm") [
|
||||
llvm
|
||||
] ++ lib.optionals (backend == "gcc") [
|
||||
gmp
|
||||
mpfr
|
||||
libmpc
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
] ++ lib.optionals (backend == "llvm" || backend == "gcc") [
|
||||
zlib
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
# If llvm 7.0 works, 7.x releases should work too.
|
||||
sed -i 's/check_version 7.0/check_version 7/g' configure
|
||||
'' + lib.optionalString (backend == "gcc") ''
|
||||
${gnutar}/bin/tar -xf ${gcc-unwrapped.src}
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
# See https://github.com/ghdl/ghdl/pull/2058
|
||||
"--disable-werror"
|
||||
"--enable-synth"
|
||||
] ++ lib.optionals (backend == "llvm") [
|
||||
"--with-llvm-config=${llvm.dev}/bin/llvm-config"
|
||||
] ++ lib.optionals (backend == "gcc") [
|
||||
"--with-gcc=gcc-${gcc-unwrapped.version}"
|
||||
];
|
||||
|
||||
buildPhase = lib.optionalString (backend == "gcc") ''
|
||||
make copy-sources
|
||||
mkdir gcc-objs
|
||||
cd gcc-objs
|
||||
../gcc-${gcc-unwrapped.version}/configure \
|
||||
--with-native-system-header-dir=/include \
|
||||
--with-build-sysroot=${lib.getDev glibc} \
|
||||
--prefix=$out \
|
||||
--enable-languages=c,vhdl \
|
||||
--disable-bootstrap \
|
||||
--disable-lto \
|
||||
--disable-multilib \
|
||||
--disable-libssp \
|
||||
--disable-libgomp \
|
||||
--disable-libquadmath
|
||||
make -j $NIX_BUILD_CORES
|
||||
make install
|
||||
cd ../
|
||||
make -j $NIX_BUILD_CORES ghdllib
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString (backend == "gcc") ''
|
||||
wrapProgram $out/bin/ghdl \
|
||||
--set LIBRARY_PATH ${lib.makeLibraryPath [
|
||||
glibc
|
||||
]}
|
||||
'';
|
||||
|
||||
hardeningDisable = [
|
||||
] ++ lib.optionals (backend == "gcc") [
|
||||
# GCC compilation fails with format errors
|
||||
"format"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = {
|
||||
# run with:
|
||||
# nix-build -A ghdl-mcode.passthru.tests
|
||||
# nix-build -A ghdl-llvm.passthru.tests
|
||||
# nix-build -A ghdl-gcc.passthru.tests
|
||||
tests = {
|
||||
simple = callPackage ./test-simple.nix { inherit backend; };
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/ghdl/ghdl";
|
||||
description = "VHDL 2008/93/87 simulator";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
mainProgram = "ghdl";
|
||||
maintainers = with lib.maintainers; [ lucus16 thoughtpolice ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, ghdl-llvm, ghdl-mcode, backend }:
|
||||
{ stdenv, lib, ghdl-llvm, ghdl-mcode, ghdl-gcc, backend }:
|
||||
|
||||
let
|
||||
ghdl = if backend == "llvm" then ghdl-llvm else ghdl-mcode;
|
||||
ghdl = if backend == "llvm" then ghdl-llvm else if backend == "gcc" then ghdl-gcc else ghdl-mcode;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "ghdl-test-simple";
|
||||
@ -13,7 +13,7 @@ stdenv.mkDerivation {
|
||||
mkdir -p ghdlwork
|
||||
ghdl -a --workdir=ghdlwork --ieee=synopsys simple.vhd simple-tb.vhd
|
||||
ghdl -e --workdir=ghdlwork --ieee=synopsys -o sim-simple tb
|
||||
'' + (if backend == "llvm" then ''
|
||||
'' + (if backend == "llvm" || backend == "gcc" then ''
|
||||
./sim-simple --assert-level=warning > output.txt
|
||||
'' else ''
|
||||
ghdl -r --workdir=ghdlwork --ieee=synopsys tb > output.txt
|
@ -1,71 +0,0 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, callPackage
|
||||
, gnat
|
||||
, zlib
|
||||
, llvm
|
||||
, lib
|
||||
, backend ? "mcode"
|
||||
}:
|
||||
|
||||
assert backend == "mcode" || backend == "llvm";
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ghdl-${backend}";
|
||||
version = "4.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ghdl";
|
||||
repo = "ghdl";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-tPSHer3qdtEZoPh9BsEyuTOrXgyENFUyJqnUS3UYAvM=";
|
||||
};
|
||||
|
||||
LIBRARY_PATH = "${stdenv.cc.libc}/lib";
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnat
|
||||
];
|
||||
buildInputs = [
|
||||
zlib
|
||||
] ++ lib.optionals (backend == "llvm") [
|
||||
llvm
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
] ++ lib.optionals (backend == "llvm") [
|
||||
zlib
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
# If llvm 7.0 works, 7.x releases should work too.
|
||||
sed -i 's/check_version 7.0/check_version 7/g' configure
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
# See https://github.com/ghdl/ghdl/pull/2058
|
||||
"--disable-werror"
|
||||
"--enable-synth"
|
||||
] ++ lib.optionals (backend == "llvm") [
|
||||
"--with-llvm-config=${llvm.dev}/bin/llvm-config"
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = {
|
||||
# run with either of
|
||||
# nix-build -A ghdl-mcode.passthru.tests
|
||||
# nix-build -A ghdl-llvm.passthru.tests
|
||||
tests = {
|
||||
simple = callPackage ./test-simple.nix { inherit backend; };
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/ghdl/ghdl";
|
||||
description = "VHDL 2008/93/87 simulator";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
mainProgram = "ghdl";
|
||||
maintainers = with lib.maintainers; [ lucus16 thoughtpolice ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
@ -15666,13 +15666,11 @@ with pkgs;
|
||||
meta.broken = stdenv.hostPlatform.isDarwin;
|
||||
});
|
||||
|
||||
ghdl = ghdl-mcode;
|
||||
ghdl-mcode = callPackage ../by-name/gh/ghdl/package.nix { backend = "mcode"; };
|
||||
|
||||
ghdl-mcode = callPackage ../development/compilers/ghdl {
|
||||
backend = "mcode";
|
||||
};
|
||||
ghdl-gcc = callPackage ../by-name/gh/ghdl/package.nix { backend = "gcc"; };
|
||||
|
||||
ghdl-llvm = callPackage ../development/compilers/ghdl {
|
||||
ghdl-llvm = callPackage ../by-name/gh/ghdl/package.nix {
|
||||
backend = "llvm";
|
||||
inherit (llvmPackages_15) llvm;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user