# our default target .PHONY: all all: include $(TOPDIR)/config.mk LIB := $(obj)built-in.o LIBGCC = $(obj)libgcc.o SRCS := include Makefile # Going forward use the following obj-y := $(sort $(obj-y)) extra-y := $(sort $(extra-y)) lib-y := $(sort $(lib-y)) subdir-y := $(patsubst %/,%,$(filter %/, $(obj-y))) obj-y := $(patsubst %/, %/built-in.o, $(obj-y)) subdir-obj-y := $(filter %/built-in.o, $(obj-y)) subdir-obj-y := $(addprefix $(obj),$(subdir-obj-y)) SRCS += $(wildcard $(obj-y:.o=.c) $(obj-y:.o=.S) $(lib-y:.o=.c) \ $(lib-y:.o=.S) $(extra-y:.o=.c) $(extra-y:.o=.S)) OBJS := $(addprefix $(obj),$(obj-y)) # $(obj-dirs) is a list of directories that contain object files obj-dirs := $(dir $(OBJS)) # Create directories for object files if directory does not exist # Needed when obj-y := dir/file.o syntax is used _dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d))) LGOBJS := $(addprefix $(obj),$(sort $(lib-y))) all: $(LIB) $(addprefix $(obj),$(extra-y)) $(LIB): $(obj).depend $(OBJS) $(call cmd_link_o_target, $(OBJS)) ifneq ($(strip $(lib-y)),) all: $(LIBGCC) $(LIBGCC): $(obj).depend $(LGOBJS) $(call cmd_link_o_target, $(LGOBJS)) endif ifneq ($(subdir-obj-y),) # Descending $(subdir-obj-y): $(subdir-y) $(subdir-y): FORCE $(MAKE) -C $@ -f $(TOPDIR)/scripts/Makefile.build endif ######################################################################### # defines $(obj).depend target include $(TOPDIR)/rules.mk sinclude $(obj).depend ######################################################################### .PHONY: FORCE