Clone of official tools
Diff: export/gcc_arm_common.tmpl
- Revision:
- 13:ab47a20b66f0
- Parent:
- 0:66f3b5499f7f
- Child:
- 29:1210849dba19
--- a/export/gcc_arm_common.tmpl Tue Jun 14 11:33:06 2016 +0100 +++ b/export/gcc_arm_common.tmpl Thu Jul 14 20:21:19 2016 +0100 @@ -1,6 +1,36 @@ # 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 %} @@ -34,17 +64,12 @@ {%- 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 %}$(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP{% 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 -%} -{%- if "-mcpu=cortex-m0" in cpu_flags or "-mcpu=cortex-m0plus" in cpu_flags -%} -{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref -#LD_FLAGS += -u _printf_float -u _scanf_float -{%- else -%} -{{ ' ' }}$(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref -{%- endif -%} -{% 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 %} @@ -54,34 +79,36 @@ CC_FLAGS += -DNDEBUG -Os endif -.PHONY: all clean lst size + +.PHONY: all lst size {% block target_all -%} all: $(PROJECT).bin $(PROJECT).hex size {% endblock %} -{% block target_clean -%} -clean: - rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS) -{% endblock %} .asm.o: - $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< + +@$(call MAKEDIR,$(dir $@)) + $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .s.o: - $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< + +@$(call MAKEDIR,$(dir $@)) + $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .S.o: - $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< + +@$(call MAKEDIR,$(dir $@)) + $(CC) $(CPU) -c $(ASM_FLAGS) -o $@ $< .c.o: - $(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $< + +@$(call MAKEDIR,$(dir $@)) + $(CC) $(CC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $< .cpp.o: - $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $< + +@$(call MAKEDIR,$(dir $@)) + $(CPP) $(CPPC_FLAGS) $(CC_SYMBOLS) $(INCLUDE_PATHS) -o $@ $< {% block target_project_elf %} -$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) - $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS) +$(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 @@ -102,4 +129,5 @@ -include $(DEPS) {% block additional_targets %}{% endblock %} +endif