diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 77 |
1 files changed, 42 insertions, 35 deletions
@@ -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 + |