summary refs log tree commit diff
path: root/pkgs/by-name/sd/sdcc/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/sd/sdcc/package.nix')
-rw-r--r--pkgs/by-name/sd/sdcc/package.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/pkgs/by-name/sd/sdcc/package.nix b/pkgs/by-name/sd/sdcc/package.nix
new file mode 100644
index 00000000000..eaac606fbdb
--- /dev/null
+++ b/pkgs/by-name/sd/sdcc/package.nix
@@ -0,0 +1,76 @@
+{ lib
+, stdenv
+, fetchurl
+, autoconf
+, bison
+, boost
+, flex
+, gputils
+, texinfo
+, zlib
+, withGputils ? false
+, excludePorts ? []
+}:
+
+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-${finalAttrs.version}.tar.bz2";
+    hash = "sha256-tJuuHSO81gV6gsT/5WE/nNDLz9HpQOnYTEv+nfCowFM=";
+  };
+
+  outputs = [ "out" "doc" "man" ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    autoconf
+    bison
+    flex
+  ];
+
+  buildInputs = [
+    boost
+    texinfo
+    zlib
+  ] ++ lib.optionals withGputils [
+    gputils
+  ];
+
+  configureFlags = let
+    excludedPorts = excludePorts
+                    ++ (lib.optionals (!withGputils) [ "pic14" "pic16" ]);
+  in
+    map (f: "--disable-${f}-port") excludedPorts;
+
+  preConfigure = ''
+    if test -n "''${dontStrip-}"; then
+      export STRIP=none
+    fi
+  '';
+
+  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.
+    '';
+    license = if withGputils
+              then lib.licenses.unfreeRedistributable
+              else lib.licenses.gpl2Plus;
+    mainProgram = "sdcc";
+    maintainers = with lib.maintainers; [ bjornfor yorickvp ];
+    platforms = lib.platforms.all;
+  };
+})