+
+(define-public linsmith
+ (package
+ (name "linsmith")
+ (version "0.99.30")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/linsmith/linsmith/linsmith-"
+ version "/linsmith-" version ".tar.gz"))
+ (sha256
+ (base32
+ "18qslhr2r45rhpj4v6bjcqx189vs0bflvsj271wr7w8kvh69qwvn"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("gtk" ,gtk+-2)
+ ("libgnome" ,libgnomeui)))
+ (home-page "http://jcoppens.com/soft/linsmith/index.en.php")
+ (synopsis "Smith Charting program")
+ (description "LinSmith is a Smith Charting program, mainly designed for
+educational use. As such, there is an emphasis on capabilities that improve
+the 'showing the effect of'-style of operation.")
+ (license license:gpl2+)))
+
+(define-public volk
+ (package
+ (name "volk")
+ (version "1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://libvolk.org/releases/volk-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1bz3ywc6y5wmz3i8p4z2wbzhns8bc0ywdkl9qnxpcvfcscarbdlh"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("boost" ,boost)))
+ (native-inputs
+ `(("python-2", python-2)
+ ("python2-cheetah" ,python2-cheetah)))
+ (home-page "http://libvolk.org/")
+ (synopsis "Vector-Optimized Library of Kernels")
+ (description
+ "@code{volk} contains procedures with machine-specific optimizations
+for mathematical functions. It also provides an machine-independent
+interface to select the best such procedures to use on a given system.")
+ (license license:gpl3+)))
+
+(define-public minicom
+ (package
+ (name "minicom")
+ (version "2.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://alioth.debian.org/frs/download.php/"
+ "file/4215/" name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1wa1l36fa4npd21xa9nz60yrqwkk5cq713fa3p5v0zk7g9mq6bsk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags '("--enable-lock-dir=/var/lock")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-lock-check
+ (lambda _
+ (substitute* "configure"
+ (("test -d [$]UUCPLOCK") "true"))
+ #t)))))
+ (inputs
+ `(("ncurses" ,ncurses)))
+ (home-page "https://alioth.debian.org/projects/minicom/")
+ (synopsis "Serial terminal emulator")
+ (description "@code{minicom} is a serial terminal emulator.")
+ (license license:gpl2+)))
+
+(define-public harminv
+ (package
+ (name "harminv")
+ (version "1.4")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/harminv/harminv-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1pmm8d6fx9ahhnk7w12bfa6zx3afbkg4gkvlvgwhpjxbcrvrp3jk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-tests
+ (lambda _
+ (substitute* "./sines-test.sh"
+ ; change test frequency range - default fails
+ (("0\\.15") "0.16"))
+ #t)))))
+ (native-inputs
+ `(("fortran" ,gfortran)))
+ (inputs
+ `(("lapack" ,lapack)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Harminv")
+ (synopsis "Harmonic inversion solver")
+ (description
+ "Harminv is a free program (and accompanying library) to solve the problem of
+harmonic inversion — given a discrete-time, finite-length signal that consists of a sum
+of finitely-many sinusoids (possibly exponentially decaying) in a given bandwidth, it
+determines the frequencies, decay constants, amplitudes, and phases of those sinusoids.")
+ (license license:gpl2+)))
+
+(define-public guile-libctl
+ (package
+ (name "guile-libctl")
+ (version "3.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/libctl/libctl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1g7gqybq20jhdnw5vg18bgbj9jz0408gfmjvs8b4xs30pic8pgca"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("fortran" ,gfortran)))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Libctl")
+ (synopsis "Flexible control files implementation for scientific simulations")
+ (description
+ "Libctl is a Guile-based library implementing flexible control files
+for scientific simulations.")
+ (license license:gpl2+)))
+
+(define-public mpb
+ (package
+ (name "mpb")
+ (version "1.5")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/mpb/mpb-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1mqb2d8jq957nksayjygq58iy8i42vjryzg9iy5fpfay31wzxsix"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-libctl="
+ (assoc-ref %build-inputs "libctl")
+ "/share/libctl"))))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (inputs
+ `(("fftw" ,fftw)
+ ("gsl" ,gsl)
+ ("guile" ,guile-2.2)
+ ("hdf5" ,hdf5)
+ ("lapack" ,lapack)
+ ("libctl" ,guile-libctl)
+ ("readline" ,readline)
+ ("zlib" ,zlib)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/MIT_Photonic_Bands")
+ (synopsis "Computes band structures and electromagnetic modes of dielectric
+structures")
+ (description
+ "MIT Photonic-Bands (MPB) computes definite-frequency eigenstates (harmonic modes)
+of Maxwell's equations in periodic dielectric structures for arbitrary wavevectors, using
+fully-vectorial and three-dimensional methods.")
+ (license license:gpl2+)))
+
+(define-public meep
+ (package
+ (name "meep")
+ (version "1.3")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/meep/meep-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0f6lbw2hrksg7xscwdqs78jc9nmzx9fs8j0hz1y4i8qknkqiyk2n"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-libctl="
+ (assoc-ref %build-inputs "libctl")
+ "/share/libctl"))))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (inputs
+ `(("fftw" ,fftw)
+ ("gsl" ,gsl)
+ ("guile" ,guile-2.0) ; doesn't build with guile-2.2
+ ("harminv" ,harminv)
+ ("hdf5" ,hdf5)
+ ("lapack" ,lapack)
+ ("libctl" ,guile-libctl)
+ ("mpb" ,mpb)
+ ("zlib" ,zlib)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Meep")
+ (synopsis "Finite-difference time-domain (FDTD) simulation software")
+ (description
+ "Meep is a finite-difference time-domain (FDTD) simulation software package
+developed at MIT to model electromagnetic systems.")
+ (license license:gpl2+)))
+
+(define-public adms
+ (package
+ (name "adms")
+ (version "2.3.6")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "mirror://sourceforge/mot-adms/adms-source/"
+ (version-major+minor version) "/adms-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1rn98l6jxcjhi6ai5f7p588khra9z80m0m0lql4n4sb7773fh1vk"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("flex" ,flex)
+ ("bison" ,bison)))
+ (home-page "https://sourceforge.net/projects/mot-adms")
+ (synopsis "Automatic device model synthesizer")
+ (description
+ "ADMS is a code generator that converts electrical compact device models
+specified in high-level description language into ready-to-compile C code for
+the API of spice simulators. Based on transformations specified in XML
+language, ADMS transforms Verilog-AMS code into other target languages.")
+ (license license:gpl3)))
+
+(define-public capstone
+ (package
+ (name "capstone")
+ (version "3.0.5-rc2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/aquynh/capstone/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1cqms9r2p43aiwp5spd84zaccp16ih03r7sjhrv16nddahj0jz2q"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:make-flags (list (string-append "PREFIX=" %output)
+ "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ ;; cstool's Makefile overrides LDFLAGS, so we cannot pass it as a make flag.
+ (add-before 'build 'fix-cstool-ldflags
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "cstool/Makefile"
+ (("LDFLAGS =")
+ (string-append "LDFLAGS = -Wl,-rpath=" (assoc-ref outputs "out")
+ "/lib")))
+ #t)))))
+ (home-page "http://www.capstone-engine.org")
+ (synopsis "Lightweight multi-platform, multi-architecture disassembly framework")
+ (description
+ "Capstone is a lightweight multi-platform, multi-architecture disassembly
+framework. Capstone can disassemble machine code for many supported architectures
+such as x86, x86_64, arm, arm64, mips, ppc, sparc, sysz and xcore. It provides
+bindings for Python, Java, OCaml and more.")
+ (license license:bsd-3)))
+
+;; FIXME: This package has a timestamp embedded in
+;; lib/python3.5/site-packages/capstone/__pycache__/__iti__.cpython-35.pyc
+(define-public python-capstone
+ (package
+ (inherit capstone)
+ (name "python-capstone")
+ (propagated-inputs
+ `(("capstone" ,capstone)))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir-and-fix-setup-py
+ (lambda _
+ (chdir "bindings/python")
+ ;; Do not build the library again, because we already have it.
+ (substitute* "setup.py" ((".* build_libraries.*") ""))
+ ;; This substitution tells python-capstone where to find the
+ ;; library.
+ (substitute* "capstone/__init__.py"
+ (("pkg_resources.resource_filename.*")
+ (string-append "'" (assoc-ref %build-inputs "capstone") "/lib',\n")))
+ #t)))))))
+
+(define-public python2-capstone
+ (package-with-python2 python-capstone))