aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile77
1 files changed, 42 insertions, 35 deletions
diff --git a/Makefile b/Makefile
index 363673d..8bc5de5 100644
--- a/Makefile
+++ b/Makefile
@@ -9,56 +9,63 @@ MAKEFLAGS += -rR --no-print-directory
ARCH := $(shell sed -nE "s/CONFIG_ARCH_(.+)=y/\1/p" .config)
-.PHONY: all help info run doc clean test valgrind
-all: Makefile.config
- @${MAKE} -f Makefile.all
+SUBDIRS := lib ${ARCH} devices src
+.PHONY: help info run doc clean test valgrind
help:
- @echo "info: show current configuration"
- @echo "all: build kernel image"
@echo "run: run kernel image in qemu"
@echo "test: run all tests"
@echo "valgrind: run all tests in valgrind"
-info: Makefile.config
- @echo "- make:"
- @echo " MAKE: ${MAKE}"
- @echo " MAKEID: ${MAKEID}"
- @echo " MAKEFLAGS: ${MAKEFLAGS}"
- @${MAKE} -f Makefile.all $@
-
-run: Makefile.config
- @${MAKE} -f Makefile.all $@
-
-doc: doxygen.config
- doxygen $<
+run: glitch.iso
+ qemu-system-i386 -accel kvm -machine pc -cdrom $^ -d cpu_reset -display gtk,zoom-to-fit=on
clean:
- @${MAKE} -C lib clean
- @${MAKE} -C ${ARCH} clean
- @${MAKE} -C devices clean
- @${MAKE} -C src clean
+ @for d in ${SUBDIRS}; do make -C $$d -f ../root.mk clean; done
test:
- @make -C ${ARCH} test.quiet
- @make -C lib test.quiet
- @make -C devices test.quiet
- @make -C src test.quiet
+ @for d in ${SUBDIRS}; do make -C $$d -f ../root.mk test.quiet; done
valgrind:
- @make -C ${ARCH} valgrind.quiet
- @make -C lib valgrind.quiet
- @make -C devices valgrind.quiet
- @make -C src valgrind.quiet
+ @for d in ${SUBDIRS}; do make -C $$d -f ../root.mk valgrind.quiet; done
# configure targets
+kconfig:
+ @make -C tools/kconfig -f ../../root.mk
+
.config: Kconfig
@alldefconfig
-Makefile.config: .config ${ARCH}/toolchain.mk
- @echo -e '## This is a generated file, manual edits might be lost' > Makefile.config
- @echo -e '\n## .config' >> Makefile.config
- @cat .config >> Makefile.config
- @echo -e '\n## toolchain.mk' >> Makefile.config
- @cat ${ARCH}/toolchain.mk >> Makefile.config
+config.mk: .config ${ARCH}/toolchain.mk
+ @cat .config >> $@
+ @echo -e '\n## toolchain.mk' >> $@
+ @cat ${ARCH}/toolchain.mk >> $@
+
+# build targets
+lib/libk.a:
+ @${MAKE} -C lib -f ../root.mk libk.a
+i686/arch.a:
+ @${MAKE} -C ${ARCH} -f ../root.mk arch.a
+devices/devs.a:
+ @${MAKE} -C devices -f ../root.mk devs.a
+src/kernel.a:
+ @${MAKE} -C src -f ../root.mk kernel.a
+
+src/glitch.elf: lib/libk.a i686/arch.a devices/devs.a src/kernel.a
+ @${MAKE} -C src -f ../root.mk glitch.elf
+
+# iso image
+glitch.iso: src/glitch.elf grub/grub.cfg
+ @grub-file --is-x86-multiboot2 src/glitch.elf
+ @mkdir -p isodir/boot/grub
+ @mkdir -p isodir/boot/glitch
+ @grub-script-check grub/grub.cfg
+ @cp grub/grub.cfg isodir/boot/grub/grub.cfg
+ @cp src/glitch.elf isodir/boot/glitch/glitch.elf
+ @i686-elf-strip isodir/boot/glitch/glitch.elf
+ @rm -f isodir/boot/glitch/checksums
+ @sha512sum isodir/boot/glitch/* > isodir/boot/glitch/checksums
+ @sed -i s/isodir// isodir/boot/glitch/checksums
+ @grub-mkrescue -o glitch.iso isodir
+