[ adding the libtool-patches list, moving libtool list to Bcc: so you can omit it from followups ]
Hello John, Christian, thanks to both of you for all your feedback so far. We have a pretty good idea of what is happening for the C compilers now, but the C++ and the Fortran compilers still need research. Also, I'm not sure yet how to integrate the -qnostaticlink flag automatically, so for now let's do it manually. Below is a first cut at a patch to add support for BG to Libtool. I would like you to test it for me. This is going to be a bit of work, as it will involve several steps. Please try to follow them all. First, please ensure that you have Autoconf 2.63 and Automake 1.10.2 installed somewhere (below the same --prefix) and found early in $PATH. Then, grab either the git master branch of the Libtool tree, or a nightly snapshot; the Libtool homepage has a link. Extract the tarball. Apply the patch at the end of this message to the Libtool tree, then run ./bootstrap If there are any problems or error messages, stop right here and report back with them. Otherwise, continue: Create six build trees and build and run the Libtool test suites with each of the compiler combinations (the following assumes Bourne-shell syntax): mkdir build-gcc build-xl build-bgcc build-bgxl build-mpigcc build-mpixl # GCC, non-BG cd build-gcc ../configure CC=gcc CXX=g++ F77=g77 FC=gfortran GCJ=no make make -k check VERBOSE=yes 2>&1 | tee checklog-gcc-1 cd .. # XL, non-BG cd build-xl ../configure CC=xlc CXX=xlC F77=xlf FC=xlf95 GCJ=no make make -k check VERBOSE=yes 2>&1 | tee checklog-xl-1 cd .. # GCC, BG cd build-bgcc ../configure CC=bgcc CXX=bgc++ F77=bgf77 FC=bgfortran GCJ=no \ LDFLAGS=-dynamic make make -k check VERBOSE=yes 2>&1 | tee checklog-bgcc-1 cd .. # XL, BG cd build-bgxl ../configure CC=bgxlc CXX=bgxlC F77=bgfort FC=bgxlf95 GCJ=no \ LDFLAGS=-qnostaticlink make make -k check VERBOSE=yes 2>&1 | tee checklog-bgxl-1 cd .. # GCC, MPI cd build-mpigcc ../configure CC=mpicc CXX=mpicxx F77=mpif77 FC=mpif90 GCJ=no \ LDFLAGS=-dynamic make make -k check VERBOSE=yes 2>&1 | tee checklog-mpigcc-1 cd .. # XL, MPI cd build-mpixl ../configure CC=mpixlc CXX=mpixlC F77=mpixlf FC=mpixlf95 GCJ=no \ LDFLAGS=-qnostaticlink make make -k check VERBOSE=yes 2>&1 | tee checklog-mpixl-1 cd .. I might have added some typos above, so if you happen to see obvious errors, feel free to correct them (e.g., I'm not sure whether bgfort is an XL or GCC Fortran compiler). If any of the configure runs fail due to failure to guess the system type, then please try adding --host=powerpc-bgp-linux --build=powerpc-bgp-linux and if that still causes bogus run time test results, you can also try --host=powerpc-bgp-linux --build=powerpc-unknown-linux to force cross-compilation mode. For each directory, send the corresponding checklog-* file plus the tests/testsuite.log file, please. Best if you put these files in a tarball, gzip- or bzip2-compressed. Thanks, Ralf Initial port for BlueGene BG/L. * libltdl/m4/libtool.m4 (_LT_COMPILER_PIC, _LT_LINKER_SHLIBS) (_LT_LANG_CXX_CONFIG) [linux]: Detect bgxl*, bgf*, mpixl* compilers. * NEWS: Update. * THANKS: Update. Report, feedback and testing by John R. Cary and Christian Rössel. diff --git a/NEWS b/NEWS index 546766d..3fe8f14 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,7 @@ New in 2.2.8 2009-??-??: git version 2.2.7a, Libtool team: - Improved support for 64bit Windows (mingw64). - Improved support for cegcc (Windows CE/PocketPC). - Support for GNU/kOpenSolaris (kopensolaris*-gnu). + - Initial support for compilers on BlueGene BG/L. * Bug fixes: diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index 75675b8..c3cffa1 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -3680,8 +3680,8 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xlc* | xlC*) - # IBM XL 8.0 on PPC + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' @@ -3964,8 +3964,8 @@ m4_if([$1], [CXX], [ # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' @@ -4343,7 +4343,7 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; - xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac @@ -4365,7 +4365,7 @@ _LT_EOF fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= @@ -5911,7 +5911,7 @@ if test "$_lt_caught_CXX_error" != yes; then # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; - xl*) + xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool