RFR: 8366777: Build fails unknown pseudo-op with old AS on linux-aarch64 [v13]
Erik Joelsson
erikj at openjdk.org
Fri Sep 12 13:13:41 UTC 2025
On Fri, 12 Sep 2025 06:57:44 GMT, SendaoYan <syan at openjdk.org> wrote:
>> make/autoconf/flags-other.m4 line 167:
>>
>>> 165: fi
>>> 166: CFLAGS="$OLD_CFLAGS"
>>> 167: AC_LANG_POP(C)
>>
>> This part should be included in the `IF_ENABLED` block in `UTIL_ARG_ENABLE`.
>
> The `FLAGS_COMPILER_CHECK_ARGUMENTS` macro seem do not work normally in `IF_ENABLED:` block. The 'bash configure' command report "Internal error: Argument DEFAULT to UTIL_ARG_ENABLE can only be true, false or auto, was: ARG_DEFAULT". Below is the implementation.
>
> Even though I add `PREFIX: BUILD_` or `PREFIX: ` argument to `FLAGS_COMPILER_CHECK_ARGUMENTS` it still report the same error.
>
>
> AC_DEFUN([FLAGS_SETUP_SVE],
> [
> UTIL_ARG_ENABLE(NAME: aarch64-sve, DEFAULT: auto,
> RESULT: AARCH64_SVE_ENABLED,
> DESC: [Use SVE when compiling libsleef],
> AVAILABLE: false,
> CHECK_AVAILABLE: [
> # Apple Silicon does not support SVE; use macOS as a proxy for that check.
> if test "x$OPENJDK_TARGET_CPU" = "xaarch64" && test "x$OPENJDK_TARGET_OS" = "xlinux"; then
> if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
> # check the compiler and binutils support sve or not
> AC_MSG_CHECKING([if Arm SVE ACLE is supported])
> AC_LANG_PUSH([C])
> saved_cflags="$CFLAGS"
> saved_cc="$CC"
> CFLAGS="$CFLAGS -march=armv8-a+sve $CFLAGS_WARNINGS_ARE_ERRORS ARG_ARGUMENT"
> CC="$ARG_PREFIX[CC]"
> AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
> [
> #include <arm_sve.h>
> svfloat64_t a() {}
> ],
> [
> svint32_t r = svdup_n_s32(1)
> ])],
> [AVAILABLE=true],
> [AVAILABLE=false]
> )
> AC_MSG_RESULT([$AVAILABLE])
> CC="$saved_cc"
> CFLAGS="$saved_cflags"
> AC_LANG_POP([C])
> fi
> fi
> ],
> IF_ENABLED: [
> SVE_CFLAGS="-march=armv8-a+sve"
> # Switching the initialization mode with gcc from 'pattern' to 'zero'
> # avoids the use of unsupported `__builtin_clear_padding` for variable
> # length aggregates
> if test "x$DEBUG_LEVEL" != xrelease && test "x$TOOLCHAIN_TYPE" = xgcc ; then
> AC_MSG_CHECKING([Switching the initialization mode with gcc from pattern to zero])
> INIT_ZERO_FLAG="-ftrivial-auto-var-init=zero"
> FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$INIT_ZERO_FLAG],
> IF_TRUE: [SVE_CFLAGS="${SVE_CFLAGS} $INIT_ZERO_FLAG"])
> fi
> ]
> )
> AC_SUBST(SVE_CFLAGS)
> ])
>
>
> [default.log](https://github.com/user-attachments/files/22293047/default.log)
That's a valid reason not to do it. Seems like there is some issue with nesting calls to our named parameter macros.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27073#discussion_r2344215834
More information about the build-dev
mailing list