rules.mk 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #
  2. # Common rules for makefiles for the PX4 bootloaders
  3. #
  4. BUILD_DIR = $(BUILD_DIR_ROOT)/$(TARGET_FILE_NAME)
  5. COBJS := $(addprefix $(BUILD_DIR)/, $(patsubst %.c,%.o,$(SRCS)))
  6. AOBJS := $(addprefix $(BUILD_DIR)/, $(patsubst %.S,%.o,$(ASRCS)))
  7. SUBDIRS := $(sort $(addprefix $(BUILD_DIR)/, $(dir $(ASRCS))) $(addprefix $(BUILD_DIR)/, $(dir $(SRCS))) )
  8. OBJS := $(COBJS) $(AOBJS)
  9. DEPS := $(COBJS:.o=.d)
  10. ELF = $(BUILD_DIR)/$(TARGET_FILE_NAME).elf
  11. HEX = $(BUILD_DIR)/$(TARGET_FILE_NAME).hex
  12. BINARY = $(BUILD_DIR)/$(TARGET_FILE_NAME).bin
  13. all: debug $(BUILD_DIR) $(ELF) $(BINARY) $(HEX)
  14. debug:
  15. # @echo SRCS=$(SRCS)
  16. # @echo COBJS=$(COBJS)
  17. # @echo ASRCS=$(ASRCS)
  18. # @echo AOBJS=$(AOBJS)
  19. # @echo SUBDIRS=$(SUBDIRS)
  20. # Compile and generate dependency files
  21. $(BUILD_DIR)/%.o: %.c
  22. @echo Generating object $@
  23. $(CC) -c -MMD $(FLAGS) -o $@ $<
  24. $(BUILD_DIR)/%.o: %.S
  25. @echo Generating object $@
  26. $(CC) -c -MMD $(FLAGS) -o $@ $*.S
  27. # Make the build directory
  28. $(BUILD_DIR) $(SUBDIRS):
  29. mkdir -p $(BUILD_DIR) $(SUBDIRS)
  30. $(ELF): $(OBJS) $(MAKEFILE_LIST)
  31. $(CC) -o $@ $(OBJS) $(FLAGS)
  32. $(BINARY): $(ELF)
  33. $(OBJCOPY) -O binary $(ELF) $(BINARY)
  34. $(HEX): $(ELF)
  35. $(OBJCOPY) -Oihex $(ELF) $(HEX)
  36. # Dependencies for .o files
  37. -include $(DEPS)