|
|
|
@ -74,7 +74,7 @@ CC_FLAGS ?= |
|
|
|
|
|
|
|
|
|
# Output Messages |
|
|
|
|
MSG_BUILD_BEGIN = Begin compilation of project \"$(TARGET)\"... |
|
|
|
|
MSG_BUILD_END = Finished building project \"$(TARGET)\"... |
|
|
|
|
MSG_BUILD_END = Finished building project \"$(TARGET)\". |
|
|
|
|
MSG_COMPILE_CMD = ' [CC] :' |
|
|
|
|
MSG_REMOVE_CMD = ' [RM] :' |
|
|
|
|
MSG_LINKER_CMD = ' [LNK] :' |
|
|
|
@ -88,7 +88,8 @@ CPP_SOURCE = $(filter %.cpp, $(SRC)) |
|
|
|
|
ASM_SOURCE = $(filter %.S, $(SRC)) |
|
|
|
|
|
|
|
|
|
# Convert input source filenames into a list of required output object files |
|
|
|
|
OBJECT_FILES = $(filter %.o, $(C_SOURCE:%.c=%.o) $(CPP_SOURCE:%.cpp=%.o) $(ASM_SOURCE:%.S=%.o)) |
|
|
|
|
OBJECT_FILES = $(filter %.o, $(C_SOURCE:%.c=%.o) $(CPP_SOURCE:%.cpp=%.o) $(ASM_SOURCE:%.S=%.o)) |
|
|
|
|
DEPENDENCY_FILES = $(OBJECT_FILES:%=%.d) |
|
|
|
|
|
|
|
|
|
# Create a list of flags to pass to the compiler |
|
|
|
|
ifeq ($(ARCH), AVR8) |
|
|
|
@ -111,7 +112,8 @@ ifneq ($(F_CPU),) |
|
|
|
|
endif |
|
|
|
|
|
|
|
|
|
# Additional language specific compiler flags |
|
|
|
|
C_FLAGS += -Wstrict-prototypes |
|
|
|
|
C_FLAGS += -O$(OPTIMIZATION) -std=$(C_STANDARD) -MMD -MP -MF $@.d -Wstrict-prototypes |
|
|
|
|
CPP_FLAGS += -O$(OPTIMIZATION) -std=$(CPP_STANDARD) -MMD -MP -MF $@.d |
|
|
|
|
|
|
|
|
|
# Create a list of flags to pass to the linker |
|
|
|
|
LD_FLAGS += -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections |
|
|
|
@ -164,11 +166,11 @@ lss: $(TARGET).lss |
|
|
|
|
|
|
|
|
|
%.o: %.c |
|
|
|
|
@echo $(MSG_COMPILE_CMD) Compiling C file \"$<\" |
|
|
|
|
$(CROSS)gcc -c $(CC_FLAGS) $(C_FLAGS) -O$(OPTIMIZATION) -std=$(C_STANDARD) $< -o $@ |
|
|
|
|
$(CROSS)gcc -c $(CC_FLAGS) $(C_FLAGS) $< -o $@ |
|
|
|
|
|
|
|
|
|
%.o: %.cpp |
|
|
|
|
@echo $(MSG_COMPILE_CMD) Compiling C++ file \"$<\" |
|
|
|
|
$(CROSS)gcc -c $(CC_FLAGS) $(CPP_FLAGS) -O$(OPTIMIZATION) -std=$(CPP_STANDARD) -x c++ $< -o $@ |
|
|
|
|
$(CROSS)gcc -c $(CC_FLAGS) $(CPP_FLAGS) -x c++ $< -o $@ |
|
|
|
|
|
|
|
|
|
%.o: %.S |
|
|
|
|
@echo $(MSG_COMPILE_CMD) Assembling \"$<\" |
|
|
|
@ -177,7 +179,7 @@ lss: $(TARGET).lss |
|
|
|
|
.PRECIOUS : $(OBJECT_FILES) |
|
|
|
|
%.elf: $(OBJECT_FILES) |
|
|
|
|
@echo $(MSG_LINKER_CMD) Linking object files into \"$@\" |
|
|
|
|
$(CROSS)gcc $^ $(CC_FLAGS) $(LD_FLAGS) -o $@ |
|
|
|
|
$(CROSS)gcc $(CC_FLAGS) $(LD_FLAGS) $^ -o $@ |
|
|
|
|
|
|
|
|
|
%.hex: %.elf |
|
|
|
|
@echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$<\" |
|
|
|
@ -194,5 +196,10 @@ lss: $(TARGET).lss |
|
|
|
|
clean: |
|
|
|
|
@echo $(MSG_REMOVE_CMD) Removing object files \"$(strip $(notdir $(OBJECT_FILES)))\" |
|
|
|
|
rm -f $(OBJECT_FILES) |
|
|
|
|
@echo $(MSG_REMOVE_CMD) Removing dependency files \"$(strip $(notdir $(DEPENDENCY_FILES)))\" |
|
|
|
|
rm -f $(DEPENDENCY_FILES) |
|
|
|
|
@echo $(MSG_REMOVE_CMD) Removing output files \"$(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss\" |
|
|
|
|
rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss |
|
|
|
|
|
|
|
|
|
# Include build dependency files |
|
|
|
|
-include $(DEPENDENCY_FILES) |