RFR: 8352284: EXTRA_CFLAGS incorrectly applied to BUILD_LIBJVM src/hotspot C++ source files
Patrick Zhang
qpzhang at openjdk.org
Thu Mar 20 01:13:25 UTC 2025
On Wed, 19 Mar 2025 18:28:50 GMT, Erik Joelsson <erikj at openjdk.org> wrote:
> The `EXTRA_[C|CXX]FLAGS` variables are not meant to be parameters to SetupNativeCompilation
Actually, the content of EXTRA_[C|CXX]FLAGS is hidden (and mixed together) inside the `JVM_CFLAGS` and get passed to as a parameter to `SetupNativeCompilation` eventually. The diff is whether we want to pass them implicitly (**base**) or explicitly (**patch**).
The call sequence is:
1. Set up **JVM_CFLAGS** and append **EXTRA_CXXFLAGS** (make/autoconf/flags-cflags.m4#893) ->
2. Update **JVM_CFLAGS** and append **EXTRA_CFLAGS** (make/hotspot/lib/JvmFlags.gmk#L89) ->
3. Build libjvm ->
4. SetupJdkLibrary (pass **JVM_CFLAGS** as a parameter called **CFLAGS**, make/hotspot/lib/CompileJvm.gmk#L172) ->
5. SetupJdkNativeCompilation (make/common/JdkNativeCompilation.gmk#L477) ->
6. SetupNativeCompilation (make/common/JdkNativeCompilation.gmk#L456) ->
7. SetupCompilerFlags (set CXXFLAGS to **JVM_CFLAGS** now, make/common/NativeCompilation.gmk#L159, make/common/native/Flags.gmk#L131); CreateCompiledNativeFile (BASE_CXXFLAGS contains **JVM_CFLAGS** now, make/common/NativeCompilation.gmk#L179) ->
8. Compile C++ with BASE_CXXFLAGS that contains **JVM_CFLAGS** (make/common/native/CompileFile.gmk#L162)
> Wouldn't just the change in JvmFlags.gmk be enough to solve your issue?
No, it seems not doable.
As mentioned above in the step 1 and 2, **JVM_CFLAGS** contains both EXTRA_CXXFLAGS and EXTRA_CFLAGS at that time, when calling SetupNativeCompilation, there is no information left about which flags were from EXTRA_[C|CXX]FLAGS and we are unable to do filter-out for C vs C++ files using corresponding flags. So, it is a dilemma, if we want to keep the parameters list of SetupNativeCompilation clean (untouched) we would have EXTRA_[C|CXX]FLAGS mixed together for compiling C and C++ files. Any other idea here please?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/24115#issuecomment-2738738973
More information about the build-dev
mailing list