| # our default target |
| .PHONY: all |
| all: |
| |
| include $(srctree)/scripts/Kbuild.include |
| include $(TOPDIR)/config.mk |
| |
| # variable LIB is used in examples/standalone/Makefile |
| __LIB := $(obj)built-in.o |
| LIBGCC = $(obj)libgcc.o |
| SRCS := |
| subdir-y := |
| obj-dirs := |
| |
| include Makefile |
| |
| # Do not include host rules unless needed |
| ifneq ($(hostprogs-y)$(hostprogs-m),) |
| include $(SRCTREE)/scripts/Makefile.host.tmp |
| endif |
| |
| # Going forward use the following |
| obj-y := $(sort $(obj-y)) |
| extra-y := $(sort $(extra-y)) |
| always := $(sort $(always)) |
| 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) $(always)) $(subdir-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) |
| endif |
| |
| ifneq ($(subdir-y),) |
| $(subdir-y): FORCE |
| $(MAKE) -C $@ -f $(TOPDIR)/scripts/Makefile.build |
| endif |
| |
| ######################################################################### |
| |
| # Allow boards to use custom optimize flags on a per dir/file basis |
| ALL_AFLAGS = $(AFLAGS) $(AFLAGS_$(BCURDIR)/$(@F)) $(AFLAGS_$(BCURDIR)) |
| ALL_CFLAGS = $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) |
| EXTRA_CPPFLAGS = $(CPPFLAGS_$(BCURDIR)/$(@F)) $(CPPFLAGS_$(BCURDIR)) |
| ALL_CFLAGS += $(EXTRA_CPPFLAGS) |
| |
| # The _DEP version uses the $< file target (for dependency generation) |
| # See rules.mk |
| EXTRA_CPPFLAGS_DEP = $(CPPFLAGS_$(BCURDIR)/$(addsuffix .o,$(basename $<))) \ |
| $(CPPFLAGS_$(BCURDIR)) |
| $(obj)%.s: %.S |
| $(CPP) $(ALL_AFLAGS) -o $@ $< |
| $(obj)%.o: %.S |
| $(CC) $(ALL_AFLAGS) -o $@ $< -c |
| $(obj)%.o: %.c |
| ifneq ($(CHECKSRC),0) |
| $(CHECK) $(CHECKFLAGS) $(ALL_CFLAGS) $< |
| endif |
| $(CC) $(ALL_CFLAGS) -o $@ $< -c |
| $(obj)%.i: %.c |
| $(CPP) $(ALL_CFLAGS) -o $@ $< -c |
| $(obj)%.s: %.c |
| $(CC) $(ALL_CFLAGS) -o $@ $< -c -S |
| |
| # If the list of objects to link is empty, just create an empty built-in.o |
| cmd_link_o_target = $(if $(strip $1),\ |
| $(LD) $(LDFLAGS) -r -o $@ $1,\ |
| rm -f $@; $(AR) rcs $@ ) |
| |
| ######################################################################### |
| |
| # defines $(obj).depend target |
| |
| include $(TOPDIR)/rules.mk |
| |
| sinclude $(obj).depend |
| |
| ######################################################################### |
| |
| .PHONY: FORCE |