Skip to content

Commit

Permalink
Add support for building with Meson (#2530)
Browse files Browse the repository at this point in the history
The Meson[1] build system makes it easier incorporate third-party
libaries into a project if they also build using Meson.

Let's add a minimal Meson build that's compatible with the CMake build,
along with a GitHub workflow to check that it builds and that at least
the simplest SelfTest runs.

The handling of catch_user_config.hpp is inspired by BUILD.bazel and
doesn't attempt to support any configuratons options. Such features
could be added later.

Meson strongly discourages using wildcards to specify sources, so the
source and header lists are copied from CMakeLists.txt.

Add a new test workflow to test the Meson builds. I was unable to get
these tests to pass with Ubuntu 20.04, so they use Ubuntu 22.04.

I'm neither a CMake nor a Meson expert, but the results seem to work for
me.

[1] https://mesonbuild.com/

Co-authored-by: Mike Crowe <mcrowe@brightsign.biz>
  • Loading branch information
mikecrowe and mikecrowe committed Oct 1, 2022
1 parent 4a7cefe commit 4db8b50
Show file tree
Hide file tree
Showing 6 changed files with 501 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/linux-meson-builds.yml
@@ -0,0 +1,43 @@
name: Linux builds (basic) using meson build system

on: [push, pull_request]

jobs:
build:
name: meson ${{matrix.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}}
runs-on: ubuntu-22.04
strategy:
matrix:
cxx:
- g++-11
- clang++-11
build_type: [debug, release]
std: [14, 17]
include:
- cxx: clang++-11
other_pkgs: clang-11

steps:
- uses: actions/checkout@v2

- name: Prepare environment
run: sudo apt-get install -y meson ninja-build ${{matrix.other_pkgs}}

- name: Configure build
env:
CXX: ${{matrix.cxx}}
CXXFLAGS: -std=c++${{matrix.std}} ${{matrix.cxxflags}}
# Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}.
# This is important
run: |
meson -Dbuildtype=${{matrix.build_type}} ${{runner.workspace}}/meson-build
- name: Build tests + lib
working-directory: ${{runner.workspace}}/meson-build
run: ninja

- name: Run tests
working-directory: ${{runner.workspace}}/meson-build
# Hardcode 2 cores we know are there
run: |
meson test --verbose
1 change: 1 addition & 0 deletions .gitignore
@@ -1,4 +1,5 @@
*.build
!meson.build
*.pbxuser
*.mode1v3
*.ncb
Expand Down
17 changes: 17 additions & 0 deletions meson.build
@@ -0,0 +1,17 @@
# Copyright Catch2 Authors
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# https://www.boost.org/LICENSE_1_0.txt)

# SPDX-License-Identifier: BSL-1.0

project(
'catch2',
'cpp',
version : '3.1.0', # CML version placeholder, don't delete
license: 'BSL-1.0',
meson_version: '>=0.49.0'
)

subdir('src/catch2')
subdir('tests')

0 comments on commit 4db8b50

Please sign in to comment.