On Fri, 22 Mar 2024 10:16:44 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:
>> This is the first step of several, in which I will clean up the native >> compilation code as used by modules. In this first step `java.base`, >> `java.deskop`, `jdk.accessibility` and `jdk.jpackage` are left out, since >> they require more work. The changes in the remaining modules are trivial by >> comparison. >> >> The changes done here are: >> >> 1) A new argument `JDK_LIB` has been introduced, that is used for linking >> with other libraries produced by the JDK build. As a follow-up, this will be >> further cleaned up and generalized, but the goal for this change is just to >> separate them out from external libraries. >> >> 2) The list of libraries given to `LIB` and `JDK_LIB` has been sorted in >> alphabetical order. Note that this change will affect the resulting binaries >> (since the order libraries are given are stored in the binary), but this >> change should only be superficial. (If we have symbol clashes between >> libraries, then we have problems on a whole other level...). >> >> 3) The code has been checked for inconsistencies and style guide errors, and >> a common programming style has been applied to all `Lib.gmk` and >> `Launcher.gmk` files, making sure that all parts follow best practices. >> >> This PR will be followed up by invidual PRs for the modules requiring not >> jsut trivial cleanup (`java.base`, `java.deskop`, `jdk.accessibility` and >> `jdk.jpackage`), and a PR which will unify `JDK_LIB` handling across >> platforms, and automatically apply proper dependencies. > > Magnus Ihse Bursie has updated the pull request incrementally with one > additional commit since the last revision: > > Fix indentation I can give a spoiler to what the upcoming JDK_LIBS rewrite will do. Currently, if you want to link with e.g. `jli`, this is what you need to do: $(eval $(call SetupJdkLibrary, BUILD_LIBMYLIB, \ NAME := mylib, \ EXTRA_HEADER_DIRS := java.base:libjli, \ LDFLAGS_linux := -L$(call FindLibDirForModule, java.base), \ LDFLAGS_macosx := -L$(call FindLibDirForModule, java.base), \ JDK_LIBS_linux := -ljli, \ JDK_LIBS_macosx := -ljli, \ JDK_LIBS_windows := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib, \ )) $(BUILD_LIBMYLIB): $(call FindLib, java.base, jli) This is cumbersome, and easy to forget (we almost never get it 100% right in any place...). I intend to replace it with the following, and to have the build system generate the boiler plate automatically: $(eval $(call SetupJdkLibrary, BUILD_LIBMYLIB, \ NAME := mylib, \ JDK_LIBS := jli, \ )) ------------- PR Comment: https://git.openjdk.org/jdk/pull/18430#issuecomment-2014900723