sos-code-article10/extra/Makefile
2018-07-13 17:13:10 +02:00

47 lines
1.6 KiB
Makefile
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

OBJCOPY=objcopy
LIBGCC := $(shell $(CC) -print-libgcc-file-name) # To benefit from FP/64bits artihm.
EXTRA := $(shell [ -f ../userland/userprogs.kimg ] && echo ../userland/userprogs.kimg)
all: sos_qemu.img termslave
-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)\
$(EXTRA) $(LIBGCC)
compile_kernel:
$(MAKE) -C ..
termslave: termslave.c
cc -Wall -o $@ $<
clean:
$(RM) *.img *.elf *.bin *~ *.o *.out termslave