File: msp.rules

package info (click to toggle)
tinyos 2.1.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch
  • size: 47,476 kB
  • ctags: 36,607
  • sloc: ansic: 63,646; cpp: 14,974; java: 10,358; python: 5,215; makefile: 1,724; sh: 902; asm: 597; xml: 392; perl: 74; awk: 46
file content (123 lines) | stat: -rw-r--r-- 3,736 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#-*-Makefile-*- vim:syntax=make
#$Id: msp.rules,v 1.20 2010-03-17 00:38:05 klueska 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,<port>    : use BSL programmer on <port> serial port
   bsl,ref,<ref> : use BSL programmer on the mote with reference <ref>

   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


MSPGCC_MIN_VER := 4.6.3
MSPGCC_VER_OK := $(shell expr `msp430-gcc -dumpversion` \>= '$(MSPGCC_MIN_VER)')

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) <$(VOLUME_FILE) >$@ || 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) $(COMPONENT).nc FORCE
	@echo "    compiling $(COMPONENT) to a $(PLATFORM) binary"
ifeq ("$(MSPGCC_VER_OK)","0")
	@echo
	@echo "    WARNING: Minimum recommended msp430-gcc version for this TinyOS release is $(MSPGCC_MIN_VER)!!!"
	@echo
endif
	$(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}); }'