Jelajahi Sumber

CI: always use libc++ with clang

Benoit Blanchon 2 tahun lalu
induk
melakukan
f7dcea562f
2 mengubah file dengan 11 tambahan dan 4 penghapusan
  1. 8 4
      .github/workflows/ci.yml
  2. 3 0
      extras/CompileOptions.cmake

+ 8 - 4
.github/workflows/ci.yml

@@ -80,11 +80,9 @@ jobs:
       matrix:
         include:
           - clang: "3.9"
-            cxxflags: "-stdlib=libc++"
             runner: ubuntu-20.04
             archive: bionic
           - clang: "4.0"
-            cxxflags: "-stdlib=libc++"
             runner: ubuntu-20.04
             archive: bionic
           - clang: "5.0"
@@ -121,10 +119,16 @@ jobs:
         run: |
           sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} main'
           sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} universe'
-      - name: Install
+      - name: Install Clang ${{ matrix.clang }}
         run: |
           sudo apt-get update
           sudo apt-get install -y clang-${{ matrix.clang }}
+      - name: Install libc++ ${{ matrix.clang }}
+        if: matrix.clang >= 11
+        run: sudo apt-get install -y libc++-${{ matrix.clang }}-dev libc++abi-${{ matrix.clang }}-dev
+      - name: Install libunwind ${{ matrix.clang }}
+        if: matrix.clang == 12  # dependency is missing in Ubuntu 22.04
+        run: sudo apt-get install -y libunwind-${{ matrix.clang }}-dev
       - name: Checkout
         uses: actions/checkout@v3
       - name: Configure
@@ -134,7 +138,7 @@ jobs:
           CXX: clang++-${{ matrix.clang }}
           CXXFLAGS: >-
             ${{ matrix.cxxflags }}
-            ${{ contains(matrix.cxxflags, 'libc++') && '-I/usr/lib/llvm-10/include/c++/v1/' || '' }}
+            ${{ matrix.clang < 11 && '-I/usr/lib/llvm-10/include/c++/v1/' || '' }}
       - name: Build
         run: cmake --build .
       - name: Test

+ 3 - 0
extras/CompileOptions.cmake

@@ -64,6 +64,9 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 endif()
 
 if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+	add_compile_options(-stdlib=libc++)
+	link_libraries(c++ m)
+
 	if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0) AND(NOT ${COVERAGE}))
 		add_compile_options(-g -Og)
 	else()