Cores-VeeR-EL2
Cores-VeeR-EL2 copied to clipboard
Does not build
I'm running :
make -f $RV_ROOT/tools/Makefile
rm -rf *.log .s .hex .dis .tbl irun vcs simv .map snapshots veer
verilator .exe obj *.o *.sym ucli.key vc_hdrs.h csrc *.csv work
dataset.asdb library.cfg vsimsa.cfg riviera-build wave.asdb
make -f el2/Cores-VeeR-EL2/tools/picolibc.mk all
make[1]: Entering directory `el2'
cd el2/Cores-VeeR-EL2/third_party/picolibc && meson el2/Cores-VeeR-EL2/third_party/picolibc/build
-Dmultilib=true
-Dmultilib-list=rv32imac/ilp32
-Dpicocrt=false
-Datomic-ungetc=false
-Dthread-local-storage=false
-Dio-long-long=true
-Dformat-default=integer
-Dincludedir=picolibc/riscv64-unknown-elf/include
-Dlibdir=picolibc/riscv64-unknown-elf/lib
-Dprefix=el2/Cores-VeeR-EL2/third_party/picolibc/install
-Dspecsdir=el2/Cores-VeeR-EL2/third_party/picolibc/install
--cross-file el2/Cores-VeeR-EL2/third_party/picolibc/build/cross.txt
ERROR: Neither directory contains a build file meson.build. make[1]: *** [el2/Cores-VeeR-EL2/third_party/picolibc/install/picolibc.specs] Error 1 make[1]: Leaving directory `el2' make: *** [picolibc] Error 2
what's wrong?
Hi @algrobman, it looks like the error you've attached occurs when you try to build VeeR core without having all required submodules.
Please make sure that command git submodule update --init --recursive
executes without errors. Since you've already run build command you might have to first run git submodule deinit --force .
(note the dot at the end).
BTW, what is this picolibs stuff for?
cd el2/Cores-VeeR-EL2/third_party/picolibc && meson el2/Cores-VeeR-EL2/third_party/picolibc/build
-Dmultilib=true
-Dmultilib-list=rv32imac/ilp32
-Dpicocrt=false
-Datomic-ungetc=false
-Dthread-local-storage=false
-Dio-long-long=true
-Dformat-default=integer
-Dincludedir=picolibc/riscv64-unknown-elf/include
-Dlibdir=picolibc/riscv64-unknown-elf/lib
-Dprefix=el2/Cores-VeeR-EL2/third_party/picolibc/install
-Dspecsdir=el2/Cores-VeeR-EL2/third_party/picolibc/install
--cross-file el2/Cores-VeeR-EL2/third_party/picolibc/build/cross.txt
DEPRECATION: c_args in the [properties] section of the machine file is deprecated, use the [built-in options] section.
The Meson build system
Version: 0.59.0
Source dir: el2/Cores-VeeR-EL2/third_party/picolibc
Build dir: el2/Cores-VeeR-EL2/third_party/picolibc/build
Build type: cross build
Project name: picolibc
Project version: 1.8
C compiler for the host machine: riscv64-unknown-elf-gcc (gcc 10.1.0 "riscv64-unknown-elf-gcc (GCC) 10.1.0")
C linker for the host machine: riscv64-unknown-elf-gcc ld.bfd 2.35
C compiler for the build machine: cc (gcc 4.8.5 "cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)")
C linker for the build machine: cc ld.bfd 2.34
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: riscv64
Host machine cpu: riscv
Target machine cpu family: riscv64
Target machine cpu: riscv
Compiler for C supports arguments -nostdlib: YES
Checking if "long double check" compiles: YES
Fetching value of define "SIZEOF_FLOAT" : 4
Fetching value of define "SIZEOF_DOUBLE" : 8
Fetching value of define "SIZEOF_LONG_DOUBLE" : 16
Compiler for C supports arguments -fno-common: YES
Compiler for C supports arguments -frounding-math: YES
Compiler for C supports arguments -fsignaling-nans: YES
Compiler for C supports arguments -Wno-unsupported-floating-point-opt: NO
Compiler for C supports arguments -fno-stack-protector: YES
Compiler for C supports arguments -fno-builtin-copysignl: YES
Program riscv64-unknown-elf-gcc-nm found: YES
Program scripts/duplicate-names found: YES (el2/Cores-VeeR-EL2/third_party/picolibc/scripts/duplicate-names)
Compiler for C supports link arguments -Wl,--defsym=_start=0: YES
Compiler for C supports link arguments -Wl,-alias,main,testalias: NO
Compiler for C supports function attribute alias: YES
Compiler for C supports function attribute format: YES
Compiler for C supports function attribute weak: YES
Configuring picolibc.specs using configuration
Configuring picolibcpp.specs using configuration
Configuring picolibc.ld using configuration
Configuring picolibcpp.ld using configuration
Compiler for C supports arguments -Werror=implicit-function-declaration: YES
Compiler for C supports arguments -Werror=vla: YES
Compiler for C supports arguments -Warray-bounds: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Werror=double-promotion: YES
Compiler for C supports arguments -Wno-missing-braces: YES
Compiler for C supports arguments -Wno-implicit-int: YES
Compiler for C supports arguments -Wno-return-type: YES
Compiler for C supports arguments -Wno-unused-command-line-argument: NO
Checking if "packed structs may contain bitfields" compiles: YES
Checking if "has __builtin_mul_overflow" links: YES
Checking if "has __builtin_add_overflow" links: YES
Checking if "supports _Complex" compiles: YES
Checking if "has __builtin_expect" links: YES
Compiler for C supports arguments -Werror: YES
Checking if "attribute alloc_size" compiles: YES
Checking if "attributes constructor/destructor" compiles: YES
Message: target .;
meson.build:920:1: ERROR: Problem encountered: Unavailable multilib: rv32imac/ilp32
A full log can be found at el2/Cores-VeeR-EL2/third_party/picolibc/build/meson-logs/meson-log.txt make[1]: *** [el2/Cores-VeeR-EL2/third_party/picolibc/install/picolibc.specs] Error 1 make[1]: Leaving directory `el2' make: *** [picolibc] Error 2
This error means that the toolchain you're using doesn't have support for the 32-bit RISC-V architecture with the specified ISA extensions and ABI. You need a toolchain with multilib support (see #132).
BTW, what is this picolibs stuff for?
picolibc is a fully BSD licensed revised version of newlibc which uses a lightweight stdio lib, which is more suitable for low memory devices which VeeR is meant for.
Don't you think that not all users need this picolibc and it shouldn't be built in main Makefile if I want to run just hello_world?