[ http://www.open-mpi.org/community/lists/devel/2010/08/8398.php ]
Hello Paul, sorry for the late reply. This issue you reported is valid; it is already fixed in upstream Libtool 2.2.8, with commit v2.2.6-201-g519bf91: <http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=v2.2.6-201-g519bf91> Cheers, Ralf * Paul H. Hargrove wrote on Thu, Aug 26, 2010 at 11:12:55PM CEST: > One of the platforms I've been testing is a Linux/PPC64 (which happens to be > the front-end to a BG/P, but don't be confused by that - I am NOT trying to > build for the BG/P). On the system are IBM's XLC compilers (also sold under > the ABSoft name). When passing "-q64" to the xlc compilers to get an LP64 > ABI (default is ILP32), it seems that the scripts for constricting the F90 > bindings somehow end up passing the "-q64" to /usr/bin/ld, which is not > happy. > > If I don't set {C,CXX,F,FC}FLAGS=-q64 then there is no problem building the > F90 bindings (for ILP32 ABI). > > If I --disable-mpi-f90 the build is fine (except for the atomic test failure > from "make check", reported in > http://www.open-mpi.org/community/lists/devel/2010/08/8369.php) > > Here are the details of the platform: > > $ uname -a > Linux login1 2.6.16.60-0.67.1-ppc64 #1 SMP Thu Aug 5 10:54:46 UTC 2010 > ppc64 ppc64 ppc64 GNU/Linux > > $ which xlc > /soft/apps/ibmcmp-aug2010/vac/bg/9.0/bin/xlc > $ xlc -qversion > IBM XL C/C++ Advanced Edition for Blue Gene/P, V9.0 > Version: 09.00.0000.0009 [...] > Here is the configure command: > > $ [path_to]/configure --with-contrib-vt-flags=--with-platform=linux CC=xlc_r > CXX=xlC_r F77=xlf FC=xlf90 CFLAGS=-q64 CXXFLAGS=-q64 FFLAGS=-q64 > FCFLAGS=-q64 > > The problem exists with both 1.5rc5 and 1.4.3rc1. > > Here is the failure from 1.4.3.rc1: > > $ make > [...] > make[4]: Entering directory > `/gpfs/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/ompi/mpi/f90' > /bin/sh ../../../libtool --mode=link xlf90 -I../../../ompi/include > -I../../../../ompi/include -I. -I../../../../ompi/mpi/f90 > -I../../../ompi/mpi/f90 -q64 -version-info 0:0:0 -export-dynamic -o > libmpi_f90.la -rpath /usr/local/lib mpi.lo mpi_sizeof.lo > mpi_comm_spawn_multiple_f90.lo mpi_testall_f90.lo mpi_testsome_f90.lo > mpi_waitall_f90.lo mpi_waitsome_f90.lo mpi_wtick_f90.lo mpi_wtime_f90.lo > ../../../ompi/libmpi.la -lnsl -lutil > libtool: link: /usr/bin/ld -m elf64ppc -shared .libs/mpi.o > .libs/mpi_sizeof.o .libs/mpi_comm_spawn_multiple_f90.o > .libs/mpi_testall_f90.o .libs/mpi_testsome_f90.o .libs/mpi_waitall_f90.o > .libs/mpi_waitsome_f90.o .libs/mpi_wtick_f90.o .libs/mpi_wtime_f90.o > -L/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/orte/.libs > -L/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/opal/.libs > ../../../ompi/.libs/libmpi.so > /home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/orte/.libs/libopen-rte.so > /home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/opal/.libs/libopen-pal.so > -ldl -lnsl -lutil -q64 -soname libmpi_f90.so.0 -o > .libs/libmpi_f90.so.0.0.0 > /usr/bin/ld: unrecognized option '-q64' > /usr/bin/ld: use the --help option for usage information > make[4]: *** [libmpi_f90.la] Error 1 > make[4]: Leaving directory > `/gpfs/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64/ompi/mpi/f90' > make[3]: *** [all-recursive] Error 1 [...] > Here is the failure from 1.5rc5 (including re-run w/ V=1) > $ make V=1 > [...] > make[4]: Entering directory > `/gpfs/home/hargrove/tmp/openmpi-1.5rc5/BLD-xlc_r-64/ompi/mpi/f90' > /bin/sh ../../../libtool --tag=FC --mode=link xlf90 > -I../../../ompi/include -I../../../../ompi/include -I. > -I../../../../ompi/mpi/f90 -I../../../ompi/mpi/f90 -q64 -version-info 0:0:0 > -export-dynamic -o libmpi_f90.la -rpath /usr/local/lib mpi.lo mpi_sizeof.lo > mpi_comm_spawn_multiple_f90.lo mpi_testall_f90.lo mpi_testsome_f90.lo > mpi_waitall_f90.lo mpi_waitsome_f90.lo mpi_wtick_f90.lo mpi_wtime_f90.lo > ../../../ompi/mpi/f77/libmpi_f77.la -lnsl -lutil > libtool: link: /usr/bin/ld -m elf64ppc -shared .libs/mpi.o > .libs/mpi_sizeof.o .libs/mpi_comm_spawn_multiple_f90.o > .libs/mpi_testall_f90.o .libs/mpi_testsome_f90.o .libs/mpi_waitall_f90.o > .libs/mpi_waitsome_f90.o .libs/mpi_wtick_f90.o .libs/mpi_wtime_f90.o > -L/home/hargrove/tmp/openmpi-1.5rc5/BLD-xlc_r-64/ompi/.libs > ../../../ompi/mpi/f77/.libs/libmpi_f77.so > /home/hargrove/tmp/openmpi-1.5rc5/BLD-xlc_r-64/ompi/.libs/libmpi.so -ldl > -lnsl -lutil -q64 -soname libmpi_f90.so.0 -o .libs/libmpi_f90.so.0.0.0 > /usr/bin/ld: unrecognized option '-q64' > /usr/bin/ld: use the --help option for usage information > make[4]: *** [libmpi_f90.la] Error 1 > make[4]: Leaving directory > `/gpfs/home/hargrove/tmp/openmpi-1.5rc5/BLD-xlc_r-64/ompi/mpi/f90' [...] > Based on the make output this might be a libtool issue. > > However, I noticed the following comment in ompi/mpi/f90/Makefile.am: > # This Makefile.am is quite complex and confusing. Part of the > # problem is that Libtool (v1.5.18) does not understand F90, so we > # have to do a few things manually (and no shared libraries). Here's a > # summary of what is happening: > [...] > > Which suggests to me that the problem might come from how libtool is USED in > this case. > > I did see that the Libool configure logic already found the proper ld flags: > > *** Libtool configuration > [...] > checking whether the xlc_r -q64 linker (/usr/bin/ld -m elf64ppc) supports > shared libraries... yes > [...] > checking whether the xlC_r -q64 linker (/usr/bin/ld -m elf64ppc) supports > shared libraries... yes > [...] > checking whether the xlC_r -q64 linker (/usr/bin/ld -m elf64ppc) supports > shared libraries... yes > [...] > checking whether the xlf -q64 linker (/usr/bin/ld -m elf64ppc) supports > shared libraries... yes > [...] > checking whether the xlf90 -q64 linker (/usr/bin/ld -m elf64ppc) supports > shared libraries... yes > > > > I know the FAQ entry (singular) in the Libtool manual suggests trying > something like CC='xlc_r -q64' instead of CFLAGS-q64 if one has problems > with flags used to link a shared library. However, I tried that and just > reach a slightly different instance of the same error: > > [...] > /bin/sh ../../../libtool --mode=link xlf90 -q64 -I../../../ompi/include > -I../../../../ompi/include -I. -I../../../../ompi/mpi/f90 > -I../../../ompi/mpi/f90 -version-info 0:0:0 -export-dynamic -o > libmpi_f90.la -rpath /usr/local/lib mpi.lo mpi_sizeof.lo > mpi_comm_spawn_multiple_f90.lo mpi_testall_f90.lo mpi_testsome_f90.lo > mpi_waitall_f90.lo mpi_waitsome_f90.lo mpi_wtick_f90.lo mpi_wtime_f90.lo > ../../../ompi/libmpi.la -lnsl -lutil libtool: link: /usr/bin/ld -m elf64ppc > -shared .libs/mpi.o .libs/mpi_sizeof.o .libs/mpi_comm_spawn_multiple_f90.o > .libs/mpi_testall_f90.o .libs/mpi_testsome_f90.o .libs/mpi_waitall_f90.o > .libs/mpi_waitsome_f90.o .libs/mpi_wtick_f90.o .libs/mpi_wtime_f90.o > -L/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64-noflags/orte/.libs > -L/home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64-noflags/opal/.libs > ../../../ompi/.libs/libmpi.so > /home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64-noflags/orte/.libs/libopen-rte.so > > /home/hargrove/tmp/openmpi-1.4.3rc1/BLD-xlc_r-64-noflags/opal/.libs/libopen-pal.so > -ldl -lnsl -lutil -q64 -soname libmpi_f90.so.0 -o > .libs/libmpi_f90.so.0.0.0 > /usr/bin/ld: unrecognized option '-q64' > /usr/bin/ld: use the --help option for usage information > [...] > > So, at this point my best guess is that libtool believes that the -q64 > argument is a linker flag, when in fact it is not.