diff options
Diffstat (limited to 'kernel/Makefile')
-rw-r--r-- | kernel/Makefile | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/kernel/Makefile b/kernel/Makefile new file mode 100644 index 0000000..955cb8d --- /dev/null +++ b/kernel/Makefile @@ -0,0 +1,78 @@ +INCLUDE?=-Iinclude +CFLAGS?=-O0 -ffreestanding -std=gnu11 -fstack-protector-all -target $(ARCH)-none-elf +LDFLAGS?=-nostdlib + +INCLUDE:=$(INCLUDE) $(SYS_INCLUDE) +CFLAGS:=$(CFLAGS) -Wall -Wextra -DVERSION=\"$(VERSION)\" -DARCH=\"$(ARCH)\" -g +LDFLAGS:=$(LDFLAGS) + +ARCHDIR=arch/$(ARCH) + +include $(ARCHDIR)/make.config +include $(ROOTDIR)/modules.conf + +INCLUDE:=$(INCLUDE) $(KERNEL_ARCH_INCLUDE) +CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS) +LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS) + +KERNEL=vmbox +BOOTDIR=/boot +PREFIX=/usr + +CORE_OBJS=core/init.o \ + core/kprintf.o \ + core/panic.o \ + core/stack_protector.o \ + core/string.o \ + +KERNEL_OBJS=$(KERNEL_ARCH_OBJS) \ + $(CORE_OBJS) \ + +MODULE_SUBDIRS= +MODULE_OBJS= + +include drivers/make.config +include fs/make.config + +OBJS=$(KERNEL_OBJS) \ + $(MODULE_OBJS) \ + +.PHONY: all modules clean install install-headers install-kernel install-modules +.SUFFIXES: .o .c .s + +all: $(KERNEL) modules + +$(KERNEL): $(KERNEL_OBJS) + @$(LD) --script=$(ARCHDIR)/linker.ld $(LDFLAGS) -o $@ $^ + @echo [LD] $@ + +modules: $(MODULE_SUBDIRS) + +$(MODULE_SUBDIRS): + $(MAKE) $(MAKECMDGOALS) -C $@ + +.c.o: + @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE) + @echo [CC] $@ + +.s.o: + @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE) + @echo [AS] $@ + +clean: $(MODULE_SUBDIRS) + $(RM) $(KERNEL) $(OBJS) $(OBJS:.o=.d) + +install: install-headers install-kernel install-modules + +install-headers: + install -d -m 0755 $(DESTDIR)$(PREFIX)/src/kernel/ + cp -R include $(DESTDIR)$(PREFIX)/src/kernel/ + +install-kernel: $(KERNEL) + install -m 0644 $(KERNEL) $(DESTDIR)$(BOOTDIR) + install -m 0644 System.map-$(VERSION) $(DESTDIR)$(BOOTDIR) + +install-modules: $(MODULE_SUBDIRS) + $(MAKE) $(MAKECMDGOALS) -C $@ + +-include $(OBJS:.o=.d) |