diff --git a/kernel/dtb.nix b/kernel/dtb.nix new file mode 100644 index 0000000..4c28ee7 --- /dev/null +++ b/kernel/dtb.nix @@ -0,0 +1,24 @@ +{ + stdenv +, openwrt +, dtc +, kernel +}: +{ dts +}:let + includes = [ + "${openwrt}/target/linux/ath79/dts" + "${kernel}/include" + ]; + cppDtSearchFlags = builtins.concatStringsSep " " (map (f: "-I${f}") includes); + dtcSearchFlags = builtins.concatStringsSep " " (map (f: "-i${f}") includes); +in stdenv.mkDerivation { + name = "dtb"; + phases = [ "buildPhase" ]; + nativeBuildInputs = [ dtc ]; + buildPhase = '' + ${stdenv.cc.targetPrefix}cpp -nostdinc -x assembler-with-cpp ${cppDtSearchFlags} -undef -D__DTS__ -o dtb.tmp ${openwrt}/target/linux/ath79/dts/${dts} + dtc ${dtcSearchFlags} -I dts -O dtb -o $out dtb.tmp + test -e $out + ''; +}