diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm index b2ec09f4b7f..d20b0fb9012 100644 --- a/gnu/packages/electronics.scm +++ b/gnu/packages/electronics.scm @@ -23,6 +23,7 @@ ;;; Copyright © 2022, 2025 Evgeny Pisemsky ;;; Copyright © 2025, Ekaitz Zarraga ;;; Copyright © 2021, 2022 Guillaume Le Vaillant +;;; Copyright © 2020, 2023 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -75,6 +76,7 @@ #:use-module (gnu packages freedesktop) #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) + #:use-module (gnu packages gcc) #:use-module (gnu packages gd) #:use-module (gnu packages gdb) #:use-module (gnu packages gettext) @@ -2459,6 +2461,96 @@ using different abstraction levels.") VPI Interface, Elaborator, Serialization, Visitor and Listener.") (license license:asl2.0))) +(define trilinos-serial-xyce + ;; Note: This is a Trilinos containing only the packages Xyce needs, so we + ;; keep it private. See + ;; . + ;; TODO: Remove when we have modular Trilinos packages? + (package + (name "trilinos-serial-xyce") + (version "12.12.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/trilinos/Trilinos") + (commit (string-append "trilinos-release-" + (string-map (lambda (chr) + (case chr + ((#\.) #\-) + (else chr))) + version))))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1smz3wlpfyjn0czmpl8bj4hw33p1zi9nnfygpsx7jl1523nypa1n")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no tests + #:phases + #~(modify-phases %standard-phases + ;; Delete unneeded tribits(build system) directory which makes + ;; validate-runpath phase to fail. + (add-before 'validate-runpath 'delete-tribits + (lambda _ + (delete-file-recursively + (string-append #$output "/lib/cmake/tribits"))))) + #:configure-flags + #~(list "-DCMAKE_CXX_FLAGS=-O3 -fPIC" + "-DCMAKE_C_FLAGS=-O3 -fPIC" + "-DCMAKE_Fortran_FLAGS=-O3 -fPIC" + "-DTrilinos_ENABLE_NOX=ON" + "-DNOX_ENABLE_LOCA=ON" + "-DTrilinos_ENABLE_EpetraExt=ON" + "-DEpetraExt_BUILD_BTF=ON" + "-DEpetraExt_BUILD_EXPERIMENTAL=ON" + "-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON" + "-DTrilinos_ENABLE_TrilinosCouplings=ON" + "-DTrilinos_ENABLE_Ifpack=ON" + "-DTrilinos_ENABLE_Isorropia=ON" + "-DTrilinos_ENABLE_AztecOO=ON" + "-DTrilinos_ENABLE_Belos=ON" + "-DTrilinos_ENABLE_Teuchos=ON" + "-DTeuchos_ENABLE_COMPLEX=ON" + "-DTrilinos_ENABLE_Amesos=ON" + "-DAmesos_ENABLE_KLU=ON" + "-DAmesos_ENABLE_UMFPACK=ON" + "-DTrilinos_ENABLE_Sacado=ON" + "-DTrilinos_ENABLE_Kokkos=OFF" + "-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF" + "-DTPL_ENABLE_AMD=ON" + "-DTPL_ENABLE_UMFPACK=ON" + "-DTPL_ENABLE_BLAS=ON" + "-DTPL_ENABLE_LAPACK=ON"))) + (native-inputs (list gfortran swig)) + (inputs (list boost lapack suitesparse)) + (home-page "https://trilinos.org") + (synopsis "Engineering and scientific problems algorithms") + (description + "The Trilinos Project is an effort to develop algorithms and enabling +technologies within an object-oriented software framework for the solution of +large-scale, complex multi-physics engineering and scientific problems. A +unique design feature of Trilinos is its focus on packages.") + (license (list license:lgpl2.1+ + license:bsd-3)))) + +(define trilinos-parallel-xyce + (package + (inherit trilinos-serial-xyce) + (name "trilinos-parallel-xyce") + (arguments + (substitute-keyword-arguments + (package-arguments trilinos-serial-xyce) + ((#:configure-flags flags) + #~(cons* "-DTrilinos_ENABLE_ShyLU=ON" + "-DTrilinos_ENABLE_Zoltan=ON" + "-DTPL_ENABLE_MPI=ON" + #$flags)))) + (inputs + (modify-inputs (package-inputs trilinos-serial-xyce) + (prepend openmpi))))) + (define-public verilator (package (name "verilator") @@ -2545,6 +2637,68 @@ support for ESD or COMEDI sources.") (home-page "https://xoscope.sourceforge.net/") (license license:gpl2+)))) +(define-public xyce-serial + (package + (name "xyce-serial") + (version "6.8") + (source + (origin (method url-fetch) + (uri (string-append "https://archive.org/download/Xyce-" + version "/Xyce-" version ".tar.gz")) + (sha256 + (base32 + "09flp1xywbb2laayd9rg8vd0fjsh115y6k1p71jacy0nrbdvvlcg")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f + #:configure-flags + #~(list + "CXXFLAGS=-O3" + (string-append "CFLAGS=" + " -Wno-error=builtin-declaration-mismatch" + " -Wno-error=implicit-function-declaration" + " -Wno-error=implicit-int") + (string-append "ARCHDIR=" #$trilinos-serial-xyce)))) + (native-inputs + (list bison-3.0 ;'configure' fails with Bison 3.4 + flex + gfortran)) + (inputs + (list fftw lapack suitesparse trilinos-serial-xyce)) + (home-page "https://xyce.sandia.gov/") + (synopsis "High-performance analog circuit simulator") + (description + "Xyce is a SPICE-compatible, high-performance analog circuit simulator, +capable of solving extremely large circuit problems by supporting large-scale +parallel computing platforms. It also supports serial execution.") + (license license:gpl3+))) + +(define-public xyce-parallel + (package + (inherit xyce-serial) + (name "xyce-parallel") + (arguments + (substitute-keyword-arguments + (package-arguments xyce-serial) + ((#:configure-flags flags) + #~(list "CXXFLAGS=-O3" + "CXX=mpiCC" + "CC=mpicc" + "F77=mpif77" + "--enable-mpi" + (string-append + "CFLAGS=" + " -Wno-error=builtin-declaration-mismatch" + " -Wno-error=implicit-function-declaration" + " -Wno-error=implicit-int") + (string-append "ARCHDIR=" #$trilinos-parallel-xyce))))) + (propagated-inputs (list openmpi)) + (inputs + (modify-inputs (package-inputs xyce-serial) + (append zlib) + (replace "trilinos-serial-xyce" trilinos-parallel-xyce))))) + (define-public yosys (package (name "yosys") diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index d61b5ce288a..02a82c9d703 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -2286,158 +2286,6 @@ and a fallback for environments without libc for Zydis.") high-performance parallel differential evolution (DE) optimization algorithm.") (license license:gpl2+))) -(define trilinos-serial-xyce - ;; Note: This is a Trilinos containing only the packages Xyce needs, so we - ;; keep it private. See - ;; . - ;; TODO: Remove when we have modular Trilinos packages? - (package - (name "trilinos-serial-xyce") - (version "12.12.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/trilinos/Trilinos") - (commit (string-append "trilinos-release-" - (string-map (lambda (chr) - (case chr - ((#\.) #\-) - (else chr))) - version))))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1smz3wlpfyjn0czmpl8bj4hw33p1zi9nnfygpsx7jl1523nypa1n")))) - (build-system cmake-build-system) - (arguments - (list - #:tests? #f ;no tests - #:phases - #~(modify-phases %standard-phases - ;; Delete unneeded tribits(build system) directory which makes - ;; validate-runpath phase to fail. - (add-before 'validate-runpath 'delete-tribits - (lambda _ - (delete-file-recursively - (string-append #$output "/lib/cmake/tribits"))))) - #:configure-flags - #~(list "-DCMAKE_CXX_FLAGS=-O3 -fPIC" - "-DCMAKE_C_FLAGS=-O3 -fPIC" - "-DCMAKE_Fortran_FLAGS=-O3 -fPIC" - "-DTrilinos_ENABLE_NOX=ON" - "-DNOX_ENABLE_LOCA=ON" - "-DTrilinos_ENABLE_EpetraExt=ON" - "-DEpetraExt_BUILD_BTF=ON" - "-DEpetraExt_BUILD_EXPERIMENTAL=ON" - "-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON" - "-DTrilinos_ENABLE_TrilinosCouplings=ON" - "-DTrilinos_ENABLE_Ifpack=ON" - "-DTrilinos_ENABLE_Isorropia=ON" - "-DTrilinos_ENABLE_AztecOO=ON" - "-DTrilinos_ENABLE_Belos=ON" - "-DTrilinos_ENABLE_Teuchos=ON" - "-DTeuchos_ENABLE_COMPLEX=ON" - "-DTrilinos_ENABLE_Amesos=ON" - "-DAmesos_ENABLE_KLU=ON" - "-DAmesos_ENABLE_UMFPACK=ON" - "-DTrilinos_ENABLE_Sacado=ON" - "-DTrilinos_ENABLE_Kokkos=OFF" - "-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF" - "-DTPL_ENABLE_AMD=ON" - "-DTPL_ENABLE_UMFPACK=ON" - "-DTPL_ENABLE_BLAS=ON" - "-DTPL_ENABLE_LAPACK=ON"))) - (native-inputs (list gfortran swig)) - (inputs (list boost lapack suitesparse)) - (home-page "https://trilinos.org") - (synopsis "Engineering and scientific problems algorithms") - (description - "The Trilinos Project is an effort to develop algorithms and enabling -technologies within an object-oriented software framework for the solution of -large-scale, complex multi-physics engineering and scientific problems. A -unique design feature of Trilinos is its focus on packages.") - (license (list license:lgpl2.1+ - license:bsd-3)))) - -(define-public xyce-serial - (package - (name "xyce-serial") - (version "6.8") - (source - (origin (method url-fetch) - (uri (string-append "https://archive.org/download/Xyce-" - version "/Xyce-" version ".tar.gz")) - (sha256 - (base32 - "09flp1xywbb2laayd9rg8vd0fjsh115y6k1p71jacy0nrbdvvlcg")))) - (build-system gnu-build-system) - (arguments - (list - #:tests? #f - #:configure-flags - #~(list - "CXXFLAGS=-O3" - (string-append "CFLAGS=" - " -Wno-error=builtin-declaration-mismatch" - " -Wno-error=implicit-function-declaration" - " -Wno-error=implicit-int") - (string-append "ARCHDIR=" #$trilinos-serial-xyce)))) - (native-inputs - (list bison-3.0 ;'configure' fails with Bison 3.4 - flex - gfortran)) - (inputs - (list fftw lapack suitesparse trilinos-serial-xyce)) - (home-page "https://xyce.sandia.gov/") - (synopsis "High-performance analog circuit simulator") - (description - "Xyce is a SPICE-compatible, high-performance analog circuit simulator, -capable of solving extremely large circuit problems by supporting large-scale -parallel computing platforms. It also supports serial execution.") - (license license:gpl3+))) - -(define trilinos-parallel-xyce - (package - (inherit trilinos-serial-xyce) - (name "trilinos-parallel-xyce") - (arguments - (substitute-keyword-arguments - (package-arguments trilinos-serial-xyce) - ((#:configure-flags flags) - #~(cons* "-DTrilinos_ENABLE_ShyLU=ON" - "-DTrilinos_ENABLE_Zoltan=ON" - "-DTPL_ENABLE_MPI=ON" - #$flags)))) - (inputs - (modify-inputs (package-inputs trilinos-serial-xyce) - (prepend openmpi))))) - -(define-public xyce-parallel - (package - (inherit xyce-serial) - (name "xyce-parallel") - (arguments - (substitute-keyword-arguments - (package-arguments xyce-serial) - ((#:configure-flags flags) - #~(list "CXXFLAGS=-O3" - "CXX=mpiCC" - "CC=mpicc" - "F77=mpif77" - "--enable-mpi" - (string-append - "CFLAGS=" - " -Wno-error=builtin-declaration-mismatch" - " -Wno-error=implicit-function-declaration" - " -Wno-error=implicit-int") - (string-append "ARCHDIR=" #$trilinos-parallel-xyce))))) - (propagated-inputs (list openmpi)) - (inputs - (modify-inputs (package-inputs xyce-serial) - (append zlib) - (replace "trilinos-serial-xyce" trilinos-parallel-xyce))))) - (define-public librepcb (package (name "librepcb")