1*0d6140beSAndroid Build Coastguard Worker# This file is part of the flashrom project. 2*0d6140beSAndroid Build Coastguard Worker# 3*0d6140beSAndroid Build Coastguard Worker# Copyright 2020 Google LLC 4*0d6140beSAndroid Build Coastguard Worker# 5*0d6140beSAndroid Build Coastguard Worker# This program is free software; you can redistribute it and/or modify 6*0d6140beSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by 7*0d6140beSAndroid Build Coastguard Worker# the Free Software Foundation; version 2 of the License. 8*0d6140beSAndroid Build Coastguard Worker# 9*0d6140beSAndroid Build Coastguard Worker# This program is distributed in the hope that it will be useful, 10*0d6140beSAndroid Build Coastguard Worker# but WITHOUT ANY WARRANTY; without even the implied warranty of 11*0d6140beSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*0d6140beSAndroid Build Coastguard Worker# GNU General Public License for more details. 13*0d6140beSAndroid Build Coastguard Worker 14*0d6140beSAndroid Build Coastguard Workertest_srcs = files( 15*0d6140beSAndroid Build Coastguard Worker 'io_mock.c', 16*0d6140beSAndroid Build Coastguard Worker 'tests.c', 17*0d6140beSAndroid Build Coastguard Worker 'libusb_wraps.c', 18*0d6140beSAndroid Build Coastguard Worker 'helpers.c', 19*0d6140beSAndroid Build Coastguard Worker 'flashrom.c', 20*0d6140beSAndroid Build Coastguard Worker 'spi25.c', 21*0d6140beSAndroid Build Coastguard Worker 'lifecycle.c', 22*0d6140beSAndroid Build Coastguard Worker 'layout.c', 23*0d6140beSAndroid Build Coastguard Worker 'chip.c', 24*0d6140beSAndroid Build Coastguard Worker 'chip_wp.c', 25*0d6140beSAndroid Build Coastguard Worker 'selfcheck.c', 26*0d6140beSAndroid Build Coastguard Worker 'io_real.c', 27*0d6140beSAndroid Build Coastguard Worker) 28*0d6140beSAndroid Build Coastguard Worker 29*0d6140beSAndroid Build Coastguard Workerif not programmer.get('dummy').get('active') 30*0d6140beSAndroid Build Coastguard Worker test_srcs += programmer.get('dummy').get('srcs') 31*0d6140beSAndroid Build Coastguard Workerendif 32*0d6140beSAndroid Build Coastguard Worker 33*0d6140beSAndroid Build Coastguard Workerforeach p_name, p_data : programmer 34*0d6140beSAndroid Build Coastguard Worker test_srcs += p_data.get('test_srcs') 35*0d6140beSAndroid Build Coastguard Workerendforeach 36*0d6140beSAndroid Build Coastguard Worker 37*0d6140beSAndroid Build Coastguard Workermocks = [ 38*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=strdup', 39*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=physunmap', 40*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=physmap', 41*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=pcidev_init', 42*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=pcidev_readbar', 43*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=spi_send_command', 44*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=sio_write', 45*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=sio_read', 46*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=open', 47*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=open64', 48*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__open64_2', 49*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=ioctl', 50*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=read', 51*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=write', 52*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fopen', 53*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fopen64', 54*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fdopen', 55*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fwrite', 56*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fflush', 57*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=stat', 58*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=stat64', 59*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__xstat', 60*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__xstat64', 61*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fstat', 62*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fstat64', 63*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__fstat50', 64*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__fxstat', 65*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=__fxstat64', 66*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fileno', 67*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fsync', 68*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fread', 69*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fgets', 70*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fprintf', 71*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=fclose', 72*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=feof', 73*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=ferror', 74*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=flock', 75*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=ftruncate', 76*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=clearerr', 77*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=setvbuf', 78*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=rget_io_perms', 79*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=OUTB', 80*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=INB', 81*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=OUTW', 82*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=INW', 83*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=OUTL', 84*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=INL', 85*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=usb_dev_get_by_vid_pid_number', 86*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_init', 87*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_set_debug', 88*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_set_option', 89*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_open', 90*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_set_auto_detach_kernel_driver', 91*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_detach_kernel_driver', 92*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_attach_kernel_driver', 93*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_open_device_with_vid_pid', 94*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_device', 95*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_device_list', 96*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_free_device_list', 97*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_bus_number', 98*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_device_address', 99*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_device_descriptor', 100*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_config_descriptor', 101*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_free_config_descriptor', 102*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_get_configuration', 103*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_set_configuration', 104*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_claim_interface', 105*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_control_transfer', 106*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_release_interface', 107*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_ref_device', 108*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_unref_device', 109*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_close', 110*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_alloc_transfer', 111*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_submit_transfer', 112*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_free_transfer', 113*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_handle_events_timeout', 114*0d6140beSAndroid Build Coastguard Worker '-Wl,--wrap=libusb_exit', 115*0d6140beSAndroid Build Coastguard Worker '-Wl,--gc-sections', 116*0d6140beSAndroid Build Coastguard Worker] 117*0d6140beSAndroid Build Coastguard Worker 118*0d6140beSAndroid Build Coastguard Workerthreads_dep = dependency('threads') 119*0d6140beSAndroid Build Coastguard Worker 120*0d6140beSAndroid Build Coastguard Workerflashrom_tests = executable('flashrom_unit_tests', 121*0d6140beSAndroid Build Coastguard Worker test_srcs, 122*0d6140beSAndroid Build Coastguard Worker c_args : [ 123*0d6140beSAndroid Build Coastguard Worker cargs, 124*0d6140beSAndroid Build Coastguard Worker '-ffunction-sections', 125*0d6140beSAndroid Build Coastguard Worker '-fdata-sections', 126*0d6140beSAndroid Build Coastguard Worker '-U_FORTIFY_SOURCE', 127*0d6140beSAndroid Build Coastguard Worker ], 128*0d6140beSAndroid Build Coastguard Worker export_dynamic : true, 129*0d6140beSAndroid Build Coastguard Worker link_args : mocks + link_args, 130*0d6140beSAndroid Build Coastguard Worker dependencies : [cmocka_dep, flashrom_test_dep, threads_dep], 131*0d6140beSAndroid Build Coastguard Worker) 132*0d6140beSAndroid Build Coastguard Workertest('cmocka test flashrom', flashrom_tests, timeout: 0) 133*0d6140beSAndroid Build Coastguard Worker 134*0d6140beSAndroid Build Coastguard Workerif get_option('llvm_cov').enabled() 135*0d6140beSAndroid Build Coastguard Worker run_target('llvm-cov-tests', command : ['../scripts/llvm-cov', flashrom_tests]) 136*0d6140beSAndroid Build Coastguard Workerendif 137