NAME=test
SRCS=   cr_startup_lpc18xx43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/clock_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/gpio_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/uart_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/gpdma_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/timer_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/rgu_18xx_43xx.c \
	lpc_core/lpc_chip/chip_18xx_43xx/scu_18xx_43xx.c \
	lpc_core/lpc_chip/chip_common/ring_buffer.c \
	lpc_core/lpc_ip/gpiopinint_001.c \
	lpc_core/lpc_ip/usart_001.c \
	lpc_core/lpc_ip/gpdma_001.c \
	lpc_core/lpc_ip/timer_001.c \
	LPCUSBLib/Drivers/USB/Core/ConfigDescriptor.c \
	LPCUSBLib/Drivers/USB/Core/DeviceStandardReq.c \
	LPCUSBLib/Drivers/USB/Core/Events.c \
	LPCUSBLib/Drivers/USB/Core/HostStandardReq.c \
	LPCUSBLib/Drivers/USB/Core/USBTask.c \
	LPCUSBLib/Drivers/USB/Core/Device.c \
	LPCUSBLib/Drivers/USB/Core/Endpoint.c \
	LPCUSBLib/Drivers/USB/Core/EndpointStream.c \
	LPCUSBLib/Drivers/USB/Core/Host.c \
	LPCUSBLib/Drivers/USB/Core/Pipe.c \
	LPCUSBLib/Drivers/USB/Core/PipeStream.c \
	LPCUSBLib/Drivers/USB/Core/USBController.c \
	LPCUSBLib/Drivers/USB/Class/Common/HIDParser.c \
	LPCUSBLib/Drivers/USB/Core/DCD/LPC18XX/Endpoint_LPC18xx.c \
	LPCUSBLib/Drivers/USB/Core/HAL/LPC18XX/HAL_LPC18xx.c \
	LPCUSBLib/Drivers/USB/Class/Device/CDCClassDevice.c \
	LPCUSBLib/Drivers/USB/Core/DCD/USBRom/usbd_rom.c \
	lpc_core/lpc_ip/spi_002.c \
	main.c \
	util.c \
	usb/Descriptors.c \
	usb/Receiver.c \
	usb/UsbRom.c
INC=-Ilpc_core/lpc_chip/chip_18xx_43xx \
	-Ilpc_core/lpc_chip/chip_common \
	-Ilpc_core/lpc_ip \
	-ICMSIS \
	-ILPCUSBLib/Drivers/USB

LINK=-lc -lgcc -lm -lrdimon

DEFS=-DUSB_DEVICE_ONLY -D__LPC43XX__

OBJS=$(SRCS:.c=.o)

default: $(NAME).elf $(NAME).hex $(NAME).bin

disassemble:
	arm-none-eabi-objdump -d test.elf

%.o:%.c
	arm-none-eabi-gcc -std=c99 -mcpu=cortex-m4 -mthumb -c -Wall -O2 -g -I. $(INC) $(LINK) $(DEFS) -o $@ $<

$(NAME).elf:$(OBJS)
	arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb $(INC) $(LINK) $(DEFS) -T 4330.ld -nostartfiles -Xlinker --gc-sections -Xlinker -M -Xlinker -Map=$(NAME).map -o $@ $(OBJS)

%.hex:%.elf
	arm-none-eabi-objcopy -Oihex $< $@

%.bin:%.elf
	arm-none-eabi-objcopy -Obinary $< $@

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

flash: FORCE
	gpio -g mode 10 out; gpio -g mode 11 out; gpio -g write 10 0; gpio -g write 11 0; sleep 0.1s && gpio -g write 11 1 & /home/pi/radio_receiver/lpc21isp_197/lpc21isp -bin test.bin /dev/ttyAMA0 19200 12500; gpio -g write 10 1; gpio -g write 11 0; gpio -g write 11 1;
FORCE:

# kate: replace-tabs off
