m3dev

cortex m3 debug tools -- superceded by mdebug
git clone http://frotz.net/git/m3dev.git
Log | Files | Refs | README | LICENSE

target-agent.mk (3259B)


      1 ## Copyright 2011 Brian Swetland <swetland@frotz.net>
      2 ## 
      3 ## Licensed under the Apache License, Version 2.0 (the "License");
      4 ## you may not use this file except in compliance with the License.
      5 ## You may obtain a copy of the License at
      6 ##
      7 ##     http://www.apache.org/licenses/LICENSE-2.0
      8 ##
      9 ## Unless required by applicable law or agreed to in writing, software
     10 ## distributed under the License is distributed on an "AS IS" BASIS,
     11 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 ## See the License for the specific language governing permissions and
     13 ## limitations under the License.
     14 
     15 M_NAME := $(strip $(M_NAME))
     16 M_CHIP := $(strip $(M_CHIP))
     17 
     18 ifeq ($(strip $(M_START)),)
     19 M_START := $(ARCH_$(M_ARCH)_START) 
     20 endif
     21 
     22 M_ARCH := $(CHIP_$(M_CHIP)_ARCH)
     23 M_ARCH_CFLAGS := $(ARCH_$(M_ARCH)_CFLAGS)
     24 M_ARCH_OBJS := $(ARCH_$(M_ARCH)_OBJS)
     25 
     26 # sanity check
     27 ifeq "$(M_NAME)" ""
     28 $(error $(M_MAKEFILE): No module name specified)
     29 endif
     30 
     31 # architecture start glue goes first
     32 M_OBJS := $(addprefix $(OUT_TARGET_OBJ)/$(M_NAME)/,$(M_OBJS))
     33 
     34 DEPS += $(M_OBJS:%o=%d)
     35 
     36 M_OUT_BIN := $(OUT)/$(M_NAME).bin
     37 M_OUT_LST := $(OUT)/$(M_NAME).lst
     38 M_OUT_ELF := $(OUT)/$(M_NAME).elf
     39 
     40 ALL += $(M_OUT_BIN) $(M_OUT_LST) $(M_OUT_ELF)
     41 
     42 M_INCLUDE := $(OUT_TARGET_OBJ)/$(M_NAME)/include
     43 M_CONFIG_H := $(M_INCLUDE)/config.h
     44 M_LINK_SCRIPT := $(OUT_TARGET_OBJ)/$(M_NAME)/script.ld
     45 
     46 # generate link script 
     47 $(M_LINK_SCRIPT): _RADDR := $(M_RAMBASE)
     48 $(M_LINK_SCRIPT): _RSIZE := $(M_RAMSIZE)
     49 $(M_LINK_SCRIPT): $(CHIP_$(M_CHIP)_DEPS)
     50 	@echo linkscript $@
     51 	@echo "MEMORY {" > $@
     52 	@echo " RAM (xrw) : ORIGIN = $(_RADDR), LENGTH = $(_RSIZE)" >> $@
     53 	@echo "}" >> $@
     54 	@echo " INCLUDE \"build/generic-ram.ld\"" >> $@
     55 
     56 $(OUT_TARGET_OBJ)/$(M_NAME)/%.o: %.c
     57 	@$(MKDIR)
     58 	@echo compile $<
     59 	$(QUIET)$(TARGET_CC) $(TARGET_CFLAGS) $(_CFLAGS) -c $< -o $@ -MD -MT $@ -MF $(@:%o=%d)
     60 
     61 $(OUT_TARGET_OBJ)/$(M_NAME)/%.o: %.S
     62 	@$(MKDIR)
     63 	@echo assemble $<
     64 	$(QUIET)$(TARGET_CC) $(TARGET_CFLAGS) $(_CFLAGS) -c $< -o $@ -MD -MT $@ -MF $(@:%o=%d)
     65 
     66 # apply our flags to our objects
     67 $(M_OBJS): _CFLAGS := --include $(M_CONFIG_H) $(M_CFLAGS)
     68 $(M_ARCH_OBJS): _CFLAGS := --include $(M_CONFIG_H) $(M_CFLAGS)
     69 
     70 # objects depend on generated config header
     71 $(M_OBJS): $(M_CONFIG_H)
     72 $(M_ARCH_OBJS): $(M_CONFIG_H)
     73 
     74 X_CONFIG := FLASHSIZE=$(M_ROMSIZE)
     75 X_CONFIG += FLASHADDR=$(M_ROMBASE)
     76 X_CONFIG += LOADADDR=$(M_RAMBASE)
     77 
     78 # generate config header from module, chip, and arch config lists
     79 # generated config header depends on toplevel, module, and chip/arch makefiles
     80 $(M_CONFIG_H): _CFG := $(M_CONFIG) $(X_CONFIG)
     81 $(M_CONFIG_H): Makefile $(M_MAKEFILE)
     82 	@$(MKDIR)
     83 	@echo generate $@
     84 	@$(call make-config-header,$@,$(_CFG))
     85 
     86 $(M_OUT_BIN): $(M_OUT_ELF)
     87 	@echo create $@
     88 	$(QUIET)$(TARGET_OBJCOPY) --gap-fill=0xee -O binary $< $@
     89 
     90 $(M_OUT_LST): $(M_OUT_ELF)
     91 	@echo create $@
     92 	$(QUIET)$(TARGET_OBJDUMP) --source -d $< > $@
     93 
     94 $(M_OUT_ELF): _OBJS := $(M_OBJS)
     95 $(M_OUT_ELF): _LINK := $(M_LINK_SCRIPT)
     96 $(M_OUT_ELF): $(M_OBJS) $(M_LINK_SCRIPT)
     97 	@echo link $@
     98 	$(QUIET)$(TARGET_LD) $(TARGET_LFLAGS) -Bstatic -T $(_LINK) $(_OBJS) $(_LIBS) -o $@
     99 
    100 AGENTS += $(M_OUT_BIN)
    101 
    102 $(info module $(M_NAME))
    103 
    104 M_START :=
    105 M_OBJS :=
    106 M_NAME :=
    107 M_BASE :=
    108 M_LIBS :=
    109 M_CFLAGS :=
    110 M_CONFIG :=
    111 M_SIGN :=
    112 M_RAMBASE :=
    113 M_RAMSIZE :=
    114 M_ROMBASE :=
    115 M_ROMSIZE :=