ieda: init at 0-unstable-2024-10-11 (#338769)
[NixPkgs.git] / pkgs / by-name / av / avrdude / package.nix
blobffa722674445bb32723a9db8cb777bf74ef1c8af
2   lib,
3   callPackage,
4   stdenv,
5   fetchFromGitHub,
6   cmake,
7   bison,
8   flex,
9   pkg-config,
10   libusb1,
11   elfutils,
12   libftdi1,
13   readline,
14   hidapi,
15   libserialport,
16   libusb-compat-0_1,
17   # Documentation building doesn't work on Darwin. It fails with:
18   #   Undefined subroutine &Locale::Messages::dgettext called in ... texi2html
19   #
20   # https://github.com/NixOS/nixpkgs/issues/224761
21   docSupport ? (!stdenv.hostPlatform.isDarwin),
22   texliveMedium,
23   texinfo,
24   texi2html,
25   unixtools,
28 let
29   useElfutils = lib.meta.availableOn stdenv.hostPlatform elfutils;
32 stdenv.mkDerivation (finalAttrs: {
33   pname = "avrdude";
34   version = "8.0";
36   src = fetchFromGitHub {
37     owner = "avrdudes";
38     repo = "avrdude";
39     rev = "v${finalAttrs.version}";
40     sha256 = "w58HVCvKuWpGJwllupbj7ndeq4iE9LPs/IjFSUN0DOU=";
41   };
43   nativeBuildInputs =
44     [
45       cmake
46       bison
47       flex
48       pkg-config
49     ]
50     ++ lib.optionals docSupport [
51       unixtools.more
52       texliveMedium
53       texinfo
54       texi2html
55     ];
57   buildInputs = [
58     (if useElfutils then elfutils else finalAttrs.finalPackage.passthru.libelf)
59     hidapi
60     libusb1
61     libftdi1
62     libserialport
63     readline
64     libusb-compat-0_1
65   ];
67   postPatch = lib.optionalString (!useElfutils) ''
68     # vendored libelf is a static library
69     sed -i "s/PREFERRED_LIBELF elf/PREFERRED_LIBELF libelf.a elf/" CMakeLists.txt
70   '';
72   # Not used:
73   #   -DHAVE_LINUXGPIO=ON    because it's incompatible with libgpiod 2.x
74   cmakeFlags =
75     lib.optionals docSupport [ "-DBUILD_DOC=ON" ]
76     ++ lib.optionals stdenv.hostPlatform.isLinux [
77       "-DHAVE_LINUXSPI=ON"
78       "-DHAVE_PARPORT=ON"
79     ];
81   passthru = {
82     # Vendored and mutated copy of libelf for avrdudes use.
83     # Produces a static library only.
84     libelf = callPackage ./libelf.nix { };
85   };
87   meta = with lib; {
88     description = "Command-line tool for programming Atmel AVR microcontrollers";
89     mainProgram = "avrdude";
90     longDescription = ''
91       AVRDUDE (AVR Downloader/UploaDEr) is an utility to
92       download/upload/manipulate the ROM and EEPROM contents of AVR
93       microcontrollers using the in-system programming technique (ISP).
94     '';
95     homepage = "https://www.nongnu.org/avrdude/";
96     license = licenses.gpl2Plus;
97     platforms = with platforms; linux ++ darwin;
98     maintainers = [ maintainers.bjornfor ];
99   };