parent
bef62e8c81
commit
06c6ec1c99
@ -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 ]; |
||||
}; |
||||
} |
||||
|
Loading…
Reference in new issue