xdebug

next generation of mdebug (work in progress)
git clone http://frotz.net/git/xdebug.git
Log | Files | Refs | README

Makefile (2895B)


      1 
      2 all: out/xdebug out/xtest
      3 
      4 CFLAGS := -Wall -g -O1
      5 CFLAGS += -Itui -Itermbox -Iinclude -D_XOPEN_SOURCE
      6 LIBS := -lusb-1.0
      7 
      8 # TOOLCHAIN := arm-none-eabi-
      9 
     10 ifneq ($(TOOLCHAIN),)
     11 # if there's a cross-compiler, build agents from source
     12 
     13 TARGET_CC := $(TOOLCHAIN)gcc
     14 TARGET_OBJCOPY := $(TOOLCHAIN)objcopy
     15 TARGET_OBJDUMP := $(TOOLCHAIN)objdump
     16 
     17 ARCH_M3_CFLAGS := -mcpu=cortex-m3 -mthumb
     18 ARCH_M3_LIBS := $(shell $(TARGET_CC) $(ARCH_M3_CFLAGS) -print-libgcc-file-name)
     19 
     20 ARCH_M0_CFLAGS := -mcpu=cortex-m0 -mthumb
     21 ARCH_M0_LIBS := $(shell $(TARGET_CC) $(ARCH_M0_CFLAGS) -print-libgcc-file-name)
     22 
     23 TARGET_CFLAGS := -g -Os -Wall -I. -Iinclude
     24 TARGET_CFLAGS += -Wno-unused-but-set-variable
     25 TARGET_CFLAGS += -ffunction-sections -fdata-sections
     26 TARGET_CFLAGS += -fno-builtin -nostdlib -ffreestanding
     27 
     28 agent = $(eval AGENTS += $(strip $1))\
     29 $(eval ALL += $(patsubst %,out/agents/%.bin,$(strip $1)))\
     30 $(eval ALL += $(patsubst %,out/agents/%.lst,$(strip $1)))\
     31 $(eval out/agents/$(strip $1).elf: LOADADDR := $(strip $2))\
     32 $(eval out/agents/$(strip $1).elf: ARCH := $(strip $3))
     33 
     34 $(call agent, lpclink2,  0x10080400, M3)
     35 $(call agent, stm32f4xx, 0x20000400, M3)
     36 $(call agent, stm32f0xx, 0x20000400, M0)
     37 $(call agent, lpc13xx,   0x10000400, M3)
     38 $(call agent, lpc15xx,   0x02000400, M3)
     39 $(call agent, cc13xx,    0x20000400, M3)
     40 $(call agent, nrf528xx,  0x20000400, M3)
     41 $(call agent, efr32bg2x, 0x20000400, M3)
     42 $(call agent, pico,      0x20000400, M0)
     43 
     44 out/mkbuiltins: tools/mkbuiltins.c
     45 	@mkdir -p $(dir $@)
     46 	gcc -o $@ $(CFLAGS) $<
     47 
     48 AGENT_BINS := $(patsubst %,out/agents/%.bin,$(AGENTS))
     49 
     50 gen/builtins.c: $(AGENT_BINS) out/mkbuiltins
     51 	@mkdir -p $(dir $@)
     52 	./out/mkbuiltins $(AGENT_BINS) > $@
     53 
     54 out/agents/%.bin: out/agents/%.elf
     55 	@mkdir -p $(dir $@)
     56 	$(TARGET_OBJCOPY) -O binary $< $@
     57 
     58 out/agents/%.lst: out/agents/%.elf
     59 	@mkdir -p $(dir $@)
     60 	$(TARGET_OBJDUMP) -d $< > $@
     61 
     62 out/agents/%.elf: agents/%.c
     63 	@mkdir -p $(dir $@)
     64 	$(TARGET_CC) $(TARGET_CFLAGS) $(ARCH_$(ARCH)_CFLAGS) -Wl,--script=include/agent.ld -Wl,-Ttext=$(LOADADDR) -o $@ $< $(ARCH_$(ARCH)_LIBS)
     65 
     66 endif
     67 
     68 COMMON := src/transport-arm-debug.c src/transport-dap.c src/usb.c
     69 XTEST_SRCS := src/xtest.c $(COMMON)
     70 XTEST_OBJS := $(addprefix out/,$(patsubst %.c,%.o,$(filter %.c,$(XTEST_SRCS))))
     71 
     72 XDEBUG_SRCS := src/xdebug.c $(COMMON)
     73 XDEBUG_SRCS += src/commands.c src/commands-file.c src/commands-agent.c
     74 XDEBUG_SRCS += tui/tui.c termbox/termbox.c termbox/utf8.c gen/builtins.c
     75 XDEBUG_OBJS := $(addprefix out/,$(patsubst %.c,%.o,$(filter %.c,$(XDEBUG_SRCS))))
     76 
     77 out/xtest: $(XTEST_OBJS)
     78 	@mkdir -p $(dir $@)
     79 	gcc -o $@ -Wall -g -O1 $(XTEST_OBJS) $(LIBS)
     80 
     81 out/xdebug: $(XDEBUG_OBJS)
     82 	@mkdir -p $(dir $@)
     83 	gcc -o $@ -Wall -g -O1 $(XDEBUG_OBJS) $(LIBS)
     84 
     85 # remove dups
     86 OBJS := $(sort $(XTEST_OBJS) $(XDEBUG_OBJS))
     87 
     88 $(OBJS): out/%.o: %.c $(XDEPS)
     89 	@mkdir -p $(dir $@)
     90 	gcc $(CFLAGS) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
     91 
     92 -include $(OBJS:%o=%d)
     93 
     94 clean:
     95 	rm -rf out/
     96