Reorganize the files.
[monolithium.git] / Makefile
1 .PHONY: all clean kernel drivers libraries programs tests generate
2
3 TOOLSDIR     := tools
4 TOOLSROOTDIR := root
5
6 PROJECT_ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
7 export PATH  := $(PROJECT_ROOT)/$(TOOLSDIR)/$(TOOLSROOTDIR)/bin:$(PATH)
8
9 GENERATED_SOURCES := sdk/syscall_enum.h kernel/src/syscall_table.inl library/src/wrappers.c
10
11 all: livecd.iso tests
12
13 kernel: generate libraries
14         $(MAKE) -C kernel all
15
16 drivers: kernel
17         $(MAKE) -C drivers all
18
19 libraries: generate
20         $(MAKE) -C libraries all
21
22 programs: libraries
23         $(MAKE) -C programs all
24
25 tests:
26         $(MAKE) -C tests all
27
28 generate: $(GENERATED_SOURCES)
29
30 sdk/syscall_enum.h: $(wildcard sdk/*.h) syscalls.awk
31         @echo 'Generating system call sources/headers...'
32         sort sdk/* | awk -v enum_file=sdk/syscall_enum.h -v table_file=kernel/src/syscall_table.inl -v wrappers_file=libraries/mlsys/src/wrappers.c -f syscalls.awk
33
34 kernel/src/syscall_table.inl: sdk/syscall_enum.h
35
36 library/src/wrappers.c: sdk/syscall_enum.h
37
38 livecd.iso : kernel drivers libraries programs
39         mkdir -p livecd/monolithium livecd/boot/grub livecd/monolithium/drivers
40         cp kernel/monolithium livecd/monolithium/kernel
41         cp drivers/bin/* livecd/monolithium/drivers/
42         cp programs/bin/* livecd/monolithium/
43         cp grub.cfg livecd/boot/grub/grub.cfg
44         grub-mkrescue -o $@ livecd
45
46 clean:
47         $(MAKE) -C kernel clean
48         $(MAKE) -C drivers clean
49         $(MAKE) -C libraries clean
50         $(MAKE) -C programs clean
51         $(MAKE) -C tests clean
52         rm -f $(GENERATED_SOURCES) livecd.iso