1# Get the gtest/gmock dependencies. 2gtest_dep = dependency('gtest', main: true, disabler: true, required: false) 3gmock_dep = dependency('gmock', disabler: true, required: false) 4if not gtest_dep.found() or not gmock_dep.found() 5 cmake = import('cmake') 6 gtest_proj = cmake.subproject('googletest', 7 required: false) 8 if gtest_proj.found() 9 gtest_dep = declare_dependency( 10 dependencies: [ 11 dependency('threads'), 12 gtest_proj.dependency('gtest'), 13 gtest_proj.dependency('gtest_main'), 14 ] 15 ) 16 gmock_dep = gtest_proj.dependency('gmock') 17 else 18 assert(not get_option('tests').enabled(), 19 'Googletest is required if tests are enabled') 20 endif 21endif 22 23################################################################################ 24 25# Compile the test dts into a binary for pdbg. 26pdbg_test_dtb = custom_target('build_pdbg_test_dtb', 27 input : files('pdbg-test.dts'), 28 output : 'pdbg-test.dtb', 29 command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb', 30 '-o', '@OUTPUT@', '@INPUT@' ]) 31 32pdbg_env = 'PDBG_DTB=' + pdbg_test_dtb.full_path() 33 34################################################################################ 35 36# Add gtest/gmock dependency to the list of test dependencies. 37test_deps = [ 38 test_util_deps, 39 gtest_dep, 40] 41 42test_vars = [ 43 pdbg_env, 44 'LG2_FORCE_STDERR=true', 45] 46 47# Additional SRCs that are not (or should not be) included in libraries. 48# NOTE: Try to limit this, if possible, to prevent duplicate compilation. 49test_additional_srcs = [ 50 files( 51 '../analyzer/plugins/p10-plugins.cpp', 52 '../analyzer/plugins/p10-tod-plugins.cpp', 53 '../cli.cpp', 54 ), 55 pdbg_test_dtb 56] 57 58################################################################################ 59 60testcases = [ 61 'test-bin-stream', 62 'test-ffdc-file', 63 'test-lpc-timeout', 64 'test-pdbg-dts', 65 'test-pll-unlock', 66 'test-resolution', 67 'test-tod-step-check-fault', 68] 69 70foreach tc : testcases 71 72 exe = executable(tc.underscorify(), 73 sources : [ files(tc + '.cpp'), test_additional_srcs ], 74 include_directories : incdir, 75 dependencies : test_deps, 76 cpp_args : test_args, 77 link_with : test_libs, 78 ) 79 80 test(tc, exe, env: test_vars) 81 82endforeach 83 84################################################################################ 85 86testcases = [ 87 'test-attention', 88 'test-end2end', 89 'test-util-data-file', 90 'test-ti-handler', 91] 92 93foreach tc : testcases 94 95 exe = executable(tc.underscorify(), 96 sources : [ files(tc + '.cpp'), test_additional_srcs ], 97 include_directories : incdir, 98 dependencies : test_deps, 99 cpp_args : test_args, 100 link_with : hwdiags_libs, # TODO: should use test_libs instead 101 ) 102 103 test(tc, exe, env: test_vars) 104 105endforeach 106 107