Rodrigo Arias Mallo
c0ecd32173
The march and mtune flags are passed by the crossSystem gcc attributes, which are placed *before* the flags to gcc. This may end up causing some packages to break, but it is working fine so far.
83 lines
2.6 KiB
Nix
83 lines
2.6 KiB
Nix
final: prev:
|
||
|
||
# Changes to packages from nixpkgs
|
||
|
||
{
|
||
opensbi = prev.opensbi.overrideAttrs (old: {
|
||
makeFlags = old.makeFlags ++ [
|
||
# Build OpenSBI without compressed instructions
|
||
"PLATFORM_RISCV_ISA=rv64gv"
|
||
# Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate
|
||
];
|
||
});
|
||
|
||
# Fix GCC 13 format-overflow warning/error:
|
||
# ../src/shared/install.c:444:64: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
|
||
# 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.",
|
||
# | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
systemd = prev.systemd.overrideAttrs (old: {
|
||
CFLAGS = "-Wno-error=format-overflow";
|
||
});
|
||
|
||
qemu = prev.qemu.override { rutabagaSupport = false; };
|
||
|
||
uboot-custom = prev.ubootQemuRiscv64Smode.override {
|
||
# Override preboot to set 'bootcmd' directly to the kernel address in RAM
|
||
extraConfig = ''
|
||
CONFIG_PREBOOT="setenv fdt_addr ''${fdtcontroladdr}; fdt addr ''${fdtcontroladdr}; setenv bootcmd booti ''${kernel_addr_r} - ''${fdtcontroladdr};"
|
||
CONFIG_RISCV_ISA_C=n
|
||
'';
|
||
# Also include debug u-boot
|
||
filesToInstall = ["u-boot.bin" "u-boot"];
|
||
};
|
||
|
||
opensbi-uboot = prev.opensbi.overrideAttrs (old: {
|
||
makeFlags = old.makeFlags ++ [
|
||
# Build OpenSBI without compressed instructions
|
||
"PLATFORM_RISCV_ISA=rv64gv"
|
||
# Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate
|
||
"FW_PAYLOAD_PATH=${final.uboot-custom}/u-boot.bin"
|
||
];
|
||
});
|
||
|
||
linuxPackagesCustom = prev.linuxPackagesFor (prev.linux.override {
|
||
# Don't use a compiler without compressed instructions, let the kernel
|
||
# configure the -march and -mabi arguments.
|
||
stdenv = prev.stdenv;
|
||
structuredExtraConfig = with prev.lib.kernel; {
|
||
KEXEC = yes;
|
||
SERIAL_8250_DW = yes;
|
||
PINCTRL_STARFIVE = yes;
|
||
|
||
# Doesn't build as a module
|
||
DW_AXI_DMAC_STARFIVE = yes;
|
||
|
||
# stmmac hangs when built as a module
|
||
#PTP_1588_CLOCK = yes;
|
||
#STMMAC_ETH = yes;
|
||
#STMMAC_PCI = yes;
|
||
|
||
# For qemu
|
||
BLOCK = yes;
|
||
BLK_DEV = yes;
|
||
DEVTMPFS = yes;
|
||
VIRTIO_MENU = yes;
|
||
VIRTIO_BLK = yes;
|
||
|
||
# For 9P: https://wiki.qemu.org/Documentation/9psetup
|
||
NET_9P = yes;
|
||
NET_9P_VIRTIO = yes;
|
||
NET_9P_DEBUG = yes;
|
||
"9P_FS" = yes;
|
||
"9P_FS_POSIX_ACL" = yes;
|
||
PCI = yes;
|
||
VIRTIO_PCI = yes;
|
||
PCI_HOST_GENERIC = yes;
|
||
|
||
RISCV_ISA_C = no;
|
||
NONPORTABLE = yes;
|
||
EFI = no;
|
||
};
|
||
});
|
||
}
|