1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
4 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
5 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
6 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
7 ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
8 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
10 ;;; This file is part of GNU Guix.
12 ;;; GNU Guix is free software; you can redistribute it and/or modify it
13 ;;; under the terms of the GNU General Public License as published by
14 ;;; the Free Software Foundation; either version 3 of the License, or (at
15 ;;; your option) any later version.
17 ;;; GNU Guix is distributed in the hope that it will be useful, but
18 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 ;;; GNU General Public License for more details.
22 ;;; You should have received a copy of the GNU General Public License
23 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25 (define-module (gnu packages engineering)
26 #:use-module (guix packages)
27 #:use-module (guix download)
28 #:use-module (guix gexp)
29 #:use-module (guix git-download)
30 #:use-module (guix monads)
31 #:use-module (guix store)
32 #:use-module (guix utils)
33 #:use-module ((srfi srfi-1) #:hide (zip))
34 #:use-module ((guix licenses) #:prefix license:)
35 #:use-module (guix build-system cmake)
36 #:use-module (guix build-system gnu)
37 #:use-module (guix build-system python)
38 #:use-module (gnu packages)
39 #:use-module (gnu packages algebra)
40 #:use-module (gnu packages autotools)
41 #:use-module (gnu packages base)
42 #:use-module (gnu packages bison)
43 #:use-module (gnu packages boost)
44 #:use-module (gnu packages check)
45 #:use-module (gnu packages compression)
46 #:use-module (gnu packages curl)
47 #:use-module (gnu packages flex)
48 #:use-module (gnu packages fontutils)
49 #:use-module (gnu packages freedesktop)
50 #:use-module (gnu packages gcc)
51 #:use-module (gnu packages gd)
52 #:use-module (gnu packages gettext)
53 #:use-module (gnu packages ghostscript)
54 #:use-module (gnu packages gl)
55 #:use-module (gnu packages glib)
56 #:use-module (gnu packages gnome)
57 #:use-module (gnu packages gtk)
58 #:use-module (gnu packages guile)
59 #:use-module (gnu packages image)
60 #:use-module (gnu packages imagemagick)
61 #:use-module (gnu packages linux) ;FIXME: for pcb
62 #:use-module (gnu packages m4)
63 #:use-module (gnu packages maths)
64 #:use-module (gnu packages multiprecision)
65 #:use-module (gnu packages mpi)
66 #:use-module (gnu packages ncurses)
67 #:use-module (gnu packages perl)
68 #:use-module (gnu packages pkg-config)
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages qt)
71 #:use-module (gnu packages readline)
72 #:use-module (gnu packages swig)
73 #:use-module (gnu packages tcl)
74 #:use-module (gnu packages tls)
75 #:use-module (gnu packages tex)
76 #:use-module (gnu packages wxwidgets)
77 #:use-module (gnu packages xorg))
79 (define-public librecad
86 "https://github.com/LibreCAD/LibreCAD/archive/"
88 (file-name (string-append name "-" version ".tar.gz"))
91 "01nvc1g3si05r5np1pzn62ah9w84p8nxa32wqrjh6gdi17jfvi3l"))))
92 (build-system gnu-build-system)
95 (modify-phases %standard-phases
96 (add-after 'unpack 'patch-paths
97 (lambda* (#:key outputs #:allow-other-keys)
98 (let ((out (assoc-ref outputs "out")))
99 (substitute* "librecad/src/lib/engine/rs_system.cpp"
100 (("/usr/share") (string-append out "/share"))))))
102 (lambda* (#:key inputs #:allow-other-keys)
103 (system* "qmake" (string-append "BOOST_DIR="
104 (assoc-ref inputs "boost")))))
106 (lambda* (#:key outputs #:allow-other-keys)
107 (let* ((out (assoc-ref outputs "out"))
108 (bin (string-append out "/bin"))
109 (share (string-append out "/share/librecad")))
111 (install-file "unix/librecad" bin)
113 (copy-recursively "unix/resources" share)))))))
116 ("muparser" ,muparser)
117 ("freetype" ,freetype)
121 `(("pkg-config" ,pkg-config)
123 (home-page "http://librecad.org/")
124 (synopsis "Computer-aided design (CAD) application")
126 "LibreCAD is a 2D Computer-aided design (CAD) application for creating
128 (license license:gpl2)))
130 (define-public geda-gaf
137 "http://ftp.geda-project.org/geda-gaf/unstable/v"
138 (version-major+minor version) "/"
139 version "/geda-gaf-" version ".tar.gz"))
142 "14mk45pfz11v54q66gafw2l68n1p5ssvvjmdm8ffgc8x1w5ajfrz"))))
143 (build-system gnu-build-system)
146 (modify-phases %standard-phases
147 ;; tests require a writable HOME
148 (add-before 'check 'set-home
150 (setenv "HOME" (getenv "TMPDIR"))
153 (let ((pcb (assoc-ref %build-inputs "pcb")))
154 (list (string-append "--with-pcb-datadir=" pcb "/share")
155 (string-append "--with-pcb-lib-path="
156 pcb "/share/pcb/pcblib-newlib:"
157 pcb "/share/pcb/newlib")))))
162 ("desktop-file-utils" ,desktop-file-utils)
163 ("shared-mime-info" ,shared-mime-info)
167 `(("pkg-config" ,pkg-config)
168 ("perl" ,perl))) ; for tests
169 (home-page "http://geda-project.org/")
170 (synopsis "Schematic capture, netlister, symbols, symbol checker, and utils")
172 "Gaf stands for “gschem and friends”. It is a subset of the entire tool
173 suite grouped together under the gEDA name. gEDA/gaf is a collection of tools
174 which currently includes: gschem, a schematic capture program; gnetlist, a
175 netlist generation program; gsymcheck, a syntax checker for schematic symbols;
176 gattrib, a spreadsheet programm that manipulates the properties of symbols of
177 a schematic; libgeda, libraries for gschem gnetlist and gsymcheck; gsch2pcb, a
178 tool to forward annotation from your schematic to layout using PCB; some minor
180 (license license:gpl2+)))
188 (uri (string-append "mirror://sourceforge/pcb/pcb/pcb-" version
189 "/pcb-" version ".tar.gz"))
192 "1i6sk8g8h9avms142wl07yv20m1cm4c3fq3v6hybrhdxs2n17plf"))))
193 (build-system gnu-build-system)
196 (modify-phases %standard-phases
197 (add-after 'unpack 'use-wish8.6
199 (substitute* "configure"
200 (("wish85") "wish8.6"))
202 (add-after 'install 'wrap
203 (lambda* (#:key inputs outputs #:allow-other-keys)
204 ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails. Pending a
205 ;; fix of the mesa package we wrap the pcb executable such that
206 ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
207 (let* ((out (assoc-ref outputs "out"))
208 (path (string-append (assoc-ref inputs "udev") "/lib")))
209 (wrap-program (string-append out "/bin/pcb")
210 `("LD_LIBRARY_PATH" ":" prefix (,path))))
212 (add-before 'check 'pre-check
215 (setenv "DISPLAY" ":1")
220 ("udev" ,eudev) ;FIXME: required by mesa
224 ("gtkglext" ,gtkglext)
225 ("desktop-file-utils" ,desktop-file-utils)
226 ("shared-mime-info" ,shared-mime-info)
229 `(("pkg-config" ,pkg-config)
230 ("intltool" ,intltool)
234 ("imagemagick" ,imagemagick)
236 ("ghostscript" ,ghostscript)
237 ("xvfb" ,xorg-server)))
238 (home-page "http://pcb.geda-project.org/")
239 (synopsis "Design printed circuit board layouts")
241 "GNU PCB is an interactive tool for editing printed circuit board
242 layouts. It features a rats-nest implementation, schematic/netlist import,
243 and design rule checking. It also includes an autorouter and a trace
244 optimizer; and it can produce photorealistic and design review images.")
245 (license license:gpl2+)))
247 (define-public pcb-rnd
248 (package (inherit pcb)
253 (uri (string-append "http://repo.hu/projects/pcb-rnd/releases/"
254 "pcb-rnd-" version ".tar.gz"))
257 "0pycynla60b96jkb6fh6f4sx663pqbzjwnixhw5ym8sym2absm09"))))
259 `(#:tests? #f ; no check target
261 (modify-phases %standard-phases
262 (add-after 'unpack 'cc-is-gcc
263 (lambda _ (setenv "CC" "gcc") #t))
265 ;; The configure script doesn't tolerate most of our configure flags.
266 (lambda* (#:key outputs #:allow-other-keys)
267 (zero? (system* "sh" "configure"
268 (string-append "--prefix="
269 (assoc-ref outputs "out")))))))))
270 (home-page "http://repo.hu/projects/pcb-rnd/")
271 (description "PCB RND is a fork of the GNU PCB circuit board editing tool
272 featuring various improvements and bug fixes.")))
274 (define-public fastcap
277 (version "2.0-18Sep92")
279 (method url-fetch/tarbomb)
280 (uri (string-append "http://www.rle.mit.edu/cpg/codes/"
281 name "-" version ".tgz"))
284 "0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k"))
286 ;; Remove a non-free file.
287 '(delete-file "doc/psfig.sty"))
288 (patches (search-patches "fastcap-mulSetup.patch"
289 "fastcap-mulGlobal.patch"))))
290 (build-system gnu-build-system)
292 `(("texlive" ,texlive)
293 ("ghostscript" ,ghostscript)))
295 `(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
297 #:tests? #f ;; no tests-suite
298 #:modules ((srfi srfi-1)
299 ,@%gnu-build-system-modules)
301 (modify-phases %standard-phases
302 (add-after 'build 'make-doc
304 (zero? (system* "make" "CC=gcc" "RM=rm" "SHELL=sh"
306 (add-before 'make-doc 'fix-doc
308 (substitute* "doc/Makefile" (("/bin/rm") (which "rm")))
309 (substitute* (find-files "doc" "\\.tex")
310 (("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
312 (string-append "\\includegraphics[scale=" scale "]{"
314 (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
316 (string-append "\\includegraphics[width=" width "]{"
318 (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
320 (string-append "\\includegraphics[height=" height "]{"
322 (("\\\\psfig\\{figure=([^,]*)\\}" all file)
323 (string-append "\\includegraphics{" file "}")))
324 (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
325 (("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
327 (string-append "\\documentclass[" options "]{"
329 "\\usepackage{graphicx}\n"
330 "\\usepackage{robinspace}"))
331 (("\\\\setlength\\{\\\\footheight\\}\\{.*\\}" all)
332 (string-append "%" all))
333 (("\\\\setstretch\\{.*\\}" all)
334 (string-append "%" all)))
337 (add-before 'install 'clean-bin
339 (delete-file (string-append (getcwd) "/bin/README"))
341 (add-before 'install 'make-pdf
343 (with-directory-excursion "doc"
345 (every (lambda (file)
346 (zero? (system* "dvips" file "-o")))
347 (find-files "." "\\.dvi"))
348 (every (lambda (file)
349 (zero? (system* "ps2pdf" file)))
350 '("mtt.ps" "ug.ps" "tcad.ps"))
351 (zero? (system* "make" "clean"))))))
353 (lambda* (#:key outputs #:allow-other-keys)
354 (let* ((out (assoc-ref outputs "out"))
355 (data (string-append out "/share"))
356 (bin (string-append out "/bin"))
357 (doc (string-append data "/doc/" ,name "-" ,version))
358 (examples (string-append doc "/examples")))
359 (with-directory-excursion "bin"
360 (for-each (lambda (f)
361 (install-file f bin))
362 (find-files "." ".*")))
363 (copy-recursively "doc" doc)
364 (copy-recursively "examples" examples)
366 (home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
367 (synopsis "Multipole-accelerated capacitance extraction program")
369 "Fastcap is a capacitance extraction program based on a
370 multipole-accelerated algorithm.")
371 (license (license:non-copyleft #f "See fastcap.c."))))
373 (define-public fasthenry
376 (version "3.0-12Nov96")
379 (file-name (string-append name "-" version ".tar.gz"))
381 "http://www.rle.mit.edu/cpg/codes/" name
382 "-" version ".tar.z"))
384 (base32 "1a06xyyd40zhknrkz17xppl2zd5ig4w9g1grc8qrs0zqqcl5hpzi"))
385 (patches (search-patches "fasthenry-spAllocate.patch"
386 "fasthenry-spBuild.patch"
387 "fasthenry-spUtils.patch"
388 "fasthenry-spSolve.patch"
389 "fasthenry-spFactor.patch"))))
390 (build-system gnu-build-system)
392 `(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
394 #:tests? #f ;; no tests-suite
395 #:modules ((srfi srfi-1)
396 ,@%gnu-build-system-modules)
398 (modify-phases %standard-phases
401 (lambda* (#:key outputs #:allow-other-keys)
402 (let* ((out (assoc-ref outputs "out"))
403 (data (string-append out "/share"))
404 (bin (string-append out "/bin"))
405 (doc (string-append data "/doc/" ,name "-" ,version))
406 (examples (string-append doc "/examples")))
407 (with-directory-excursion "bin"
408 (for-each (lambda (f)
409 (install-file f bin))
410 (find-files "." ".*")))
411 (copy-recursively "doc" doc)
412 (copy-recursively "examples" examples)
414 (home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
415 (synopsis "Multipole-accelerated inductance analysis program")
417 "Fasthenry is an inductance extraction program based on a
418 multipole-accelerated algorithm.")
419 (license (license:non-copyleft #f "See induct.c."))))
421 (define-public fritzing
427 (uri (string-append "https://github.com/fritzing/"
428 "fritzing-app/archive/" version ".tar.gz"))
429 (file-name (string-append name "-" version ".tar.gz"))
432 "15rwjp4xdj9w1z9f709rz9p0k2mi9k9idma9hvzkj5j8p04mg7yd"))))
433 (build-system gnu-build-system)
436 (modify-phases %standard-phases
438 (lambda* (#:key inputs outputs #:allow-other-keys)
439 (and (zero? (system* "tar"
440 "-xvf" (assoc-ref inputs "fritzing-parts-db")
442 (zero? (system* "qmake"
443 (string-append "PREFIX="
444 (assoc-ref outputs "out"))
445 "phoenix.pro"))))))))
448 ("qtserialport" ,qtserialport)
455 (uri (string-append "https://github.com/fritzing/"
456 "fritzing-parts/archive/" version ".tar.gz"))
457 (file-name (string-append "fritzing-parts-" version ".tar.gz"))
460 "0jqr8yjg7177f3pk1fcns584r0qavwpr280nggsi2ff3pwk5wpsz"))))))
461 (home-page "http://fritzing.org")
462 (synopsis "Electronic circuit design")
464 "The Fritzing application is @dfn{Electronic Design Automation} (EDA)
465 software with a low entry barrier, suited for the needs of makers and
466 hobbyists. It offers a unique real-life \"breadboard\" view, and a parts
467 library with many commonly used high-level components. Fritzing makes it very
468 easy to communicate about circuits, as well as to turn them into PCB layouts
469 ready for production.")
470 ;; Documentation and parts are released under CC-BY-SA 3.0; source code is
471 ;; released under GPLv3+.
472 (license (list license:gpl3+ license:cc-by-sa3.0))))
480 (uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-"
481 version "/gerbv-" version ".tar.gz"))
484 "0v6ry0mxi5qym4z0y0lpblxsw9dfjpgxs4c4v2ngg7yw4b3a59ks"))))
485 (build-system gnu-build-system)
488 (modify-phases %standard-phases
489 (add-after 'unpack 'autoconf
491 ;; Build rules contain references to Russian translation, but the
492 ;; needed files are missing; see
493 ;; http://sourceforge.net/p/gerbv/bugs/174/
494 (delete-file "po/LINGUAS")
495 (substitute* "man/Makefile.am"
496 (("PO_FILES= gerbv.ru.1.in.po") "")
497 (("man_MANS = gerbv.1 gerbv.ru.1") "man_MANS = gerbv.1"))
498 (zero? (system* "autoreconf" "-vfi")))))))
500 `(("autoconf" ,autoconf)
501 ("automake" ,automake)
503 ("gettext" ,gettext-minimal)
505 ("pkg-config" ,pkg-config)))
509 ("desktop-file-utils" ,desktop-file-utils)))
510 (home-page "http://gerbv.geda-project.org/")
511 (synopsis "Gerber file viewer")
513 "Gerbv is a viewer for files in the Gerber format (RS-274X only), which
514 is commonly used to represent printed circuit board (PCB) layouts. Gerbv lets
515 you load several files on top of each other, do measurements on the displayed
516 image, etc. Besides viewing Gerbers, you may also view Excellon drill files
517 as well as pick-place files.")
518 (license license:gpl2+)))
521 (let ((commit "0bc2354b8dcd1a82a0fd6647706b126045e52734"))
523 (name "ao-cad") ;XXX: really "ao", but it collides with libao
524 (version (string-append "0." (string-take commit 7)))
528 (url "https://github.com/mkeeter/ao")
532 "0lm7iljklafs8dhlvaab2yhwx4xymrdjrqk9c5xvn59hlvbgl1j5"))
533 (file-name (string-append name "-" version "-checkout"))
534 (modules '((guix build utils)))
536 ;; Remove bundled libraries: Eigen, glm, and catch. TODO:
537 ;; Unbundle efsw <https://github.com/diegostamigni/efsw>.
539 (delete-file-recursively "vendor")
541 ;; Use #include <catch.hpp>.
542 (substitute* (find-files "." "\\.[ch]pp$")
543 (("catch/catch\\.hpp")
545 (build-system cmake-build-system)
547 `(;; Have the RUNPATH of libao.so point to $libdir, where libefsw.so
549 #:configure-flags (list (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
551 (assoc-ref %outputs "out")
555 (modify-phases %standard-phases
556 (add-before 'build 'add-eigen-to-search-path
557 (lambda* (#:key inputs #:allow-other-keys)
558 ;; Allow things to find our own Eigen and Catch.
559 (let ((eigen (assoc-ref inputs "eigen")))
560 (setenv "CPLUS_INCLUDE_PATH"
561 (string-append eigen "/include/eigen3:"
562 (getenv "CPLUS_INCLUDE_PATH")))
564 (add-after 'install 'install-guile-bindings
565 (lambda* (#:key inputs outputs #:allow-other-keys)
566 ;; Install the Guile bindings (the build system only installs
568 (let* ((out (assoc-ref outputs "out"))
569 (moddir (string-append out "/share/guile/site/2.0")))
570 (install-file "bind/libao.so"
571 (string-append out "/lib"))
573 ;; Go to the source directory.
574 (with-directory-excursion ,(string-append "../"
577 (substitute* "bind/guile/ao/bind.scm"
578 (("\\(define libao \\(dynamic-link .*$")
579 (string-append "(define libao (dynamic-link \""
580 out "/lib/libao\")) ;")))
582 (for-each (lambda (file)
584 (string-append moddir
586 (find-files "bind/guile" "\\.scm$"))
588 (substitute* "bin/ao-guile"
589 (("\\(add-to-load-path .*")
590 (string-append "(add-to-load-path \"" moddir "\")")))
592 (install-file "bin/ao-guile"
593 (string-append out "/bin"))
595 ;; Allow Ao to dlopen the relevant GL libraries. Otherwise
597 ;; Couldn't find current GLX or EGL context.
598 (let ((mesa (assoc-ref inputs "mesa")))
599 (wrap-program (string-append out "/bin/ao-guile")
600 `("LD_LIBRARY_PATH" ":" prefix
601 (,(string-append mesa "/lib")))))
604 `(("pkg-config" ,pkg-config)))
607 ("catch" ,catch-framework)
610 ("libepoxy" ,libepoxy)
614 ("guile" ,guile-2.0)))
615 (home-page "http://www.mattkeeter.com/projects/ao/")
616 (synopsis "Tool for programmatic computer-aided design")
618 "Ao is a tool for programmatic computer-aided design (CAD). In Ao,
619 solid models are defined as Scheme scripts, and there are no opaque function
620 calls into the geometry kernel: everything is visible to the user. Even
621 fundamental, primitive shapes are represented as code in the user-level
623 (license (list license:lgpl2.1+ ;library
624 license:gpl2+))))) ;Guile bindings
626 ;; We use kicad from a git commit, because support for boost 1.61.0 has been
629 (let ((commit "4ee344e150bfaf3a6f3f7bf935fb96ae07c423fa")
633 (version (string-append "4.0-" revision "."
634 (string-take commit 7)))
639 (url "https://git.launchpad.net/kicad")
642 (base32 "0kf6r92nps0658i9n3p9vp5dzbssmc22lvjv5flyvnlf83l63s4n"))
643 (file-name (string-append name "-" version "-checkout"))))
644 (build-system cmake-build-system)
646 `(#:out-of-source? #t
647 #:tests? #f ; no tests
649 (list "-DKICAD_STABLE_VERSION=ON"
650 "-DKICAD_REPO_NAME=stable"
651 ,(string-append "-DKICAD_BUILD_VERSION=4.0-"
652 (string-take commit 7))
653 "-DCMAKE_BUILD_TYPE=Release"
654 "-DKICAD_SKIP_BOOST=ON"; Use our system's boost library.
655 "-DKICAD_SCRIPTING=ON"
656 "-DKICAD_SCRIPTING_MODULES=ON"
657 "-DKICAD_SCRIPTING_WXPYTHON=ON"
658 ;; Has to be set explicitely, as we don't have the wxPython
659 ;; headers in the wxwidgets store item, but in wxPython.
660 (string-append "-DCMAKE_CXX_FLAGS=-I"
661 (assoc-ref %build-inputs "wxpython")
663 "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
664 ;; TODO: Enable this when CA certs are working with curl.
665 "-DBUILD_GITHUB_PLUGIN=OFF")
667 (modify-phases %standard-phases
668 (add-after 'install 'wrap-program
669 ;; Ensure correct Python at runtime.
670 (lambda* (#:key inputs outputs #:allow-other-keys)
671 (let* ((out (assoc-ref outputs "out"))
672 (python (assoc-ref inputs "python"))
673 (file (string-append out "/bin/kicad"))
676 "/lib/python2.7/site-packages:"
677 (getenv "PYTHONPATH"))))
679 `("PYTHONPATH" ":" prefix (,path))
681 (,(string-append python "/bin:")))))
685 ("gettext" ,gnu-gettext)
686 ("pkg-config" ,pkg-config)
692 ("desktop-file-utils" ,desktop-file-utils)
695 ("hicolor-icon-theme" ,hicolor-icon-theme)
700 ("wxwidgets" ,wxwidgets-gtk2)
701 ("wxpython" ,python2-wxpython)))
702 (home-page "http://kicad-pcb.org/")
703 (synopsis "Electronics Design Automation Suite")
704 (description "Kicad is a program for the formation of printed circuit
705 boards and electrical circuits. The software has a number of programs that
706 perform specific functions, for example, pcbnew (Editing PCB), eeschema (editing
707 electrical diagrams), gerbview (viewing Gerber files) and others.")
708 (license license:gpl3+))))
710 (define-public kicad-library
711 (let ((version "4.0.4"))
713 (name "kicad-library")
718 "http://downloads.kicad-pcb.org/libraries/kicad-library-"
722 "1wyda58y39lhxml0xv1ngvddi0nqihx9bnlza46ajzms38ajvh12"))))
723 (build-system cmake-build-system)
725 `(#:out-of-source? #t
726 #:tests? #f ; no tests
728 (modify-phases %standard-phases
729 (add-after 'install 'install-footprints ; from footprints tarball
730 (lambda* (#:key inputs outputs #:allow-other-keys)
731 (zero? (system* "tar" "xvf"
732 (assoc-ref inputs "kicad-footprints")
733 "-C" (string-append (assoc-ref outputs "out")
734 "/share/kicad/modules")
735 "--strip-components=1"))))
736 ;; We change the default global footprint file, which is generated if
737 ;; it doesn't exist in user's home directory, from the one using the
738 ;; github plugin, to the one using the KISYSMOD environment path.
739 (add-after 'install-footprints 'use-pretty-footprint-table
740 (lambda* (#:key outputs #:allow-other-keys)
741 (let* ((out (assoc-ref outputs "out"))
742 (template-dir (string-append out "/share/kicad/template"))
743 (fp-lib-table (string-append template-dir "/fp-lib-table")))
744 (delete-file fp-lib-table)
745 (copy-file (string-append fp-lib-table ".for-pretty")
749 (list (search-path-specification
750 (variable "KISYSMOD") ; footprint path
751 (files '("share/kicad/modules")))
752 (search-path-specification
753 (variable "KISYS3DMOD") ; 3D model path
754 (files '("share/kicad/modules/packages3d")))))
755 ;; Kicad distributes footprints in a separate tarball
757 `(("kicad-footprints"
761 "http://downloads.kicad-pcb.org/libraries/kicad-footprints-"
765 "0ya4gg6clz3vp2wrb67xwg0bhwh5q8ag39jjmpcp4zjcqs1f48rb"))))))
766 (home-page "http://kicad-pcb.org/")
767 (synopsis "Libraries for kicad")
768 (description "This package provides Kicad component, footprint and 3D
769 render model libraries.")
770 (license license:lgpl2.0+))))
772 (define-public linsmith
779 "mirror://sourceforge/linsmith/linsmith/linsmith-"
780 version "/linsmith-" version ".tar.gz"))
783 "18qslhr2r45rhpj4v6bjcqx189vs0bflvsj271wr7w8kvh69qwvn"))))
784 (build-system gnu-build-system)
786 `(("pkg-config" ,pkg-config)
788 ("libgnome" ,libgnomeui)))
789 (home-page "http://jcoppens.com/soft/linsmith/index.en.php")
790 (synopsis "Smith Charting program")
791 (description "LinSmith is a Smith Charting program, mainly designed for
792 educational use. As such, there is an emphasis on capabilities that improve
793 the 'showing the effect of'-style of operation.")
794 (license license:gpl2+)))
803 (uri (string-append "http://libvolk.org/releases/volk-"
807 "1bz3ywc6y5wmz3i8p4z2wbzhns8bc0ywdkl9qnxpcvfcscarbdlh"))))
808 (build-system cmake-build-system)
812 `(("python-2", python-2)
813 ("python2-cheetah" ,python2-cheetah)))
814 (home-page "http://libvolk.org/")
815 (synopsis "Vector-Optimized Library of Kernels")
817 "@code{volk} contains procedures with machine-specific optimizations
818 for mathematical functions. It also provides an machine-independent
819 interface to select the best such procedures to use on a given system.")
820 (license license:gpl3+)))
822 (define-public minicom
829 (uri (string-append "https://alioth.debian.org/frs/download.php/"
830 "file/4215/" name "-" version ".tar.gz"))
833 "1wa1l36fa4npd21xa9nz60yrqwkk5cq713fa3p5v0zk7g9mq6bsk"))))
834 (build-system gnu-build-system)
836 `(#:configure-flags '("--enable-lock-dir=/var/lock")
838 (modify-phases %standard-phases
839 (add-after 'unpack 'patch-lock-check
841 (substitute* "configure"
842 (("test -d [$]UUCPLOCK") "true"))
845 `(("ncurses" ,ncurses)))
846 (home-page "https://alioth.debian.org/projects/minicom/")
847 (synopsis "Serial terminal emulator")
848 (description "@code{minicom} is a serial terminal emulator.")
849 (license license:gpl2+)))
851 (define-public harminv
859 "http://ab-initio.mit.edu/harminv/harminv-"
863 "1pmm8d6fx9ahhnk7w12bfa6zx3afbkg4gkvlvgwhpjxbcrvrp3jk"))))
864 (build-system gnu-build-system)
867 (modify-phases %standard-phases
868 (add-before 'configure 'fix-tests
870 (substitute* "./sines-test.sh"
871 ; change test frequency range - default fails
875 `(("fortran" ,gfortran)))
877 `(("lapack" ,lapack)))
878 (home-page "http://ab-initio.mit.edu/wiki/index.php/Harminv")
879 (synopsis "Harmonic inversion solver")
881 "Harminv is a free program (and accompanying library) to solve the problem of
882 harmonic inversion — given a discrete-time, finite-length signal that consists of a sum
883 of finitely-many sinusoids (possibly exponentially decaying) in a given bandwidth, it
884 determines the frequencies, decay constants, amplitudes, and phases of those sinusoids.")
885 (license license:gpl2+)))
887 (define-public guile-libctl
889 (name "guile-libctl")
895 "http://ab-initio.mit.edu/libctl/libctl-"
899 "1g7gqybq20jhdnw5vg18bgbj9jz0408gfmjvs8b4xs30pic8pgca"))))
900 (build-system gnu-build-system)
902 `(("fortran" ,gfortran)))
904 `(("guile" ,guile-2.2)))
905 (home-page "http://ab-initio.mit.edu/wiki/index.php/Libctl")
906 (synopsis "Flexible control files implementation for scientific simulations")
908 "Libctl is a Guile-based library implementing flexible control files
909 for scientific simulations.")
910 (license license:gpl2+)))
920 "http://ab-initio.mit.edu/mpb/mpb-"
924 "1mqb2d8jq957nksayjygq58iy8i42vjryzg9iy5fpfay31wzxsix"))))
925 (build-system gnu-build-system)
928 (list (string-append "--with-libctl="
929 (assoc-ref %build-inputs "libctl")
932 `(("fortran" ,gfortran)
933 ("pkg-config" ,pkg-config)
941 ("libctl" ,guile-libctl)
942 ("readline" ,readline)
944 (home-page "http://ab-initio.mit.edu/wiki/index.php/MIT_Photonic_Bands")
945 (synopsis "Computes band structures and electromagnetic modes of dielectric
948 "MIT Photonic-Bands (MPB) computes definite-frequency eigenstates (harmonic modes)
949 of Maxwell's equations in periodic dielectric structures for arbitrary wavevectors, using
950 fully-vectorial and three-dimensional methods.")
951 (license license:gpl2+)))
961 "http://ab-initio.mit.edu/meep/meep-"
965 "0f6lbw2hrksg7xscwdqs78jc9nmzx9fs8j0hz1y4i8qknkqiyk2n"))))
966 (build-system gnu-build-system)
969 (list (string-append "--with-libctl="
970 (assoc-ref %build-inputs "libctl")
973 `(("fortran" ,gfortran)
974 ("pkg-config" ,pkg-config)
979 ("guile" ,guile-2.0) ; doesn't build with guile-2.2
983 ("libctl" ,guile-libctl)
986 (home-page "http://ab-initio.mit.edu/wiki/index.php/Meep")
987 (synopsis "Finite-difference time-domain (FDTD) simulation software")
989 "Meep is a finite-difference time-domain (FDTD) simulation software package
990 developed at MIT to model electromagnetic systems.")
991 (license license:gpl2+)))
1001 "mirror://sourceforge/mot-adms/adms-source/"
1002 (version-major+minor version) "/adms-" version ".tar.gz"))
1005 "1rn98l6jxcjhi6ai5f7p588khra9z80m0m0lql4n4sb7773fh1vk"))))
1006 (build-system gnu-build-system)
1010 (home-page "https://sourceforge.net/projects/mot-adms")
1011 (synopsis "Automatic device model synthesizer")
1013 "ADMS is a code generator that converts electrical compact device models
1014 specified in high-level description language into ready-to-compile C code for
1015 the API of spice simulators. Based on transformations specified in XML
1016 language, ADMS transforms Verilog-AMS code into other target languages.")
1017 (license license:gpl3)))
1019 (define-public capstone
1022 (version "3.0.5-rc2")
1025 (uri (string-append "https://github.com/aquynh/capstone/archive/"
1027 (file-name (string-append name "-" version ".tar.gz"))
1030 "1cqms9r2p43aiwp5spd84zaccp16ih03r7sjhrv16nddahj0jz2q"))))
1031 (build-system gnu-build-system)
1034 #:make-flags (list (string-append "PREFIX=" %output)
1037 (modify-phases %standard-phases
1039 ;; cstool's Makefile overrides LDFLAGS, so we cannot pass it as a make flag.
1040 (add-before 'build 'fix-cstool-ldflags
1041 (lambda* (#:key outputs #:allow-other-keys)
1042 (substitute* "cstool/Makefile"
1044 (string-append "LDFLAGS = -Wl,-rpath=" (assoc-ref outputs "out")
1047 (home-page "http://www.capstone-engine.org")
1048 (synopsis "Lightweight multi-platform, multi-architecture disassembly framework")
1050 "Capstone is a lightweight multi-platform, multi-architecture disassembly
1051 framework. Capstone can disassemble machine code for many supported architectures
1052 such as x86, x86_64, arm, arm64, mips, ppc, sparc, sysz and xcore. It provides
1053 bindings for Python, Java, OCaml and more.")
1054 (license license:bsd-3)))
1056 ;; FIXME: This package has a timestamp embedded in
1057 ;; lib/python3.5/site-packages/capstone/__pycache__/__iti__.cpython-35.pyc
1058 (define-public python-capstone
1061 (name "python-capstone")
1063 `(("capstone" ,capstone)))
1064 (build-system python-build-system)
1067 (modify-phases %standard-phases
1068 (add-after 'unpack 'chdir-and-fix-setup-py
1070 (chdir "bindings/python")
1071 ;; Do not build the library again, because we already have it.
1072 (substitute* "setup.py" ((".* build_libraries.*") ""))
1073 ;; This substitution tells python-capstone where to find the
1075 (substitute* "capstone/__init__.py"
1076 (("pkg_resources.resource_filename.*")
1077 (string-append "'" (assoc-ref %build-inputs "capstone") "/lib',\n")))
1080 (define-public python2-capstone
1081 (package-with-python2 python-capstone))
1083 (define-public radare2
1089 (uri (string-append "http://radare.mikelloc.com/get/" version "/"
1090 name "-" version ".tar.gz"))
1093 "16ggsk40zz6hyvclvqj1r4bh4hb78jf0d6ppry1jk4r0j30wm7cm"))
1094 (modules '((guix build utils)))
1097 (substitute* "libr/asm/p/Makefile"
1098 (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
1099 (substitute* "libr/parse/p/Makefile"
1100 (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
1101 (substitute* "libr/bin/p/Makefile"
1102 (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))))))
1103 (build-system gnu-build-system)
1105 '(#:tests? #f; tests require git and network access
1107 (modify-phases %standard-phases
1108 (add-before 'configure 'mklibdir
1109 (lambda* (#:key inputs #:allow-other-keys)
1110 (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
1113 (list "--with-sysmagic" "--with-syszip" "--with-openssl"
1114 "--without-nonpic" "--with-rpath" "--with-syscapstone")
1118 `(("openssl" ,openssl)
1121 ("capstone" ,capstone)))
1123 `(("pkg-config" ,pkg-config)))
1124 (home-page "https://radare.org/")
1125 (synopsis "Portable reversing framework")
1127 "Radare project started as a forensics tool, a scriptable commandline
1128 hexadecimal editor able to open disk files, but later support for analyzing
1129 binaries, disassembling code, debugging programs, attaching to remote gdb
1131 (license license:lgpl3)))
1139 (uri (string-append "mirror://sourceforge/asco/asco/" version "/ASCO-"
1143 "119rbc2dc8xzwxvykgji0v0nrzvymjmlizr1bc2mihspj686kxsl"))))
1144 (build-system gnu-build-system)
1146 `(#:tests? #f ; no tests
1147 #:make-flags '("all" "asco-mpi")
1149 (modify-phases %standard-phases
1151 (add-before 'build 'fix-paths
1152 (lambda* (#:key inputs #:allow-other-keys)
1153 (let ((coreutils (assoc-ref inputs "coreutils-minimal")))
1154 (substitute* '("errfunc.c" "asco.c")
1156 (string-append coreutils "/bin/cp "))
1158 (string-append coreutils "/bin/nice")))
1159 (substitute* "Makefile"
1160 (("<FULL_PATH_TO_MPICH>/bin/mpicc") (which "mpicc")))
1162 (replace 'install ; no install target
1163 (lambda* (#:key outputs #:allow-other-keys)
1164 (for-each (lambda (file)
1165 (install-file file (string-append
1166 (assoc-ref outputs "out")
1168 '("asco" "asco-mpi" "asco-test"
1169 "tools/alter/alter" "tools/log/log"))
1172 `(("mpi" ,openmpi)))
1174 `(("coreutils-minimal" ,coreutils-minimal)))
1175 (home-page "http://asco.sourceforge.net/")
1176 (synopsis "SPICE circuit optimizer")
1178 "ASCO brings circuit optimization capabilities to existing SPICE simulators using a
1179 high-performance parallel differential evolution (DE) optimization algorithm.")
1180 (license license:gpl2+)))
1182 (define-public libngspice
1183 ;; Note: The ngspice's build system does not allow us to build both the
1184 ;; library and the executables in one go. Thus, we have two packages.
1185 ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#236>.
1191 (uri (string-append "mirror://sourceforge/ngspice/ng-spice-rework/"
1192 version "/ngspice-" version ".tar.gz"))
1195 "02019ndcl057nq9z41nxycqba7wxlb081ibvfj9jv010nz431qji"))
1196 (modules '((guix build utils)))
1197 ;; We remove the non-free cider and build without it.
1200 (delete-file-recursively "src/ciderlib")
1201 (delete-file "src/ciderinit")
1202 (substitute* "configure"
1203 (("src/ciderlib/Makefile") "")
1204 (("src/ciderlib/input/Makefile") "")
1205 (("src/ciderlib/support/Makefile") "")
1206 (("src/ciderlib/oned/Makefile") "")
1207 (("src/ciderlib/twod/Makefile") ""))))))
1208 (build-system gnu-build-system)
1210 `(;; No tests for libngspice exist.
1211 ;; The transient tests for ngspice fail.
1214 (modify-phases %standard-phases
1215 (add-after 'unpack 'patch-timestamps
1217 (substitute* "configure"
1218 (("`date`") "Do 1. Jan 00:00:00 UTC 1970"))
1220 (add-after 'unpack 'delete-program-manuals
1222 (substitute* "man/man1/Makefile.in"
1223 (("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1")
1226 (add-after 'install 'delete-script-files
1227 (lambda* (#:key outputs #:allow-other-keys)
1228 (delete-file-recursively
1229 (string-append (assoc-ref outputs "out")
1230 "/share/ngspice/scripts")))))
1232 (list "--enable-openmp"
1235 "--with-readline=yes")))
1240 `(("libxaw" ,libxaw)
1242 ("readline" ,readline)))
1243 (home-page "http://ngspice.sourceforge.net/")
1244 (synopsis "Mixed-level/mixed-signal circuit simulator")
1246 "Ngspice is a mixed-level/mixed-signal circuit simulator. It includes
1247 @code{Spice3f5}, a circuit simulator, and @code{Xspice}, an extension that
1248 provides code modeling support and simulation of digital components through
1249 an embedded event driven algorithm.")
1250 (license (list license:lgpl2.0+ ; code in frontend/numparam
1251 (license:non-copyleft "file:///COPYING") ; spice3 bsd-style
1252 license:public-domain)))) ; xspice
1254 (define-public ngspice
1255 ;; The ngspice executables (see libngpsice above.)
1256 (package (inherit libngspice)
1259 (substitute-keyword-arguments (package-arguments libngspice)
1260 ((#:configure-flags flags)
1261 `(delete "--with-ngshared" ,flags))
1263 `(modify-phases ,phases
1264 (add-after 'unpack 'delete-include-files
1266 (substitute* "src/Makefile.in"
1267 (("^SUBDIRS = misc maths frontend spicelib include/ngspice")
1268 "SUBDIRS = misc maths frontend spicelib"))
1270 (add-after 'install 'delete-cmpp-dlmain
1271 (lambda* (#:key outputs #:allow-other-keys)
1272 (for-each (lambda (file)
1274 (string-append (assoc-ref outputs "out")
1276 '("/bin/cmpp" "/share/ngspice/dlmain.c"))
1278 (delete 'delete-program-manuals)
1279 (delete 'delete-script-files)))))
1281 `(("libngspice" ,libngspice)
1282 ("readline" ,readline)))))
1284 (define trilinos-serial-xyce
1285 ;; Note: This is a Trilinos containing only the packages Xyce needs, so we
1286 ;; keep it private. See
1287 ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#248>.
1288 ;; TODO: Remove when we have modular Trilinos packages?
1290 (name "trilinos-serial-xyce")
1293 (origin (method url-fetch)
1294 (uri (string-append "https://trilinos.org/oldsite/download/files/trilinos-"
1295 version "-Source.tar.gz"))
1298 "07jd1qpsbf31cmbyyngr4l67xzwyan24dyx5wlcahgbw7x6my3wn"))))
1299 (build-system cmake-build-system)
1301 `(#:out-of-source? #t
1303 (list "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
1304 "-DCMAKE_C_FLAGS=-O3 -fPIC"
1305 "-DCMAKE_Fortran_FLAGS=-O3 -fPIC"
1306 "-DTrilinos_ENABLE_NOX=ON"
1307 "-DNOX_ENABLE_LOCA=ON"
1308 "-DTrilinos_ENABLE_EpetraExt=ON"
1309 "-DEpetraExt_BUILD_BTF=ON"
1310 "-DEpetraExt_BUILD_EXPERIMENTAL=ON"
1311 "-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON"
1312 "-DTrilinos_ENABLE_TrilinosCouplings=ON"
1313 "-DTrilinos_ENABLE_Ifpack=ON"
1314 "-DTrilinos_ENABLE_Isorropia=ON"
1315 "-DTrilinos_ENABLE_AztecOO=ON"
1316 "-DTrilinos_ENABLE_Belos=ON"
1317 "-DTrilinos_ENABLE_Teuchos=ON"
1318 "-DTeuchos_ENABLE_COMPLEX=ON"
1319 "-DTrilinos_ENABLE_Amesos=ON"
1320 "-DAmesos_ENABLE_KLU=ON"
1321 "-DAmesos_ENABLE_UMFPACK=ON"
1322 "-DTrilinos_ENABLE_Sacado=ON"
1323 "-DTrilinos_ENABLE_Kokkos=OFF"
1324 "-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF"
1325 "-DTPL_ENABLE_AMD=ON"
1326 "-DTPL_ENABLE_UMFPACK=ON"
1327 "-DTPL_ENABLE_BLAS=ON"
1328 "-DTPL_ENABLE_LAPACK=ON")))
1330 `(("fortran" ,gfortran)
1334 ("lapack" ,lapack-3.5)
1335 ("suitesparse" ,suitesparse)))
1336 (home-page "https://trilinos.org")
1337 (synopsis "Engineering and scientific problems algorithms")
1339 "The Trilinos Project is an effort to develop algorithms and enabling
1340 technologies within an object-oriented software framework for the solution of
1341 large-scale, complex multi-physics engineering and scientific problems. A
1342 unique design feature of Trilinos is its focus on packages.")
1343 (license (list license:lgpl2.1+
1346 (define-public xyce-serial
1348 (name "xyce-serial")
1351 (origin (method url-fetch)
1352 (uri (string-append "https://archive.org/download/Xyce-"
1353 version "/Xyce-" version ".tar.gz"))
1356 "02k952mnvrnc5kv7r65fdrn7khwq1lbyhwyvd7jznafzdpsvgm4x"))))
1357 (build-system gnu-build-system)
1362 "CXXFLAGS=-O3 -std=c++11"
1363 (string-append "ARCHDIR="
1364 (assoc-ref %build-inputs "trilinos")))))
1368 ("fortran" ,gfortran)))
1371 ("suitesparse" ,suitesparse)
1372 ("lapack" ,lapack-3.5)
1373 ("trilinos" ,trilinos-serial-xyce)))
1374 (home-page "https://xyce.sandia.gov/")
1375 (synopsis "High-performance analog circuit simulator")
1377 "Xyce is a SPICE-compatible, high-performance analog circuit simulator,
1378 capable of solving extremely large circuit problems by supporting large-scale
1379 parallel computing platforms. It also supports serial execution.")
1380 (license license:gpl3+)))
1382 (define trilinos-parallel-xyce
1383 (package (inherit trilinos-serial-xyce)
1384 (name "trilinos-parallel-xyce")
1386 `(,@(substitute-keyword-arguments (package-arguments trilinos-serial-xyce)
1387 ((#:configure-flags flags)
1388 `(append (list "-DTrilinos_ENABLE_ShyLU=ON"
1389 "-DTrilinos_ENABLE_Zoltan=ON"
1390 "-DTPL_ENABLE_MPI=ON")
1394 ,@(package-inputs trilinos-serial-xyce)))))
1396 (define-public xyce-parallel
1397 (package (inherit xyce-serial)
1398 (name "xyce-parallel")
1400 `(,@(substitute-keyword-arguments (package-arguments xyce-serial)
1401 ((#:configure-flags flags)
1402 `(list "CXXFLAGS=-O3 -std=c++11"
1407 "--enable-isorropia=no"
1408 "--enable-zoltan=no"
1411 (assoc-ref %build-inputs "trilinos")))))))
1413 `(("mpi" ,openmpi)))
1415 `(("trilinos" ,trilinos-parallel-xyce)
1416 ,@(alist-delete "trilinos"
1417 (package-inputs xyce-serial))))))
1419 (define-public freehdl
1425 (uri (string-append "http://downloads.sourceforge.net/qucs/freehdl-"
1429 "117dqs0d4pcgbzvr3jn5ppra7n7x2m6c161ywh6laa934pw7h2bz"))))
1430 (build-system gnu-build-system)
1433 (modify-phases %standard-phases
1434 (add-before 'configure 'patch-pkg-config
1435 (lambda* (#:key inputs #:allow-other-keys)
1436 (substitute* "freehdl/freehdl-config"
1438 (string-append (assoc-ref inputs "pkg-config")
1441 (string-append (assoc-ref inputs "coreutils")
1444 (add-after 'configure 'patch-freehdl-pc
1445 (lambda* (#:key inputs #:allow-other-keys)
1446 (substitute* "freehdl.pc"
1448 (string-append "=" (assoc-ref inputs "gcc")
1451 (string-append "=" (assoc-ref inputs "libtool")
1454 (add-after 'install-scripts 'make-wrapper
1455 (lambda* (#:key outputs #:allow-other-keys)
1456 (let ((out (assoc-ref outputs "out")))
1457 (wrap-program (string-append out "/bin/freehdl-config")
1458 `("PKG_CONFIG_PATH" ":" prefix (,(string-append out "/lib/pkgconfig")))))
1461 `(("coreutils" ,coreutils)
1464 ("pkg-config" ,pkg-config)
1465 ("libtool" ,libtool)))
1467 `(("pkg-config-native" ,pkg-config)
1468 ("libtool-native" ,libtool)))
1469 (home-page "http://www.freehdl.seul.org/")
1470 (synopsis "VHDL simulator")
1472 "FreeHDL is a compiler/simulator suite for the hardware description language VHDL.
1473 VHDL'93 as well as VHDL'87 standards are supported.")
1474 (license (list license:gpl2+
1475 license:lgpl2.0+)))) ; freehdl's libraries