[Sound-open-firmware] help with unit tests

Jankowski, Janusz janusz.jankowski at linux.intel.com
Fri Feb 8 20:06:15 CET 2019


Hello,

TL;DR: Unit Tests are not supported for xtensa GCC toolchains at the 
moment (work in progress). You can run them only with xtensa xt-* 
toolchain that provides simulator (xt-run).

WHY ->

You need 2 things to run unit tests:

1) stdlib - Cmocka needs to write to standard output etc

Errors like these show that you have no standard C Runtime libe (crt):

     ld: cannot find crt1-sim.o: No such file or directory
     ld: cannot find crt0.o: No such file or directory

so this is issue of gcc toolchain itself, I guess our maintainers can 
add stdlib to toolchains (newlib?).

2) Since these tests are for xtensa you cannot just run them on host, 
they need to be run in some kind of simulator/emulator - for xt we have 
xt-run, for GCC toolchains we plan to use qemu, however our qemu support 
is now limited only to testing if firmware boots properly, so there is 
some work required in qemu also.


If you have more questions feel free to write, I'll try to answer all of 
them.

Best regards,

Janusz


On 08.02.2019 19:36, kalamara at ceid.upatras.gr wrote:
> Hello, this is the first post from a newb user so first of all kudos 
> to everyone for this amazing project.
>
> I have followed the build from scratch instructions and built 
> successfully the apl firmware (from branch master),
> but am having trouble building the unit tests:
>
>
> :~/lara/sof/sof/build_ut$ cmake -DTOOLCHAIN=xtensa-apl-elf 
> -DROOT_DIR=`pwd`/../../xtensa-root/xtensa-apl-elf 
> -DBUILD_UNIT_TESTS=ON ..
> -- Preparing Xtensa toolchain
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /home/antonis/lara/sof/sof/build_ut
>
> :~/lara/sof/sof/build_ut$ make apollolake_defconfig
> [100%] Applying olddefconfig with apollolake_defconfig
> Using existing configuration '.config' as base
> Configuration written to '.config'
> [100%] Built target apollolake_defconfig
>
> :~/lara/sof/sof/build_ut$ make -j4
> -- Preparing Xtensa toolchain
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /home/antonis/lara/sof/sof/build_ut
> [  0%] Built target ld_script_memory_mock
> [  0%] Performing update step for 'cmocka_git'
> [  0%] Generating 
> /home/antonis/lara/sof/sof/build_ut/generated/include/config.h
> [  0%] Built target genconfig
> Scanning dependencies of target audio_for_volume
> [  0%] Building C object 
> test/cmocka/src/audio/volume/CMakeFiles/audio_for_volume.dir/__/__/__/__/__/src/audio/volume_generic.c.o
> [  2%] Building C object 
> test/cmocka/src/audio/volume/CMakeFiles/audio_for_volume.dir/__/__/__/__/__/src/audio/volume.c.o
> [  2%] Building C object 
> test/cmocka/src/audio/volume/CMakeFiles/audio_for_volume.dir/__/__/__/__/__/src/audio/volume_hifi3.c.o
> [  3%] Linking C static library libaudio_for_volume.a
> [  3%] Built target audio_for_volume
> Current branch master is up to date.
> [  4%] Performing configure step for 'cmocka_git'
> -- The C compiler identification is GNU 8.1.0
> -- Check for working C compiler: 
> /home/antonis/lara/sof/xtensa-apl-elf/bin/xtensa-apl-elf-gcc
> -- Check for working C compiler: 
> /home/antonis/lara/sof/xtensa-apl-elf/bin/xtensa-apl-elf-gcc -- broken
> CMake Error at 
> /usr/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake:52 (message):
>   The C compiler
>
>     "/home/antonis/lara/sof/xtensa-apl-elf/bin/xtensa-apl-elf-gcc"
>
>   is not able to compile a simple test program.
>
>   It fails with the following output:
>
>     Change Dir: 
> /home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp
>
>     Run Build Command:"/usr/bin/make" "cmTC_809b9/fast"
>     make[3]: Entering directory 
> '/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp'
>     /usr/bin/make -f CMakeFiles/cmTC_809b9.dir/build.make 
> CMakeFiles/cmTC_809b9.dir/build
>     make[4]: Entering directory 
> '/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp'
>     Building C object CMakeFiles/cmTC_809b9.dir/testCCompiler.c.o
> /home/antonis/lara/sof/xtensa-apl-elf/bin/xtensa-apl-elf-gcc    -o 
> CMakeFiles/cmTC_809b9.dir/testCCompiler.c.o   -c 
> /home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp/testCCompiler.c
>     Linking C executable cmTC_809b9
>     /usr/bin/cmake -E cmake_link_script 
> CMakeFiles/cmTC_809b9.dir/link.txt --verbose=1
> /home/antonis/lara/sof/xtensa-apl-elf/bin/xtensa-apl-elf-gcc 
> CMakeFiles/cmTC_809b9.dir/testCCompiler.c.o  -o cmTC_809b9
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find crt1-sim.o: No such file or directory
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find crt0.o: No such file or directory
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find _vectors.o: No such file or directory
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find -lc
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find -lsim
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find -lc
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find -lhandlers-sim
> /home/antonis/lara/sof/xtensa-apl-elf/bin/../lib/gcc/xtensa-apl-elf/8.1.0/../../../../xtensa-apl-elf/bin/ld: 
> cannot find -lhal
>     collect2: error: ld returned 1 exit status
>     CMakeFiles/cmTC_809b9.dir/build.make:97: recipe for target 
> 'cmTC_809b9' failed
>     make[4]: *** [cmTC_809b9] Error 1
>     make[4]: Leaving directory 
> '/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp'
>     Makefile:126: recipe for target 'cmTC_809b9/fast' failed
>     make[3]: *** [cmTC_809b9/fast] Error 2
>     make[3]: Leaving directory 
> '/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeTmp'
>
>
>
>
>   CMake will not be able to correctly generate this project.
> Call Stack (most recent call first):
>   CMakeLists.txt:18 (project)
>
>
> -- Configuring incomplete, errors occurred!
> See also 
> "/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeOutput.log".
> See also 
> "/home/antonis/lara/sof/sof/build_ut/cmocka_git/build/CMakeFiles/CMakeError.log".
> test/cmocka/CMakeFiles/cmocka_git.dir/build.make:105: recipe for 
> target 'cmocka_git/src/cmocka_git-stamp/cmocka_git-configure' failed
> make[2]: *** [cmocka_git/src/cmocka_git-stamp/cmocka_git-configure] 
> Error 1
> CMakeFiles/Makefile2:572: recipe for target 
> 'test/cmocka/CMakeFiles/cmocka_git.dir/all' failed
> make[1]: *** [test/cmocka/CMakeFiles/cmocka_git.dir/all] Error 2
> Makefile:94: recipe for target 'all' failed
> make: *** [all] Error 2
>
> It seems something that should be obvious is missing from my setup, 
> even though i am able to build SOF binaries?
> Can you please advise?
>
> my environment is
>
> Ubuntu 18.04.1 LTS
> cmake version 3.10.2
>
> regards and thanks
>
> antonis
>
> _______________________________________________
> Sound-open-firmware mailing list
> Sound-open-firmware at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware


More information about the Sound-open-firmware mailing list