sos

[unmaintained] experimenting with low level OS development
Log | Files | Refs | README | LICENSE

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