libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fortran libraries on the Blue Gene with mpi


From: Ralf Wildenhues
Subject: Re: Fortran libraries on the Blue Gene with mpi
Date: Sun, 19 Apr 2009 09:11:27 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

[ 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'




reply via email to

[Prev in Thread] Current Thread [Next in Thread]