summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--legion/legion.spec86
1 files changed, 82 insertions, 4 deletions
diff --git a/legion/legion.spec b/legion/legion.spec
index 0d9bbcc..58148ba 100644
--- a/legion/legion.spec
+++ b/legion/legion.spec
@@ -27,9 +27,53 @@ data in the memory hierarchy and assignment of tasks to processors in a way that
is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
applications to new architectures.
+%package openmpi
+Summary: Legion Open MPI binaries and libraries
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: openmpi-devel
+
+%description openmpi
+Legion is a data-centric parallel programming system for writing portable
+high performance programs targeted at distributed heterogeneous architectures.
+Legion presents abstractions which allow programmers to describe properties of
+program data (e.g. independence, locality). By making the Legion programming
+system aware of the structure of program data, it can automate many of the
+tedious tasks programmers currently face, including correctly extracting task-
+and data-level parallelism and moving data around complex memory hierarchies.
+A novel mapping interface provides explicit programmer controlled placement of
+data in the memory hierarchy and assignment of tasks to processors in a way that
+is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
+applications to new architectures.
+
+Legion compiled with Open MPI, package incl. binaries and libraries
+
+%package mpich
+Summary: Legion MPICH binaries and libraries
+Requires: %{name}-%{?_isa} = %{version}-%{release}
+BuildRequires: mpich-devel
+
+%description mpich
+Legion is a data-centric parallel programming system for writing portable
+high performance programs targeted at distributed heterogeneous architectures.
+Legion presents abstractions which allow programmers to describe properties of
+program data (e.g. independence, locality). By making the Legion programming
+system aware of the structure of program data, it can automate many of the
+tedious tasks programmers currently face, including correctly extracting task-
+and data-level parallelism and moving data around complex memory hierarchies.
+A novel mapping interface provides explicit programmer controlled placement of
+data in the memory hierarchy and assignment of tasks to processors in a way that
+is orthogonal to correctness, thereby enabling easy porting and tuning of Legion
+applications to new architectures.
+
+Legion compiled with MPICH, package incl. binaries and libraries
+
%package devel
Summary: Development headers and libraries for %{name} library
Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-openmpi%{?_isa} = %{version}
+Requires: %{name}-mpich%{?_isa} = %{version}
+Requires: mpich-devel
+Requires: openmpi-devel
%description devel
Legion is a data-centric parallel programming system for writing portable
@@ -51,15 +95,41 @@ This package contains development headers and libraries for the legion library
%patch0 -p1
%build
-mkdir %{_target_platform}
-pushd %{_target_platform}
+mkdir serial openmpi mpich
+
+pushd serial
export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
-%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON
+%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=OFF -DLegion_BUILD_EXAMPLES=ON
%make_build
+popd
+
+pushd openmpi
+%{_openmpi_load}
+export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
+%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DGASNet_CONDUIT=mpi \
+ -DGASNet_mpi-par_LIBRARY=${MPI_LIB}/libgasnet-mpi-par.so -DGASNet_gasnet_tools-par_LIBRARY=$MPI_LIB/libgasnet_tools-par.so -DGASNet_INCLUDE_DIR=$MPI_INCLUDE
+%make_build
+%{_openmpi_unload}
+popd
+
+pushd mpich
+%{_mpich_load}
+export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
+%{cmake} .. -DLegion_USE_HWLOC=ON -DLegion_USE_GASNet=ON -DLegion_BUILD_EXAMPLES=ON -DCMAKE_INSTALL_LIBDIR=${MPI_LIB} -DGASNet_CONDUIT=mpi \
+ -DGASNet_mpi-par_LIBRARY=${MPI_LIB}/libgasnet-mpi-par.so -DGASNet_gasnet_tools-par_LIBRARY=$MPI_LIB/libgasnet_tools-par.so -DGASNet_INCLUDE_DIR=$MPI_INCLUDE
+%make_build
+%{_mpich_unload}
+popd
%install
-%make_install -C %{_target_platform}
+%make_install -C serial
+%make_install -C openmpi
+%make_install -C mpich
+# MPI subpackages don't need the ldconfig magic. They are hidden by
+# default, in MPI back-end-specific directory, and only show to the
+# user after the relevant environment module has been loaded.
+# rpmlint will report that as errors, but it is fine.
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
@@ -75,8 +145,16 @@ export LDFLAGS="%{__global_ldflags} -Wl,--as-needed"
%{_includedir}/mappers
%{_includedir}/realm
%{_libdir}/lib*.so
+%{_libdir}/openmpi*/lib/lib*.so
+%{_libdir}/mpich*/lib/lib*.so
%{_datadir}/Legion
+%files openmpi
+%{_libdir}/openmpi*/lib/lib*.so.1
+
+%files mpich
+%{_libdir}/mpich*/lib/lib*.so.1
+
%changelog
* Fri Oct 07 2016 Christoph Junghans <junghans@votca.org> - 16.10.0-1
- initial import