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