BUILD_TARGET ?= @TARGET@ KERNDIR=@KERNDIR@ VPATH=@abs_srcdir@ ARCH ?= @ARCH@ ifeq ($(ARCH), arm64) vdsodir=@abs_builddir@/../arch/$(ARCH)/kernel/vdso endif IHKBASE ?= $(VPATH)/../../ihk/cokernel O ?= $(CURDIR)/build V ?= $(VERBOSE) KERNEL = kernel.img KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET))) SUBCMD_OPTS = V='$(V)' BUILD_IHK_COKERNEL=@abs_builddir@/../../ihk/cokernel $(if $(O),,$(error Specify the compilation target directory)) #$(if $(shell ls $(IHKBASE)/Makefile),,\ # $(error IHK is not found in $(IHKBASE))) .PHONY: all clean depend install all: $(O) $(KERNELS) $(O): mkdir -p $(O) %/kernel.img: %/Makefile $(KERNELS) @echo 'Building for' $(dir $@) +@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS) %/Makefile: Makefile.build FORCE @mkdir -p $(dir $@) @echo 'SRC = $(SRC)' > $@ @echo 'IHKBASE = $(IHKBASE)' >> $@ @echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@ @echo 'TARGETDIR = smp/$(ARCH)' >> $@ @cat Makefile.build >> $@ @rm -f $(dir $@)/Makefile.dep clean: rm -rf $(O) ifeq ($(ARCH), arm64) @rm -f $(vdsodir)/*.o $(vdsodir)/vdso.* $(vdsodir)/Makefile.dep -r $(vdsodir)/../include endif install: mkdir -p -m 755 $(KERNDIR) install -m 755 $(O)/$(BUILD_TARGET)/kernel.img $(KERNDIR)/mckernel.img FORCE: