debug : compile with minimal optimization and debug symbols
debugopt : compile with debug symbols
- xnp : compile for network programming
Programmer options:
endef
HELP += $(MSP_HELP)
+ifdef MAKE_DEPUTY_FLAG
+ NCC_SAFE_TINYOS_FLAGS = -DSAFE_TINYOS -I$(TOSDIR)/lib/safe -fnesc-deputy -fnesc-deputy-args='-I$(TOSDIR)/lib/safe/include --FLIDs=build/$(PLATFORM)/flids.txt --envmachine -DSAFE_TINYOS --nolib '
+else
+ NCC_SAFE_TINYOS_FLAGS =
+endif
+
#MSP_NESC_TARGET ?= msp430
#MSP_GCC ?= msp430-gcc
-#MSP_MCU ?= msp430x149
+#MSP_MCU ?= msp430f149
#PFLAGS += -fnesc-target=$(MSP_NESC_TARGET) -gcc=$(MSP_GCC) -mmcu=$(MSP_MCU)
OBJCOPY = msp430-objcopy
NCC = ncc
LIBS = -lm
-AMADDR = ActiveMessageAddressC\$$addr
-BUILDDIR = build/$(PLATFORM)
+# Use __ as the separator - requires nesC 1.2.9 or later
+ifneq ($(filter sim,$(GOALS)),sim)
+ PFLAGS += -fnesc-separator=__
+endif
+
+AMADDR = ActiveMessageAddressC__addr
+BUILDDIR ?= build/$(PLATFORM)
MAIN_EXE = $(BUILDDIR)/main.exe
MAIN_IHEX = $(BUILDDIR)/main.ihex
INSTALL_IHEX = $(MAIN_IHEX).out$(if $(NODEID),-$(NODEID),)
-PFLAGS += -Wall -Wshadow -DDEF_TOS_AM_GROUP=$(DEFAULT_LOCAL_GROUP) $(NESC_FLAGS)
+PFLAGS += -Wall -Wshadow $(NESC_FLAGS)
PFLAGS += -target=$(PLATFORM) -fnesc-cfile=$(BUILDDIR)/app.c -board=$(SENSORBOARD)
ifdef MSG_SIZE
PFLAGS += -DTOSH_DATA_LENGTH=$(MSG_SIZE)
endif
+ifdef DEFAULT_LOCAL_GROUP
+PFLAGS += -DDEFINED_TOS_AM_GROUP=$(DEFAULT_LOCAL_GROUP)
+endif
DEFAULT_PROGRAM ?= bsl
# Build storage file if volumes.xml present
ifneq ($(wildcard $(VOLUME_FILE)), )
-exe0: $(BUILDDIR)/StorageVolumes.h
+build_storage: $(BUILDDIR)/StorageVolumes.h
+
+exe0: build_storage
+VOLUME_ALLOCATOR_FLAGS ?=
$(BUILDDIR)/StorageVolumes.h: $(VOLUME_FILE)
- $(VOLUME_ALLOCATOR) <$(VOLUME_FILE) >$@
+ $(VOLUME_ALLOCATOR) $(VOLUME_ALLOCATOR_FLAGS) $(PLATFORMDIR) <$(VOLUME_FILE) >$@ || rm -f $@
PFLAGS += -I$(BUILDDIR)
+else
+
+build_storage:
+
endif
ifndef BUILD_DEPS
setid: FORCE
@cmd () { echo "$$@"; $$@; }; if [ x = x$(NODEID) ]; then cmd cp $(MAIN_IHEX) $(INSTALL_IHEX); else cmd $(SET_ID) --objcopy $(OBJCOPY) --objdump $(OBJDUMP) --target ihex $(MAIN_IHEX) $(INSTALL_IHEX) TOS_NODE_ID=$(NODEID) $(AMADDR)=$(NODEID); fi
+tos_buildinfo: ihex build_buildinfo FORCE
+ @:
+
tosimage: ihex build_tosimage FORCE
@:
exe0: builddir $(BUILD_EXTRA_DEPS) FORCE
@echo " compiling $(COMPONENT) to a $(PLATFORM) binary"
- $(NCC) -o $(MAIN_EXE) $(OPTFLAGS) $(PFLAGS) $(CFLAGS) $(WIRING_CHECK_FLAGS) $(COMPONENT).nc $(LIBS) $(LDFLAGS)
+ $(NCC) -o $(MAIN_EXE) $(NCC_SAFE_TINYOS_FLAGS) $(OPTFLAGS) $(PFLAGS) $(CFLAGS) $(WIRING_CHECK_FLAGS) $(COMPONENT).nc $(LIBS) $(LDFLAGS)
ifdef WIRING_CHECK_FILE
@nescc-wiring $(WIRING_CHECK_FILE)
endif
mkdir -p $(BUILDDIR)
bytes: FORCE
- @objdump -h $(MAIN_EXE) | perl -ne '$$b{$$1}=hex $$2 if /^\s*\d+\s*\.(text|data|bss)\s+(\S+)/; END { printf("%16d bytes in ROM\n%16d bytes in RAM\n",$$b{text}+$$b{data},$$b{data}+$$b{bss}); }'
+ @$(OBJDUMP) -h $(MAIN_EXE) | perl -ne '$$b{$$1}=hex $$2 if /^\s*\d+\s*\.(text|data|bss)\s+(\S+)/; END { printf("%16d bytes in ROM\n%16d bytes in RAM\n",$$b{text}+$$b{data},$$b{data}+$$b{bss}); }'