File: sam3.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 (106 lines) | stat: -rw-r--r-- 3,038 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
#-*-Makefile-*- vim:syntax=make
define SAM3_HELP

SAM3 extras:
  None available at the moment.

endef

HELP += $(SAM3_HELP)

OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SET_ID = tos-set-symbols
NCC = ncc
LIBS = -lm

AMADDR = ActiveMessageAddressC\$$addr
BUILDDIR ?= build/$(PLATFORM)
MAIN_EXE = $(BUILDDIR)/main.exe
MAIN_BIN = $(BUILDDIR)/main.bin
MAIN_IHEX = $(BUILDDIR)/main.ihex
INSTALL_BIN = $(MAIN_BIN).out$(if $(NODEID),-$(NODEID),)
INCLUDE_DIRS ?= $(TOSDIR)/platforms/$(PLATFORM)
EXTRA_MODULES ?= $(TOSDIR)/platforms/$(PLATFORM)/vectors.c

OPTFLAGS ?= -O3 -g
CFLAGS += -mcpu=cortex-m3 -mthumb -fno-strict-aliasing
PFLAGS += $(EXTRA_MODULES)
PFLAGS += -I$(INCLUDE_DIRS)
PFLAGS += -Wall -Wshadow $(NESC_FLAGS)
PFLAGS += -target=$(PLATFORM) -fnesc-cfile=$(BUILDDIR)/app.c
PFLAGS += -finline-limit=100000
PFLAGS += -board=$(SENSORBOARD)

# can be overridden by MP-enabled linker file (see mpu.extra)
LINKERFILE_PREFIX ?= sam3u-ek-flash
LINKERFILE ?= $(LINKERFILE_PREFIX).x
LDFLAGS += -L$(INCLUDE_DIRS) -T $(LINKERFILE)

BUILDLESS_DEPS += bytes

# 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 = bin tosimage bytes $(POST_BUILD_EXTRA_DEPS)
  endif
endif

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 ?= sam-ba

# 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,sam3/$(DEFAULT_PROGRAM).extra))

exe: exe0 bytes 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)
ifdef WIRING_CHECK_FILE
	@nescc-wiring $(WIRING_CHECK_FILE)
endif
	@echo "    compiled $(COMPONENT) to $(MAIN_EXE)"

builddir: FORCE
	mkdir -p $(BUILDDIR)

setid: FORCE
	@cmd () { echo "$$@"; $$@; }; if [ x = x$(NODEID) ]; then cmd $(OBJCOPY) --output-target=binary $(MAIN_EXE) $(INSTALL_BIN); else cmd $(SET_ID) --objcopy $(OBJCOPY) --objdump $(OBJDUMP) --target binary $(MAIN_EXE) $(INSTALL_BIN) TOS_NODE_ID=$(NODEID) $(AMADDR)=$(NODEID); fi

tosimage: ihex build_tosimage FORCE
	@:

bin: exe FORCE
	$(OBJCOPY) --output-target=binary $(MAIN_EXE) $(MAIN_BIN)

ihex: exe FORCE
	$(OBJCOPY) --output-target=ihex $(MAIN_EXE) $(MAIN_IHEX)

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}); }'