Merge pull request #209 from yurkoy/topic/cmake-fixes #76
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# See runners details: | |
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software | |
name: CI | |
on: | |
push: | |
branches: ["master", "0.7-dev"] | |
pull_request: | |
jobs: | |
Build-Windows: | |
# The type of runner that the job will run on | |
name: ${{ matrix.config.name }} (${{ matrix.build_type }}, ${{ matrix.config.cxx }}, C++${{ matrix.cppstd }}) | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- name: "Windows Latest MSVC" | |
# https://github.com/actions/runner-images/blob/main/images/win/Windows2022-Readme.md | |
os: windows-latest | |
cc: "cl" | |
cxx: "cl" | |
generator: "Visual Studio 17 2022" | |
build_type: | |
- Release | |
- Debug | |
cppstd: | |
- 17 | |
- 20 | |
env: | |
CXX: ${{ matrix.config.cxx }} | |
RESTINIO_BUILD_DIR: _build_${{ matrix.config.cxx }}_cppstd${{ matrix.cppstd }}_${{ matrix.build_type }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Print env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
- name: Install dependencies | |
run: | | |
gem install Mxx_ru | |
- name: Configure | |
shell: bash | |
run: | | |
mxxruexternals | |
cd dev | |
cmake \ | |
-B $RESTINIO_BUILD_DIR \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.cppstd }} \ | |
-DRESTINIO_TEST_SUFFIX=" [cpp${{ matrix.cppstd }}_${{ matrix.build_type }}]" \ | |
-G "${{ matrix.config.generator }}" | |
- name: Build | |
working-directory: ./dev | |
shell: bash | |
run: | | |
cmake \ | |
--build $RESTINIO_BUILD_DIR \ | |
--config ${{ matrix.build_type }} \ | |
--parallel ${NUMBER_OF_PROCESSORS} \ | |
--verbose | |
- name: Test | |
shell: bash | |
working-directory: ./dev | |
run: | | |
ctest \ | |
-T test \ | |
-C ${{ matrix.build_type }} \ | |
--test-dir $RESTINIO_BUILD_DIR \ | |
--output-on-failure \ | |
--no-compress-output | |
Build-Linux: | |
# The type of runner that the job will run on | |
name: Ubuntu-22.04 (${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}, ${{ matrix.build_type }}, C++${{ matrix.build_settings.cppstd }}, ${{matrix.build_settings.asio_source}} asio) | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
build_settings: | |
- toolset: gcc | |
toolset_version: 9 | |
cppstd: 17 | |
asio_source: standalone | |
- toolset: gcc | |
toolset_version: 9 | |
cppstd: 17 | |
asio_source: boost | |
- toolset: gcc | |
toolset_version: 9 | |
cppstd: 17 | |
asio_source: boost-system-package | |
- toolset: gcc | |
toolset_version: 12 | |
cppstd: 17 | |
asio_source: standalone | |
- toolset: gcc | |
toolset_version: 12 | |
cppstd: 20 | |
asio_source: standalone | |
- toolset: gcc | |
toolset_version: 12 | |
cppstd: 20 | |
asio_source: boost | |
- toolset: clang | |
toolset_version: 13 | |
cppstd: 17 | |
asio_source: standalone | |
- toolset: clang | |
toolset_version: 15 | |
cppstd: 17 | |
asio_source: standalone | |
- toolset: clang | |
toolset_version: 15 | |
cppstd: 20 | |
asio_source: standalone | |
build_type: | |
- Release | |
- Debug | |
env: | |
RESTINIO_BUILD_TAG: ${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}_cpp${{ matrix.build_settings.cppstd }}_${{ matrix.build_type }}_${{matrix.build_settings.asio_source}}_asio | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
echo "RESTINIO_BUILD_DIR=_build_${RESTINIO_BUILD_TAG}" >> $GITHUB_ENV | |
echo "CC=${{ matrix.build_settings.toolset }}-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV | |
if [ "${{ matrix.build_settings.toolset }}" == "gcc" ]; then | |
echo "CXX=g++-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV | |
echo "AR=gcc-ar-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV | |
else | |
echo "CXX=clang++-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV | |
echo "AR=llvm-ar-${{ matrix.build_settings.toolset_version }}" >> $GITHUB_ENV | |
fi | |
- name: Install dependencies | |
run: | | |
sudo gem install Mxx_ru | |
if [ "${{ matrix.build_settings.asio_source }}" == "boost-system-package" ]; then | |
sudo apt-get update && sudo apt-get install -y libboost-all-dev | |
fi | |
mxxruexternals | |
- name: Configure | |
if: ${{ matrix.build_settings.asio_source == 'standalone' }} | |
shell: bash | |
run: | | |
cd dev | |
cmake \ | |
-B ${RESTINIO_BUILD_DIR} \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \ | |
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]" | |
- name: Obtain Boost | |
if: ${{ matrix.build_settings.asio_source == 'boost' }} | |
uses: MarkusJx/[email protected] | |
id: install-boost | |
with: | |
boost_version: 1.83.0 | |
boost_install_dir: ${{github.workspace}}/local_boost | |
toolset: ${{ matrix.build_settings.toolset }} | |
platform_version: 22.04 | |
- name: Configure | |
if: ${{ matrix.build_settings.asio_source == 'boost' }} | |
shell: bash | |
run: | | |
cd dev | |
cmake \ | |
-B ${RESTINIO_BUILD_DIR} \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \ | |
-DRESTINIO_ASIO_SOURCE=boost \ | |
-DBOOST_ROOT=${{ steps.install-boost.outputs.BOOST_ROOT }} \ | |
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]" | |
- name: Configure | |
if: ${{ matrix.build_settings.asio_source == 'boost-system-package' }} | |
shell: bash | |
run: | | |
cd dev | |
cmake \ | |
-B ${RESTINIO_BUILD_DIR} \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.build_settings.cppstd }} \ | |
-DRESTINIO_ASIO_SOURCE=boost \ | |
-DRESTINIO_TEST_SUFFIX=" [${RESTINIO_BUILD_TAG}]" | |
- name: Build | |
working-directory: ./dev | |
shell: bash | |
run: | | |
cmake \ | |
--build $RESTINIO_BUILD_DIR \ | |
--parallel $(nproc) \ | |
--verbose | |
- name: Test | |
shell: bash | |
working-directory: ./dev | |
run: | | |
ctest \ | |
-T test \ | |
--test-dir $RESTINIO_BUILD_DIR \ | |
--output-on-failure \ | |
--no-compress-output | |
Build-Macos: | |
# The type of runner that the job will run on | |
name: macos-12 (${{ matrix.build_type }}, C++${{ matrix.cppstd }}) | |
runs-on: macos-12 | |
strategy: | |
fail-fast: false | |
matrix: | |
cppstd: | |
- 17 | |
- 20 | |
build_type: | |
- Release | |
- Debug | |
env: | |
RESTINIO_BUILD_DIR: _build_cpp${{ matrix.cppstd }}_${{ matrix.build_type }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Print env | |
run: | | |
echo github.event.action: ${{ github.event.action }} | |
echo github.event_name: ${{ github.event_name }} | |
- name: Install dependencies | |
run: | | |
gem install Mxx_ru | |
- name: Configure | |
shell: bash | |
run: | | |
mxxruexternals | |
cd dev | |
cmake \ | |
-B ${RESTINIO_BUILD_DIR} \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | |
-DRESTINIO_EXPLICIT_CPPSTD=${{ matrix.cppstd }} \ | |
-DRESTINIO_TEST_SUFFIX=" [cpp${{ matrix.cppstd }}_${{ matrix.build_type }}]" | |
- name: Build | |
working-directory: ./dev | |
shell: bash | |
run: | | |
cmake \ | |
--build $RESTINIO_BUILD_DIR \ | |
--parallel $(sysctl -n hw.ncpu) \ | |
--verbose | |
- name: Test | |
shell: bash | |
working-directory: ./dev | |
run: | | |
ctest \ | |
-T test \ | |
--test-dir $RESTINIO_BUILD_DIR \ | |
--output-on-failure \ | |
--no-compress-output |