%bcond mpich 0 %bcond openmpi 1 Name: gasnet Version: 2025.8.0 Release: %{autorelease} Summary: A language-independent, networking middleware layer License: BSD-3-Clause URL: https://gasnet.lbl.gov/ VCS: https://bitbucket.org/berkeleylab/gasnet.git Source: %{url}/EX/GASNet-%{version}.tar.gz BuildRequires: autoconf BuildRequires: automake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: hwloc-devel BuildRequires: make BuildRequires: perl-devel BuildRequires: rdma-core-devel Requires: %{name}-common = %{version}-%{release} %global _description %{expand: GASNet is a language-independent, low-level networking layer that provides network-independent, high-performance communication primitives tailored for implementing parallel global address space SPMD languages and libraries such as UPC, UPC++, Co-Array Fortran, Legion, Chapel, and many others. The interface is primarily intended as a compilation target and for use by runtime library writers (as opposed to end users), and the primary goals are high performance, interface portability, and expressiveness. GASNet stands for "Global-Address Space Networking".} %description %{_description} %package common Summary: GASNet licenses and readme BuildArch: noarch %description common %{_description} GASNet files shared between serial and parallel versions %if %{with openmpi} %package openmpi Summary: GASNet Open MPI binaries and libraries Requires: %{name}-common = %{version}-%{release} BuildRequires: openmpi-devel %description openmpi %{_description} GASNet compiled with Open MPI, package incl. binaries and libraries %endif %if %{with mpich} %package mpich Summary: GASNet MPICH binaries and libraries Requires: %{name}-common = %{version}-%{release} BuildRequires: mpich-devel %description mpich %{_description} GASNet compiled with MPICH, package incl. binaries and libraries %endif %package devel Summary: Development header files and libraries Requires: %{name}%{?_isa} = %{version}-%{release} %if %{with mpich} Requires: %{name}-mpich%{?_isa} = %{version}-%{release} %endif %if %{with openmpi} Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} %endif Provides: gasnet-static = %{version}-%{release} %description devel %{_description} Files used to build applications that use GASNet. %package doc Summary: Documentation package for GASNet BuildArch: noarch %description doc %{_description} Documentation package for GASNet. %prep %autosetup -n GASNet-%{version} %build mkdir ibv openmpi mpich %global _configure ../configure ./Bootstrap -y pushd ibv %configure --enable-hwloc --disable-mpi --enable-smp --enable-udp --enable-ibv %make_build popd %if %{with openmpi} pushd openmpi %{_openmpi_load} %configure --enable-udp --enable-mpi --enable-smp --enable-hwloc --disable-ibv \ --bindir="${MPI_BIN}" --includedir="${MPI_INCLUDE}" --libdir="${MPI_LIB}" %make_build %{_openmpi_unload} popd %endif %if %{with mpich} pushd mpich %{_mpich_load} %configure --enable-udp --enable-mpi --enable-smp --enable-hwloc --disable-ibv \ --bindir="${MPI_BIN}" --includedir="${MPI_INCLUDE}" --libdir="${MPI_LIB}" %make_build %{_mpich_unload} popd %endif %install pushd ibv %make_install popd %if %{with mpich} # Build fails requires -fPIC flag pushd mpich %make_install popd %endif %if %{with openmpi} pushd openmpi %make_install popd %endif %check pushd ibv make check popd %if %{with mpich} pushd mpich %{_mpich_load} make check %{_mpich_unload} popd %endif %if %{with openmpi} # build fails, requires -fPIC flag pushd openmpi %{_openmpi_load} #make check %{_openmpi_unload} popd %endif %files %{_bindir}/amudprun %{_bindir}/ident %{_bindir}/gasnet_trace %{_bindir}/gasnet_trace.pl %{_bindir}/gasnetrun_ibv %{_bindir}/gasnetrun_ibv.pl %{_bindir}/gasnetrun_smp %{_bindir}/gasnetrun_smp.pl %files common %license license.txt %doc README %doc ChangeLog %files devel %{_includedir}/gasnet.h %{_includedir}/gasnet_ammacros.h %{_includedir}/gasnet_arch_arm.h %{_includedir}/gasnet_asm.h %{_includedir}/gasnet_atomic_bits.h %{_includedir}/gasnet_atomic_fwd.h %{_includedir}/gasnet_atomicops.h %{_includedir}/gasnet_basic.h %{_includedir}/gasnet_coll.h %{_includedir}/gasnet_config.h %{_includedir}/gasnet_fwd.h %{_includedir}/gasnet_help.h %{_includedir}/gasnet_membar.h %{_includedir}/gasnet_mk.h %{_includedir}/gasnet_portable_platform.h %{_includedir}/gasnet_ratomic.h %{_includedir}/gasnet_timer.h %{_includedir}/gasnet_toolhelp.h %{_includedir}/gasnet_tools-par.mak %{_includedir}/gasnet_tools-seq.mak %{_includedir}/gasnet_tools.h %{_includedir}/gasnet_trace.h %{_includedir}/gasnet_vis.h %{_includedir}/gasnetex.h %{_includedir}/portable_inttypes.h %{_includedir}/portable_platform.h %{_includedir}/ibv-conduit/ %{_includedir}/smp-conduit/ %{_includedir}/udp-conduit/ %{_libdir}/libamudp.a %{_libdir}/libgasnet-ibv-par.a %{_libdir}/libgasnet-ibv-parsync.a %{_libdir}/libgasnet-ibv-seq.a %{_libdir}/libgasnet-smp-par.a %{_libdir}/libgasnet-smp-parsync.a %{_libdir}/libgasnet-smp-seq.a %{_libdir}/libgasnet-udp-par.a %{_libdir}/libgasnet-udp-parsync.a %{_libdir}/libgasnet-udp-seq.a %{_libdir}/libgasnet_tools-par.a %{_libdir}/libgasnet_tools-seq.a %{_libdir}/pkgconfig/gasnet-ibv-par.pc %{_libdir}/pkgconfig/gasnet-ibv-parsync.pc %{_libdir}/pkgconfig/gasnet-ibv-seq.pc %{_libdir}/pkgconfig/gasnet-smp-par.pc %{_libdir}/pkgconfig/gasnet-smp-parsync.pc %{_libdir}/pkgconfig/gasnet-smp-seq.pc %{_libdir}/pkgconfig/gasnet-udp-par.pc %{_libdir}/pkgconfig/gasnet-udp-parsync.pc %{_libdir}/pkgconfig/gasnet-udp-seq.pc %{_libdir}/pkgconfig/gasnet_tools-par.pc %{_libdir}/pkgconfig/gasnet_tools-seq.pc %if %{with mpich} %{_includedir}/mpich-*/gasnet_ammacros.h %{_includedir}/mpich-*/gasnet_arch_arm.h %{_includedir}/mpich-*/gasnet_asm.h %{_includedir}/mpich-*/gasnet_atomic_bits.h %{_includedir}/mpich-*/gasnet_atomic_fwd.h %{_includedir}/mpich-*/gasnet_atomicops.h %{_includedir}/mpich-*/gasnet_basic.h %{_includedir}/mpich-*/gasnet_coll.h %{_includedir}/mpich-*/gasnet_config.h %{_includedir}/mpich-*/gasnetex.h %{_includedir}/mpich-*/gasnet_fwd.h %{_includedir}/mpich-*/gasnet.h %{_includedir}/mpich-*/gasnet_help.h %{_includedir}/mpich-*/gasnet_membar.h %{_includedir}/mpich-*/gasnet_mk.h %{_includedir}/mpich-*/gasnet_portable_platform.h %{_includedir}/mpich-*/gasnet_ratomic.h %{_includedir}/mpich-*/gasnet_timer.h %{_includedir}/mpich-*/gasnet_toolhelp.h %{_includedir}/mpich-*/gasnet_tools.h %{_includedir}/mpich-*/gasnet_tools-par.mak %{_includedir}/mpich-*/gasnet_tools-seq.mak %{_includedir}/mpich-*/gasnet_trace.h %{_includedir}/mpich-*/gasnet_vis.h %{_includedir}/mpich-*/portable_inttypes.h %{_includedir}/mpich-*/portable_platform.h %{_includedir}/mpich-*/mpi-conduit/ %{_includedir}/mpich-*/smp-conduit/ %{_includedir}/mpich-*/udp-conduit/ %{_libdir}/mpich*/lib/libammpi.a %{_libdir}/mpich*/lib/libamudp.a %{_libdir}/mpich*/lib/libgasnet-mpi-par.a %{_libdir}/mpich*/lib/libgasnet-mpi-parsync.a %{_libdir}/mpich*/lib/libgasnet-mpi-seq.a %{_libdir}/mpich*/lib/libgasnet-smp-par.a %{_libdir}/mpich*/lib/libgasnet-smp-parsync.a %{_libdir}/mpich*/lib/libgasnet-smp-seq.a %{_libdir}/mpich*/lib/libgasnet_tools-par.a %{_libdir}/mpich*/lib/libgasnet_tools-seq.a %{_libdir}/mpich*/lib/libgasnet-udp-par.a %{_libdir}/mpich*/lib/libgasnet-udp-parsync.a %{_libdir}/mpich*/lib/libgasnet-udp-seq.a %{_libdir}/mpich*/lib/pkgconfig/gasnet-mpi-par.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-mpi-parsync.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-mpi-seq.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-smp-par.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-smp-parsync.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-smp-seq.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet_tools-par.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet_tools-seq.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-udp-par.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-udp-parsync.pc %{_libdir}/mpich*/lib/pkgconfig/gasnet-udp-seq.pc %endif %if %{with openmpi} %{_includedir}/openmpi-*/gasnet_ammacros.h %{_includedir}/openmpi-*/gasnet_arch_arm.h %{_includedir}/openmpi-*/gasnet_asm.h %{_includedir}/openmpi-*/gasnet_atomic_bits.h %{_includedir}/openmpi-*/gasnet_atomic_fwd.h %{_includedir}/openmpi-*/gasnet_atomicops.h %{_includedir}/openmpi-*/gasnet_basic.h %{_includedir}/openmpi-*/gasnet_coll.h %{_includedir}/openmpi-*/gasnet_config.h %{_includedir}/openmpi-*/gasnetex.h %{_includedir}/openmpi-*/gasnet_fwd.h %{_includedir}/openmpi-*/gasnet.h %{_includedir}/openmpi-*/gasnet_help.h %{_includedir}/openmpi-*/gasnet_membar.h %{_includedir}/openmpi-*/gasnet_mk.h %{_includedir}/openmpi-*/gasnet_portable_platform.h %{_includedir}/openmpi-*/gasnet_ratomic.h %{_includedir}/openmpi-*/gasnet_timer.h %{_includedir}/openmpi-*/gasnet_toolhelp.h %{_includedir}/openmpi-*/gasnet_tools.h %{_includedir}/openmpi-*/gasnet_tools-par.mak %{_includedir}/openmpi-*/gasnet_tools-seq.mak %{_includedir}/openmpi-*/gasnet_trace.h %{_includedir}/openmpi-*/gasnet_vis.h %{_includedir}/openmpi-*/portable_inttypes.h %{_includedir}/openmpi-*/portable_platform.h %{_includedir}/openmpi-*/mpi-conduit/ %{_includedir}/openmpi-*/smp-conduit/ %{_includedir}/openmpi-*/udp-conduit/ %{_libdir}/openmpi*/lib/libammpi.a %{_libdir}/openmpi*/lib/libamudp.a %{_libdir}/openmpi*/lib/libgasnet-mpi-par.a %{_libdir}/openmpi*/lib/libgasnet-mpi-parsync.a %{_libdir}/openmpi*/lib/libgasnet-mpi-seq.a %{_libdir}/openmpi*/lib/libgasnet-smp-par.a %{_libdir}/openmpi*/lib/libgasnet-smp-parsync.a %{_libdir}/openmpi*/lib/libgasnet-smp-seq.a %{_libdir}/openmpi*/lib/libgasnet_tools-par.a %{_libdir}/openmpi*/lib/libgasnet_tools-seq.a %{_libdir}/openmpi*/lib/libgasnet-udp-par.a %{_libdir}/openmpi*/lib/libgasnet-udp-parsync.a %{_libdir}/openmpi*/lib/libgasnet-udp-seq.a %{_libdir}/openmpi*/lib/pkgconfig/gasnet-mpi-par.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-mpi-parsync.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-mpi-seq.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-smp-par.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-smp-parsync.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-smp-seq.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet_tools-par.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet_tools-seq.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-udp-par.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-udp-parsync.pc %{_libdir}/openmpi*/lib/pkgconfig/gasnet-udp-seq.pc %endif %if %{with mpich} %files mpich %{_libdir}/mpich*/bin/amudprun %{_libdir}/mpich*/bin/gasnetrun_mpi %{_libdir}/mpich*/bin/gasnetrun_mpi.pl %{_libdir}/mpich*/bin/gasnetrun_smp %{_libdir}/mpich*/bin/gasnetrun_smp-mpi.pl %{_libdir}/mpich*/bin/gasnetrun_smp.pl %{_libdir}/mpich*/bin/gasnet_trace %{_libdir}/mpich*/bin/gasnet_trace.pl %{_libdir}/mpich*/bin/ident %endif %if %{with openmpi} %files openmpi %{_libdir}/openmpi*/bin/amudprun %{_libdir}/openmpi*/bin/gasnetrun_mpi %{_libdir}/openmpi*/bin/gasnetrun_mpi.pl %{_libdir}/openmpi*/bin/gasnetrun_smp %{_libdir}/openmpi*/bin/gasnetrun_smp-mpi.pl %{_libdir}/openmpi*/bin/gasnetrun_smp.pl %{_libdir}/openmpi*/bin/gasnet_trace %{_libdir}/openmpi*/bin/gasnet_trace.pl %{_libdir}/openmpi*/bin/ident %endif %files doc %license license.txt %doc README %doc ChangeLog %doc docs/*.md %doc docs/*.txt %{_docdir}/GASNet %changelog %autochangelog