69 lines
1.6 KiB
Nix
69 lines
1.6 KiB
Nix
{ pkgs, stdenv, riscv-arch-test }:
|
|
pkgs.gcc13Stdenv.mkDerivation rec {
|
|
pname = "rve";
|
|
version = "0.1.0";
|
|
|
|
dontPatch = true;
|
|
|
|
preBuild = ''
|
|
patchShebangs bin/*.sh
|
|
'';
|
|
|
|
installFlags = "PREFIX=${placeholder "out"} VERSION=${version}";
|
|
|
|
nativeBuildInputs = with pkgs; [ pkg-config cmake ninja ];
|
|
|
|
buildInputs = with pkgs; [
|
|
gdb
|
|
linuxPackages.perf
|
|
jq
|
|
lcov
|
|
(SDL2.overrideAttrs {waylandSupport= true;})
|
|
#riscv-pkgs.buildPackages.gcc
|
|
pkgsCross.riscv32-embedded.buildPackages.gcc
|
|
pkgsCross.riscv32-embedded.buildPackages.binutils
|
|
pkgsCross.riscv32-embedded.buildPackages.gdb
|
|
sail-riscv-rv32
|
|
(python3.withPackages (ps: with ps; [
|
|
riscof
|
|
]))
|
|
];
|
|
|
|
hardeningDisable = [ "all" ];
|
|
cmakeFlags = [
|
|
"-DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE"
|
|
#"-DCMAKE_BUILD_TYPE=Debug"
|
|
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
|
|
|
# For profiling
|
|
# "-DCMAKE_CXX_FLAGS=-pg"
|
|
# "-DCMAKE_EXE_LINKER_FLAGS=-pg"
|
|
# "-DCMAKE_SHARED_LINKER_FLAGS=-pg"
|
|
];
|
|
shellHook = ''
|
|
export CMAKE_BUILD_TYPE=Debug
|
|
ln -s build/compile_commands.json compile_commands.json
|
|
'';
|
|
|
|
checkPhase = ''
|
|
export PATH=`pwd`:$PATH
|
|
cd ../test
|
|
riscof run --config=config.ini \
|
|
--suite=${riscv-arch-test}/riscv-test-suite \
|
|
--env=${riscv-arch-test}/riscv-test-suite/env \
|
|
--no-browser 2>report.txt
|
|
# This is needed because `riscof` doesn't return
|
|
# error code on failed tests
|
|
if [ ! -z "$(grep ERROR report.txt)" ]; then
|
|
cat report.txt
|
|
echo "Some of the RISCOF tests failed"
|
|
exit 1
|
|
fi
|
|
cd -
|
|
'';
|
|
|
|
doCheck = true;
|
|
|
|
src = ./.;
|
|
|
|
}
|