ninja_required_version = 1.3 builddir = {{ buildroot }} srcroot = {{ srcroot }} warnflags = $ -Wformat=2 $ -Winit-self $ -Wfloat-equal $ -Winline $ -Wmissing-format-attribute $ -Wmissing-include-dirs $ -Wswitch $ -Wundef $ -Wdisabled-optimization $ -Wpointer-arith $ -Wno-attributes $ -Wno-sign-compare $ -Wno-multichar $ -Wno-div-by-zero $ -Wno-endif-labels $ -Wno-pragmas $ -Wno-format-extra-args $ -Wno-unused-result $ -Wno-deprecated-declarations $ -Wno-unused-function $ -Werror ccflags = $ -I${srcroot}/src/include $ -I${srcroot}/src/include/x86_64 $ -DVERSION_MAJOR={{ version.major }} $ -DVERSION_MINOR={{ version.minor }} $ -DVERSION_PATCH={{ version.patch }} $ -DVERSION_GITSHA=0x{% if version.dirty %}1{% else %}0{% endif %}{{ version.sha }} $ -DGIT_VERSION=\"{{ version.major }}.{{ version.minor }}.{{ version.patch }}-{{ version.sha }}\" $ -DGIT_VERSION_WIDE=L\"{{ version.major }}.{{ version.minor }}.{{ version.patch }}-{{ version.sha }}\" $ $warnflags asflags = $ -DVERSION_MAJOR={{ version.major }} $ -DVERSION_MINOR={{ version.minor }} $ -DVERSION_PATCH={{ version.patch }} $ -DVERSION_GITSHA=0x{% if version.dirty %}1{% else %}0{% endif %}{{ version.sha }} cflags = -std=c11 cxxflags = -std=c++14 libs = rule cc deps = gcc depfile = $out.d description = Compiling $name command = $cc -MMD -MF $out.d $ccflags $cflags -o $out -c $in rule cxx deps = gcc depfile = $out.d description = Compiling $name command = $cxx -MMD -MF $out.d $cxxflags $ccflags -o $out -c $in rule nasm deps = gcc depfile = $out.d description = Assembling $name command = $nasm -o $out -felf64 -MD $out.d $asflags $in rule exe description = Linking $name command = $ld $ldflags -o $out $in $libs rule lib description = Archiving $name command = $ar qcs $out $in rule regen generator = true description = Regenrating build files command = {{ generator }} $builddir rule cp description = Copying $name command = cp $in $out rule makerd description = Making init ramdisk command = $builddir/native/makerd $in $out rule makeefi description = Converting $name command = objcopy $ -j .text $ -j .sdata $ -j .data $ -j .dynamic $ -j .dynsym $ -j .rel $ -j .rela $ -j .reloc $ --target=efi-app-x86_64 $ $in $out rule makefat description = Creating $name command = $ cp $srcroot/assets/diskbase.img $out; $ mcopy -s -D o -i $out@@1024K $builddir/fatroot/* ::/ {% for target in targets %} subninja {{ target }}/target.ninja {% endfor %} build $ {%- for buildfile in buildfiles %} {{ buildfile }} $ {%- endfor %} : regen | $ {%- for template in templates %} {{ template }} $ {%- endfor %} {{ generator }} build $builddir/flash.img : cp $srcroot/assets/ovmf/x64/OVMF.fd name = flash.img build $builddir/fatroot/popcorn.elf : cp $builddir/host/popcorn.elf name = kernel to FAT image build $builddir/fatroot/efi/boot/bootx64.efi : cp $builddir/boot/boot.efi name = bootloader to FAT image build $builddir/fatroot/initrd.img : makerd ${srcroot}/assets/initrd.toml | $ ${builddir}/native/makerd $ ${builddir}/host/nulldrv build $builddir/popcorn.img : makefat | $ $builddir/fatroot/initrd.img $ $builddir/fatroot/popcorn.elf $ $builddir/fatroot/efi/boot/bootx64.efi name = popcorn.img # vim: et ts=4 sts=4 sw=4