#-*-Makefile-*- vim:syntax=make #$Id$ define NULL_HELP NULL extras: debug : compile with minimal optimization and debug symbols endef HELP += $(NULL_HELP) OBJCOPY = objcopy OBJDUMP = objdump NCC = ncc LIBS = -lm BUILDDIR ?= build/$(PLATFORM) MAIN_EXE = $(BUILDDIR)/main.exe MAIN_SREC = $(BUILDDIR)/main.srec MAIN_IHEX = $(BUILDDIR)/main.ihex INSTALL_SREC = $(MAIN_SREC).out$(if $(NODEID),-$(NODEID),) VOLUMEFILE = volumes-at45db.xml VOLUME_ALLOCATOR ?= tos-storage-at45db PFLAGS += -Wall -Wshadow $(NESC_FLAGS) PFLAGS += -target=$(PLATFORM) -fnesc-cfile=$(BUILDDIR)/app.c ifdef MSG_SIZE PFLAGS += -DTOSH_DATA_LENGTH=$(MSG_SIZE) endif ifdef DEFAULT_LOCAL_GROUP PFLAGS += -DDEFINED_TOS_AM_GROUP=$(DEFAULT_LOCAL_GROUP) endif BUILDLESS_DEPS += bytes # Build storage file if volumes.xml present # We "steal" the at45db storage spec ifneq ($(wildcard $(VOLUMEFILE)), ) 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 ifeq ($(filter $(BUILDLESS_DEPS),$(GOALS)),) BUILD_DEPS = exe bytes $(POST_BUILD_EXTRA_DEPS) endif endif exe: exe0 bytes FORCE @: exe0: builddir $(BUILD_EXTRA_DEPS) FORCE @echo " compiling $(COMPONENT) to a $(PLATFORM) binary" $(NCC) -o $(MAIN_EXE) $(OPTFLAGS) $(PFLAGS) $(CFLAGS) $(COMPONENT).nc $(LIBS) $(LDFLAGS) @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}); }'