Make sizeof(long) the default heap alignment.
[monolithium.git] / Makefile
1 .PHONY: all clean crt kernel drivers library manager 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 crt:
14         $(MAKE) -C crt all
15
16 kernel: generate crt
17         $(MAKE) -C kernel all
18
19 drivers: kernel
20         $(MAKE) -C drivers all
21
22 library: generate crt
23         $(MAKE) -C library all
24
25 manager: library
26         $(MAKE) -C manager all
27
28 tests:
29         $(MAKE) -C tests all
30
31 generate: $(GENERATED_SOURCES)
32
33 sdk/syscall_enum.h: $(wildcard sdk/*.h) syscalls.awk
34         @echo 'Generating system call sources/headers...'
35         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
36
37 kernel/src/syscall_table.inl: sdk/syscall_enum.h
38
39 library/src/wrappers.c: sdk/syscall_enum.h
40
41 livecd.iso : kernel drivers library manager
42         mkdir -p livecd/monolithium livecd/boot/grub livecd/monolithium/drivers
43         cp kernel/monolithium livecd/monolithium/kernel
44         find drivers -type f -name '*.drv' -exec cp {} livecd/monolithium/drivers/ \;
45         cp manager/manager livecd/monolithium/manager
46         cp grub.cfg livecd/boot/grub/grub.cfg
47         grub-mkrescue -o $@ livecd
48
49 clean:
50         $(MAKE) -C crt clean
51         $(MAKE) -C kernel clean
52         $(MAKE) -C drivers clean
53         $(MAKE) -C library clean
54         $(MAKE) -C manager clean
55         $(MAKE) -C tests clean
56         rm -f $(GENERATED_SOURCES) livecd.iso