4f7812b8创建于 2023年9月27日历史提交
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

diff --git a/.github/workflows/cross-build.yml b/.github/workflows/cross-build.yml
new file mode 100644
index 00000000000..40932aac23d
--- /dev/null
+++ b/.github/workflows/cross-build.yml
@@ -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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index be300607ddb..477410ba8df 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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
 ################################################################################
diff --git a/cmake/check_link_atomic.cmake b/cmake/check_link_atomic.cmake
new file mode 100644
index 00000000000..d462191a0bf
--- /dev/null
+++ b/cmake/check_link_atomic.cmake
@@ -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()