about summary refs log tree commit diff
path: root/pkgs/development/libraries/libftdi
diff options
context:
space:
mode:
authorOPNA2608 <christoph.neidahl@gmail.com>2021-03-23 11:10:39 +0100
committerOPNA2608 <christoph.neidahl@gmail.com>2021-03-23 11:10:39 +0100
commit06c6ec1c9938133107971cd04bb343aaadd0efed (patch)
tree1b7dd17b4448ba90cb28235d0c90a06ded72a1e7 /pkgs/development/libraries/libftdi
parentbef62e8c81db43973597a62f8b35896ea80ece0a (diff)
libftdi1: 1.4 -> 1.5, refactor
Diffstat (limited to 'pkgs/development/libraries/libftdi')
-rw-r--r--pkgs/development/libraries/libftdi/1.x.nix76
1 files changed, 51 insertions, 25 deletions
diff --git a/pkgs/development/libraries/libftdi/1.x.nix b/pkgs/development/libraries/libftdi/1.x.nix
index ae599a97529bf..30c9e294ecc84 100644
--- a/pkgs/development/libraries/libftdi/1.x.nix
+++ b/pkgs/development/libraries/libftdi/1.x.nix
@@ -1,47 +1,73 @@
-{ lib, stdenv, fetchurl, cmake, pkg-config, libusb1, libconfuse
-, cppSupport ? true, boost ? null
-, pythonSupport ? true, python3 ? null, swig ? null
-, docSupport ? true, doxygen ? null
+{ lib
+, stdenv
+, fetchgit
+, cmake
+, pkg-config
+, libusb1
+, libconfuse
+, cppSupport ? true
+, boost
+, pythonSupport ? true
+, python3
+, swig
+, docSupport ? true
+, doxygen
+, graphviz
 }:
 
-assert cppSupport -> boost != null;
-assert pythonSupport -> python3 != null && swig != null;
-assert docSupport -> doxygen != null;
-
+let
+  inherit (lib) optionals optionalString;
+  onOff = a: if a then "ON" else "OFF";
+in
 stdenv.mkDerivation rec {
-  name = "libftdi1-1.4";
+  pname = "libftdi";
+  version = "1.5";
 
-  src = fetchurl {
-    url = "https://www.intra2net.com/en/developer/libftdi/download/${name}.tar.bz2";
-    sha256 = "0x0vncf6i92slgrn0h7ghkskqbglbs534220qa84d0qg114zndpc";
+  src = fetchgit {
+    url = "git://developer.intra2net.com/libftdi";
+    rev = "v${version}";
+    sha256 = "0vipg3y0kbbzjhxky6hfyxy42mpqhvwn1r010zr5givcfp8ghq26";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
-  buildInputs = with lib; [ libconfuse ]
+  nativeBuildInputs = [ cmake pkg-config ]
+    ++ optionals docSupport [ doxygen graphviz ]
+    ++ optionals pythonSupport [ swig ];
+
+  buildInputs = [ libconfuse ]
     ++ optionals cppSupport [ boost ]
-    ++ optionals pythonSupport [ python3 swig ]
-    ++ optionals docSupport [ doxygen ];
+    ++ optionals pythonSupport [ python3 ];
 
-  preBuild = lib.optionalString docSupport ''
-    make doc_i
-  '';
+  cmakeFlags = [
+    "-DFTDIPP=${onOff cppSupport}"
+    "-DBUILD_TESTS=${onOff cppSupport}"
+    "-DLINK_PYTHON_LIBRARY=${onOff pythonSupport}"
+    "-DPYTHON_BINDINGS=${onOff pythonSupport}"
+    "-DDOCUMENTATION=${onOff docSupport}"
+  ];
 
   propagatedBuildInputs = [ libusb1 ];
 
   postInstall = ''
     mkdir -p "$out/etc/udev/rules.d/"
     cp ../packages/99-libftdi.rules "$out/etc/udev/rules.d/"
+  '' + optionalString docSupport ''
     cp -r doc/man "$out/share/"
-  '' + lib.optionalString docSupport ''
-    mkdir -p "$out/share/libftdi/doc/"
-    cp -r doc/html "$out/share/libftdi/doc/"
+    cp -r doc/html "$out/share/doc/libftdi1/"
+  '';
+
+  postFixup = optionalString cppSupport ''
+    # This gets misassigned to the C++ version's path for some reason
+    for fileToFix in $out/{bin/libftdi1-config,lib/pkgconfig/libftdi1.pc}; do
+      substituteInPlace $fileToFix \
+        --replace "$out/include/libftdipp1" "$out/include/libftdi1"
+    done
   '';
 
   meta = with lib; {
     description = "A library to talk to FTDI chips using libusb";
     homepage = "https://www.intra2net.com/en/developer/libftdi/";
-    license = with licenses; [ lgpl2 gpl2 ];
-    platforms = with platforms; linux ++ darwin;
-    maintainers = [ maintainers.bjornfor ];
+    license = with licenses; [ lgpl2Only gpl2Only ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ bjornfor ];
   };
 }