c7e36a3d55
Previously, the clean target would delete a number of file extensions, many of which currently unknown to our build system (old platforms?). This commit changes the target so that it only cleans what we know we are building. Platforms / CPUs can append to the target with platform-specific build artifacts.
111 lines
3.5 KiB
Makefile
111 lines
3.5 KiB
Makefile
### Zoul Makefile
|
|
|
|
ifndef CONTIKI
|
|
$(error CONTIKI not defined! You must specify where CONTIKI resides!)
|
|
endif
|
|
|
|
### If no board is specified the default option is the RE-Mote revision B
|
|
BOARD ?= remote-revb
|
|
BOARDS = remote-reva remote-revb firefly-reva firefly orion
|
|
|
|
### As previously the RE-Mote revision A was plainly defined as remote, keep for
|
|
### backward compatibility
|
|
ifeq ($(BOARD), remote)
|
|
override BOARD = remote-reva
|
|
endif
|
|
|
|
PYTHON = python
|
|
BSL_FLAGS += -e -w -v
|
|
|
|
BSL_SPEED ?= 460800
|
|
|
|
# Works in Linux and probably on OSX too (RTCC example)
|
|
CFLAGS += -DDATE="\"`date +"%02u %02d %02m %02y %02H %02M %02S"`\""
|
|
|
|
### Configure the build for the board and pull in board-specific sources
|
|
CONTIKI_TARGET_DIRS += . dev
|
|
CONTIKI_TARGET_DIRS += . $(BOARD)
|
|
PLATFORM_ROOT_DIR = $(CONTIKI)/arch/platform/$(TARGET)
|
|
|
|
### Include the board dir if one exists
|
|
-include $(PLATFORM_ROOT_DIR)/$(BOARD)/Makefile.$(BOARD)
|
|
|
|
### Include
|
|
CONTIKI_TARGET_SOURCEFILES += platform.c leds-arch.c
|
|
CONTIKI_TARGET_SOURCEFILES += leds.c cc1200-zoul-arch.c
|
|
CONTIKI_TARGET_SOURCEFILES += adc-zoul.c board-buttons.c zoul-sensors.c
|
|
CONTIKI_TARGET_SOURCEFILES += $(BOARD_SOURCEFILES)
|
|
|
|
CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES)
|
|
|
|
### Define the CPU directory
|
|
CONTIKI_CPU=$(CONTIKI)/arch/cpu/cc2538
|
|
include $(CONTIKI_CPU)/Makefile.cc2538
|
|
|
|
MODULES += arch/dev/cc1200 arch/dev/rgb-led os/storage/cfs
|
|
|
|
BSL = $(CONTIKI)/tools/cc2538-bsl/cc2538-bsl.py
|
|
|
|
### Use the specific Zoul subplatform to query for connected devices
|
|
ifdef MOTELIST_ZOLERTIA
|
|
MOTELIST_FLAGS += -b $(MOTELIST_ZOLERTIA)
|
|
endif
|
|
|
|
### Detect if a mote is connected over serial port
|
|
ifeq ($(HOST_OS),Darwin)
|
|
USBDEVPREFIX=
|
|
MOTELIST := $(CONTIKI)/tools/zolertia/motelist-zolertia-macos
|
|
MOTES := $(shell $(MOTELIST) -c 2>&- | cut -f 2 -d ,)
|
|
SERIALDUMP := $(CONTIKI)/tools/sky/serialdump-macos
|
|
else
|
|
### If we are not running under Mac, we assume Linux
|
|
USBDEVPREFIX=
|
|
SERIALDUMP := $(CONTIKI)/tools/sky/serialdump-linux
|
|
MOTELIST := $(CONTIKI)/tools/zolertia/motelist-zolertia
|
|
MOTES := $(shell $(MOTELIST) -b $(MOTELIST_ZOLERTIA) -c 2>&- | cut -f 2 -d , | \
|
|
perl -ne 'print $$1 . " " if(m-(/dev/\w+)-);')
|
|
endif
|
|
|
|
### If PORT is defined, override to keep backward compatibility
|
|
ifdef PORT
|
|
MOTES := $(PORT)
|
|
endif
|
|
|
|
### Check the BSL script exists
|
|
ifeq ($(wildcard $(BSL)), )
|
|
%.upload:
|
|
@echo "ERROR: Could not find the cc2538-bsl script. Did you run 'git submodule update --init' ?"
|
|
else
|
|
### Upload to every MOTE
|
|
%.upload: $(foreach MOTE,$(MOTES),%.$(MOTE))
|
|
@# Dummy recipe to prevent "No rule to make *.upload errors"
|
|
endif
|
|
|
|
### Variable that expands into a pattern rule to upload to a given MOTE.
|
|
### Requires $(MOTE) to be defined
|
|
### $$$$ Double escapes $s that need to be passed to the shell - once for when make parses UPLOAD_RULE, and once for when the expanded rule is parsed by make.
|
|
define UPLOAD_RULE
|
|
%.$(MOTE): %.bin %.elf
|
|
@echo "Flashing $(MOTE)"
|
|
@BSL_ADDRESS=`$(OBJDUMP) -h $$*.elf | grep -B1 LOAD | \
|
|
grep -Ev 'LOAD|\-\-' | awk '{print "0x" $$$$5}' | \
|
|
sort -g | head -1`; \
|
|
$(PYTHON) $(BSL) $(BSL_FLAGS) -b $(BSL_SPEED) -a $$$${BSL_ADDRESS} -p $(MOTE) $$<
|
|
endef
|
|
|
|
### Create an upload rule for every MOTE connected
|
|
$(foreach MOTE,$(MOTES),$(eval $(UPLOAD_RULE)))
|
|
|
|
motelist:
|
|
$(MOTELIST)
|
|
zoul-motelist:
|
|
$(MOTELIST) $(MOTELIST_FLAGS)
|
|
zoul-motes:
|
|
@echo $(MOTES)
|
|
|
|
serialview:
|
|
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES)) | $(CONTIKI)/tools/timestamp
|
|
|
|
login:
|
|
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES))
|