sdcc: refactor

- remove null'ities
- assert validity of excludedPorts list
- use finalAttrs design pattern
- split outputs
- add meta.mainProgram,
This commit is contained in:
Anderson Torres
2023-11-11 16:48:40 -03:00
parent 2423baa7f1
commit 10b64a28c4
+53 -24
View File
@@ -1,27 +1,53 @@
{ lib, stdenv, fetchurl, autoconf, bison, boost, flex, texinfo, zlib, gputils ? null
, excludePorts ? [] }:
{ lib
, stdenv
, fetchurl
, autoconf
, bison
, boost
, flex
, gputils
, texinfo
, zlib
, withGputils ? false
, excludePorts ? []
}:
let
# choices: mcs51 z80 z180 r2k r3ka gbz80 tlcs90 ds390 ds400 pic14 pic16 hc08 s08 stm8
excludedPorts = excludePorts ++ (lib.optionals (gputils == null) [ "pic14" "pic16" ]);
in
stdenv.mkDerivation rec {
assert lib.subtractLists [
"ds390" "ds400" "gbz80" "hc08" "mcs51" "pic14" "pic16" "r2k" "r3ka" "s08"
"stm8" "tlcs90" "z80" "z180"
] excludePorts == [];
stdenv.mkDerivation (finalAttrs: {
pname = "sdcc";
version = "4.2.0";
src = fetchurl {
url = "mirror://sourceforge/sdcc/sdcc-src-${version}.tar.bz2";
sha256 = "sha256-tJuuHSO81gV6gsT/5WE/nNDLz9HpQOnYTEv+nfCowFM=";
url = "mirror://sourceforge/sdcc/sdcc-src-${finalAttrs.version}.tar.bz2";
hash = "sha256-tJuuHSO81gV6gsT/5WE/nNDLz9HpQOnYTEv+nfCowFM=";
};
outputs = [ "out" "doc" "man" ];
enableParallelBuilding = true;
buildInputs = [ boost gputils texinfo zlib ];
nativeBuildInputs = [
autoconf
bison
flex
];
nativeBuildInputs = [ autoconf bison flex ];
buildInputs = [
boost
texinfo
zlib
] ++ lib.optionals withGputils [
gputils
];
configureFlags = map (f: "--disable-${f}-port") excludedPorts;
configureFlags = let
excludedPorts = excludePorts
++ (lib.optionals (!withGputils) [ "pic14" "pic16" ]);
in
map (f: "--disable-${f}-port") excludedPorts;
preConfigure = ''
if test -n "''${dontStrip-}"; then
@@ -29,19 +55,22 @@ stdenv.mkDerivation rec {
fi
'';
meta = with lib; {
meta = {
homepage = "https://sdcc.sourceforge.net/";
description = "Small Device C Compiler";
longDescription = ''
SDCC is a retargettable, optimizing ANSI - C compiler suite that targets
the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim
(formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based
(hc08, s08) and Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000,
Rabbit 3000A). Work is in progress on supporting the Microchip PIC16 and
PIC18 targets. It can be retargeted for other microprocessors.
the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.),
Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola)
HC08 based (hc08, s08) and Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit
2000/3000, Rabbit 3000A). Work is in progress on supporting the Microchip
PIC16 and PIC18 targets. It can be retargeted for other microprocessors.
'';
homepage = "https://sdcc.sourceforge.net/";
license = with licenses; if (gputils == null) then gpl2Plus else unfreeRedistributable;
maintainers = with maintainers; [ bjornfor yorickvp ];
platforms = platforms.all;
license = if withGputils
then lib.licenses.unfreeRedistributable
else lib.licenses.gpl2Plus;
mainProgram = "sdcc";
maintainers = with lib.maintainers; [ bjornfor yorickvp ];
platforms = lib.platforms.all;
};
}
})