chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / gh / ghdl / package.nix
blob181647ca4e2e40a4f6671936e7bec41e0263390a
1 { stdenv
2 , fetchFromGitHub
3 , callPackage
4 , gnat
5 , zlib
6 , llvm
7 , lib
8 , gcc-unwrapped
9 , texinfo
10 , gmp
11 , mpfr
12 , libmpc
13 , gnutar
14 , glibc
15 , makeWrapper
16 , backend ? "mcode"
19 assert backend == "mcode" || backend == "llvm" || backend == "gcc";
21 stdenv.mkDerivation (finalAttrs: {
22   pname = "ghdl-${backend}";
23   version = "4.1.0";
25   src = fetchFromGitHub {
26     owner  = "ghdl";
27     repo   = "ghdl";
28     rev    = "v${finalAttrs.version}";
29     hash   = "sha256-tPSHer3qdtEZoPh9BsEyuTOrXgyENFUyJqnUS3UYAvM=";
30   };
32   LIBRARY_PATH = "${stdenv.cc.libc}/lib";
34   nativeBuildInputs = [
35     gnat
36   ] ++ lib.optionals (backend == "gcc") [
37     texinfo
38     makeWrapper
39   ];
40   buildInputs = [
41     zlib
42   ] ++ lib.optionals (backend == "llvm") [
43     llvm
44   ] ++ lib.optionals (backend == "gcc") [
45     gmp
46     mpfr
47     libmpc
48   ];
49   propagatedBuildInputs = [
50   ] ++ lib.optionals (backend == "llvm" || backend == "gcc") [
51     zlib
52   ];
54   preConfigure = ''
55     # If llvm 7.0 works, 7.x releases should work too.
56     sed -i 's/check_version  7.0/check_version  7/g' configure
57   '' + lib.optionalString (backend == "gcc") ''
58     ${gnutar}/bin/tar -xf ${gcc-unwrapped.src}
59   '';
61   configureFlags = [
62     # See https://github.com/ghdl/ghdl/pull/2058
63     "--disable-werror"
64     "--enable-synth"
65   ] ++ lib.optionals (backend == "llvm") [
66     "--with-llvm-config=${llvm.dev}/bin/llvm-config"
67   ] ++ lib.optionals (backend == "gcc") [
68     "--with-gcc=gcc-${gcc-unwrapped.version}"
69   ];
71   buildPhase = lib.optionalString (backend == "gcc") ''
72     make copy-sources
73     mkdir gcc-objs
74     cd gcc-objs
75     ../gcc-${gcc-unwrapped.version}/configure \
76       --with-native-system-header-dir=/include \
77       --with-build-sysroot=${lib.getDev glibc} \
78       --prefix=$out \
79       --enable-languages=c,vhdl \
80       --disable-bootstrap \
81       --disable-lto \
82       --disable-multilib \
83       --disable-libssp \
84       --disable-libgomp \
85       --disable-libquadmath
86     make -j $NIX_BUILD_CORES
87     make install
88     cd ../
89     make -j $NIX_BUILD_CORES ghdllib
90   '';
92   postFixup = lib.optionalString (backend == "gcc") ''
93     wrapProgram $out/bin/ghdl \
94       --set LIBRARY_PATH ${lib.makeLibraryPath [
95         glibc
96       ]}
97   '';
99   hardeningDisable = [
100   ] ++ lib.optionals (backend == "gcc") [
101     # GCC compilation fails with format errors
102     "format"
103   ];
105   enableParallelBuilding = true;
107   passthru = {
108     # run with:
109     # nix-build -A ghdl-mcode.passthru.tests
110     # nix-build -A ghdl-llvm.passthru.tests
111     # nix-build -A ghdl-gcc.passthru.tests
112     tests = {
113       simple = callPackage ./test-simple.nix { inherit backend; };
114     };
115   };
117   meta = {
118     homepage = "https://github.com/ghdl/ghdl";
119     description = "VHDL 2008/93/87 simulator";
120     license = lib.licenses.gpl2Plus;
121     mainProgram = "ghdl";
122     maintainers = with lib.maintainers; [ lucus16 thoughtpolice ];
123     platforms =
124       lib.platforms.linux
125       ++ lib.optionals (backend == "mcode" || backend == "llvm") [ "x86_64-darwin" ];
126   };