# This file was automagically generated by mbed.org. For more information, # see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded # cross-platform directory manipulation ifeq ($(shell echo $$OS),$$OS) MAKEDIR = if not exist "$(1)" mkdir "$(1)" RM = rmdir /S /Q "$(1)" else MAKEDIR = $(SHELL) -c "mkdir -p $(1)" RM = $(SHELL) -c "rm -rf $(1)" endif ifeq (,$(filter .build,$(notdir $(CURDIR)))) .SUFFIXES: OBJDIR := .build mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) MAKETARGET = $(MAKE) --no-print-directory -C $(OBJDIR) -f $(mkfile_path) \ SRCDIR=$(CURDIR) $(MAKECMDGOALS) .PHONY: $(OBJDIR) clean all: +@$(call MAKEDIR,$(OBJDIR)) +@$(MAKETARGET) $(OBJDIR): all Makefile : ; % :: $(OBJDIR) ; : clean : $(call RM,$(OBJDIR)) {% block target_clean -%} {% endblock %} else VPATH = {% for path in vpath %}{{path}} {% endfor %} GCC_BIN = PROJECT = {{name}} OBJECTS = {% for f in to_be_compiled %}{{f}} {% endfor %} SYS_OBJECTS = {% for f in object_files %}{{f}} {% endfor %} INCLUDE_PATHS = {% for p in include_paths %}-I{{p}} {% endfor %} LIBRARY_PATHS = {% for p in library_paths %}-L{{p}} {% endfor %} LIBRARIES = {% for lib in libraries %}-l{{lib}} {% endfor %} LINKER_SCRIPT = {{linker_script}} {%- block additional_variables -%}{% endblock %} ############################################################################### AS = $(GCC_BIN)arm-none-eabi-as CC = $(GCC_BIN)arm-none-eabi-gcc CPP = $(GCC_BIN)arm-none-eabi-g++ LD = $(GCC_BIN)arm-none-eabi-gcc OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump SIZE = $(GCC_BIN)arm-none-eabi-size {%- block additional_executables -%}{% endblock %} {%- block flags -%} {% block hardfp %} {% if "-mfloat-abi=softfp" in cpu_flags %} ifeq ($(HARDFP),1) FLOAT_ABI = hard else FLOAT_ABI = softfp endif {% endif %} {%- endblock %} CPU = {% block cpu %}{% for cf in cpu_flags %}{{cf|replace("-mfloat-abi=softfp","-mfloat-abi=$(FLOAT_ABI)")}} {% endfor %}{% endblock %} CC_FLAGS = {% block cc_flags %}{{common_flags|join(" ")}} {{c_flags|join(" ")}} -MMD -MP{% endblock %} CPPC_FLAGS = {% block cppc_flags %}{{common_flags|join(" ")}} {{cxx_flags|join(" ")}} -MMD -MP{% endblock %} ASM_FLAGS = {% block asm_flags %}{{asm_flags|join(" ")}} {{common_flags|join(" ")}}{% endblock %} CC_SYMBOLS = {% block cc_symbols %}{% for s in symbols %}-D{{s}} {% endfor %}{% endblock %} LD_FLAGS = {%- block ld_flags -%} {{ld_flags|join(" ")}} {% endblock %} LD_SYS_LIBS = {% block ld_sys_libs %}-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys{% endblock %} {% endblock %} ifeq ($(DEBUG), 1) CC_FLAGS += -DDEBUG -O0 else CC_FLAGS += -DNDEBUG -Os endif .PHONY: all lst size {% block target_all -%} all: $(PROJECT).bin $(PROJECT).hex size {% endblock %} .asm.o: +@$(call MAKEDIR,$(dir $@)) $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .s.o: +@$(call MAKEDIR,$(dir $@)) $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .S.o: +@$(call MAKEDIR,$(dir $@)) $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .c.o: +@$(call MAKEDIR,$(dir $@)) $(CC) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $< .cpp.o: +@$(call MAKEDIR,$(dir $@)) $(CPP) $(CPPC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $< {% block target_project_elf %} $(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) $(LINKER_SCRIPT) $(LD) $(LD_FLAGS) -T$(filter %.ld, $^) $(LIBRARY_PATHS) -o $@ $(filter %.o, $^) -Wl,--start-group $(LIBRARIES) $(LD_SYS_LIBS) -Wl,--end-group {% endblock %} $(PROJECT).bin: $(PROJECT).elf $(OBJCOPY) -O binary $< $@ $(PROJECT).hex: $(PROJECT).elf @$(OBJCOPY) -O ihex $< $@ $(PROJECT).lst: $(PROJECT).elf @$(OBJDUMP) -Sdh $< > $@ lst: $(PROJECT).lst size: $(PROJECT).elf $(SIZE) $(PROJECT).elf DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d) -include $(DEPS) {% block additional_targets %}{% endblock %} endif