meson: build: Add support for unit tests
Tested: Verified unit test ran successfully:
$ meson -Doe-sdk=enabled -Dtests=enabled build
$ ninja -C build test
ninja: Entering directory `build'
[25/26] Running all tests.
1/1 utest OK 3.00 s
Change-Id: I46acccec5b3c1837ead707e4e4610eb61a023148
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/meson.build b/meson.build
index b678268..cd4dd16 100644
--- a/meson.build
+++ b/meson.build
@@ -182,3 +182,39 @@
output: u,
)
endforeach
+
+# If test coverage of source files within the root directory are wanted,
+# need to define and build the tests from here
+build_tests = get_option('tests')
+if not build_tests.disabled()
+ oe_sdk = get_option('oe-sdk')
+ if oe_sdk.enabled()
+ # Setup OE SYSROOT
+ OECORE_TARGET_SYSROOT = run_command('sh', '-c', 'echo $OECORE_TARGET_SYSROOT').stdout().strip()
+ if OECORE_TARGET_SYSROOT == ''
+ error('Unable to get $OECORE_TARGET_SYSROOT, check your environment.')
+ endif
+ message('OE_SYSROOT: ' + OECORE_TARGET_SYSROOT)
+ rpath = ':'.join([OECORE_TARGET_SYSROOT + '/lib', OECORE_TARGET_SYSROOT + '/usr/lib'])
+ ld_so = run_command('sh', '-c', 'find ' + OECORE_TARGET_SYSROOT + '/lib/ld-*.so | sort -r -n | head -n1').stdout().strip()
+ dynamic_linker = ['-Wl,-dynamic-linker,' + ld_so]
+ else
+ dynamic_linker = []
+ endif
+
+ gtest = dependency('gtest', main: true, disabler: true, required: build_tests)
+ include_srcs = declare_dependency(sources: [
+ 'image_verify.cpp',
+ 'version.cpp']
+ )
+
+ test('utest',
+ executable(
+ 'utest',
+ './test/utest.cpp',
+ link_args: dynamic_linker,
+ build_rpath: get_option('oe-sdk').enabled() ? rpath : '',
+ dependencies: [deps, gtest, include_srcs, ssl]
+ )
+)
+endif
diff --git a/meson_options.txt b/meson_options.txt
index e0fc849..11e9429 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -14,6 +14,10 @@
option('sync-bmc-files', type: 'feature',
description: 'Enable sync of filesystem files.')
+option('tests', type: 'feature', description: 'Build tests')
+
+option('oe-sdk', type: 'feature', description: 'Enable OE SDK')
+
option('verify-signature', type: 'feature',
description: 'Enable image signature validation.')