new Makefile
This commit is contained in:
@ -1,27 +1,37 @@
|
|||||||
BUILD_TARGET = mee knf
|
BUILD_TARGET = mee knf
|
||||||
BUILD_DIR = ../../build/mcos
|
SRC = $(CURDIR)
|
||||||
SRC = $PWD
|
|
||||||
|
AALBASE ?= $(SRC)/../../aal/manycore
|
||||||
|
O ?= $(KBUILD_OUTPUT)
|
||||||
|
V ?= $(VERBOSE)
|
||||||
|
|
||||||
KERNEL = kernel.img
|
KERNEL = kernel.img
|
||||||
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(BUILD_DIR)/,$(BUILD_TARGET)))
|
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||||
|
|
||||||
|
SUBCMD_OPTS = V='$(V)'
|
||||||
|
|
||||||
|
$(if $(O),,$(error Specify the compilation target directory))
|
||||||
|
$(if $(shell ls $(AALBASE)/Makefile.aal),,\
|
||||||
|
$(error AAL is not found in $(AALBASE)))
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
all: $(KERNELS)
|
all: $(KERNELS)
|
||||||
|
|
||||||
%/kernel.img: %/Makefile
|
%/kernel.img: %/Makefile
|
||||||
@echo 'MAKE TARGET' $(dir $@)
|
@echo 'Building for' $(dir $@)
|
||||||
@make -C $(dir $@)
|
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||||
|
|
||||||
%/Makefile: Makefile.build FORCE
|
%/Makefile: Makefile.build FORCE
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@echo 'SRC = $(PWD)' > $@
|
@echo 'SRC = $(SRC)' > $@
|
||||||
|
@echo 'AALBASE = $(AALBASE)' >> $@
|
||||||
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
|
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
|
||||||
@cat Makefile.build >> $@
|
@cat Makefile.build >> $@
|
||||||
|
|
||||||
clean: $(addsuffix .clean,$(BUILD_TARGET))
|
clean: $(addsuffix .clean,$(BUILD_TARGET))
|
||||||
|
|
||||||
%.clean: $(BUILD_DIR)/%/Makefile
|
%.clean: $(O)/%/Makefile
|
||||||
@make -C $(BUILD_DIR)/$(basename $@) clean
|
@make -C $(O)/$(basename $@) $(SUBCMD_OPTS) clean
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|||||||
@ -1,26 +1,21 @@
|
|||||||
AALBASE=$(SRC)/../../aal/manycore
|
|
||||||
AALDIR=$(AALBASE)/$(TARGET)
|
AALDIR=$(AALBASE)/$(TARGET)
|
||||||
SRCS=$(wildcard $(SRC)/*.c)
|
OBJS=setup.o mem.o debug.o
|
||||||
OBJS=$(notdir $(patsubst %.c,%.o,$(SRCS)))
|
DEPSRCS=$(wildcard $(SRC)/*.c)
|
||||||
CFLAGS=-Wall -nostdlib -nostdinc -isystem $(shell $(CC) -print-file-name=include) -O3 -I$(SRC)/include -mcmodel=kernel
|
|
||||||
LDFLAGS=-e arch_start
|
|
||||||
AALOBJ=$(AALDIR)/aal.o
|
|
||||||
|
|
||||||
-include $(SRC)/configs/config.$(TARGET)
|
include $(SRC)/configs/config.$(TARGET)
|
||||||
include $(AALDIR)/Makefile.config
|
|
||||||
include $(AALBASE)/Makefile.common
|
include $(AALBASE)/Makefile.common
|
||||||
|
|
||||||
|
CFLAGS += -I$(SRC)/include -mcmodel=kernel
|
||||||
|
LDFLAGS += -e arch_start
|
||||||
|
AALOBJ = aal/aal.o
|
||||||
|
|
||||||
|
SUBCMD_OPTS = TARGET=$(TARGET) O=$(CURDIR)/aal CC=$(CC) LD=$(LD)
|
||||||
|
|
||||||
ld_kern_cmd_base = $(LD) $(LDFLAGS) -o $@.elf $^
|
ld_kern_cmd_base = $(LD) $(LDFLAGS) -o $@.elf $^
|
||||||
mkimage_cmd_base = [ -f $(SRC)/scripts/mkimage.$(TARGET) ] && sh $(SRC)/scripts/mkimage.$(TARGET) '$@.elf' '$@' '$(SRC)' || cp $@.elf $@
|
mkimage_cmd_base = [ -f $(SRC)/scripts/mkimage.$(TARGET) ] && sh $(SRC)/scripts/mkimage.$(TARGET) '$@.elf' '$@' '$(SRC)' || cp $@.elf $@
|
||||||
|
|
||||||
ifeq ($(V),1)
|
ld_kern_cmd = $(call echo_cmd,LDKERN,$@)$(ld_kern_cmd_base)
|
||||||
ld_kern_cmd = $(ld_kern_cmd_base)
|
mkimage_cmd = $(call echo_cmd,MKIMAGE,$@)$(mkimage_cmd_base)
|
||||||
mkimage_cmd = $(mkimage_cmd_base)
|
|
||||||
else
|
|
||||||
ld_kern_cmd = @echo ' ' LDKERN $@; $(ld_kern_cmd_base)
|
|
||||||
mkimage_cmd = @echo ' ' MKIMAGE $@; $(mkimage_cmd_base)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
all: depend kernel.img
|
all: depend kernel.img
|
||||||
|
|
||||||
@ -30,15 +25,16 @@ kernel.img: $(OBJS) $(AALOBJ)
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(OBJS) kernel.img kernel.img.elf Makefile.dep
|
$(RM) $(OBJS) kernel.img kernel.img.elf Makefile.dep
|
||||||
@make -C $(AALDIR) clean
|
@$(submake) -C $(AALBASE) $(SUBCMD_OPTS) clean
|
||||||
|
|
||||||
depend: Makefile.dep
|
depend: Makefile.dep
|
||||||
|
|
||||||
Makefile.dep: $(SRCS)
|
Makefile.dep: $(DEPSRCS)
|
||||||
$(dep_cmd)
|
$(dep_cmd)
|
||||||
|
|
||||||
$(AALOBJ): FORCE
|
$(AALOBJ): FORCE
|
||||||
@make -C $(AALDIR) CC=$(CC) LD=$(LD)
|
@mkdir -p $(dir $(AALOBJ))
|
||||||
|
$(call echo_cmd,BUILD AAL,$(TARGET))$(submake) -C $(AALBASE) $(SUBCMD_OPTS)
|
||||||
|
|
||||||
%.o: $(SRC)/%.c
|
%.o: $(SRC)/%.c
|
||||||
$(cc_cmd)
|
$(cc_cmd)
|
||||||
|
|||||||
Reference in New Issue
Block a user