Add vendor description and meson.build for googletest Signed-off-by: Alphan Ulusoy <alphan@google.com>
diff --git a/sw/device/lib/meson.build b/sw/device/lib/meson.build index 3a506c8..f6a31a5 100644 --- a/sw/device/lib/meson.build +++ b/sw/device/lib/meson.build
@@ -5,6 +5,7 @@ subdir('base') subdir('runtime') subdir('dif') +subdir('testing') # UART library (sw_lib_uart) sw_lib_uart = declare_dependency(
diff --git a/sw/device/lib/testing/meson.build b/sw/device/lib/testing/meson.build new file mode 100644 index 0000000..0ef4a1c --- /dev/null +++ b/sw/device/lib/testing/meson.build
@@ -0,0 +1,50 @@ +# Copyright lowRISC contributors. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +sw_lib_testing_gtest_src_dir = meson.source_root() / 'sw/vendor/google_googletest' +sw_lib_testing_gtest_lock_file = meson.source_root() / 'sw/vendor/google_googletest.lock.hjson' +# Build dir below is $REPO_TOP/build-out/sw/fpga/sw/device/lib/testing/google_googletest +sw_lib_testing_gtest_build_dir = meson.current_build_dir() / 'google_googletest' +sw_lib_testing_empty_file_for_dep = 'empty_file_for_googletest_dependency.cc' + +# Bash script used for building googletest. Also creates an empty file +# which is used to establish the dependency between gtest and mock_mmio. +build_gtest_cmd = ''' +echo "Building googletest..." +GTEST_BUILD_DIR="@0@" +GTEST_SRC_DIR="@1@" +EMPTY_FILE_FOR_DEP="@2@" +# Create a directory for building gtest +mkdir -p $GTEST_BUILD_DIR +# Build googletest +cmake -B $GTEST_BUILD_DIR -S $GTEST_SRC_DIR > /dev/null +make -C $GTEST_BUILD_DIR > /dev/null +# Create an empty file for dependencies +touch "@OUTDIR@/$EMPTY_FILE_FOR_DEP" +echo "Done!" +'''.format(sw_lib_testing_gtest_build_dir, sw_lib_testing_gtest_src_dir, sw_lib_testing_empty_file_for_dep) + +build_gtest = custom_target( + 'googletest', + output: sw_lib_testing_empty_file_for_dep, + depend_files: sw_lib_testing_gtest_lock_file, + command: ['bash', '-c', build_gtest_cmd], +) + +gtest_inc = include_directories( + '../../../vendor/google_googletest/googletest/include', + '../../../vendor/google_googletest/googlemock/include', +) + +gtest = declare_dependency( + sources: [build_gtest], + include_directories: gtest_inc, + link_args: [ + '-L' + sw_lib_testing_gtest_build_dir / 'lib', + '-lgmock', + '-lgmock_main', + '-lgtest', + ], + dependencies: dependency('threads'), +)
diff --git a/sw/vendor/google_googletest.vendor.hjson b/sw/vendor/google_googletest.vendor.hjson new file mode 100644 index 0000000..2134df8 --- /dev/null +++ b/sw/vendor/google_googletest.vendor.hjson
@@ -0,0 +1,12 @@ +// Copyright lowRISC contributors. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 +{ + name: "google_googletest", + target_dir: "google_googletest", + + upstream: { + url: "https://github.com/google/googletest.git", + rev: "master", + }, +}