blob: 80121c33109442269e56d2ded979e0266e16228d [file] [log] [blame]
#
# These allow for the build to be less verbose
#
ifdef V
VERBOSE:= $(V)
else
VERBOSE:= 0
endif
ifeq ($(VERBOSE),1)
define Q
$(2)
endef
else
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
define Q
@$(2)
endef
else
define Q
@echo " [$1] $(3)"
@$(2)
endef
endif
endif
define QTEST
$(call Q,$1, ./test/run.sh $2, $3)
endef
define cook_aflags
$(filter-out $(AFLAGS_SKIP_$(1)), $(CPPFLAGS) $(AFLAGS)) $(AFLAGS_$(1))
endef
define cook_cflags
$(filter-out $(CFLAGS_SKIP_$(1)), $(CPPFLAGS) $(CFLAGS)) $(CFLAGS_$(1))
endef
ifeq ($(C),1)
ifeq ($(VERBOSE),1)
cmd_check = $(CHECK) $(CHECKFLAGS) $(filter-out $(CHECK_CFLAGS_SKIP),$(call cook_cflags,$@)) $<
else
cmd_check = @$(CHECK) $(CHECKFLAGS) $(filter-out $(CHECK_CFLAGS_SKIP),$(call cook_cflags,$@)) $<
endif
endif
%.o : %.S include/asm-offsets.h
$(call Q,AS, $(CC) $(call cook_aflags,$@) -c $< -o $@, $@)
%.s : %.S include/asm-offsets.h
$(call Q,CC, $(CC) $(call cook_aflags,$@) -E -c $< -o $@, $@)
%.o : %.c
$(call cmd_check)
$(call Q,CC, $(CC) $(call cook_cflags,$@) -c $< -o $@, $@)
# Force the use of the C compiler, not C++ for the .C files in libpore
%.o : %.C
$(call cmd_check)
$(call Q,CC, $(CC) $(call cook_cflags,$@) -x c -c $< -o $@, $@)
%.s : %.c
$(call Q,CC, $(CC) $(call cook_cflags,$@) -S -c $< -o $@, $@)
%.i : %.c
$(call Q,CC, $(CC) $(call cook_cflags,$@) -E -c $< -o $@, $@)
%built-in.o :
$(call Q,LD, $(LD) $(LDRFLAGS) -r $^ -o $@, $@)
%.lds : %.lds.S
$(call Q,CC, $(CC) $(CPPFLAGS) -P -E $< -o $@, $@)
%.map: %.elf
$(call Q,NM, $(NM) --synthetic -n $< | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $@, $@)