Makefile 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. .PHONY: all clean crt kernel drivers library manager tests generate
  2. TOOLSDIR := tools
  3. TOOLSROOTDIR := root
  4. PROJECT_ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
  5. export PATH := $(PROJECT_ROOT)/$(TOOLSDIR)/$(TOOLSROOTDIR)/bin:$(PATH)
  6. GENERATED_SOURCES := sdk/syscall_enum.h kernel/src/syscall_table.inl library/src/wrappers.c
  7. all: livecd.iso tests
  8. crt:
  9. $(MAKE) -C crt all
  10. kernel: generate crt
  11. $(MAKE) -C kernel all
  12. drivers: kernel
  13. $(MAKE) -C drivers all
  14. library: generate crt
  15. $(MAKE) -C library all
  16. manager: library
  17. $(MAKE) -C manager all
  18. tests:
  19. $(MAKE) -C tests all
  20. generate: $(GENERATED_SOURCES)
  21. sdk/syscall_enum.h: $(wildcard sdk/*.h) syscalls.awk
  22. @echo 'Generating system call sources/headers...'
  23. sort sdk/* | awk -v enum_file=sdk/syscall_enum.h -v table_file=kernel/src/syscall_table.inl -v wrappers_file=library/src/wrappers.c -f syscalls.awk
  24. kernel/src/syscall_table.inl: sdk/syscall_enum.h
  25. library/src/wrappers.c: sdk/syscall_enum.h
  26. livecd.iso : kernel drivers library manager
  27. mkdir -p livecd/monolithium livecd/boot/grub livecd/monolithium/drivers
  28. cp kernel/monolithium livecd/monolithium/kernel
  29. find drivers -type f -name '*.drv' -exec cp {} livecd/monolithium/drivers/ \;
  30. cp manager/manager livecd/monolithium/manager
  31. cp grub.cfg livecd/boot/grub/grub.cfg
  32. grub-mkrescue -o $@ livecd
  33. clean:
  34. $(MAKE) -C crt clean
  35. $(MAKE) -C kernel clean
  36. $(MAKE) -C drivers clean
  37. $(MAKE) -C library clean
  38. $(MAKE) -C manager clean
  39. $(MAKE) -C tests clean
  40. rm -f $(GENERATED_SOURCES) livecd.iso