Using the implicit rules for libraries leads to problems if one of the objects fails to build, but the others are still OK. Just make all library rules explicit to avoid this.
52 lines
1.3 KiB
Makefile
52 lines
1.3 KiB
Makefile
# -*- makefile -*-
|
|
|
|
ALL_BOARDS = redbee-dev redbee-r1 redbee-usb redbee-econotag quahogcon freescale-ncb
|
|
|
|
OBJDIR = obj_$(BOARD)
|
|
CFLAGS += -I. -I$(OBJDIR) -I$(MC1322X)/board -DBOARD=$(BOARD)
|
|
|
|
OBJDIR_COBJS = $(addprefix $(OBJDIR)/, $(COBJS))
|
|
|
|
# Create directory and board.h include
|
|
$(OBJDIR)/board.h:
|
|
$(call pretty,GEN,$@)
|
|
$(Q)mkdir -p $(OBJDIR)
|
|
$(Q)echo '/* This file was automatically generated */' > $(OBJDIR)/board.h
|
|
$(Q)echo '#include "$(BOARD).h"' >> $(OBJDIR)/board.h
|
|
|
|
# $(OBJDIR)/board.a contains all the objects defined in COBJS
|
|
ifdef COBJS
|
|
$(OBJDIR)/board.a: $(OBJDIR)/board.h $(OBJDIR_COBJS)
|
|
$(call pretty,AR,$@)
|
|
@rm -f $@
|
|
$Q$(AR) $(ARFLAGS) $@ $(OBJDIR_COBJS)
|
|
else
|
|
$(OBJDIR)/board.a: $(OBJDIR)/board.h
|
|
$(call pretty,AR (empty),$@)
|
|
@rm -f $@
|
|
$Q$(AR) $(ARFLAGS) $@
|
|
endif
|
|
|
|
TARGET_OBJ += $(OBJDIR)/board.a
|
|
|
|
# And is built from files in the parent directory
|
|
$(OBJDIR)/%.o: %.c $(OBJDIR)/board.h $(FORCE_C_DEPENDS)
|
|
$(call pretty,CC,$@)
|
|
$Q$(CC) $(CFLAGS) $(CFLAGS_THUMB) -MMD -c -o $@ $<
|
|
@$(FINALIZE_DEPENDENCY)
|
|
|
|
$(OBJDIR)/%.o: %.S $(OBJDIR)/board.h
|
|
$(call pretty,AS,$@)
|
|
$(CC) $(AFLAGS) -MMD -c -o $@ $<
|
|
@$(FINALIZE_DEPENDENCY)
|
|
|
|
$(OBJDIR)/%.dis: $(OBJDIR)/%.o
|
|
$(call pretty,OBJDUMP,$@)
|
|
$Q$(OBJDUMP) -d $< > $@ || rm -f $@
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
-include $(wildcard $(OBJDIR)/*.d)
|
|
endif
|
|
|
|
clean::
|
|
rm -rf obj_*
|