[bug#78233,2/2] gnu: nextpnr-ice40: Update to 0.8.
Commit Message
* gnu/packages/fpga.scm (nextpnr-ice40): Update to 0.8.
Change-Id: I8d1c3528679f38ec4593f90aec0f1c4321dc7e44
---
gnu/packages/fpga.scm | 138 +++++++++++++-----------------------------
1 file changed, 41 insertions(+), 97 deletions(-)
@@ -256,6 +256,47 @@ (define nextpnr
(home-page "https://github.com/YosysHQ/nextpnr/")
(license license:asl2.0)))
+(define-public nextpnr-ice40
+ (package
+ (inherit nextpnr)
+ (name "nextpnr-ice40")
+ (arguments
+ (substitute-keyword-arguments (package-arguments nextpnr)
+ ;; tests
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ ;; get icestorm/examples
+ (add-after 'compress-documentation 'get-icestorm
+ (lambda* (#:key inputs #:allow-other-keys)
+ (copy-recursively
+ #$(origin (inherit (package-source icestorm)))
+ "icestorm")))
+ ;; run all icestorm/examples as tests
+ (add-after 'get-icestorm 'tests-icestorm-examples
+ (lambda* _
+ (let ((dir (opendir "icestorm/examples")))
+ (do ((entry (readdir dir)
+ (readdir dir)))
+ ((eof-object? entry))
+ (when (not (member entry '("." "..")))
+ (setenv "PATH"
+ (string-append (string-append #$output "/bin")
+ ":"
+ (getenv "PATH")))
+ (invoke "make" "-C"
+ (string-append "icestorm/examples/" entry))))
+ (closedir dir))))))
+ ((#:configure-flags original-flags #~(list))
+ #~(append #$original-flags
+ `("-DARCH=ice40"
+ ,(string-append "-DICESTORM_INSTALL_PREFIX="
+ #$(this-package-input "icestorm")))))))
+ (propagated-inputs (modify-inputs (package-propagated-inputs nextpnr)
+ (prepend icestorm)))
+ ;; tests
+ (native-inputs (modify-inputs (package-native-inputs nextpnr)
+ (prepend yosys)))))
+
(define-public yosys
(package
(name "yosys")
@@ -434,103 +475,6 @@ (define-public icestorm
files.")
(license license:isc))))
-(define-public nextpnr-ice40
- (let* ((version "0.7")
- (tag (string-append "nextpnr-" version)))
- (package
- (name "nextpnr-ice40")
- (version version)
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/YosysHQ/nextpnr")
- (commit tag)
- (recursive? #t)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0sbhqscgmlk4q2207rsqsw99qx4fyrxx1hsd669lrk42gmk3s9lm"))
- (modules '((guix build utils)))
- (snippet
- #~(begin
- ;; Remove bundled source code for which Guix has packages.
- ;; Note the bundled copies of json11 and python-console contain
- ;; modifications, while QtPropertyBrowser appears to be
- ;; abandoned and without an official source.
- ;; fpga-interchange-schema is used only by the
- ;; "fpga_interchange" architecture target, which this package
- ;; doesn't build.
- (with-directory-excursion "3rdparty"
- (for-each delete-file-recursively
- '("googletest" "imgui" "pybind11" "qtimgui"
- "sanitizers-cmake")))
-
- ;; Remove references to unbundled code and link against external
- ;; libraries instead.
- (substitute* "CMakeLists.txt"
- (("^\\s+add_subdirectory\\(3rdparty/googletest.*") "")
- (("^(\\s+target_link_libraries.*)( gtest_main\\))"
- _ prefix suffix)
- (string-append prefix " gtest" suffix)))
- (substitute* "gui/CMakeLists.txt"
- (("^\\s+../3rdparty/(qt)?imgui.*") "")
- (("^(target_link_libraries.*)\\)" _ prefix)
- (string-append prefix " imgui qt_imgui_widgets)")))))))
- (native-inputs
- (list googletest sanitizers-cmake))
- (inputs
- (list boost
- eigen
- icestorm
- imgui-1.86
- pybind11
- python
- qtbase-5
- qtwayland-5
- qtimgui
- yosys))
- (build-system qt-build-system)
- (arguments
- (list
- #:configure-flags
- #~(list "-DARCH=ice40"
- "-DBUILD_GUI=ON"
- "-DBUILD_TESTS=ON"
- (string-append "-DCURRENT_GIT_VERSION=" #$tag)
- (string-append "-DICESTORM_INSTALL_PREFIX="
- #$(this-package-input "icestorm"))
- "-DUSE_IPO=OFF")
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'patch-source
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "CMakeLists.txt"
- ;; Use the system sanitizers-cmake module.
- (("\\$\\{CMAKE_SOURCE_DIR\\}/3rdparty/sanitizers-cmake/cmake")
- (string-append
- #$(this-package-native-input "sanitizers-cmake")
- "/share/sanitizers-cmake/cmake")))
- (substitute* "gui/CMakeLists.txt"
- ;; Compile with system imgui and qtimgui headers.
- (("^(target_include_directories.*)../3rdparty/imgui(.*)$"
- _ prefix suffix)
- (string-append prefix
- (search-input-directory inputs
- "include/imgui")
- suffix))
- (("^(target_include_directories.*)../3rdparty/qtimgui/(.*)$"
- _ prefix suffix)
- (string-append prefix
- (search-input-directory inputs
- "include/qtimgui")
- suffix))))))))
- (synopsis "Place-and-Route tool for FPGAs")
- (description "Nextpnr aims to be a vendor neutral, timing driven, FOSS
-FPGA place and route tool.")
- (home-page "https://github.com/YosysHQ/nextpnr")
- (license license:expat))))
-
(define-public gtkwave
(package
(name "gtkwave")