PROP_SYS_ARCH_S = startup_stm32l152xe.s


# Compiler definitions
IAR      = 1
CC	 = iccarm
LD       = ilinkarm
AS       = iasmarm
AR       = iarchive
OBJCOPY  = ielftool
STRIP    = iobjmanip
SIZE     =
NM       =

%.ihex: %.$(TARGET)
	$(OBJCOPY) $^ --ihex $@
%.bin: %.$(TARGET)
	$(OBJCOPY) --bin $@


# Find the path to compiler; this works with cygwin
ifndef IAR_PATH
IAR_BIN_PATH := $(shell dirname "`which $(CC)`")
IAR_PATH_C := $(shell dirname "$(IAR_BIN_PATH)")
IAR_PATH := $(shell cygpath -m "$(IAR_PATH_C)")
endif

# ------------compiler flags
CFLAGS+=\
    -I"$(IAR_PATH)/CMSIS/Include" \
	--diag_suppress Pa050 \
	--no_unroll \
	--no_inline \
	--no_tbaa \
	--no_scheduling \
	--debug \
	--endian=little \
	--cpu=Cortex-M3 \
	-Om \
	-e \
	--fpu=None \
	--dlib_config "$(IAR_PATH)/inc/c/DLib_Config_Normal.h" \
	-DIAR=1 \
	-DWITH_USB_PRINTF=1

#    -I$(CONTIKI)/cpu/arm/common/CMSIS   \

# ------------assembler flags
ASFLAGS+= -s+ -r -DIAR_ARM_CM3 -cAOM -B -t8 --cpu Cortex-M3 --fpu None

#iasmarm -s+ -w+ -r -DIAR_ARM_CM3 -cAOM -B -t8 --cpu Cortex-M3 --fpu None startup_stm32l1xx_md.s

# ------------archive creation flags
AROPTS= --create --output

# ----------linker flags
# this will also generate log and symbol map files
ICF_FILE="$(CONTIKI)/platform/$(TARGET)/stm32cube-lib/stm32cube-prj/linker/iar/stm32l1xx_flash.icf"
LDFLAGS+= \
	--config $(ICF_FILE) \
	--entry __iar_program_start \
	--redirect _Printf=_PrintfLarge \
	--redirect _Scanf=_ScanfLarge \
	--semihosting \
	--no_exceptions \
	--no_remove \
	--cpu=Cortex-M3 \
	--log libraries,initialization,modules,redirects,sections,veneers,unused_fragments \
	--log_file contiki-$(TARGET).log \
	--map contiki-$(TARGET).map \
	--vfe

CUSTOM_RULE_C_TO_OBJECTDIR_O=yes
$(OBJECTDIR)/%.o: %.c | $(OBJECTDIR)
	$(CC) $(CFLAGS) --dependencies=m $(@:.o=.P) $< -o $@
ifeq ($(HOST_OS),Windows)
	@$(FINALIZE_CYGWIN_DEPENDENCY)
endif

%.co: %.c
	$(CC) $(CFLAGS) -DAUTOSTART_ENABLE $< -o $@