> From: Kurt Hornik > > >>>>> Brian D Ripley writes: > > > As far as I know R 2.0.1 was built on AIX. A quick diff > > gannet% diff ~/R/R-2.0.1/src/modules/X11/Makefile > > ~/R/R-2.1.0/src/modules/X11/Makefile > > 54c54 > > < $(SHLIB_LINK) -o $@ $(R_X11_la_LDFLAGS) $(R_X11_la_OBJECTS) > > $(R_X11_la_LIBADD) $(LIBS) > > --- > >> $(SHLIB_LINK) -o $@ $(R_X11_la_LDFLAGS) $(R_X11_la_OBJECTS) > > $(R_X11_la_LIBADD) > > 128c128,129 > > < ../../../src/include/Rmodules/RX11.h > > --- > >> ../../../src/include/Rmodules/RX11.h \ > >> ../../../src/include/Rconnections.h > > > suggests that AIX (alone) required $(LIBS) there. As it is > harmful on > > some other platforms (the intention is to pick up entry points in > > R.bin/libR rather than duplicate copies of static > libraries) I suspect we > > need an AIX-specific workaround (in particular the libintl > library is not > > going to be in LIBS). > > > This probably applies to other modules and even shared objects in > > packages. > > Yes. It would still be good if someone on AIX could provide > us with the > output of BUILDDIR/libtool --config. > > -k > > > Is there anyone with an AIX machine who is able to work through this > > and provide appropriate diffs?
Sorry for being dense: could you explain what diff is needed? I unpacked R-patched_2005-05-12, and set: OBJECT_MODE=64 CC=xlc_r F77=xlf_r CXX=xlC_r CFLAGS/FLAGS/CXXFLAGS="-O -qstrict" Running make gave similar error, namely symbols that should be in libm not found. Below is output from BUILDDIR/libtool --config: --------------------------------- # Libtool was configured on host hpc2b.merck.com: # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=no # 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 # Whether or not to optimize for fast installation. fast_install=yes # The host system. host_alias= host=powerpc-ibm-aix5.1.0.0 # An echo program that does not interpret backslashes. echo="print -r" # The archiver. AR="ar" AR_FLAGS="cru" # A C compiler. LTCC="xlc_r" # A language-specific compiler. CC="xlc_r" # Is the compiler the GNU C compiler? with_gcc= # An ERE matcher. EGREP="grep -E" # The linker used to build libraries. LD="/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/bin/nm -B" # A symbol stripping program STRIP="strip" # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=file # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Shared library suffix (normally ".so"). shrext_cmds='.so' # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag=" -DPIC" pic_mode=default # What is the maximum length of a command? max_cmd_len=8192 # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="-bnso -bI:/lib/syscalls.exp" # Compiler flag to turn off builtin functions. no_builtin_flag="" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=" " # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=linux # 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}.a \$libname.a" # The coded name of the library, if different from the real name. soname_spec="\${libname}\${release}\${shared_ext}\$major" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # 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 and install a shared archive. archive_cmds="" archive_expsym_cmds="\$CC \${wl}-bM:SRE -o \$output_objdir/\$soname \$libobjs \$deplibs \$compiler_flags \${wl}-bE:\$export_symbols \${wl}-bnoentry\${allow_undefined_flag}~\$AR \$AR_FLAGS \$output_objdir/\$libname\$release.a \$output_objdir/\$soname" postinstall_cmds="" postuninstall_cmds="" # Commands used to build a loadable module (assumed same as above if empty) module_cmds="" module_expsym_cmds="" # Commands to strip libraries. old_striplib="" striplib="" # Dependencies to place before the objects being linked to create a # shared library. predep_objects="" # Dependencies to place after the objects being linked to create a # shared library. postdep_objects="" # Dependencies to place before the objects being linked to create a # shared library. predeps="" # Dependencies to place after the objects being linked to create a # shared library. postdeps="" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="" # 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" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=" \${wl}-berok" # Flag that forces no undefined symbols. no_undefined_flag=" \${wl}-bernotok" # Commands used to finish a libtool library installation in a directory. finish_cmds="" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDT][BCDT]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" # Transform the output of nm in a C name address pair global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" # This is the shared library runtime path variable. runpath_var= # This is the shared library path variable. shlibpath_var=LIBPATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=unknown # How to hardcode a shared library path into an executable. hardcode_action=immediate # Whether we should hardcode library paths into libraries. hardcode_into_libs=yes # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}-blibpath:\$libdir:/usr/local/lib:/usr/lpp/ xlopt:/usr/lib/threads:/usr/lib:/lib " # 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 during linking hardcodes DIR into the # resulting binary. hardcode_direct=yes # 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 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH " # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=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" # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=yes # The commands to list exported symbols. export_symbols_cmds="\$NM -BCpg \$libobjs \$convenience | awk '{ if (((\\\$2 == \\\"T\\\") || (\\\$2 == \\\"D\\\") || (\\\$2 == \\\"B\\\")) && (substr(\\\$3,1,1) != \\\".\\\")) { print \\\$3 } }' | sort -u > \$export_symbols" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Symbols that must always be exported. include_expsyms="" ------------------------------- > > > On Thu, 12 May 2005, Bill Northcott wrote: > > >> On 11/05/2005, at 11:26 PM, Kurt Hornik wrote: > >> >> There seem to be problems in the autoconf stuff. cos > and sin are > >> >> being located in libm but the link line you show has no > '-lm' which > >> >> accounts for 6 of the 7 missing symbols. Also gettext > seems to have > >> >> been located by the configure script, but there is no > option on the > >> >> link line to include it in the link. Also search > configure.in for > >> >> strings like powerpc-ibm-aix to see what stuff is being done > >> >> specifically for AIX. It may be out of date in relation to your > >> >> system. > >> >> > >> > > >> > > >> >> If it was my problem, I would have look at those bits of the > >> >> configure > >> >> script and the sections of configure.in that generated > them. Then I > >> >> would compare the AC_SUBST variables with the makefile.in that > >> >> generated the link. It seems there is some non- > communication there. > >> > >> > Yes most of the undefined symbols seem to come from > libm. But they > >> > would also be in libm on all other platforms which have such, and > >> > we do > >> > not include it there. On Linux I get > >> > > ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel