endef
HELP += $(NULL_HELP)
+export GCC=gcc
OBJCOPY = objcopy
OBJDUMP = objdump
NCC = ncc
LIBS = -lm
-BUILDDIR = build/$(PLATFORM)
+BUILDDIR ?= build/$(PLATFORM)
MAIN_EXE = $(BUILDDIR)/main.exe
MAIN_SREC = $(BUILDDIR)/main.srec
MAIN_IHEX = $(BUILDDIR)/main.ihex
VOLUMEFILE = volumes-at45db.xml
VOLUME_ALLOCATOR ?= tos-storage-at45db
-PFLAGS += -Wall -Wshadow $(NESC_FLAGS)
+PFLAGS += -Wall -Wshadow -fnesc-gcc=$(GCC) $(NESC_FLAGS)
PFLAGS += -target=$(PLATFORM) -fnesc-cfile=$(BUILDDIR)/app.c
ifdef MSG_SIZE
PFLAGS += -DTOSH_DATA_LENGTH=$(MSG_SIZE)
ifdef DEFAULT_LOCAL_GROUP
PFLAGS += -DDEFINED_TOS_AM_GROUP=$(DEFAULT_LOCAL_GROUP)
endif
+ifeq ($(findstring Darwin, $(shell uname)), Darwin)
+ CFLAGS += -D_FORTIFY_SOURCE=0
+ OBJCOPY = /usr/bin/true
+ OBJDUMP = /usr/bin/true
+endif
BUILDLESS_DEPS += bytes
# Build storage file if volumes.xml present
# We "steal" the at45db storage spec
ifneq ($(wildcard $(VOLUMEFILE)), )
-exe0: $(BUILDDIR)/StorageVolumes.h
+build_storage: $(BUILDDIR)/StorageVolumes.h
+
+exe0: build_storage
$(BUILDDIR)/StorageVolumes.h: $(VOLUMEFILE)
$(VOLUME_ALLOCATOR) $(VOLUME_ALLOCATOR_FLAGS) <$(VOLUMEFILE) >$@
PFLAGS += -I$(BUILDDIR)
+else
+
+build_storage:
+
endif
ifndef BUILD_DEPS
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}); }'