about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/embedded/openocd/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/embedded/openocd/default.nix')
-rw-r--r--nixpkgs/pkgs/development/embedded/openocd/default.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/embedded/openocd/default.nix b/nixpkgs/pkgs/development/embedded/openocd/default.nix
new file mode 100644
index 000000000000..7b3a16fb75e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/embedded/openocd/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, lib
+, fetchurl
+, pkg-config
+, hidapi
+, libftdi1
+, libusb1
+}:
+
+stdenv.mkDerivation rec {
+  pname = "openocd";
+  version = "0.11.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/${pname}/${pname}/${version}/${pname}-${version}.tar.bz2";
+    sha256 = "0z8y7mmv0mhn2l5gs3vz6l7cnwak7agklyc7ml33f7gz99rwx8s3";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ hidapi libftdi1 libusb1 ];
+
+  configureFlags = [
+    "--enable-jtag_vpi"
+    "--enable-usb_blaster_libftdi"
+    (lib.enableFeature (! stdenv.isDarwin) "amtjtagaccel")
+    (lib.enableFeature (! stdenv.isDarwin) "gw16012")
+    "--enable-presto_libftdi"
+    "--enable-openjtag_ftdi"
+    (lib.enableFeature (! stdenv.isDarwin) "oocd_trace")
+    "--enable-buspirate"
+    (lib.enableFeature stdenv.isLinux "sysfsgpio")
+    "--enable-remote-bitbang"
+  ];
+
+  NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [
+    "-Wno-error=cpp"
+    "-Wno-error=strict-prototypes" # fixes build failure with hidapi 0.10.0
+  ];
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    mkdir -p "$out/etc/udev/rules.d"
+    rules="$out/share/openocd/contrib/60-openocd.rules"
+    if [ ! -f "$rules" ]; then
+        echo "$rules is missing, must update the Nix file."
+        exit 1
+    fi
+    ln -s "$rules" "$out/etc/udev/rules.d/"
+  '';
+
+  meta = with lib; {
+    description = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing";
+    longDescription = ''
+      OpenOCD provides on-chip programming and debugging support with a layered
+      architecture of JTAG interface and TAP support, debug target support
+      (e.g. ARM, MIPS), and flash chip drivers (e.g. CFI, NAND, etc.).  Several
+      network interfaces are available for interactiving with OpenOCD: HTTP,
+      telnet, TCL, and GDB.  The GDB server enables OpenOCD to function as a
+      "remote target" for source-level debugging of embedded systems using the
+      GNU GDB program.
+    '';
+    homepage = "https://openocd.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ bjornfor prusnak ];
+    platforms = platforms.unix;
+  };
+}