diff --git a/README.md b/README.md index 0d9accc..f2b2c5e 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,19 @@ ## Building ```sh -# Create iso -make iso -# Run virtual machine with your iso +make +``` + +## Running + +After building, run the following: + +```sh qemu-system-x86_64 -cdrom .build/nub-os.iso ``` + +Or all in once build and run + +```sh +make && qemu-system-x86_64 -cdrom .build/nub-os.iso +``` diff --git a/makefile b/makefile index be17e9c..fb31639 100644 --- a/makefile +++ b/makefile @@ -1,34 +1,33 @@ -BUILDDIR=mkdir-build -CC = i386-elf-gcc -ffreestanding -m32 +CC = i386-elf-gcc +LD = i386-elf-ld -iso: .build/ .build/nub-os.iso +CFLAGS = -ffreestanding -m32 -.build/nub-os.iso: .build/kernel.bin +all: .build/nub-os.iso + +clean: + @rm -r .build 2>/dev/null || true + +build-dir: + mkdir .build 2>/dev/null || true + +.build/nub-os.iso: build-dir .build/kernel.bin mkdir -p .build/iso/boot/grub cp grub.cfg .build/iso/boot/grub cp .build/kernel.bin .build/iso/boot/ grub-mkrescue -o .build/nub-os.iso .build/iso/ -.build/kernel.bin: .build/entry.o .build/kernel.o .build/mem.o .build/print.o - i386-elf-ld -Ttext 0x100000 -o .build/kernel.bin .build/entry.o .build/kernel.o .build/mem.o .build/print.o +.build/kernel.bin: build-dir .build/entry.o .build/kernel.o .build/mem.o .build/print.o + $(LD) -Ttext 0x100000 -o .build/kernel.bin .build/entry.o .build/kernel.o .build/mem.o .build/print.o -.build/kernel.o: src/kernel.c - $(CC) -c -o .build/kernel.o src/kernel.c +.build/kernel.o: build-dir src/kernel.c + $(CC) $(CFLAGS) -c -o .build/kernel.o src/kernel.c -.build/mem.o: src/mem.c - $(CC) -c -o .build/mem.o src/mem.c +.build/mem.o: build-dir src/mem.c + $(CC) $(CFLAGS) -c -o .build/mem.o src/mem.c -.build/print.o: src/print.c - $(CC) -c -o .build/print.o src/print.c +.build/print.o: build-dir src/print.c + $(CC) $(CFLAGS) -c -o .build/print.o src/print.c -.build/entry.o: src/entry.asm +.build/entry.o: build-dir src/entry.asm nasm -f elf -o .build/entry.o src/entry.asm - -run: .build/nub-os.iso - qemu-system-x86_64 -cdrom .build/nub-os.iso - -.build/: - mkdir .build - -clean: - @rm -r .build 2>/dev/null || true