[bug#77114] gnu: nextpnr: split devices.
Commit Message
* gnu/packages/fpga.scm (nextpnr): split-devices.
Change-Id: I681dfa90a0ace3b507f3b56f3ac7d90227345606
---
- update package definitions to current guix standards
- prepare for new devices
- split common package for all devices, from ice40 device package
gnu/packages/fpga.scm | 183 ++++++++++++++++++++++--------------------
1 file changed, 96 insertions(+), 87 deletions(-)
base-commit: fd19785a9a7f111c6a97da25187c3351e7e8f3fd
--
2.48.1
@@ -313,102 +313,111 @@ (define-public icestorm
Includes the actual FTDI connector.")
(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.
+(define nextpnr
+ (package
+ (name "nextpnr")
+ (version "0.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/YosysHQ/nextpnr/")
+ (commit (string-append "nextpnr-" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0sbhqscgmlk4q2207rsqsw99qx4fyrxx1hsd669lrk42gmk3s9lm"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:out-of-source? #t
+ #:configure-flags
+ #~(list "-DBUILD_GUI=ON" "-DUSE_OPENMP=yes" "-DBUILD_TESTS=ON"
+ (string-append "-DCURRENT_GIT_VERSION=nextpnr-"
+ #$version) "-DUSE_IPO=OFF")
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; 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.
+ (add-after 'unpack 'remove-deps
+ (lambda _
(with-directory-excursion "3rdparty"
(for-each delete-file-recursively
'("googletest" "imgui" "pybind11" "qtimgui"
- "sanitizers-cmake")))
-
+ "sanitizers-cmake" "corrosion")))))
+ (add-after 'remove-deps 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
;; 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)))
+ ;; 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"))
+ ;; Use the system googletest module.
+ (("^\\s+add_subdirectory\\(3rdparty/googletest.*")
+ "")
+ (("^(\\s+target_link_libraries.*)( gtest_main\\))" _ prefix
+ suffix)
+ (string-append prefix " gtest" suffix))
+ ;; Use the system corrosion module.
+ (("^\\s+add_subdirectory\\(3rdparty/corrosion.*")
+ ""))
(substitute* "gui/CMakeLists.txt"
- (("^\\s+../3rdparty/(qt)?imgui.*") "")
+ ;; 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)))
+ (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
+ (string-append prefix " imgui qt_imgui_widgets)"))))))))
+ (native-inputs (list googletest sanitizers-cmake))
+ (inputs (list boost
+ eigen
+ corrosion
+ imgui
+ pybind11
+ python
+ qtbase-5
+ qtwayland-5
+ qtimgui
+ yosys))
+ (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))))
+ (home-page "https://github.com/YosysHQ/nextpnr/")
+ (license license:isc)))
+
+(define-public nextpnr-ice40
+ (package
+ (inherit nextpnr)
+ (name "nextpnr-ice40")
+ (arguments
+ (substitute-keyword-arguments (package-arguments nextpnr)
+ ((#:configure-flags flags
+ ''())
+ #~(cons "-DARCH=ice40"
+ (cons (string-append "-DICESTORM_INSTALL_PREFIX="
+ #$(this-package-input "icestorm"))
+ #$flags)))))
+ (propagated-inputs (modify-inputs (package-propagated-inputs nextpnr)
+ (prepend icestorm)))))
(define-public gtkwave
(package