Makefile (1196B)
1 ASM = nasm 2 ASMFLAGS = 3 GCC = $(HOME)/opt/cross/bin/i586-elf-gcc 4 GCCFLAGS = -std=gnu99 -ffreestanding -O2 -Wall -Wextra -Iinclude 5 6 C_OBJECTS = $(patsubst %.c, %.o, $(shell find . -name "*.c")) 7 ASM_OBJECTS = $(patsubst %.asm, %_asm.o, $(shell find . -name "*.asm")) 8 9 all: image kernel kernel-install 10 11 %_asm.o: %.asm 12 $(ASM) $< -o $@ -f elf 13 14 %.o: %.c 15 $(GCC) -c $< -o $@ $(GCCFLAGS) 16 17 kernel: $(C_OBJECTS) $(ASM_OBJECTS) 18 $(GCC) -T kernel.ld -o sos-kernel.img -ffreestanding -O2 -nostdlib $(C_OBJECTS) $(ASM_OBJECTS) -lgcc 19 20 kernel-install: 21 sudo losetup /dev/loop1 sos.img -o 1048576 22 sudo mount /dev/loop1 /mnt 23 sudo cp sos-kernel.img /mnt/boot/ 24 sudo umount /mnt 25 sudo losetup -d /dev/loop1 26 27 image: 28 dd if=/dev/zero of=sos.img bs=512 count=131072 29 sfdisk sos.img < sos.img.layout 30 31 sudo losetup /dev/loop0 sos.img 32 sudo losetup /dev/loop1 sos.img -o 1048576 33 sudo mke2fs /dev/loop1 34 sudo mount /dev/loop1 /mnt 35 sudo grub-install --root-directory=/mnt --no-floppy --modules="normal ext2 part_msdos multiboot" /dev/loop0 36 sudo cp grub/* /mnt/boot/grub/ 37 sudo losetup -d /dev/loop0 38 sudo umount /mnt 39 sudo losetup -d /dev/loop1 40 41 clean: 42 rm $(ASM_OBJECTS) $(C_OBJECTS) 43 rm sos-kernel.img 44 rm sos.img