CC = arm-none-eabi-gcc
LD = arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
NM = arm-none-eabi-nm
LKR = psoc4.lkr
CCFLAGS = -Os -g -ggdb3 -mthumb -mcpu=cortex-m0 -I. -march=armv6-m -ffunction-sections -fdata-sections
LDFLAGS = -Os -g -ggdb3 -Wl,--gc-sections -Wl,-T $(LKR) -mthumb -mcpu=cortex-m0plus -march=armv6-m -flto

APP = TestApp
OBJS = crt_psoc4.o main.o printf.o
OBJS_NO_LTO = supervisor.nolto.o flashops.nolto.o




$(APP).bin:	$(APP).elf
	$(OBJCOPY) -I elf32-littlearm -O binary $(APP).elf $(APP).bin -j.vec -j.text -j.rodata -j.data -j.ramfuncs

$(APP).elf:	$(OBJS) $(OBJS_NO_LTO) $(LKR)
	$(LD) -o $(APP).elf $(LDFLAGS) $(OBJS) $(OBJS_NO_LTO)

%.o : %.c *.h Makefile
	$(CC) $(CCFLAGS)  -flto -c $< -o $@
	
%.nolto.o : %.c *.h Makefile
	$(CC) $(CCFLAGS) -c $< -o $@


clean:
	rm -f $(OBJS) $(APP).bin $(APP).elf $(APP).hex

