sdcc: refactor
- remove null'ities - assert validity of excludedPorts list - use finalAttrs design pattern - split outputs - add meta.mainProgram,
This commit is contained in:
@@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user