RFR: 8307858: [REDO] JDK-8307194 Add make target for optionally building a complete set of all JDK and hotspot libjvm static libraries [v5]
Jiangli Zhou
jiangli at openjdk.org
Wed May 24 21:02:00 UTC 2023
> 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.
Jiangli Zhou has updated the pull request incrementally with one additional commit since the last revision:
Update make/common/NativeCompilation.gmk
Thanks you!
Co-authored-by: Erik Joelsson <37597443+erikj79 at users.noreply.github.com>
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/14064/files
- new: https://git.openjdk.org/jdk/pull/14064/files/695bda5e..93366e38
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=14064&range=04
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=14064&range=03-04
Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 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
More information about the build-dev
mailing list