add time tracking interface
[AquilaOS.git] / Makefile
blobe39afad67e55487bb65d67f077d70c8a2897ff96
1 # This is the top leve Makefile of AquilaOS
3 # Targets:
5 # build-kernel - build kernel image in kernel/{ARCH}/kernel-{VERSION}.{ARCH}
6 # install-kernel - install kernel image into {DESTDIR}/boot/kernel
7 # clean-kernel - clean kernel source tree
9 # build-system - build system components
10 # install-system - install system components into {DESTDIR}/
11 # clean-system - clean system source tree
13 # build-initrd - build ramdisk image in initrd/initrd.img
14 # install-initrd - install ramdisk image into {DESTDIR}/boot/initrd.img
15 # clean-initrd - clean ramdisk source tree
17 # build-all - build everything
18 # install-all - install everything
19 # clean-all - clean everything
22 export
24 ifeq ($(SRCDIR),)
25 SRCDIR := $(TRAVIS_BUILD_DIR)
26 endif
28 ifeq ($(SRCDIR),)
29 SRCDIR != pwd
30 endif
32 ifeq ($(BUILDDIR),)
33 BUILDDIR != pwd
34 endif
36 ifeq ($(CONFIG),)
37 CONFIG := i386-pc
38 endif
40 include $(SRCDIR)/configs/$(CONFIG).mk
42 ARCH=i386
43 VERSION=0.0.1
44 CP=cp
45 BASH=bash
46 MKDIR=mkdir -p
47 ECHO=echo
48 STRIP=/opt/aquila/bin/i686-aquila-strip
49 LN=ln
51 MAKEFLAGS += --no-print-directory
53 GRUB_MKRESCUE = $(shell command -v grub2-mkrescue 2> /dev/null)
54 ifeq ($(GRUB_MKRESCUE),)
55 GRUB_MKRESCUE = grub-mkrescue
56 endif
58 DESTDIR = $(SRCDIR)/sysroot
60 .PHONY: build-all install-all clean-all
61 build-all: \
62 build-kernel \
63 build-system \
64 build-initrd
66 install-all: \
67 install-kernel \
68 install-system \
69 install-initrd
71 clean-all: \
72 clean-kernel \
73 clean-system \
74 clean-initrd
77 # kernel targets
80 .PHONY: build-kernel clean-kernel install-kernel
81 build-kernel:
82 $(MAKE) -C $(SRCDIR)/kernel/
84 install-kernel:
85 $(MAKE) -C $(SRCDIR)/kernel/ install
87 clean-kernel:
88 $(MAKE) -C $(SRCDIR)/kernel/ clean
91 # initrd targets
94 .PHONY: build-initrd install-initrd clean-initrd
95 build-initrd: build-system
96 $(MAKE) -C $(SRCDIR)/initrd/
98 install-initrd: build-initrd
99 $(MAKE) -C $(SRCDIR)/initrd/ install
101 clean-initrd:
102 $(MAKE) -C $(SRCDIR)/initrd/ clean
105 # system targets
108 .PHONY: build-system install-system clean-system
109 build-system:
110 $(MAKE) -C $(SRCDIR)/system/
112 install-system: build-system
113 $(MAKE) -C $(SRCDIR)/system/ install
115 clean-system:
116 $(MAKE) -C $(SRCDIR)/system/ clean
118 .PHONY: iso/kernel.elf.gz
119 iso/kernel.elf.gz: build-kernel
120 $(BASH) -c "if [[ ! -e iso ]]; then mkdir iso; fi"
121 $(CP) kernel/arch/$(ARCH)/kernel-$(VERSION).$(ARCH) iso/kernel.elf
122 gzip -f iso/kernel.elf
124 .PHONY: iso/initrd.img.gz
125 iso/initrd.img.gz: build-initrd
126 $(BASH) -c "if [[ ! -e iso ]]; then mkdir iso; fi"
127 cp initrd/initrd.img iso/initrd.img
128 gzip -f iso/initrd.img
130 .PHONY: try
131 try: aquila.iso
132 qemu-kvm -cdrom aquila.iso -hda hd.img -serial stdio -m 2G -d cpu_reset -no-reboot -boot d
134 aquila.iso: iso/kernel.elf.gz iso/initrd.img.gz
135 $(GRUB_MKRESCUE) -d /usr/lib/grub/i386-pc/ -o aquila.iso iso/
136 # #$(GRUB_MKRESCUE) -d /usr/lib/grub/i386-pc/ --install-modules="multiboot normal videoinfo videotest gzio" --locales="en@quot" --fonts=ascii -o aquila.iso iso/