alcedo/nakefile.nim

52 lines
1.6 KiB
Nim
Raw Normal View History

import nake
import os, osproc, strutils
let
standardOptions = """--skipCfg -d:version:"""" & execProcess("git rev-parse HEAD").strip() & """" kernel.nim"""
outputFile = "myos.bin"
task "clean", "Removes build files.":
removeFile("boot.o")
removeFile("serial.log")
removeDir("nimcache")
removeFile(outputFile)
echo "Done."
task "bootloader", "Builds the bootloader.":
echo "Building bootloader."
direShell "nasm -felf32 kernel/arch/i386/boot.s -o boot.o"
echo "Done."
task "build", "Builds the operating system.":
runTask("clean")
runTask("bootloader")
echo "Compiling and linking."
withDir("kernel"):
direShell "nim cc -o:", "../" & outputFile, standardOptions
runTask("checkMultiboot")
echo "Done."
task "build-release", "Builds the operating system, release mode.":
runTask("clean")
runTask("bootloader")
echo "Compiling and linking (release mode)."
withDir("kernel"):
direShell "nim cc -d:release -o:", "../" & outputFile, standardOptions
runTask("checkMultiboot")
echo "Done."
task "checkMultiboot", "Checks the grub multiboot header.":
echo "Checking multiboot."
direShell "grub-file --is-x86-multiboot", outputFile
echo "Multibook check successful."
task "debug", "Runs the operating system using QEMU with debug build and flags.":
runTask("build")
echo "Running in Qemu."
direShell "qemu-system-i386 -kernel", outputFile ,"-serial stdio -no-reboot -no-shutdown -d int,cpu_reset"
task "run", "Runs the operating system using QEMU.":
runTask("build-release")
echo "Running in Qemu."
direShell "qemu-system-i386 -kernel", outputFile ,"-serial stdio"