diff --git a/auto/extract_version.py b/auto/extract_version.py new file mode 100755 index 0000000..1d137e5 --- /dev/null +++ b/auto/extract_version.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +import re +import sys + +ver_re = re.compile(r"^#define\s+UNITY_VERSION_(?:MAJOR|MINOR|BUILD)\s+(\d+)$") +version = [] + +with open(sys.argv[1], "r") as f: + for line in f: + m = ver_re.match(line) + if m: + version.append(m.group(1)) + +print(".".join(version)) + diff --git a/extras/fixture/src/meson.build b/extras/fixture/src/meson.build new file mode 100644 index 0000000..5d11470 --- /dev/null +++ b/extras/fixture/src/meson.build @@ -0,0 +1,8 @@ +unity_inc += include_directories('.') +unity_src += files('unity_fixture.c') + +install_headers( + 'unity_fixture.h', + 'unity_fixture_internals.h', + subdir: meson.project_name() +) diff --git a/extras/memory/src/meson.build b/extras/memory/src/meson.build new file mode 100644 index 0000000..53a66ca --- /dev/null +++ b/extras/memory/src/meson.build @@ -0,0 +1,7 @@ +unity_inc += include_directories('.') +unity_src += files('unity_memory.c') + +install_headers( + 'unity_memory.h', + subdir: meson.project_name() +) diff --git a/meson.build b/meson.build index 94138f5..1a56f27 100644 --- a/meson.build +++ b/meson.build @@ -6,6 +6,17 @@ # project('unity', 'c', license: 'MIT', + + # Set project version to value extracted from unity.h header + version: run_command( + [ + find_program('python', 'python3'), + 'auto' / 'extract_version.py', + 'src' / 'unity.h' + ], + check: true + ).stdout().strip(), + # `meson.project_source_root()` introduced in 0.56.0 meson_version: '>=0.56.0', default_options: [ @@ -14,8 +25,41 @@ project('unity', 'c', ] ) +build_fixture = get_option('extension_fixture').enabled() +build_memory = get_option('extension_memory').enabled() + +unity_src = [] +unity_inc = [] + subdir('src') -unity_dep = declare_dependency(link_with: unity_lib, include_directories: unity_dir) + +if build_fixture + # Building the fixture extension implies building the memory + # extension. + build_memory = true + subdir('extras/fixture/src') +endif + +if build_memory + subdir('extras/memory/src') +endif + +unity_lib = static_library(meson.project_name(), + sources: unity_src, + include_directories: unity_inc, + install: true +) + +unity_dep = declare_dependency( + link_with: unity_lib, + include_directories: unity_inc +) + +# Generate pkg-config file. +pkg = import('pkgconfig') +pkg.generate(unity_lib, + description: 'C Unit testing framework.' +) # Create a generator that can be used by consumers of our build system to generate # test runners. @@ -24,3 +68,13 @@ gen_test_runner = generator( output: '@BASENAME@_Runner.c', arguments: ['@INPUT@', '@OUTPUT@'] ) + +# Summarize. +summary( + { + 'Fixture extension': build_fixture, + 'Memory extension': build_memory, + }, + section: 'Extensions', + bool_yn: true +) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..10b136f --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,2 @@ +option('extension_fixture', type: 'feature', value: 'disabled', description: 'Whether to use the fixture extension.') +option('extension_memory', type: 'feature', value: 'disabled', description: 'Whether to use the memory extension.') diff --git a/src/meson.build b/src/meson.build index fbe4b5b..4d7751f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -4,10 +4,12 @@ # # license: MIT # -unity_dir = include_directories('.') -unity_lib = static_library(meson.project_name(), - 'unity.c', - include_directories: unity_dir, - native: true +unity_inc += include_directories('.') +unity_src += files('unity.c') + +install_headers( + 'unity.h', + 'unity_internals.h', + subdir: meson.project_name() )