Review request (XS): 7110396: Sound code fails to build on multiarch Linux systems

mark.reinhold at oracle.com mark.reinhold at oracle.com
Fri Nov 11 05:27:27 UTC 2011


2011/11/10 17:45 -0800, david.holmes at oracle.com:
> On 11/11/2011 1:47 AM, mark.reinhold at oracle.com wrote:
>> 2011/11/10 4:49 -0800, robert.ottenhag at oracle.com:
>>> The patch is correct, but in order to follow the convention in most other
>>> makefiles, I advice to use OTHER_LDLIBS instead of EXTRA_LIBS.
> 
> The common/Defs-*.gmk files say explicitly to use EXTRA_LIBS in place of LDLIBS
> or LDLIBS_COMMON (and seem ignorant of OTHER_LDLIBS).
> 
> But if the intent was to ensure this link directive was at the end then I don't
> think OTHER_LDLIBS will work as it is the first set of entries in LDLIBS, while
> the last set is LDLIBS_COMMON to which EXTRA_LIBS is appended.

The intent is only to ensure that this link directive follows all object
files; it's fine for it to precede the other libraries being linked.

>From a build log, OTHER_LDLIBS is doing exactly what's needed:

  /usr/bin/gcc -O2 -fno-strict-aliasing -fPIC -W -Wall -Wno-unused \
  -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN -DNDEBUG \
  -DARCH='"i586"' -Di586 -DLINUX -DRELEASE='"1.8.0-mr_2011.11.10.1106"' \
  -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT \
  -I. -I/w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/CClassHeaders \
  -I../../../../src/solaris/javavm/export \
  -I../../../../src/share/javavm/export \
  -I../../../../src/share/native/common \
  -I../../../../src/solaris/native/common \
  -I../../../../src/share/native/javax/sound \
  -I../../../../src/solaris/native/javax/sound -DX_PLATFORM=X_LINUX \
  -DX_ARCH=X_I586 -DUSE_DAUDIO=TRUE -DUSE_PORTS=TRUE \
  -DUSE_PLATFORM_MIDI_OUT=TRUE -DUSE_PLATFORM_MIDI_IN=TRUE \
  -I../../../../src/share/native/com/sun/media/sound -Xlinker -O1 -Xlinker \
  -version-script=mapfile-vers -Wl,--hash-style=both -Xlinker -z -Xlinker \
  origin -Xlinker -rpath -Xlinker \$ORIGIN -Xlinker -z -Xlinker defs \
  -L/w/jdk8/build/lib/i386 -Wl,-soname=libjsoundalsa.so -shared \
  -mimpure-text -o /w/jdk8/build/lib/i386/libjsoundalsa.so \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/Utilities.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/DirectAudioDeviceProvider.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/DirectAudioDevice.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/MidiInDevice.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/MidiInDeviceProvider.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/MidiOutDevice.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/MidiOutDeviceProvider.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PlatformMidi.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PortMixerProvider.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PortMixer.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_CommonUtils.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_PCM.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_PCMUtils.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_MidiIn.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_MidiOut.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_MidiUtils.o \
  /w/jdk8/build/tmp/sun/javax.sound/jsoundalsa/obj/PLATFORM_API_LinuxOS_ALSA_Ports.o \
  -lasound -ljava -L/w/jdk8/build/lib/i386/server -ljvm -lc
  ^^^^^^^^

(Without this fix, "-lasound" was appearing right before "-shared".)

- Mark



More information about the build-dev mailing list