RFR: 8347755: Support static library in jmod [v6]

Henry Jen henryjen at openjdk.org
Fri Apr 18 00:12:03 UTC 2025


On Thu, 17 Apr 2025 23:56:07 GMT, Jiangli Zhou <jiangli at openjdk.org> wrote:

> The default Java launcher `main.o` (and packaged as `liblauncher` static library) is produced by https://github.com/openjdk/jdk/blob/ad7c475fb1e23f583a33d58f0bd73ea0fb56740c/make/modules/java.base/Launcher.gmk#L39:
> 
> ```
> $(eval $(call SetupBuildLauncher, java, \
>     ENABLE_ARG_FILES := true, \
>     EXPAND_CLASSPATH_WILDCARDS := true, \
>     EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \
>     VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
>     OPTIMIZATION := HIGH, \
> ))
> ```
> 
> That should be used to link the launcher executable when jlink creates the final image, if no custom launcher is used.
> 
> With the https://github.com/openjdk/leyden/blob/hermetic-java-runtime/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/LinkHermeticImagePlugin.java prototype, we could pass additional linking flags to to form the complete native linking command (when integrating with the static .jmod support). With with that, I think we can pass the default `liblauncher.a` as part of the extra linking flags. Then, that may help simplify things for us by not having to include `liblauncher` in `java.base` static .jmod and not have to deal with optionally using the default `liblauncher` from the .jmod for linking. We could go with that.
> 
> The default launcher and custom launcher would be handled similarly then, by passing via the extra linking flag.

Yes, that's just for the `java` launcher. If that's the only executable for java.base static mod targeted for. `javaw` would be another executable in java.base, so we will need another one for that.
Regard to other executable, this approach would expect they would need to build a separate lib in their own corresponding static jmod to link with.

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

PR Comment: https://git.openjdk.org/leyden/pull/46#issuecomment-2814230978


More information about the leyden-dev mailing list