COMPONENTS_PATH = ./../../../../BitCloud/Components
APP_NAME = Peer2Peer
CONFIG_NAME = All_ZigBit_Atmega1281_Rf230_8Mhz_Iar
LIST_PATH = $(CONFIG_NAME)/List
EXE_PATH = $(CONFIG_NAME)/Exe
OBJ_PATH = $(CONFIG_NAME)/Obj

include ./../../../../BitCloud/lib/Makerules_Atmega1281_Iar

DEFINES = \
  -DAT86RF230 \
  -DBOARD_MESHBEAN \
  -DATMEGA1281 \
  -DHAL_8MHz \
  -DNO_SECURITY_MODE \
  -DSTACK_TYPE_ALL 

INCLUDES = \
  -I./../.. \
  -I./../../include \
  -I./../../../../BitCloud/Components/BSP/MESHBEAN/include \
  -I./../../../../BitCloud/lib \
  -I./../../../../BitCloud/Components/HAL/include \
  -I./../../../../BitCloud/Components/BSP \
  -I./../../../../BitCloud/Components/BSP/include \
  -I./../../../../BitCloud/Components/NWK/include \
  -I./../../../../BitCloud/Components/NWK/include/private \
  -I./../../../../BitCloud/Components/ZDO/include \
  -I./../../../../BitCloud/Components/ZDO/include/private \
  -I./../../../../BitCloud/Components/APS/include \
  -I./../../../../BitCloud/Components/APS/include/private \
  -I./../../../../BitCloud/Components/SystemEnvironment/include \
  -I./../../../../BitCloud/Components/ConfigServer/include \
  -I./../../../../BitCloud/Components/ConfigServer/include/private \
  -I./../../../../BitCloud/Components/PersistDataServer/include \
  -I./../../../../BitCloud/Components/PersistDataServer/include/private \
  -I./../../../../BitCloud/Components/Security/TrustCentre/include \
  -I./../../../../BitCloud/Components/Security/ServiceProvider/include \
  -I./../../../../BitCloud/Components/HAL/avr/atmega1281/common/include \
  -I./../../../../BitCloud/Components/HAL/avr/atmega1281/zigBit/include \
  -I./../../../../BitCloud/Components/MAC_PHY/include \
  -I./../../../../BitCloud/Components/MAC_PHY/MAC_ENV/include \
  -I./../../../../BitCloud/Components/MAC_PHY/MAC_HWI/include \
  -I./../../../../BitCloud/Components/MAC_PHY/MAC_HWD_PHY/include \
  -I./../../../../BitCloud/Components/MAC_PHY/MAC_HWD_PHY/RF230/PHY/include \
  -I./../../../../BitCloud/Components/MAC_PHY/MAC_HWD_PHY/RF230/MAC_HWD/include 

LIBS = \
  ./../../../../BitCloud/lib/libHAL_ZigBit_Atmega1281_8Mhz_Iar.a \
  ./../../../../BitCloud/lib/libBc_All_Atmega1281_Rf230_Iar.a \
  ./../../../../BitCloud/lib/WdtInitatmega1281_Iar.o 

SRCS = \
  ./../../../../BitCloud/Components/PersistDataServer/src/pdsWriteData.c \
  ./../../../../BitCloud/Components/PersistDataServer/src/pdsDataServer.c \
  ./../../../../BitCloud/Components/PersistDataServer/src/pdsCrcService.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/sensors.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/buttons.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/pwrCtrl.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/leds.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/battery.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/lm73.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/tsl2550.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/sliders.c \
  ./../../../../BitCloud/Components/BSP/MESHBEAN/src/bspTaskManager.c \
  ./../../../../BitCloud/Components/ConfigServer/src/csPersistentMem.c \
  ./../../../../BitCloud/Components/ConfigServer/src/csMem.c \
  ./../../../../BitCloud/Components/ConfigServer/src/configServer.c 

PREINCLUDE = MakerulesBc_All_Atmega1281_Rf230_Iar.h

SRCS += $(wildcard ./../../src/*.c)
SRCS += $(wildcard ./../../../common/src/*.c)

CSRCS = $(filter %.c, $(SRCS))
OBJS = $(addprefix $(OBJ_PATH)/, $(notdir %$(subst .c,.o,$(CSRCS))))

ASM_FILE_EXT = s90

ifneq (, $(findstring .$(ASM_FILE_EXT), $(SRCS)))
  ASRCS = $(filter %.$(ASM_FILE_EXT), $(SRCS))
  OBJS += $(addprefix $(OBJ_PATH)/, $(notdir %$(subst .$(ASM_FILE_EXT),.o,$(ASRCS))))
endif

CFLAGS += $(DEFINES)
CFLAGS += $(INCLUDES)
CFLAGS += --preinclude $(PREINCLUDE)

ASFLAGS = $(INCLUDES)
ASFLAGS  = -s+ # Enables case sensitivity.
ASFLAGS += -w+ # Enables warnings.
ASFLAGS += -M'<>'# Change asm.macro argument quote chars.
ASFLAGS += -t8 # Set tab spacing.
ASFLAGS += -u_enhancedCore
ASFLAGS += -D__HAS_ENHANCED_CORE__=1
ASFLAGS += -D__HAS_MUL__=1
ASFLAGS += -D__MEMORY_MODEL__=2
ASFLAGS += -D__HAS_ELPM__=1
ASFLAGS += -S
ASFLAGS += -v3

LINKER_FLAGS += -Fintel-extended
LINKER_FLAGS += -l $(LIST_PATH)/$(APP_NAME).map
LINKER_FLAGS += -xms
LINKER_FLAGS += -S
LINKER_FLAGS += -s __bitcloud_start $(IAR_PATH)/LIB/DLIB/dlAVR-3s-ec_mul-n.r90
LINKER_FLAGS += -f ./../../linkerScr/cfgm1281bitcloud.xcl
LINKER_FLAGS += -e_PrintfSmall=_Printf

.PHONY: all directories clean size root_files

all: directories $(EXE_PATH)/$(APP_NAME).hex $(EXE_PATH)/$(APP_NAME).srec root_files

$(OBJ_PATH)/%.o: $(SRCS)
	$(CC) $(CFLAGS) $(filter %$(subst .o,.c,$(notdir $@)), $(SRCS)) -o $@


$(EXE_PATH)/$(APP_NAME).hex $(EXE_PATH)/$(APP_NAME).srec: $(OBJS)
	$(LD) $(LINKER_FLAGS) $(OBJS) $(LIBS) -o $(EXE_PATH)/$(APP_NAME).hex -Omotorola-s28=$(EXE_PATH)/$(APP_NAME).srec $(LINKER_FLAGS_TAIL)


root_files:
	cp -f $(EXE_PATH)/*.* ./../../

clean:
	rm -rf $(CONFIG_NAME) ./../../$(APP_NAME).hex ./../../$(APP_NAME).srec

directories:
	@mkdir -p $(LIST_PATH)
	@mkdir -p $(EXE_PATH)
	@mkdir -p $(OBJ_PATH)


# eof Makefile
