ASM = nasm CC = clang LD = ld ASMFLAGS = -f bin CFLAGS = -m32 -ffreestanding -nostdlib -nodefaultlibs -fno-builtin -fno-stack-protector -target i386-pc-none-elf LDFLAGS = -arch i386 -static -e _main -T linker.ld ifeq ($(shell uname),Darwin) LDFLAGS = -arch i386 -static -e _main else LDFLAGS = -m elf_i386 -T linker.ld endif all: os.bin bootloader.bin: bootloader.asm gdt.asm print32.asm switch_pm.asm $(ASM) $(ASMFLAGS) bootloader.asm -o bootloader.bin kernel.o: kernel.c $(CC) $(CFLAGS) -c kernel.c -o kernel.o kernel.bin: kernel.o $(LD) $(LDFLAGS) kernel.o -o kernel.bin os.bin: bootloader.bin kernel.bin cat bootloader.bin kernel.bin > os.bin truncate -s 1440K os.bin clean: rm -f *.bin *.o test: os.bin qemu-system-i386 -fda os.bin usb: os.bin ./create_usb.sh iso: os.bin ./build-iso.sh docker-iso: ./docker-build.sh && ./build-iso.sh .PHONY: all clean test usb iso docker-iso