gnu: Add lufa.
* gnu/packages/avr-xyz.scm (lufa): New variable.
This commit is contained in:
parent
45be44bf3d
commit
1cb7404fee
1 changed files with 83 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||||
|
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -29,6 +30,7 @@ (define-module (gnu packages avr-xyz)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
#:use-module (gnu packages avr)
|
#:use-module (gnu packages avr)
|
||||||
|
#:use-module (gnu packages documentation)
|
||||||
#:use-module (gnu packages elf)
|
#:use-module (gnu packages elf)
|
||||||
#:use-module (gnu packages gl)
|
#:use-module (gnu packages gl)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
|
@ -95,3 +97,84 @@ (define-public simavr
|
||||||
in the emulated code using an @code{.elf} section. You can also load
|
in the emulated code using an @code{.elf} section. You can also load
|
||||||
multipart HEX files.")
|
multipart HEX files.")
|
||||||
(license license:gpl3)))
|
(license license:gpl3)))
|
||||||
|
|
||||||
|
(define-public lufa
|
||||||
|
(package
|
||||||
|
(name "lufa")
|
||||||
|
(version "210130")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/abcminiuser/lufa")
|
||||||
|
(commit (string-append "LUFA-" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0ylr7qsiikcy827k18zj1vdzf0kb8hb0gjmifd75y8krkhhar49g"))))
|
||||||
|
(outputs '("bootloaders" "demos" "projects" "doc"))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
;; There are tests, but even LUFA's own CI doesn't run them (they are
|
||||||
|
;; only built).
|
||||||
|
(list
|
||||||
|
#:tests? #f
|
||||||
|
#:modules '((guix build gnu-build-system)
|
||||||
|
(guix build utils)
|
||||||
|
(ice-9 match)
|
||||||
|
(srfi srfi-26))
|
||||||
|
#:make-flags
|
||||||
|
#~(list (string-append "SHELL="(search-input-file %build-inputs
|
||||||
|
"bin/sh")))
|
||||||
|
#:phases #~(modify-phases %standard-phases
|
||||||
|
(delete 'configure)
|
||||||
|
(add-before 'build 'build-documentation
|
||||||
|
(lambda* (#:key make-flags #:allow-other-keys)
|
||||||
|
(apply invoke "make" "-j" (number->string
|
||||||
|
(or (parallel-job-count)
|
||||||
|
1))
|
||||||
|
"doxygen"
|
||||||
|
;; Ignore errors (see:
|
||||||
|
;; https://github.com/abcminiuser/lufa/issues/90).
|
||||||
|
"-i"
|
||||||
|
make-flags)))
|
||||||
|
(replace 'install
|
||||||
|
;; There is no default install target as the library is
|
||||||
|
;; intended to be integrated in source form in a
|
||||||
|
;; project. Install the example projects and demos
|
||||||
|
;; binaries as well as the documentation.
|
||||||
|
(lambda _
|
||||||
|
(let ((doc (string-append #$output:doc
|
||||||
|
"/share/doc/lufa/"))
|
||||||
|
(html-dirs (find-files "." "^html$"
|
||||||
|
#:directories? #t)))
|
||||||
|
(for-each (cut install-file <> #$output:bootloaders)
|
||||||
|
(find-files "Bootloaders" "\\.hex$"))
|
||||||
|
(for-each (cut install-file <> #$output:demos)
|
||||||
|
(find-files "Demos" "\\.hex$"))
|
||||||
|
(for-each (cut install-file <> #$output:projects)
|
||||||
|
(find-files "Projects" "\\.hex$"))
|
||||||
|
;; Install Doxygen generated HTML documentation.
|
||||||
|
(for-each
|
||||||
|
(lambda (html)
|
||||||
|
(let* ((suffix "Documentation/html")
|
||||||
|
(l (string-length suffix))
|
||||||
|
(dest (string-append
|
||||||
|
doc
|
||||||
|
(string-drop
|
||||||
|
(if (string-suffix? suffix html)
|
||||||
|
(string-drop-right html l)
|
||||||
|
(error "unexpected path" html))
|
||||||
|
1)))) ;drop leading "."
|
||||||
|
(mkdir-p dest)
|
||||||
|
(copy-recursively html dest)))
|
||||||
|
html-dirs)))))))
|
||||||
|
(native-inputs (list doxygen (make-avr-toolchain)))
|
||||||
|
(home-page "https://www.lufa-lib.org/")
|
||||||
|
(synopsis "Lightweight USB Framework for AVRs")
|
||||||
|
(description "UFA is a simple to use, lightweight framework which sits
|
||||||
|
atop the hardware USB controller in specific AVR microcontroller models, and
|
||||||
|
allows for the quick and easy creation of complex USB devices and hosts. This
|
||||||
|
package contains the user-submitted projects and bootloaders for use with
|
||||||
|
compatible microcontroller models, as well as the demos and the
|
||||||
|
documentation.")
|
||||||
|
(license license:expat))) ;see LUFA/License.txt
|
||||||
|
|
Loading…
Reference in a new issue