diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml new file mode 100644 index 0000000..5d490eb --- /dev/null +++ b/.github/workflows/cmake-multi-platform.yml @@ -0,0 +1,52 @@ +name: Build and test on multiple platforms + +on: [push,pull_request] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + + matrix: + os: [ubuntu-latest, windows-latest] + build_type: [Release, Debug] + c_compiler: [gcc, clang, cl] + include: + - os: windows-latest + c_compiler: cl + - os: ubuntu-latest + c_compiler: gcc + - os: ubuntu-latest + c_compiler: clang + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + run: ctest -C ${{ matrix.build_type }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d7a95c..b21d2ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,3 +37,9 @@ ENDIF() ADD_SUBDIRECTORY (atomic_sync) ADD_SUBDIRECTORY (examples) ADD_SUBDIRECTORY (test) + +ENABLE_TESTING() +ADD_TEST (atomic_sync ${CMAKE_BINARY_DIR}/test/test_atomic_sync) +ADD_TEST (atomic_condition ${CMAKE_BINARY_DIR}/test/test_atomic_condition) +ADD_TEST (mutex ${CMAKE_BINARY_DIR}/test/test_mutex 4 10000) +ADD_TEST (native_mutex ${CMAKE_BINARY_DIR}/test/test_native_mutex 4 10000)