@@ -82,12 +82,29 @@ case $(uname) in
8282 Darwin) njobs=$( sysctl -n hw.physicalcpu) ;;
8383esac
8484
85- mkdir -p " $WORKDIR "
86- cd " $WORKDIR "
85+ if test " $mpiname " = " mpich" ; then
86+ mkdir -p " $WORKDIR " /libfabric && cd " $WORKDIR " /libfabric
87+ echo running configure on libfabric
88+ " $SOURCE " /modules/libfabric/configure --prefix=" $PREFIX "
89+ echo running make with " ${njobs:- 1} " jobs on libfabric
90+ make -j " ${njobs:- 1} " install DESTDIR=" $DESTDIR "
91+ withofi=--with-libfabric=" ${DESTDIR}${PREFIX} "
92+ options=(" ${options[@]/ --with-libfabric=embedded/ $withofi } " )
93+ destdirfixfiles+=(src/include/mpichinfo.h)
94+ destdirfixfiles+=(src/pm/hydra/hydra_config.h)
95+ fi
96+
97+ mkdir -p " $WORKDIR " && cd " $WORKDIR "
8798
8899echo running configure
89100" $SOURCE " /configure " ${options[@]} " || cat config.log
90101
102+ for hdr in " ${destdirfixfiles[@]-} " ; do
103+ test -n " $hdr " || break
104+ echo removing DESTDIR from " $hdr "
105+ sed -i.orig " s|$DESTDIR ||g" " $hdr "
106+ done
107+
91108echo running make with " ${njobs:- 1} " jobs
92109make -j " ${njobs:- 1} " install DESTDIR=" $DESTDIR "
93110
@@ -97,7 +114,6 @@ cd "${DESTDIR}${PREFIX}"
97114rm -f include/* cxx.h
98115rm -f include/* .mod
99116rm -f include/* f.h
100- rm -fr include/rdma
101117rm -f bin/mpif77
102118rm -f bin/mpif90
103119rm -f bin/mpifort
@@ -112,6 +128,12 @@ rm -f lib/lib*mpifort.*
112128rm -fr lib/pkgconfig
113129rm -fr share
114130
131+ cd " ${DESTDIR}${PREFIX} "
132+ rm -fr include/rdma
133+ rm -f bin/fi_*
134+ rm -f lib/libfabric.a
135+ rm -f lib/libfabric.la
136+
115137cd " ${DESTDIR}${PREFIX} "
116138rm -f bin/io_demo
117139rm -f bin/ucx_read_profile
@@ -153,6 +175,19 @@ if test "$(uname)" = Linux; then
153175 mv " $( readlink " $libmpi " ) " " $libmpi "
154176 ln -sf " $libmpi " " ${libmpi% .* } "
155177 fi
178+ if test -f libfabric.so; then
179+ patchelf --set-rpath " \$ ORIGIN" " $libmpi "
180+ for lib in libfabric.so.? ; do
181+ if test -f " $lib " .* .* ; then
182+ mv " $( readlink " $lib " ) " " $lib "
183+ ln -sf " $lib " " ${lib% .* } "
184+ fi
185+ patchelf --set-rpath " \$ ORIGIN" " $lib "
186+ for exe in " ${executables[@]} " ; do
187+ patchelf --remove-needed " $lib " " ../bin/$exe "
188+ done
189+ done
190+ fi
156191 if test -f libucp.so; then
157192 patchelf --set-rpath " \$ ORIGIN" " $libmpi "
158193 for lib in libuc[mpst]* .so.? ; do
@@ -182,16 +217,31 @@ if test "$(uname)" = Darwin; then
182217 libpmpi=" libpmpi.12.dylib"
183218 cd " ${DESTDIR}${PREFIX} /bin"
184219 for exe in " ${executables[@]} " ; do
185- install_name_tool -change " $libdir /$libmpi " " @rpath/$libmpi " " $exe "
186- install_name_tool -change " $libdir /$libpmpi " " @rpath/$libpmpi " " $exe "
187220 install_name_tool -add_rpath " @executable_path/../lib/" " $exe "
221+ for lib in " $libmpi " " $libpmpi " ; do
222+ install_name_tool -change " $libdir /$lib " " @rpath/$lib " " $exe "
223+ done
188224 done
189225 cd " ${DESTDIR}${PREFIX} /lib"
190226 for lib in " $libmpi " " $libpmpi " ; do
191227 install_name_tool -id " @rpath/$lib " " $lib "
192228 install_name_tool -add_rpath " @loader_path/" " $lib "
193229 done
194230 install_name_tool -change " $libdir /$libpmpi " " @rpath/$libpmpi " " $libmpi "
231+ libfabric=" libfabric.1.dylib"
232+ if test -f " $libfabric " ; then
233+ install_name_tool -id " @rpath/$libfabric " " $libfabric "
234+ install_name_tool -add_rpath " @loader_path/" " $libfabric "
235+ oldname=" $libdir /$libfabric " ; newname=" @rpath/$libfabric " ;
236+ cd " ${DESTDIR}${PREFIX} /bin"
237+ for exe in " ${executables[@]} " ; do
238+ install_name_tool -change " $oldname " " $newname " " $exe "
239+ done
240+ cd " ${DESTDIR}${PREFIX} /lib"
241+ for lib in " $libmpi " " $libpmpi " ; do
242+ install_name_tool -change " $oldname " " $newname " " $lib "
243+ done
244+ fi
195245fi
196246
197247} # fixup-mpich()
0 commit comments