abseil / abseil-cpp

Abseil Common Libraries (C++)

Home Page:https://abseil.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wrong compiler options used when cross compile use bazel

xiedeacc opened this issue · comments

from document https://abseil.io/docs/cpp/platforms/platforms, abseil support aarch64, but abseil will generate wrong compiler option when cross compile for aarch64.

error log:

(cd /root/.cache/bazel/_bazel_root/212dd51f8d897b720cf9b65a010c79c8/execroot/tbox && \
  exec env - \
    PATH=/usr/local/jdk1.8.0_333/bin:/usr/local/jdk1.8.0_333/jre/bin:/usr/local/node-v16.14.2-linux-x64/bin:/usr/local/nginx/sbin:/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/data/.cache/npm/global/bin:/usr/local/go/bin:/root/src/go/bin \
    PWD=/proc/self/cwd \
  external/gcc11_arm_aarch64_none_musleabi/bin/aarch64-openwrt-linux-musl-gcc -fPIC -fstack-protector -Wall -fno-omit-frame-pointer '--sysroot=external/gcc11_arm_aarch64_none_musleabi' '-mcpu=cortex-a72.cortex-a53' '-march=armv8-a' -pthread '-std=c++17' -MD -MF bazel-out/k8-fastbuild/bin/external/boost/_objs/thread/tss_null.d '-frandom-seed=bazel-out/k8-fastbuild/bin/external/boost/_objs/thread/tss_null.o' -iquote external/boost -iquote bazel-out/k8-fastbuild/bin/external/boost -isystem external/boost -isystem bazel-out/k8-fastbuild/bin/external/boost -isystem external/boost/libs/math/include_private -isystem bazel-out/k8-fastbuild/bin/external/boost/libs/math/include_private -no-canonical-prefixes -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c external/boost/libs/thread/src/tss_null.cpp -g3 -Wno-unused -o bazel-out/k8-fastbuild/bin/external/boost/_objs/thread/tss_null.o)
# Configuration: e15a028d95b318360aa61093d1878addcfa002857cafc4dd8afe9fa1ea616ef2
# Execution platform: @local_config_platform//:host
ERROR: /root/.cache/bazel/_bazel_root/212dd51f8d897b720cf9b65a010c79c8/external/com_google_absl/absl/random/internal/BUILD.bazel:324:11: Compiling absl/random/internal/randen_hwaes.cc failed: (Exit 1): aarch64-openwrt-linux-musl-gcc failed: error executing command external/gcc11_arm_aarch64_none_musleabi/bin/aarch64-openwrt-linux-musl-gcc -fPIC -fstack-protector -Wall -fno-omit-frame-pointer '--sysroot=external/gcc11_arm_aarch64_none_musleabi' ... (remaining 41 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
aarch64-openwrt-linux-musl-gcc: error: unrecognized command-line option '-maes'
aarch64-openwrt-linux-musl-gcc: error: unrecognized command-line option '-msse4.1'
INFO: Elapsed time: 325.466s, Critical Path: 15.88s
INFO: 424 processes: 19 internal, 405 linux-sandbox.
FAILED: Build did NOT complete successfully

here is demo:
https://github.com/xiedeacc/tbox.git

build command:

clear && bazel build --incompatible_enable_cc_toolchain_resolution --platforms=@bazel_build_file//platforms:linux_gcc11_aarch64_none_musleabi -s --copt=-g3 --strip=never //...

oops, it seems abseil-cpp only support --cpu config, not support --platforms option, so request support --platforms option, for --cpu has deprated by bazel official

example code:

selects.config_setting_group(
    name = "linux_aarch64",
    match_all = [
        "@platforms//cpu:aarch64",
        "@platforms//os:linux",
    ],
)

ABSL_RANDOM_RANDEN_COPTS = select({
    # APPLE
    ":cpu_darwin_x86_64": ABSL_RANDOM_HWAES_X64_FLAGS,
    ":cpu_darwin": ABSL_RANDOM_HWAES_X64_FLAGS,
    ":cpu_x64_windows_msvc": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS,
    ":cpu_x64_windows": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS,
    ":cpu_k8": ABSL_RANDOM_HWAES_X64_FLAGS,
    ":cpu_ppc": ["-mcrypto"],
    ":cpu_aarch64": ABSL_RANDOM_HWAES_ARM64_FLAGS,
    ":linux_aarch64": ABSL_RANDOM_HWAES_ARM64_FLAGS,
    # Supported by default or unsupported.
    "//conditions:default": [],
})