tinyos-2.x.rar
源代码在线查看: msp.rules
#-*-Makefile-*- vim:syntax=make
#$Id: msp.rules,v 1.19 2009/11/12 20:40:06 razvanm Exp $
define MSP_HELP
MSP extras:
debug : compile with minimal optimization and debug symbols
debugopt : compile with debug symbols
Programmer options:
bsl,auto : (default) use BSL programmer on the first mote found
bsl, : use BSL programmer on serial port
bsl,ref, : use BSL programmer on the mote with reference
The dev or host parameter for the programmer option need not be specified,
in which case it is expected to be defined as in an environment variable of
the same name in all caps (such as BSL).
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
#PFLAGS += -fnesc-target=$(MSP_NESC_TARGET) -gcc=$(MSP_GCC) -mmcu=$(MSP_MCU)
OBJCOPY = msp430-objcopy
OBJDUMP = msp430-objdump
SET_ID = tos-set-symbols
NCC = ncc
LIBS = -lm
# 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 $(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
BUILDLESS_DEPS += bytes
# Use the 'if' function instead of the 'ifdef' construct because ifdef freaks
# out with call in there. I don't know why.
$(if $(PROGRAM),,$(call TOSMake_include,msp/$(DEFAULT_PROGRAM).extra))
# Build storage file if volumes.xml present
ifneq ($(wildcard $(VOLUME_FILE)), )
build_storage: $(BUILDDIR)/StorageVolumes.h
exe0: build_storage
VOLUME_ALLOCATOR_FLAGS ?=
$(BUILDDIR)/StorageVolumes.h: $(VOLUME_FILE)
$(VOLUME_ALLOCATOR) $(VOLUME_ALLOCATOR_FLAGS) $(PLATFORMDIR) $@ || rm -f $@
PFLAGS += -I$(BUILDDIR)
else
build_storage:
endif
ifndef BUILD_DEPS
ifeq ($(filter $(BUILDLESS_DEPS),$(GOALS)),)
BUILD_DEPS = tosimage $(POST_BUILD_EXTRA_DEPS)
endif
endif
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
@:
ihex: exe FORCE
$(OBJCOPY) --output-target=ihex $(MAIN_EXE) $(MAIN_IHEX)
exe: exe0 bytes FORCE
@:
exe0: builddir $(BUILD_EXTRA_DEPS) FORCE
@echo " compiling $(COMPONENT) to a $(PLATFORM) binary"
$(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
@echo " compiled $(COMPONENT) to $(MAIN_EXE)"
builddir: FORCE
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}); }'