Original description for JDK-8307194 change:
-----
This PR is branched from the makefile changes for 
https://bugs.openjdk.org/browse/JDK-8303796 and contains the following for 
handling the JDK/hotspot static libraries:

 - Build hotspot libjvm.a and JDK static libraries for 
static-libs-image/static-libs-bundles targets; This change does not affect the 
graal-builder-image target

 - For libjvm.a specifically, exclude operator_new.o

- Filter out "external" .o files (those are the .o files included from a 
different JDK library and needed when creating the .so shared library only) 
from JDK .a libraries; That's to avoid linker failures caused by duplicate 
symbols
  - For libjli.a: Not include inflate.o inftrees.o inffast.o zadler32.o 
zcrc32.o zutil.o (compiled from zlib sources) if zlib is built as JDK bundled
  - For libawt_xawt.a and libawt_head.a: Not include systemScale.o, since it's 
provided in libawt.a

- Handle long arguments case for static build in 
make/common/NativeCompilation.gmk

- Address @erikj79's comment in 
https://github.com/openjdk/jdk/pull/13709#discussion_r1180750185 for 
LIBJLI_STATIC_EXCLUDE_OBJS
-----

Updates to address build failures reported on macosx-<cpu> platforms:

- For gcc/clang, when building a static library first partially link (using the 
`-r` linking option) all object files into one object. The output object file 
from the partial linking is then passed to `ar` to create the static library. 

The original change for JDK-8307194 used @argument_file for all platforms when 
dealing with long arguments to `ar`, which caused failures on macosx-<cpu> 
builds. On darwin (https://www.unix.com/man-page/osx/1/ar/), `ar` does not 
support @argument_file. The updated change avoids using @argument_file for `ar`.

The partial linking change is done in make/common/NativeCompilation.gmk. The 
flag related change is done in make/autoconf/flags-ldflags.m4 mainly.

-------------

Commit messages:
 - Merge branch 'master' into JDK-8307858
 - Clean up.
 - In clude $MACHINE_FLAG in partial linking flag.
 - Use '-m32' instead of '-m elf_i386'.
 - Use '-m elf_i386' for partial linking with gcc for linux 32-bit platform.
 - Only do partial linking step with gcc/clang on 64-bit platform.
 - Need to set $1_AR_OBJ_ARG to $$($1_LD_OBJ_ARG) instead of $1_LD_OBJ_ARG.
 - Merge branch 'master' into JDK-8307858
 - Revert 
src/java.desktop/linux/native/libjsound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c 
change.
 - When building a static library, partially link the input object files first. 
Then create the static library using the output object file produced by partial 
linking.
 - ... and 1 more: https://git.openjdk.org/jdk/compare/265f40b4...8af1ec2f

Changes: https://git.openjdk.org/jdk/pull/14064/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14064&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8307858
  Stats: 201 lines in 10 files changed: 150 ins; 34 del; 17 mod
  Patch: https://git.openjdk.org/jdk/pull/14064.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14064/head:pull/14064

PR: https://git.openjdk.org/jdk/pull/14064

Reply via email to