PROJ_NAME = uwb_simple_example # Build folder ODIR = ./objects # Detect Unix-style shell ifeq ($(findstring /,$(PWD)),/) RM = rm -f FixPath = $1 MKDIR = mkdir -p MV = mv -f $(info Unix-Style) else SHELL := cmd.exe RM = del /Q FixPath = $(subst /,\,$1) MKDIR = mkdir MV = copy $(info Windows) endif # Configure tool names CC = arm-none-eabi-gcc CXX = arm-none-eabi-g++ AS = arm-none-eabi-as OBJCOPY = arm-none-eabi-objcopy -O binary -S SIZE = arm-none-eabi-size # Define CPU target # - Use Cortex-M1 if tools do not provide named support for Cortex-M0 # - Compiling for Cortex-M1 will produce code compatible with Cortex-M0 CPUTARGET = -mcpu=Cortex-M0 -mthumb -mthumb-interwork # # CM0MCU compiler options # CCFLAGS = $(CPUTARGET) -std=c99 -O2 -g -DUWB_EN CCFLAGS += -ffunction-sections -fdata-sections LDFLAGS = $(CPUTARGET) -T ../../../../../devices/MK800X/Source/GCC/gcc_arm.ld # Use newlib-nano LDFLAGS += --specs=nano.specs LDFLAGS += --specs=nosys.specs # print float #LDFLAGS += -u_printf_float # Link for code size LDFLAGS += -Wl,--gc-sections # Create map file LDFLAGS += -Wl,-Map=$(PROJ_NAME).map ASFLAGS = $(CPUTARGET) --keep # Source code SRC = ../../../board.c \ ../pin_config.c \ ../../../../src/uwb_examples/uwb_simple_example/main.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c \ ../../../../src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c \ ../../../../../components/algo/src/steering_vector/cmp_svec.c \ ../../../../../components/crc/crc.c \ ../../../../../components/libc/libc.c \ ../../../../../components/wsf/sources/platform/pal_flash.c \ ../../../../../components/wsf/sources/platform/pal_sys.c \ ../../../../../components/wsf/sources/platform/pal_uart.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_assert.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_buf.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_bufio.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_heap.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_msg.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_nvm.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_os.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_queue.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_timer.c \ ../../../../../components/wsf/sources/port/baremetal/wsf_trace.c \ ../../../../../devices/MK800X/Source/startup_MK800X.c \ ../../../../../devices/MK800X/Source/system_MK800X.c \ ../../../../../drivers/mk_adc.c \ ../../../../../drivers/mk_aes.c \ ../../../../../drivers/mk_calib.c \ ../../../../../drivers/mk_clock.c \ ../../../../../drivers/mk_dma.c \ ../../../../../drivers/mk_dual_timer.c \ ../../../../../drivers/mk_flash.c \ ../../../../../drivers/mk_gpio.c \ ../../../../../drivers/mk_io.c \ ../../../../../drivers/mk_misc.c \ ../../../../../drivers/mk_power.c \ ../../../../../drivers/mk_reset.c \ ../../../../../drivers/mk_rtc.c \ ../../../../../drivers/mk_sleep_timer.c \ ../../../../../drivers/mk_trace.c \ ../../../../../drivers/mk_uart.c \ ../../../../../drivers/mk_uwb.c \ ../../../../../drivers/mk_wdt.c \ # Include path INC = -I../../../../../CMSIS/Include \ -I../../.. \ -I.. \ -I../../../../../components/algo/inc \ -I../../../../../components/crc \ -I../../../../../components/libc \ -I../../../../../components/wsf/include \ -I../../../../../components/wsf/include/platform \ -I../../../../../devices/MK800X/Include \ -I../../../../../drivers \ # Include library LIB = ../../../../../components/algo/lib/lib_aoa.a \ ../../../../../components/algo/lib/lib_ranging.a \ ../../../../../drivers/lib/lib_lsp.a \ ../../../../../drivers/lib/lib_mac_phy.a \ -lm \ ODIR_ = $(call FixPath, $(ODIR)) OBJS = $(patsubst %.c, $(ODIR)/%.o, $(notdir $(SRC))) OBJS_ = $(call FixPath, $(OBJS)) ifneq ($(ODIR), $(wildcard $(ODIR))) $(shell $(MKDIR) $(ODIR_)) endif $(info $(ODIR)) $(info $(OBJS)) SOURSE_DIR = $(dir $(SRC)) vpath %.c $(SOURSE_DIR) .PHONY: all clean ################################################################################ # # Rule deck # all: $(PROJ_NAME).bin $(PROJ_NAME).elf $(OBJS) $(ODIR)/%.o: %.c $(info $< $@) $(CC) -c $(CCFLAGS) $(INC) $< -o $@ %.elf: $(OBJS) $(CC) $(LDFLAGS) $^ -Xlinker "-(" $(LIB) -Xlinker "-)" -o $(PROJ_NAME).elf $(SIZE) $@ %.bin: %.elf $(OBJCOPY) $(PROJ_NAME).elf $(PROJ_NAME).bin ################################################################################ # # Clean - remove all .bin, .elf, .map # clean: $(RM) $(OBJS_) *.bin *.elf *.map download: -./pyjlink -f $(PROJ_NAME).bin # EOF