From 5d0c591d64e22d1ff861381bbe70d2a1dba52a1f Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Wed, 11 Dec 2024 21:30:27 +0900 Subject: [PATCH] build: Use signed char in RISC-V 64bit (#9524) * build: riscv64: Add a fundamental architecture cmake file for riscv64 Signed-off-by: Hiroshi Hatake * build: Add riscv64 architecture target for internal tests Signed-off-by: Hiroshi Hatake * build: Restrict to use gcc only This is because this workflow is not injected and used clang packages Signed-off-by: Hiroshi Hatake * build: Use gcc-9 and g++-9 on qemu workflow Signed-off-by: Hiroshi Hatake * build: Use ubuntu-22.04 distro due to try to use gcc-12 for atomic operations on riscv64 Signed-off-by: Hiroshi Hatake * build: riscv64: Remove commented out lines Signed-off-by: Hiroshi Hatake --------- Signed-off-by: Hiroshi Hatake --- .github/workflows/unit-tests.yaml | 11 +++++------ CMakeLists.txt | 5 +++++ cmake/riscv64.cmake | 8 ++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 cmake/riscv64.cmake diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 1a5d80a77ba..167a75f578f 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -182,6 +182,7 @@ jobs: matrix: arch: - s390x + - riscv64 steps: - name: Checkout Fluent Bit code uses: actions/checkout@v4 @@ -191,19 +192,17 @@ jobs: id: build-and-test-on-qemu with: arch: ${{ matrix.arch }} - distro: ubuntu20.04 + distro: ubuntu22.04 shell: /bin/bash dockerRunArgs: | --volume "/var/lib/dbus/machine-id:/var/lib/dbus/machine-id" --volume "/etc/machine-id:/etc/machine-id" install: | apt-get update - apt-get install -y gcc-7 g++-7 clang-6.0 libyaml-dev cmake flex bison libssl-dev libbpf-dev linux-tools-common#libsystemd-dev - ln -s /usr/bin/llvm-symbolizer-6.0 /usr/bin/llvm-symbolizer || true + apt-get install -y gcc-12 g++-12 libyaml-dev cmake flex bison libssl-dev libbpf-dev linux-tools-common - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90 - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90 - update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 90 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 90 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 90 run: | cd build export nparallel=$(( $(getconf _NPROCESSORS_ONLN) > 8 ? 8 : $(getconf _NPROCESSORS_ONLN) )) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08ecfb7ad94..0e6340bbfc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -321,6 +321,11 @@ if (FLB_SYSTEM_LINUX) include(cmake/s390x.cmake) endif () +# Build for Linux - riscv64 arch +if (FLB_SYSTEM_LINUX) + include(cmake/riscv64.cmake) +endif () + # Enable signed char support on Linux AARCH64 if specified if (FLB_LINUX_ON_AARCH64) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsigned-char") diff --git a/cmake/riscv64.cmake b/cmake/riscv64.cmake new file mode 100644 index 00000000000..c4a8fb15751 --- /dev/null +++ b/cmake/riscv64.cmake @@ -0,0 +1,8 @@ +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv64)") + message(STATUS "Forcing characters to be signed, as on x86_64.") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsigned-char") + if(FLB_LUAJIT) + message(WARNING "LuaJIT is disabled, this platform does not support built-in LuaJIT and system provided one neither.") + set(FLB_LUAJIT OFF) + endif() +endif ()