From bdce62a91076aa1a076d484ce1d8564a8ba0988f Mon Sep 17 00:00:00 2001 From: Alex AUVOLAT Date: Fri, 28 Mar 2014 09:44:01 +0100 Subject: Import article 5, does not compile. --- sos-code-article6/extra/Makefile | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 sos-code-article6/extra/Makefile (limited to 'sos-code-article6/extra/Makefile') diff --git a/sos-code-article6/extra/Makefile b/sos-code-article6/extra/Makefile new file mode 100644 index 0000000..f858aa6 --- /dev/null +++ b/sos-code-article6/extra/Makefile @@ -0,0 +1,40 @@ +OBJCOPY=objcopy + +all: sos_qemu.img + +-include ../.mkvars + +# The image is the simple concatenation of the boot sector and the kernel +# It may be use in bochs or on a real floppy, but NOT in qemu (see below) +sos_bsect.img: bsect.bin sos.bin + cat $^ > $@ + @echo "You can use the $@ image in bochs or on a real floppy (NOT qemu)" + +# For qemu, the trick is to tell it we have *more* than 1440 sectors (720kB). +# Rtherwise the qemu disk geometry will be configured to be that of a 720kB +# floppy, while our boot sector assumes it to be 1.44MB +sos_qemu.img: sos_bsect.img + # Padding with 0s after the bsect/kernel image + cat $< /dev/zero | dd of=$@ bs=1k count=1440 + @echo "You can use the $@ image in qemu, bochs, or on a real floppy" + +# we extract the boot sector from the main ELF binary +bsect.bin: sos_bsect.elf + $(OBJCOPY) -v -O binary -j .bootsect $< $@ + +# we extract the kernel code from the main ELF binary +sos.bin: sos_bsect.elf + $(OBJCOPY) -v -O binary -R .bootsect $< $@ + +# The main ELF binary contains the boot sector and the kernel code +# linked together (hence we deal with a SINGLE image that we split +# above) because they share some symbol definitions +sos_bsect.elf: bootsect.o compile_kernel + $(LD) --warn-common -T ./sos_bsect.lds -o $@ \ + bootsect.o $(wildcard ../hwcore/*.o ../drivers/*.o ../sos/*.o) + +compile_kernel: + $(MAKE) -C .. + +clean: + $(RM) *.img *.elf *.bin *~ *.o *.out -- cgit v1.2.3