# Make file for uTasker V1.3 build for LPC23XX
#

# All objects (Hardware, application, uTasker, stack)
#
OBJS = Build/application.o Build/debug.o Build/webInterface.o Build/KeyScan.o Build/LCD.o Build/NetworkIndicator.o \
       Build/startup_gnu.o Build/LPC23XX.o \
       Build/eth_drv.o Build/Driver.o Build/uMalloc.o Build/uTasker.o Build/Tty_drv.o Build/iic_drv.o Build/uFile.o Build/watchdog.o Build/GlobalTimer.o Build/low_power.o \
       Build/Ethernet.o Build/arp.o Build/dhcp.o Build/dns.o Build/ftp.o Build/http.o Build/icmp.o Build/ip_utils.o Build/ip.o Build/pop3.o Build/smtp.o \
                        Build/tcp.o Build/telnet.o Build/tftp.o Build/udp.o Build/webutils.o Build/NetBIOS.o


#General dependencies
#
DEPENDS = ../config.h ../app_hw_lpc23xx.h ../types.h ../TaskConfig.h ../../../uTasker/driver.h ../../../uTasker/uTasker.h \
       ../../../Hardware/hardware.h ../../../Hardware/LPC23XX/LPC23XX.h \
       ../../../stack/tcpip.h


# Compiler flags (thumb mode - little endian)
#
C_FLAGS = -march=armv4t -mlittle-endian -mthumb -mthumb-interwork -Wall -Wstrict-prototypes -D _GNU -D _LPC23XX -g -c -Os


all: uTaskerV1.3.elf

# Application files
#
Build/application.o: ../application.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../application.c -o Build/application.o

Build/debug.o: ../debug.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../debug.c -o Build/debug.o

Build/webInterface.o: ../webInterface.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3  ../webInterface.c -o Build/webInterface.o

Build/KeyScan.o: ../KeyScan.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../KeyScan.c -o Build/KeyScan.o

Build/LCD.o: ../LCD.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../LCD.c -o Build/LCD.o

Build/NetworkIndicator.o: ../NetworkIndicator.c $(DEPENDS) ../application.h
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../NetworkIndicator.c -o Build/NetworkIndicator.o


# Hardware files
#
Build/startup_gnu.o: ../../../Hardware/LPC23XX/startup_gnu.s uTaskerLPC23XX.ld
		arm-none-eabi-gcc $(C_FLAGS) ../../../Hardware/LPC23XX/startup_gnu.s -o Build/startup_gnu.o

Build/LPC23XX.o: ../../../Hardware/LPC23XX/LPC23XX.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../Hardware/LPC23XX/LPC23XX.c -o Build/LPC23XX.o



# uTasker files
#
Build/uTasker.o: ../../../uTasker/uTasker.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/uTasker.c -o Build/uTasker.o

Build/eth_drv.o: ../../../uTasker/eth_drv.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/eth_drv.c -o Build/eth_drv.o

Build/Driver.o: ../../../uTasker/Driver.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/Driver.c -o Build/Driver.o

Build/uMalloc.o: ../../../uTasker/uMalloc.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/uMalloc.c -o Build/uMalloc.o

Build/Tty_drv.o: ../../../uTasker/Tty_drv.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/Tty_drv.c -o Build/Tty_drv.o

Build/iic_drv.o: ../../../uTasker/iic_drv.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/iic_drv.c -o Build/iic_drv.o

Build/uFile.o: ../../../uTasker/uFile.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/uFile.c -o Build/uFile.o

Build/watchdog.o: ../../../uTasker/watchdog.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/watchdog.c -o Build/watchdog.o

Build/GlobalTimer.o: ../../../uTasker/GlobalTimer.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/GlobalTimer.c -o Build/GlobalTimer.o

Build/low_power.o: ../../../uTasker/low_power.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../uTasker/low_power.c -o Build/low_power.o


# uTasker TCP/IP files
#
Build/Ethernet.o: ../../../stack/Ethernet.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/Ethernet.c -o Build/Ethernet.o

Build/arp.o: ../../../stack/arp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/arp.c -o Build/arp.o

Build/dhcp.o: ../../../stack/dhcp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/dhcp.c -o Build/dhcp.o

Build/dns.o: ../../../stack/dns.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/dns.c -o Build/dns.o

Build/ftp.o: ../../../stack/ftp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/ftp.c -o Build/ftp.o

Build/http.o: ../../../stack/http.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/http.c -o Build/http.o

Build/icmp.o: ../../../stack/icmp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/icmp.c -o Build/icmp.o

Build/ip_utils.o: ../../../stack/ip_utils.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/ip_utils.c -o Build/ip_utils.o

Build/ip.o: ../../../stack/ip.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/ip.c -o Build/ip.o

Build/pop3.o: ../../../stack/pop3.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/pop3.c -o Build/pop3.o

Build/smtp.o: ../../../stack/smtp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/smtp.c -o Build/smtp.o

Build/tcp.o: ../../../stack/tcp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/tcp.c -o Build/tcp.o

Build/telnet.o: ../../../stack/telnet.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/telnet.c -o Build/telnet.o

Build/tftp.o: ../../../stack/tftp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/tftp.c -o Build/tftp.o

Build/udp.o: ../../../stack/udp.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/udp.c -o Build/udp.o

Build/webutils.o: ../../../stack/webutils.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/webutils.c -o Build/webutils.o

Build/NetBIOS.o: ../../../stack/NetBIOS.c $(DEPENDS)
		arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 ../../../stack/NetBIOS.c -o Build/NetBIOS.o


# Link
# Create output file and show its size
#
uTaskerV1.3.elf: $(OBJS) uTaskerLPC23XX.ld
	arm-none-eabi-gcc $(C_FLAGS) -I../../uTaskerV1.3 -D _GNU -D _LPC23XX -g -Os -Wl,-Map=uTaskerV1.3.map --no-gc-sections -nostartfiles -TuTaskerLPC23XX.ld -o uTaskerV1.3.elf $(OBJS)
	arm-none-eabi-objcopy --only-section=.data --only-section=.init --only-section=.text --only-section=.rodata --only-section=.vectors --output-target=ihex uTaskerV1.3.elf uTaskerV1.3.hex
	arm-none-eabi-objcopy --only-section=.data --only-section=.init --only-section=.text --only-section=.rodata --only-section=.vectors --output-target=binary uTaskerV1.3.elf uTaskerV1.3.bin
	arm-none-eabi-size   uTaskerV1.3.elf

# *** EOF ***
    
    
