From 2de2c4b25966359f77c1977cca1a29b6982bc681 Mon Sep 17 00:00:00 2001
From: Revy <rabenda.cn@gmail.com>
Date: Mon, 14 Mar 2022 16:25:25 +0800
Subject: [PATCH 1/2] github action: add riscv64/aarch64/powerpc64 cross
compile
Signed-off-by: Han Gao <rabenda.cn@gmail.com>
.github/workflows/cross-build.yml | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 .github/workflows/cross-build.yml
new file mode 100644
@@ -0,0 +1,30 @@
+name: build
+
+on:
+ push:
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ container: ubuntu:jammy
+
+ strategy:
+ fail-fast: false
+ matrix:
+ arch: [ aarch64, riscv64, powerpc64 ]
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Install cross build tools
+ run: apt update && apt install -y ninja-build cmake python3 g++-11-${{ matrix.arch }}-linux-gnu
+ env:
+ DEBIAN_FRONTEND: noninteractive
+
+ - name: Configure CMake and build
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_CXX_COMPILER=${{ matrix.arch }}-linux-gnu-g++-11 ../
+ make -j$(nproc)
From b2b407cdedc586f8d11f9dd029e1c3016c80bba7 Mon Sep 17 00:00:00 2001
From: Revy <rabenda.cn@gmail.com>
Date: Tue, 15 Mar 2022 02:11:40 +0800
Subject: [PATCH 2/2] fix: build on non-x86 platform
Signed-off-by: Revy <rabenda.cn@gmail.com>
CMakeLists.txt | 5 +++++
cmake/check_link_atomic.cmake | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 cmake/check_link_atomic.cmake
@@ -431,6 +431,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
string(APPEND CMAKE_SHARED_LINKER_FLAGS " /RELEASE")
endif()
+################################################################################
+# Check atomic linking as needed
+################################################################################
+include(${PROJECT_SOURCE_DIR}/cmake/check_link_atomic.cmake)
+
################################################################################
# Report default CMake flags
################################################################################
new file mode 100644
@@ -0,0 +1,23 @@
+set(ATOMIC_TEST_SOURCE "
+#include <atomic>
+std::atomic<int> x;
+std::atomic<short> y;
+std::atomic<char> z;
+std::atomic<long long> w;
+int main() {
+ ++z;
+ ++y;
+ ++w;
+ return ++x;
+}")
+CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" BUILTIN_ATOMIC)
+if (NOT BUILTIN_ATOMIC)
+ set(CMAKE_REQUIRED_LIBRARIES atomic)
+ CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" ATOMICS_REQUIRE_LIBATOMIC)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ if (ATOMICS_REQUIRE_LIBATOMIC)
+ list(APPEND Z3_DEPENDENT_LIBS atomic)
+ else()
+ message(FATAL_ERROR "Host compiler must support std::atomic!")
+ endif()
+endif()