Makefile: refactor subdirectory makefiles
This commit is contained in:
parent
f9244836e1
commit
c455b1eeb3
12
Makefile
12
Makefile
@ -22,11 +22,15 @@ KCFLAGS = -g -Wall -Wextra -Werror -nostdlib -nostartfiles -fno-builtin -std=gnu
|
|||||||
KLDFLAGS = -T link.ld -L /usr/lib/gcc/arm-elf/4.7.0/
|
KLDFLAGS = -T link.ld -L /usr/lib/gcc/arm-elf/4.7.0/
|
||||||
EXTRA_LIBS = -lgcc
|
EXTRA_LIBS = -lgcc
|
||||||
|
|
||||||
KOBJS =
|
# Define KOBJS as a 'simply expanded' variable
|
||||||
|
KOBJS :=
|
||||||
|
|
||||||
include boot/Makefile.inc
|
# Initialize sub-directory Makefile inclusion
|
||||||
include kernel/Makefile.inc
|
BASEDIR = $(shell pwd)
|
||||||
include devices/Makefile.inc
|
SUBDIRS := boot kernel devices
|
||||||
|
ifneq (,$(SUBDIRS))
|
||||||
|
include $(patsubst %,%/kernel.mk,$(SUBDIRS))
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: all clean boot boot-gdb
|
.PHONY: all clean boot boot-gdb
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
BOOT_PREFIX = boot
|
|
||||||
|
|
||||||
KOBJS += $(BOOT_PREFIX)/start.o
|
|
10
boot/kernel.mk
Normal file
10
boot/kernel.mk
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
DIRNAME := boot
|
||||||
|
SUBDIRS :=
|
||||||
|
|
||||||
|
include $(BASEDIR)/header.mk
|
||||||
|
|
||||||
|
OBJS_$(d) := $(d)/start.o
|
||||||
|
|
||||||
|
KOBJS += $(OBJS_$(d))
|
||||||
|
|
||||||
|
include $(BASEDIR)/footer.mk
|
@ -1,5 +0,0 @@
|
|||||||
DEVICES_PREFIX = devices
|
|
||||||
|
|
||||||
KOBJS += $(DEVICES_PREFIX)/pl011.o
|
|
||||||
KOBJS += $(DEVICES_PREFIX)/pl110.o
|
|
||||||
KOBJS += $(DEVICES_PREFIX)/pl111.o
|
|
12
devices/kernel.mk
Normal file
12
devices/kernel.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
DIRNAME := devices
|
||||||
|
SUBDIRS :=
|
||||||
|
|
||||||
|
include $(BASEDIR)/header.mk
|
||||||
|
|
||||||
|
OBJS_$(d) := $(d)/pl011.o \
|
||||||
|
$(d)/pl110.o \
|
||||||
|
$(d)/pl111.o
|
||||||
|
|
||||||
|
KOBJS += $(OBJS_$(d))
|
||||||
|
|
||||||
|
include $(BASEDIR)/footer.mk
|
12
footer.mk
Normal file
12
footer.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Included at the bottom of each subdirectory Makefile
|
||||||
|
|
||||||
|
# Include any subdirectory Makefiles
|
||||||
|
ifneq (,$(SUBDIRS))
|
||||||
|
include $(patsubst %,$(d)/%/kernel.mk,$(SUBDIRS))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Pop the previous directory off the 'stack'
|
||||||
|
d := $(dirstack_$(sp))
|
||||||
|
sp := $(basename $(sp))
|
||||||
|
# Clear SUBDIRS so that it defaults to empty for the next directory
|
||||||
|
SUBDIRS :=
|
13
header.mk
Normal file
13
header.mk
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Included at the top of each subdirectory Makefile, immediately
|
||||||
|
# following the local re-definition of DIRNAME
|
||||||
|
|
||||||
|
# Push the previous directory onto the 'stack'
|
||||||
|
sp := $(sp).x
|
||||||
|
dirstack_$(sp) := $(d)
|
||||||
|
|
||||||
|
# Update $(d) to be the current directory
|
||||||
|
ifneq (,$(d))
|
||||||
|
d := $(d)/$(DIRNAME)
|
||||||
|
else
|
||||||
|
d := $(DIRNAME)
|
||||||
|
endif
|
@ -1,11 +0,0 @@
|
|||||||
KERNEL_PREFIX = kernel
|
|
||||||
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/atags.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/console.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/font.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/framebuffer.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/list.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/mm.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/mmu.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/print.o
|
|
||||||
KOBJS += $(KERNEL_PREFIX)/start_kernel.o
|
|
19
kernel/kernel.mk
Normal file
19
kernel/kernel.mk
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
DIRNAME := kernel
|
||||||
|
SUBDIRS :=
|
||||||
|
|
||||||
|
include $(BASEDIR)/header.mk
|
||||||
|
|
||||||
|
OBJS_$(d) := $(d)/atags.o \
|
||||||
|
$(d)/console.o \
|
||||||
|
$(d)/font.o \
|
||||||
|
$(d)/framebuffer.o \
|
||||||
|
$(d)/kmalloc.o \
|
||||||
|
$(d)/list.o \
|
||||||
|
$(d)/mm.o \
|
||||||
|
$(d)/mmu.o \
|
||||||
|
$(d)/print.o \
|
||||||
|
$(d)/start_kernel.o
|
||||||
|
|
||||||
|
KOBJS += $(OBJS_$(d))
|
||||||
|
|
||||||
|
include $(BASEDIR)/footer.mk
|
Loading…
Reference in New Issue
Block a user