Ralf Wildenhues | 1 Nov 21:30 2010
Picon
Picon

Re: Can't cross-compile with same libdir as the host one

Hi Loïc,

thanks for the bug report.

* Loïc Minier wrote on Sat, Oct 23, 2010 at 04:31:19PM CEST:
>  As part of a project to cross-build Debian packages, I've been looking
>  into an issue which affects libtool packages.  I can actually reproduce
>  the issue very easily with the libtool 2.2.6b release tarball (current
>  version in Debian/Ubuntu) and with the 2.4 tarball:
> 
> cd libtool/tests/depdemo
> ./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib
> make install DESTDIR=`pwd`/destdir
[...]

>  /bin/bash ../libtool   --mode=install /usr/bin/install -c   libl2.la '/home/lool/scratch/libtool/upstream/libtool-2.2.6b/tests/depdemo/destdir/usr/lib'
> libtool: install: warning: relinking `libl2.la'
> libtool: install: (cd /home/lool/scratch/libtool/upstream/libtool-2.2.6b/tests/depdemo/l2;
/bin/bash /home/lool/scratch/libtool/upstream/libtool-2.2.6b/tests/depdemo/libtool  --tag CC
--mode=relink arm-linux-gnueabi-gcc -g -O2 -no-undefined -o libl2.la -rpath /usr/lib l2.lo
../l1/libl1.la -inst-prefix-dir /home/lool/scratch/libtool/upstream/libtool-2.2.6b/tests/depdemo/destdir)
> libtool: relink: arm-linux-gnueabi-gcc -shared  .libs/l2.o  
-L/home/lool/scratch/libtool/upstream/libtool-2.2.6b/tests/depdemo/destdir/usr/lib
-L/usr/lib -ll1    -Wl,-soname -Wl,libl2.so.0 -o .libs/libl2.so.0.0.0
> /usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld: skipping
incompatible /usr/lib/libc.so when searching for -lc
> /usr/lib/libc.a: could not read symbols: File format not recognized

>  Now, it would be possible to workaround this by configuring binutils to
>  support the host as a bfd target, and ld would just skip this x86-64
(Continue reading)

Loïc Minier | 2 Nov 00:12 2010

Re: Can't cross-compile with same libdir as the host one

On Mon, Nov 01, 2010, Ralf Wildenhues wrote:
> >  It is entirely possible that this is a toolchain bug, but I think
> >  libtool has this design to use -rpath to specify the installation
> >  directory, which might be why the linker looks in this directory.
> 
> Can you work around it by using the Libtool 2.4 --with-sysroot feature?
> Please report back if that doesn't help.

 I didn't manage to get it working with this feature; I hope I'm using
 it properly

 Starting from tests/depdemo as the previous time, I tried:
./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib --with-sysroot=/usr/arm-linux-gnueabi
make install DESTDIR=`pwd`/destdir

 and it fails as follows:
libtool: link: ( cd ".libs" && rm -f "libl2.la" && ln -s "../libl2.la" "libl2.la" )
make[2]: entrant dans le répertoire «
/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2 »
test -z "/usr/lib" || /bin/mkdir -p "/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libl2.la '/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib'
libtool: install: warning: relinking `libl2.la'
libtool: install: (cd /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2;
/bin/bash /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/libtool  --tag CC
--mode=relink arm-linux-gnueabi-gcc -g -O2 -no-undefined -o libl2.la -rpath /usr/lib l2.lo
../l1/libl1.la -inst-prefix-dir /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir)
libtool: relink: arm-linux-gnueabi-gcc -shared  -fPIC -DPIC  .libs/l2.o  
-L/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib -L/usr/lib
-ll1  -O2   -Wl,-soname -Wl,libl2.so.0 -o .libs/libl2.so.0.0.0
/usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld: skipping
(Continue reading)

Ralf Wildenhues | 2 Nov 20:04 2010
Picon
Picon

Re: Can't cross-compile with same libdir as the host one

* Loïc Minier wrote on Tue, Nov 02, 2010 at 12:12:28AM CET:
> On Mon, Nov 01, 2010, Ralf Wildenhues wrote:
> > >  It is entirely possible that this is a toolchain bug, but I think
> > >  libtool has this design to use -rpath to specify the installation
> > >  directory, which might be why the linker looks in this directory.
> > 
> > Can you work around it by using the Libtool 2.4 --with-sysroot feature?
> > Please report back if that doesn't help.
> 
>  I didn't manage to get it working with this feature; I hope I'm using
>  it properly
> 
>  Starting from tests/depdemo as the previous time, I tried:
> ./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabi --libdir=/usr/lib --with-sysroot=/usr/arm-linux-gnueabi
> make install DESTDIR=`pwd`/destdir

This looks right to me.

>  and it fails as follows:

> libtool: install: warning: relinking `libl2.la'
> libtool: install: (cd /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/l2;
/bin/bash /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/libtool  --tag CC
--mode=relink arm-linux-gnueabi-gcc -g -O2 -no-undefined -o libl2.la -rpath /usr/lib l2.lo
../l1/libl1.la -inst-prefix-dir /home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir)
> libtool: relink: arm-linux-gnueabi-gcc -shared  -fPIC -DPIC  .libs/l2.o  
-L/home/lool/scratch/libtool/latest/libtool-2.4/tests/depdemo/destdir/usr/lib -L/usr/lib
-ll1  -O2   -Wl,-soname -Wl,libl2.so.0 -o .libs/libl2.so.0.0.0
> /usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld: skipping
incompatible /usr/lib/libc.so when searching for -lc
(Continue reading)

Terry Dontje | 15 Nov 13:00 2010
Picon

Oracle Solaris Studio 12.2 compiler incompatibility with libtool

Ralf,

I am actually seeing an incompatibility between libtool and Solaris Studio 12.2 "Fortran" compiler (not C).  It looks like lt_prog_compiler_wl is being set to -rpath and not '-Wl,-rpath or '-Qoption ld -path'.  Below is the libtool link line and I've attached the output of libtool --config to this email.


/bin/sh ../../../libtool  --tag=FC   --mode=link f95 -I../../../ompi/include -I../../../../ompi/include -M. -I../../../../ompi/mpi/f90 -I../../../ompi/mpi/f90  -m64 -version-info 0:0:0  -export-dynamic  -o libmpi_f90.la -rpath /workspace/tdd/ctnext/tr-linux/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 -lrt -lnsl  -lutil -lm
libtool: link: f95 -G  .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   -rpath /workspace/tdd/ctnext/ws-trunk/linux/ompi/mpi/f77/.libs -rpath /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs -rpath /workspace/tdd/ctnext/tr-linux/lib -L/workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs ../../../ompi/mpi/f77/.libs/libmpi_f77.so /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs/libmpi.so -lcrypto -lssl -ldl -lrt -lnsl -lutil -lm  -m64   -mt -soname libmpi_f90.so.0 -o .libs/libmpi_f90.so.0.0.0
f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
f90: Warning: Option -soname passed to ld, if ld is invoked, ignored otherwise
/usr/bin/ld: unrecognized option '-path'

thanks,

--

Terry D. Dontje | Principal Software Engineer
Developer Tools Engineering | +1.781.442.2631
Oracle - Performance Technologies
95 Network Drive, Burlington, MA 01803
Email terry.dontje <at> oracle.com




# Whether or not to build shared libraries.
build_libtool_libs=yes

# Whether or not to build static libraries.
build_old_libs=no

# A BSD- or MS-compatible name lister.
NM="/usr/bin/nm -B"

# Which release of libtool.m4 was used?
macro_version=2.2.6b
macro_revision=1.3017

# Assembler program.
AS=as

# DLL creation program.
DLLTOOL=dlltool

# Object dumper program.
OBJDUMP=objdump

# What type of objects to build.
pic_mode=default

# Whether or not to optimize for fast installation.
fast_install=needless

# The host system.
host_alias=
host=x86_64-unknown-linux-gnu
host_os=linux-gnu

# The build system.
build_alias=
build=x86_64-unknown-linux-gnu
build_os=linux-gnu

# A sed program that does not truncate output.
SED="/bin/sed"

# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="$SED -e 1s/^X//"

# A grep program that handles long lines.
GREP="/bin/grep"

# An ERE matcher.
EGREP="/bin/grep -E"

# A literal string matcher.
FGREP="/bin/grep -F"

# Whether we need soft or hard links.
LN_S="ln -s"

# What is the maximum length of a command?
max_cmd_len=98304

# Object file suffix (normally "o").
objext=o

# Executable file suffix (normally "").
exeext=

# whether the shell understands "unset".
lt_unset=unset

# turn spaces into newlines.
SP2NL="tr \\040 \\012"

# turn newlines into spaces.
NL2SP="tr \\015\\012 \\040\\040"

# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"

# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"

# Command to use when deplibs_check_method == "file_magic".
file_magic_cmd="\$MAGIC_CMD"

# The archiver.
AR="ar"
AR_FLAGS="cru"

# A symbol stripping program.
STRIP="strip"

# Commands used to install an old-style archive.
RANLIB="ranlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""

# A C compiler.
LTCC="cc"

# LTCC compiler flags.
LTCFLAGS="-m64 -g -mt -I/workspace/tdd/ctnext/ws-trunk/opal/mca/paffinity/hwloc/hwloc/include"

# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	
]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"

# Transform the output of nm in a proper C declaration.
global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .*
\\(.*\\)\$/extern char \\1;/p'"

# Transform the output of nm in a C name address pair.
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e
's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"

# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *)
0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e
's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"

# The name of the directory that contains temporary libtool files.
objdir=.libs

# Shell to use when invoking shell scripts.
SHELL="/bin/sh"

# An echo program that does not interpret backslashes.
ECHO="echo"

# Used to examine libraries when file_magic_cmd begins with "file".
MAGIC_CMD=file

# Must we lock files when doing compilation?
need_locks="no"

# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=""

# Tool to change global to local symbols on Mac OS X.
NMEDIT=""

# Tool to manipulate fat objects and archives on Mac OS X.
LIPO=""

# ldd/readelf like tool for Mach-O binaries on Mac OS X.
OTOOL=""

# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
OTOOL64=""

# Old archive suffix (normally "a").
libext=a

# Shared library suffix (normally ".so").
shrext_cmds=".so"

# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""

# Variables whose values should be saved in libtool wrapper scripts and
# restored at link time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH"

# Do we need the "lib" prefix for modules?
need_lib_prefix=no

# Do we need a version for libraries?
need_version=no

# Library versioning type.
version_type=linux

# Shared library runtime path variable.
runpath_var=LD_RUN_PATH

# Shared library path variable.
shlibpath_var=LD_LIBRARY_PATH

# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=yes

# Format of library name prefix.
libname_spec="lib\$name"

# List of archive names.  First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME
library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix
\${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"

# The coded name of the library, if different from the real name.
soname_spec="\${libname}\${release}\${shared_ext}\$major"

# Command to use after installation of a shared archive.
postinstall_cmds=""

# Command to use after uninstallation of a shared archive.
postuninstall_cmds=""

# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"

# As "finish_cmds", except a single script fragment to be evaled but
# not shown.
finish_eval=""

# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes

# Compile-time system search path for libraries.
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"

# Run-time system search path for libraries.
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/mysql /usr/lib64/mysql /usr/lib64/openais
/usr/lib/opencryptoki /usr/lib/opencryptoki/stdll /usr/lib64/opencryptoki/stdll
/usr/lib64/opencryptoki /usr/lib/qt-3.3/lib /usr/lib64/qt-3.3/lib /usr/lib/qt4/lib
/usr/lib64/qt4/lib64 "

# Whether dlopen is supported.
dlopen_support=yes

# Whether dlopen of programs is supported.
dlopen_self=yes

# Whether dlopen of statically linked programs is supported.
dlopen_self_static=yes

# Commands to strip libraries.
old_striplib="strip --strip-debug"
striplib="strip --strip-unneeded"

# The linker used to build libraries.
LD="/usr/bin/ld -m elf_x86_64"

# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"

# A language specific compiler.
CC="cc"

# Is the compiler the GNU compiler?
with_gcc=

# Compiler flag to turn off builtin functions.
no_builtin_flag=""

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Additional compiler flags for building library objects.
pic_flag=" -KPIC -DPIC"

# Compiler flag to prevent dynamic linking.
link_static_flag=""

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=yes

# Whether or not to disallow shared libs when runtime libs are static.
allow_libtool_libs_with_static_runtimes=no

# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\`new_convenience=; for conv in
\$convenience\\\"\\\"; do test -z \\\"\$conv\\\" ||
new_convenience=\\\"\$new_convenience,\$conv\\\"; done; \$ECHO \\\"\$new_convenience\\\"\` \${wl}--no-whole-archive"

# Whether the compiler copes with passing no objects directly.
compiler_needs_object="yes"

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared archive.
old_archive_from_expsyms_cmds=""

# Commands used to build a shared archive.
archive_cmds="\$CC -G \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
	    \$CC -G \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script
\${wl}\$output_objdir/\$libname.ver -o \$lib"

# Commands used to build a loadable module if different from building
# a shared archive.
module_cmds=""
module_expsym_cmds=""

# Whether we are building with GNU ld or not.
with_gnu_ld="yes"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that enforces no undefined symbols.
no_undefined_flag=""

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into a binary
# during linking.  This must work even if $libdir does not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=""

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=no

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
# library is relocated.
hardcode_direct_absolute=no

# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
# into the resulting binary.
hardcode_minus_L=no

# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
# into the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to "yes" if building a shared library automatically hardcodes DIR
# into the library and all subsequent libraries and executables linked
# against it.
hardcode_automatic=no

# Set to yes if linker adds runtime paths of dependent libraries
# to runtime path list.
inherit_rpath=no

# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=unknown

# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

# Set to "yes" if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort |
uniq > \$export_symbols"

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"

# Symbols that must always be exported.
include_expsyms=""

# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=""

# Specify filename containing input files.
file_list_spec=""

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# The directories searched by this compiler when creating a shared library.
compiler_lib_search_dirs=""

# Dependencies to place before and after the objects being linked to
# create a shared library.
predep_objects=""
postdep_objects=""
predeps=""
postdeps=""

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""

_______________________________________________
Bug-libtool mailing list
Bug-libtool <at> gnu.org
http://lists.gnu.org/mailman/listinfo/bug-libtool
Ralf Wildenhues | 15 Nov 22:17 2010
Picon
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

Hi Terry,

* Terry Dontje wrote on Mon, Nov 15, 2010 at 01:00:17PM CET:
> I am actually seeing an incompatibility between libtool and Solaris Studio
> 12.2 "Fortran" compiler (not C).  It looks like lt_prog_compiler_wl is being
> set to -rpath and not '-Wl,-rpath or '-Qoption ld -path'.  Below is the
> libtool link line and I've attached the output of libtool --config to this
> email.

Thanks for the bug erport.

> 
> /bin/sh ../../../libtool  --tag=FC   --mode=link f95 -I../../../ompi/include
> -I../../../../ompi/include -M. -I../../../../ompi/mpi/f90
> -I../../../ompi/mpi/f90  -m64 -version-info 0:0:0  -export-dynamic  -o
> libmpi_f90.la -rpath /workspace/tdd/ctnext/tr-linux/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 -lrt -lnsl  -lutil -lm
> libtool: link: f95 -G  .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   -rpath
> /workspace/tdd/ctnext/ws-trunk/linux/ompi/mpi/f77/.libs -rpath
> /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs -rpath
> /workspace/tdd/ctnext/tr-linux/lib
> -L/workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs
> ../../../ompi/mpi/f77/.libs/libmpi_f77.so
> /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs/libmpi.so -lcrypto -lssl
> -ldl -lrt -lnsl -lutil -lm  -m64   -mt -soname libmpi_f90.so.0 -o
> .libs/libmpi_f90.so.0.0.0
> f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
> f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
> f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
> f90: Warning: Option -soname passed to ld, if ld is invoked, ignored
> otherwise
> /usr/bin/ld: unrecognized option '-path'

Ahh, so Solaris Studio changed their Fortran compiler characteristics.
libtool.m4 has:

        case `$CC -V 2>&1 | sed 5q` in
        *Sun\ F* | *Sun*Fortran*)
          # Sun Fortran 8.3 passes all unrecognized flags to the linker
          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
          _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
          _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
          ;;
        *Sun\ C*)
          # Sun C 5.9
          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
          _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
          _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
          ;;

which looks like old Fortran compilers didn't accept a -Wl, or '-Qoption
ld' argument to pass flags on to the linker.  Or maybe it still doesn't,
but -r is detected as a compiler argument now.  See also
http://lists.gnu.org/archive/html/libtool-patches/2006-05/msg00011.html

Can you confirm whether -Wl, or '-Qoption ld' is accepted by Solaris
Studio 12.2 f90 for GNU/Linux now?  The online docs don't seem to
present me with different man pages for the Solaris and the GNU/Linux
versions, but I am fairly certain that the old versions did not accept
the flags.

Please also post
  cc -V
  CC -V
  f90 -V

for this version of the compiler, so we can try to differentiate from
the older versions.

Thanks,
Ralf
Terry Dontje | 16 Nov 19:47 2010
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

On 11/15/2010 04:17 PM, Ralf Wildenhues wrote:
Hi Terry, * Terry Dontje wrote on Mon, Nov 15, 2010 at 01:00:17PM CET:
I am actually seeing an incompatibility between libtool and Solaris Studio 12.2 "Fortran" compiler (not C). It looks like lt_prog_compiler_wl is being set to -rpath and not '-Wl,-rpath or '-Qoption ld -path'. Below is the libtool link line and I've attached the output of libtool --config to this email.
Thanks for the bug erport.
/bin/sh ../../../libtool --tag=FC --mode=link f95 -I../../../ompi/include -I../../../../ompi/include -M. -I../../../../ompi/mpi/f90 -I../../../ompi/mpi/f90 -m64 -version-info 0:0:0 -export-dynamic -o libmpi_f90.la -rpath /workspace/tdd/ctnext/tr-linux/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 -lrt -lnsl -lutil -lm libtool: link: f95 -G .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 -rpath /workspace/tdd/ctnext/ws-trunk/linux/ompi/mpi/f77/.libs -rpath /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs -rpath /workspace/tdd/ctnext/tr-linux/lib -L/workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs ../../../ompi/mpi/f77/.libs/libmpi_f77.so /workspace/tdd/ctnext/ws-trunk/linux/ompi/.libs/libmpi.so -lcrypto -lssl -ldl -lrt -lnsl -lutil -lm -m64 -mt -soname libmpi_f90.so.0 -o .libs/libmpi_f90.so.0.0.0 f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise f90: Warning: Option -soname passed to ld, if ld is invoked, ignored otherwise /usr/bin/ld: unrecognized option '-path'
Ahh, so Solaris Studio changed their Fortran compiler characteristics. libtool.m4 has: case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; which looks like old Fortran compilers didn't accept a -Wl, or '-Qoption ld' argument to pass flags on to the linker. Or maybe it still doesn't, but -r is detected as a compiler argument now. See also http://lists.gnu.org/archive/html/libtool-patches/2006-05/msg00011.html Can you confirm whether -Wl, or '-Qoption ld' is accepted by Solaris Studio 12.2 f90 for GNU/Linux now?
Either one seem to work with Studio 12.2 and both show up in the -flags output.
I checked an earlier Studio circa 2009 and only -Qoption works and only shows up in -flags output.

The online docs don't seem to present me with different man pages for the Solaris and the GNU/Linux versions, but I am fairly certain that the old versions did not accept the flags.
Please also post cc -V CC -V f90 -V
My 2009 compiler show's
cc: Sun C 5.10 Linux_i386 2009/04/01
CC: Sun C++ 5.10 Linux_i386 2009/04/01
f90: Sun Fortran 95 8.4 Linux_i386 2009/04/01

My Studio 12.2 compiler show's
cc: Sun C 5.11 Linux_i386 2010/08/13
CC: Sun C++ 5.11 Linux_i386 2010/08/13
f90: Sun Fortran 95 8.5 Linux_i386 2010/08/13

for this version of the compiler, so we can try to differentiate from the older versions. Thanks, Ralf


--

Terry D. Dontje | Principal Software Engineer
Developer Tools Engineering | +1.781.442.2631
Oracle - Performance Technologies
95 Network Drive, Burlington, MA 01803
Email terry.dontje <at> oracle.com



_______________________________________________
Bug-libtool mailing list
Bug-libtool <at> gnu.org
http://lists.gnu.org/mailman/listinfo/bug-libtool
Ralf Wildenhues | 16 Nov 19:56 2010
Picon
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

* Terry Dontje wrote on Tue, Nov 16, 2010 at 07:47:36PM CET:
> On 11/15/2010 04:17 PM, Ralf Wildenhues wrote:
> >Ahh, so Solaris Studio changed their Fortran compiler characteristics.
> >libtool.m4 has:
> >
> >         case `$CC -V 2>&1 | sed 5q` in
> >         *Sun\ F* | *Sun*Fortran*)
> >           # Sun Fortran 8.3 passes all unrecognized flags to the linker
> >           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
> >           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
> >           _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
> >           ;;
> >         *Sun\ C*)
> >           # Sun C 5.9
> >           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
> >           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
> >           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
> >           ;;
> >
> >which looks like old Fortran compilers didn't accept a -Wl, or '-Qoption
> >ld' argument to pass flags on to the linker.  Or maybe it still doesn't,
> >but -r is detected as a compiler argument now.  See also
> >http://lists.gnu.org/archive/html/libtool-patches/2006-05/msg00011.html
> >
> >Can you confirm whether -Wl, or '-Qoption ld' is accepted by Solaris
> >Studio 12.2 f90 for GNU/Linux now?
> Either one seem to work with Studio 12.2 and both show up in the
> -flags output.
> I checked an earlier Studio circa 2009 and only -Qoption works and
> only shows up in -flags output.
> 
> >  The online docs don't seem to
> >present me with different man pages for the Solaris and the GNU/Linux
> >versions, but I am fairly certain that the old versions did not accept
> >the flags.
> >Please also post
> >   cc -V
> >   CC -V
> >   f90 -V
> My 2009 compiler show's
> cc: Sun C 5.10 Linux_i386 2009/04/01
> CC: Sun C++ 5.10 Linux_i386 2009/04/01
> f90: Sun Fortran 95 8.4 Linux_i386 2009/04/01
> 
> My Studio 12.2 compiler show's
> cc: Sun C 5.11 Linux_i386 2010/08/13
> CC: Sun C++ 5.11 Linux_i386 2010/08/13
> f90: Sun Fortran 95 8.5 Linux_i386 2010/08/13

Thanks.  Now the only remaining question is whether we still need to
support that thing called 'Sun Ceres Fortran' here:
http://www.open-mpi.org/community/lists/devel/2008/11/4932.php
and if yes, whether that also supported '-Qoption ld' already, despite
a hint to the contrary in that reference.

Any chance one of you might know/remember this?

Thanks,
Ralf
Terry Dontje | 16 Nov 20:01 2010
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

On 11/16/2010 01:56 PM, Ralf Wildenhues wrote:
* Terry Dontje wrote on Tue, Nov 16, 2010 at 07:47:36PM CET:
On 11/15/2010 04:17 PM, Ralf Wildenhues wrote:
Ahh, so Solaris Studio changed their Fortran compiler characteristics. libtool.m4 has: case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; which looks like old Fortran compilers didn't accept a -Wl, or '-Qoption ld' argument to pass flags on to the linker. Or maybe it still doesn't, but -r is detected as a compiler argument now. See also http://lists.gnu.org/archive/html/libtool-patches/2006-05/msg00011.html Can you confirm whether -Wl, or '-Qoption ld' is accepted by Solaris Studio 12.2 f90 for GNU/Linux now?
Either one seem to work with Studio 12.2 and both show up in the -flags output. I checked an earlier Studio circa 2009 and only -Qoption works and only shows up in -flags output.
The online docs don't seem to present me with different man pages for the Solaris and the GNU/Linux versions, but I am fairly certain that the old versions did not accept the flags. Please also post cc -V CC -V f90 -V
My 2009 compiler show's cc: Sun C 5.10 Linux_i386 2009/04/01 CC: Sun C++ 5.10 Linux_i386 2009/04/01 f90: Sun Fortran 95 8.4 Linux_i386 2009/04/01 My Studio 12.2 compiler show's cc: Sun C 5.11 Linux_i386 2010/08/13 CC: Sun C++ 5.11 Linux_i386 2010/08/13 f90: Sun Fortran 95 8.5 Linux_i386 2010/08/13
Thanks. Now the only remaining question is whether we still need to support that thing called 'Sun Ceres Fortran' here: http://www.open-mpi.org/community/lists/devel/2008/11/4932.php and if yes, whether that also supported '-Qoption ld' already, despite a hint to the contrary in that reference. Any chance one of you might know/remember this?
Like a bad recurring nightmare :-).

Note the f90 2009 compiler is the 8.4 where Ceres was 8.3.  So from 8.4 on -Qoption is supported.  I think we probably would want to still support Ceres but let me ask around.


--

Terry D. Dontje | Principal Software Engineer
Developer Tools Engineering | +1.781.442.2631
Oracle - Performance Technologies
95 Network Drive, Burlington, MA 01803
Email terry.dontje <at> oracle.com



_______________________________________________
Bug-libtool mailing list
Bug-libtool <at> gnu.org
http://lists.gnu.org/mailman/listinfo/bug-libtool
Terry Dontje | 17 Nov 13:00 2010
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

On 11/16/2010 02:01 PM, Terry Dontje wrote:
On 11/16/2010 01:56 PM, Ralf Wildenhues wrote:
Thanks. Now the only remaining question is whether we still need to support that thing called 'Sun Ceres Fortran' here: http://www.open-mpi.org/community/lists/devel/2008/11/4932.php and if yes, whether that also supported '-Qoption ld' already, despite a hint to the contrary in that reference. Any chance one of you might know/remember this?
Like a bad recurring nightmare :-).

Note the f90 2009 compiler is the 8.4 where Ceres was 8.3.  So from 8.4 on -Qoption is supported.  I think we probably would want to still support Ceres but let me ask around.

I've discussed this internally and yes we would like Ceres to be supported.

Sorry,

--

Terry D. Dontje | Principal Software Engineer
Developer Tools Engineering | +1.781.442.2631
Oracle - Performance Technologies
95 Network Drive, Burlington, MA 01803
Email terry.dontje <at> oracle.com



_______________________________________________
Bug-libtool mailing list
Bug-libtool <at> gnu.org
http://lists.gnu.org/mailman/listinfo/bug-libtool
Ralf Wildenhues | 18 Nov 21:23 2010
Picon
Picon

Re: Oracle Solaris Studio 12.2 compiler incompatibility with libtool

* Terry Dontje wrote on Wed, Nov 17, 2010 at 01:00:26PM CET:
> On 11/16/2010 02:01 PM, Terry Dontje wrote:
> >On 11/16/2010 01:56 PM, Ralf Wildenhues wrote:
> >>Thanks.  Now the only remaining question is whether we still need to
> >>support that thing called 'Sun Ceres Fortran' here:
> >>http://www.open-mpi.org/community/lists/devel/2008/11/4932.php
> >>and if yes, whether that also supported '-Qoption ld' already, despite
> >>a hint to the contrary in that reference.
> >>
> >>Any chance one of you might know/remember this?
> >Like a bad recurring nightmare :-).
> >
> >Note the f90 2009 compiler is the 8.4 where Ceres was 8.3.  So from 8.4 on
> >-Qoption is supported.  I think we probably would want to still support
> >Ceres but let me ask around.
> >
> I've discussed this internally and yes we would like Ceres to be supported.
> 
> Sorry,

Oh, no problem.  Presumably that means you have some way to test the
proposed patch then with all the interesting compilers.  That would be
very nice.  :-)

Here it goes; it works with this (yes, very old) Sun Studio X.X on
GNU/Linux installation; and yes, this is about GNU/Linux only.

Thanks,
Ralf

2010-11-18  Ralf Wildenhues  <Ralf.Wildenhues <at> gmx.de>

	Fix $wl setting for Solaris Studio 12.2 f90 on GNU/Linux.
	* libltdl/m4/libtool.m4 (_LT_COMPILER_PIC) [linux]
	<lt_prog_compiler_wl>: Set to '-Qoption ld ' if we
	detect Sun Fortran version 8.4 or newer.
	Report by Terry Dontje.

diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
index 419ffe1..4a371c9 100644
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
 <at>  <at>  -4324,12 +4324,17  <at>  <at>  m4_if([$1], [CXX], [
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'


Gmane