zephyrproject-rtos / meta-zephyr-sdk

Zephyr SDK (obsolete)
MIT License
44 stars 29 forks source link

Building Zephyr Qemu-Cortex-m3 through LLVM-Clang #90

Open wenhuizhang opened 6 years ago

wenhuizhang commented 6 years ago

Hi, to whom it may concern: Sorry for bothering. However I was wondering if there are some best practices for building Zephyr Qemu-Cortex-m3 through LLVM-Clang please?

I tried:

$ export PATH=$PATH:/home/wenhui/Desktop/LLVM/build/bin
$ export ZEPHYR_GCC_VARIANT=host-gcc

Then in file /home/wenhui/Desktop/zephyr/cmake/toolchain-host-gcc.cmake

$ vim /home/wenhui/Desktop/zephyr/cmake/toolchain-host-gcc.cmake

set(CMAKE_C_COMPILER   clang-7.0     CACHE INTERNAL " " FORCE)

Then are experiencing some problems with arch matching. It seems like we need a patch to Clang for cross-compile to qemu-cortex-m3.

Any suggestions please?

wenhui@wenhui:~/Desktop/zephyr/samples/synchronization/build$ cmake -DBOARD=qemu_cortex_m3 ..
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.2", minimum required is "3.4")
-- Selected BOARD qemu_cortex_m3
Zephyr version: 1.10.99
Using /home/wenhui/Desktop/zephyr/boards/arm/qemu_cortex_m3/qemu_cortex_m3_defconfig as base
Merging /home/wenhui/Desktop/zephyr/samples/synchronization/prj.conf
Merging /home/wenhui/Desktop/zephyr/tests/include/test.config
#
# configuration written to /home/wenhui/Desktop/zephyr/samples/synchronization/build/zephyr/.config
#
-- Generating zephyr/include/generated/autoconf.h
-- Generating zephyr/include/generated/generated_dts_board.h
-- The C compiler identification is Clang 3.8.0
-- The CXX compiler identification is Clang 3.8.0
-- The ASM compiler identification is Clang
-- Found assembler: /usr/bin/clang
-- Performing Test toolchain_is_ok
-- Performing Test toolchain_is_ok - Success
-- Performing Test check_nostartfiles
-- Performing Test check_nostartfiles - Success
-- Performing Test check_nodefaultlibs
-- Performing Test check_nodefaultlibs - Failed
-- Performing Test check_nostdlib
-- Performing Test check_nostdlib - Success
-- Performing Test check_static
-- Performing Test check_static - Success
-- Performing Test check_no_pie
-- Performing Test check_no_pie - Failed
-- Performing Test check_fno_asynchronous_unwind_tables_C
-- Performing Test check_fno_asynchronous_unwind_tables_C - Success
-- Performing Test check_fno_pie_C
-- Performing Test check_fno_pie_C - Success
-- Performing Test check_fno_pic_C
-- Performing Test check_fno_pic_C - Success
-- Performing Test check_fno_strict_overflow_C
-- Performing Test check_fno_strict_overflow_C - Success
-- Performing Test check_Wno_pointer_sign_C
-- Performing Test check_Wno_pointer_sign_C - Success
-- Performing Test check_Wno_unknown_warning_option_C
-- Performing Test check_Wno_unknown_warning_option_C - Success
-- Performing Test check_Wno_unused_variable_C
-- Performing Test check_Wno_unused_variable_C - Success
-- Performing Test check_Wno_format_invalid_specifier_C
-- Performing Test check_Wno_format_invalid_specifier_C - Success
-- Performing Test check_Wno_gnu_C
-- Performing Test check_Wno_gnu_C - Success
-- Performing Test check_Wno_tautological_compare_C
-- Performing Test check_Wno_tautological_compare_C - Success
-- Performing Test check_Werror_implicit_int_C
-- Performing Test check_Werror_implicit_int_C - Success
-- Performing Test check_Wl__X
-- Performing Test check_Wl__X - Success
-- Performing Test check_Wl__N
-- Performing Test check_Wl__N - Failed
-- Performing Test check_Wl___gc_sections
-- Performing Test check_Wl___gc_sections - Success
-- Performing Test check_Wl___build_id_none
-- Performing Test check_Wl___build_id_none - Success
-- Performing Test check_ffunction_sections_C
-- Performing Test check_ffunction_sections_C - Success
-- Performing Test check_fdata_sections_C
-- Performing Test check_fdata_sections_C - Success
-- Performing Test check_Wl___print_memory_usage
-- Performing Test check_Wl___print_memory_usage - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wenhui/Desktop/zephyr/samples/synchronization/build
wenhui@wenhui:~/Desktop/zephyr/samples/synchronization/build$ make run
Scanning dependencies of target syscall_list_h_target
[  1%] Generating always_rebuild
Building for board qemu_cortex_m3
[  2%] Generating misc/generated/syscalls.json
[  3%] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
[  3%] Built target syscall_list_h_target
Scanning dependencies of target syscall_macros_h_target
[  4%] Generating include/generated/syscall_macros.h
[  4%] Built target syscall_macros_h_target
Scanning dependencies of target offsets
[  6%] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
clang: warning: argument unused during compilation: '-mabi=aapcs'
clang: warning: argument unused during compilation: '-mabi=aapcs'
In file included from /home/wenhui/Desktop/zephyr/arch/arm/core/offsets/offsets.c:26:
In file included from /home/wenhui/Desktop/zephyr/kernel/include/kernel_structs.h:135:
/home/wenhui/Desktop/zephyr/arch/arm/include/kernel_arch_func.h:81:5: error: unknown register name 'r0' in asm
  : "r0", "r1", "sp"
    ^
1 error generated.
zephyr/CMakeFiles/offsets.dir/build.make:62: recipe for target 'zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj' failed
make[3]: *** [zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj] Error 1
CMakeFiles/Makefile2:668: recipe for target 'zephyr/CMakeFiles/offsets.dir/all' failed
make[2]: *** [zephyr/CMakeFiles/offsets.dir/all] Error 2
CMakeFiles/Makefile2:436: recipe for target 'zephyr/CMakeFiles/run.dir/rule' failed
make[1]: *** [zephyr/CMakeFiles/run.dir/rule] Error 2
Makefile:235: recipe for target 'run' failed
make: *** [run] Error 2