55 lines
1.4 KiB
Makefile
55 lines
1.4 KiB
Makefile
|
include Makefile.config
|
||
|
|
||
|
LIBRARY_SOURCES=$(wildcard library/*.c)
|
||
|
LIBRARY_HEADERS=$(wildcard library/*.h)
|
||
|
USER_SOURCES=$(wildcard user/*.c)
|
||
|
USER_PROGRAMS=$(USER_SOURCES:c=exe)
|
||
|
KERNEL_SOURCES=$(wildcard kernel/*.[chS])
|
||
|
WORDS=/usr/share/dict/words
|
||
|
|
||
|
.PHONY: build-kernel build-library build-userspace build-cdrom-image
|
||
|
|
||
|
all: build-cdrom-image
|
||
|
|
||
|
build-kernel: kernel/basekernel.img
|
||
|
|
||
|
build-library: library/baselib.a
|
||
|
|
||
|
build-userspace: $(USER_PROGRAMS)
|
||
|
|
||
|
build-cdrom-image: basekernel.iso
|
||
|
|
||
|
kernel/basekernel.img: $(KERNEL_SOURCES) $(LIBRARY_HEADERS)
|
||
|
cd kernel && make
|
||
|
|
||
|
library/baselib.a: $(LIBRARY_SOURCES) $(LIBRARY_HEADERS)
|
||
|
cd library && make
|
||
|
|
||
|
$(USER_PROGRAMS): $(USER_SOURCES) library/baselib.a $(LIBRARY_HEADERS)
|
||
|
cd user && make
|
||
|
|
||
|
image: kernel/basekernel.img $(USER_PROGRAMS)
|
||
|
rm -rf image
|
||
|
mkdir image image/boot image/bin image/data
|
||
|
cp kernel/basekernel.img image/boot
|
||
|
cp $(USER_PROGRAMS) image/bin
|
||
|
if [ -f ${WORDS} ]; then head -2000 ${WORDS} > image/data/words; fi
|
||
|
|
||
|
basekernel.iso: image
|
||
|
${ISOGEN} -input-charset utf-8 -iso-level 2 -J -R -o $@ -b boot/basekernel.img image
|
||
|
|
||
|
disk.img:
|
||
|
qemu-img create disk.img 10M
|
||
|
|
||
|
run: basekernel.iso disk.img
|
||
|
qemu-system-i386 -cdrom basekernel.iso -hda disk.img
|
||
|
|
||
|
debug: basekernel.iso disk.img
|
||
|
qemu-system-i386 -cdrom basekernel.iso -hda disk.img -s -S &
|
||
|
|
||
|
clean:
|
||
|
rm -rf basekernel.iso image disk.img
|
||
|
cd kernel && make clean
|
||
|
cd library && make clean
|
||
|
cd user && make clean
|