######################################################################
#
#
#
#   Makefile used to build the BSP
######################################################################

# Root directory for netos.
BASEDIR=./../..

NOT_SUPPORTED=.

PLATFORM_BSP_SRC =
PLATFORM_BSP_INC =

#
# Include the parent makefile, the makefile for the bootloader and
# the target for the linker scripts.
#
all: mylocalall

clean: localclean

####################################################
#
#
# Any extra compilier flags or defines go here.
#
CC_OBJ=
MY_DEFINES=
MY_AFLAGS=
MY_CFLAGS=
ifeq ($(TOOLSET), arm)
AES_CFLAGS = -O2
else
AES_CFLAGS = -O0
endif

SPI_BOOTLOADER=DISABLE


-include $(BASEDIR)/Makefile.tools
-include $(BASEDIR)/Makefile.inc

BSP_LIBS = $(NETOS_BSPLIBPATH)/libbsp.a \
            $(NETOS_LIBPATH)/libflash.a \
            $(NETOS_LIBPATH)/libsflash.a \
            $(NETOS_LIBPATH)/libposix.a

# Location of object files.
ifeq ($(DEBUG), on)
OBJS = ./objs/$(ENDIANDIR)/$(TOOLSET)/$(PLATFORM)/dbg
else
OBJS = ./objs/$(ENDIANDIR)/$(TOOLSET)/$(PLATFORM)
endif

DRIVER_PREFIX=./devices
COMMON_DRIVER=$(DRIVER_PREFIX)/common
COMMON_DRIVER_DIR = $(COMMON_DRIVER)/loopback
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/null
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/udpdb
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/nvram
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/module_info
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/newserial
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/newserial/fim
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/sysclock
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/timer
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/ethernet
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/rtc
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/gpio
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/mesh
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/mesh/maxstream
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/xbeeif
COMMON_DRIVER_DIR +=$(COMMON_DRIVER)/spi_touch

COMMON_DRIVER_INC = -I$(COMMON_DRIVER)/newserial
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/newserial/fim
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/ethernet
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/mesh
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/mesh/maxstream
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/xbeeif
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/wifimac/include
COMMON_DRIVER_INC +=-I$(COMMON_DRIVER)/spi_touch
COMMON_DRIVER_INC +=-I./$(BASEDIR)/h/zbs

# net_50_20 drivers directories
NET5020_DRIVER = $(DRIVER_PREFIX)/net_50_20
NET5020_DRIVER_DIR +=$(NET5020_DRIVER)/dma
NET5020_DRIVER_DIR +=$(NET5020_DRIVER)/serial
NET5020_DRIVER_DIR +=$(NET5020_DRIVER)/watchdog
NET5020_DRIVER_DIR +=$(NET5020_DRIVER)/SPI
NET5020_DRIVER_DIR +=$(NET5020_DRIVER)/mmu

NET5020_DRIVER_INC +=-I$(NET5020_DRIVER)/serial
NET5020_DRIVER_INC +=-I$(NET5020_DRIVER)/SPI

# ns7520 drivers
NS7520_DRIVER = $(NET5020_DRIVER)/ns7520
NS7520_DRIVER_DIR = $(NS7520_DRIVER)/gpio

# ns9xxx driver directories
NS9XXX_DRIVER = $(DRIVER_PREFIX)/ns9xxx/common
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/dma
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/i2c
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/i2s
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/i2s/fim
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/lcd
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/mmu
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/pll
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/watchdog
ifeq ($(findstring $(PROCESSOR), "ns9215 ns9210"),)
NS9XXX_DRIVER_DIR +=$(NS9XXX_DRIVER)/processorgpio
endif

NS9XXX_DRIVER_INC +=-I$(NS9XXX_DRIVER)/i2c
NS9XXX_DRIVER_INC +=-I$(NS9XXX_DRIVER)/i2s
NS9XXX_DRIVER_INC +=-I$(NS9XXX_DRIVER)/i2s/fim
NS9XXX_DRIVER_INC +=-I$(NS9XXX_DRIVER)/lcd
NS9XXX_DRIVER_INC +=-I./$(BASEDIR)/h/shared/iop
# NS9XXX_DRIVER_INC +=-I./$(BASEDIR)/h/zbs

# NS9750 driver directories
NS9750_DRIVER = $(DRIVER_PREFIX)/ns9xxx/ns9750
NS9750_DRIVER_DIR = $(NS9750_DRIVER)/gpio
NS9750_DRIVER_DIR +=$(NS9750_DRIVER)/pci
NS9750_DRIVER_DIR +=$(NS9XXX_DRIVER)/serial
NS9750_DRIVER_DIR +=$(NS9XXX_DRIVER)/spislave

NS9750_DRIVER_INC = -I$(NS9750_DRIVER)/gpio
NS9750_DRIVER_INC +=-I$(NS9750_DRIVER)/pci
NS9750_DRIVER_INC +=-I$(NS9XXX_DRIVER)/serial
NS9750_DRIVER_INC +=-I$(NS9XXX_DRIVER)/spislave


# NS9360 driver directories
NS9360_DRIVER = $(DRIVER_PREFIX)/ns9xxx/ns9360
NS9360_DRIVER_DIR = $(NS9360_DRIVER)/gpio
NS9360_DRIVER_DIR +=$(NS9XXX_DRIVER)/serial
NS9360_DRIVER_DIR +=$(NS9XXX_DRIVER)/spislave

NS9360_DRIVER_INC = -I$(NS9360_DRIVER)/gpio
NS9360_DRIVER_INC +=-I$(NS9XXX_DRIVER)/serial
NS9360_DRIVER_DIR +=-I$(NS9XXX_DRIVER)/spislave


# NS9215 and NS9210 driver directories
# The NS9215 and NS9210 are the same chips with
# different pinouts, and so use the same drivers.
NS9215_DRIVER = $(DRIVER_PREFIX)/ns9xxx/ns9215
NS9215_DRIVER_DIR = $(NS9215_DRIVER)/gpio
NS9215_DRIVER_DIR +=$(NS9215_DRIVER)/serial
NS9215_DRIVER_DIR +=$(NS9215_DRIVER)/spislave
NS9215_DRIVER_DIR +=$(NS9215_DRIVER)/aes
NS9215_DRIVER_DIR +=$(NS9215_DRIVER)/scratchpad
NS9215_DRIVER_DIR +=$(NS9215_DRIVER)/comparator

NS9215_DRIVER_INC = -I$(NS9215_DRIVER)/gpio
NS9215_DRIVER_INC +=-I$(NS9215_DRIVER)/serial
NS9215_DRIVER_INC +=-I$(NS9215_DRIVER)/aes
NS9215_DRIVER_INC +=-I$(NS9215_DRIVER)/scratchpad
NS9215_DRIVER_INC +=-I$(NS9215_DRIVER)/comparator



####################################################
# Platform Makefile.bsp

ifeq "$(PLATFORMS_DIR)" ""
PLATFORMS_DIR=$(BASEDIR)/src/bsp/platforms
endif
include $(PLATFORMS_DIR)/$(PLATFORM)/Makefile.files

MY_DEFINES += -DHOSTNAME=\"$(COMPUTERNAME)\"

MY_DEFINES +=

#
# NS9750 Specific
#
ifeq '$(PROCESSOR)' 'ns9750'
# MY_DEFINES += -DNS9750 -DNA_MVA -DBSP_ARM9
MY_DEFINES += -DNA_MVA
MY_AFLAGS +=--defsym BSP_ARM9=1
ifeq '$(SPI_BOOTLOADER)' ''
SPI_BOOTLOADER=ENABLE
endif
endif

#
# NS9360 Specific
#
ifeq '$(PROCESSOR)' 'ns9360'
# MY_DEFINES += -DNS9360 -DBSP_ARM9 -DNA_MVA
MY_DEFINES += -DNA_MVA
MY_AFLAGS +=--defsym BSP_ARM9=1
ifeq '$(SPI_BOOTLOADER)' ''
SPI_BOOTLOADER=ENABLE
endif
endif

#
# NS9215/10 specific
#
ifneq ($(findstring $(PROCESSOR), "ns9215 ns9210"),)
MY_DEFINES += -DNA_MVA
MY_AFLAGS +=--defsym BSP_ARM9=1
ifeq '$(SPI_BOOTLOADER)' ''
SPI_BOOTLOADER=DISABLE
endif
endif

#
# Any extra defines go here
#
MY_DEFINES += -DBSP_PLATFORM=\"$(PLATFORM)\"


#
# Define the manufacture flag to create a Digi
# manufacturing image.
#
ifneq "$(MANUFACTURE)" ""
MY_DEFINES += -DFOR_DIGI_MANUFACTURING
endif


#
# Setup the search paths.
#
SRCDIR += ./
SRCDIR +=./common
SRCDIR +=./init/$(CPU)
SRCDIR +=./profiler
SRCDIR +=./devices
SRCDIR +=./cli/src
SRCDIR +=./idigi
SRCDIR +=$(COMMON_DRIVER_DIR)
SRCDIR +=./fsintf

ifeq ($(TOOLSET), arm)
SRCDIR +=./../../armsrc
endif

ifeq '$(CPU)' 'arm7'
SRCDIR +=$(NET5020_DRIVER_DIR)
endif
ifeq '$(CPU)' 'arm9'
SRCDIR +=$(NS9XXX_DRIVER_DIR)
endif
ifeq '$(PROCESSOR)' 'net50'
SRCDIR +=$(NET50_DRIVER_DIR)
endif
ifeq '$(PROCESSOR)' 'ns7520'
SRCDIR +=$(NS7520_DRIVER_DIR)
endif
ifeq '$(PROCESSOR)' 'ns9750'
SRCDIR +=$(NS9750_DRIVER_DIR)
endif
ifeq '$(PROCESSOR)' 'ns9360'
SRCDIR +=$(NS9360_DRIVER_DIR)
endif

# The NS9215 and NS9210 are the same chip with
# different pinouts, and so use the same drivers.
ifeq '$(PROCESSOR)' 'ns9215'
SRCDIR +=$(NS9215_DRIVER_DIR)
endif
ifeq '$(PROCESSOR)' 'ns9210'
SRCDIR +=$(NS9215_DRIVER_DIR)
endif

ifneq "$(PLATFORM_SRC)" ""
SRCDIR += $(PLATFORM_SRC)
else
SRCDIR +=./platforms/$(PLATFORM)
endif

ifneq "$(PLATFORM_BSP_SRC)" ""
SRCDIR += $(PLATFORM_BSP_SRC)
endif

# Add common customize directory after platform source
SRCDIR +=./customize

#
# Search path for source header files, specific to this library
#
INCDIRS += -I./h
INCDIRS += -I./../../h/arm9
INCDIRS += -I./../../h/fatfs
INCDIRS += -I./../../h
INCDIRS += -I./../../h/idigi
INCDIRS += -I./../../h/ldap3
INCDIRS += -I./../../h/fs_intf
INCDIRS += -I./../../h/rphttpd
INCDIRS += -I./../rphttpd
INCDIRS += -I./init/$(CPU)
INCDIRS += -I./$(BASEDIR)/h/snmp -I./$(BASEDIR)/h/$(CPU)
INCDIRS += -I./cli/includes
INCDIRS += $(COMMON_DRIVER_INC)
ifeq '$(CPU)' 'arm7'
INCDIRS +=$(NET5020_DRIVER_INC)
endif
ifeq '$(CPU)' 'arm9'
INCDIRS +=$(NS9XXX_DRIVER_INC)
INCDIRS +=-I./../../h/usb_dev
endif
ifeq '$(PROCESSOR)' 'ns9750'
INCDIRS +=$(NS9750_DRIVER_INC)
endif
ifeq '$(PROCESSOR)' 'ns9360'
INCDIRS +=$(NS9360_DRIVER_INC)
endif

# The NS9215 and NS9210 are the same chip with
# different pinouts, and so use the same drivers.
ifeq '$(PROCESSOR)' 'ns9215'
INCDIRS +=$(NS9215_DRIVER_INC)
endif
ifeq '$(PROCESSOR)' 'ns9210'
INCDIRS +=$(NS9215_DRIVER_INC)
endif


# Inlcude the treck directory
INCDIRS +=-I./$(BASEDIR)/src/treck/include
INCDIRS +=-I./$(BASEDIR)/src/treck/source/ossupport/netos
INCDIRS +=-I./$(BASEDIR)/src/treck/source/ossupport

INCDIRS += -I./$(BASEDIR)/h/wpa -I./$(BASEDIR)/h/wln -I./$(BASEDIR)/h/wps -I./$(BASEDIR)/h/module_info

# ifneq "$(PLATFORM_INC)" ""
# INCDIRS += $(PLATFORM_INC)
# else
# INCDIRS +=./platforms/$(PLATFORM)
# endif

ifneq "$(PLATFORM_BSP_INC)" ""
INCDIRS += $(PLATFORM_BSP_INC)
endif

# Add common customize directory after platform include
INCDIRS += -I./customize

# Add yaffs include directories
INCDIRS += -I$(BASEDIR)/h/yaffs/netos -I$(BASEDIR)/h/yaffs/include \
	   -I$(BASEDIR)/h/yaffs
MY_CFLAGS += -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM \
             -DCONFIG_YAFFS_YAFFS2 -DCONFIG_YAFFS_PROVIDE_DEFS -DNO_Y_INLINE

#
# The name and path of the library to be built.
#
#
# The name and path of the library to be built.
#
LOCAL_LIB_DIR = $(BASEDIR)/$(LIBDIR)/bsp/$(PLATFORM)
COMMON_OBJS_DIR = $(BASEDIR)/$(LIBDIR)
ifeq ($(DEBUG), on)
LOCAL_LIB_BSP = $(LOCAL_LIB_DIR)/libbspdbg.a
else
LOCAL_LIB_BSP = $(LOCAL_LIB_DIR)/libbsp.a
endif

ALWAYS_DELETE_THESE_FILES=$(OBJS)/bsp_api.o

#
# List of C object files for this library.
#
COMMON_OBJ= \
    $(OBJS)/platformCode.o\
    $(OBJS)/txmonitor.o\
    $(OBJS)/ssh_cli.o\
    $(OBJS)/debuggercmds.o\
    $(OBJS)/flashparts.o\
    $(OBJS)/timer.o\
    $(OBJS)/rtc_api.o\
    $(OBJS)/rtc.o\
    $(OBJS)/timerSemaphore.o\
    $(OBJS)/udpdb.o\
    $(OBJS)/bsp.o\
    $(OBJS)/bsp_api.o\
    $(OBJS)/bsproot.o\
    $(OBJS)/bele.o\
    $(OBJS)/nainet.o\
    $(OBJS)/main.o\
    $(OBJS)/nasecurity.o\
    $(OBJS)/dbprintf.o\
    $(OBJS)/decompress.o\
    $(OBJS)/lzss1.o\
    $(OBJS)/lzss2.o\
    $(OBJS)/errhndlr.o\
    $(OBJS)/starttcp.o\
    $(OBJS)/bsptimer.o\
    $(OBJS)/narmbrd.o\
    $(OBJS)/narmled.o\
    $(OBJS)/devices.o\
    $(OBJS)/sysClock.o\
    $(OBJS)/narmnvrm.o\
    $(OBJS)/flashnvrm.o\
    $(OBJS)/flashbackupnvram.o\
    $(OBJS)/sflashnvrm.o\
    $(OBJS)/nami.o\
    $(OBJS)/sysAccess.o\
    $(OBJS)/seeprom.o\
    $(OBJS)/nandnvram.o\
    $(OBJS)/lpbkdev.o\
    $(OBJS)/nuldev.o\
    $(OBJS)/ll_mod.o\
    $(OBJS)/NCC_INIT.o\
    $(OBJS)/ncc_post.o\
    $(OBJS)/profilerAPI.o\
    $(OBJS)/naip_global.o\
    $(OBJS)/naifconfig.o\
    $(OBJS)/gpio.o\
    $(OBJS)/cs.o\
    $(OBJS)/customizeButtons.o\
    $(OBJS)/customizeReset.o\
    $(OBJS)/customizeLed.o\
    $(OBJS)/customizeClk.o\
    $(OBJS)/customizeDhcpv4.o\
    $(OBJS)/customizeDhcpv6.o\
    $(OBJS)/boardParams.o\
    $(OBJS)/customizeParams.o\
    $(OBJS)/dialog.o\
    $(OBJS)/nawait.o\
    $(OBJS)/flashutil.o\
    $(OBJS)/nareset.o\
    $(OBJS)/eth_reset.o\
    $(OBJS)/eth_clock.o\
    $(OBJS)/eth_interrupt.o\
    $(OBJS)/MII.o\
    $(OBJS)/blmain.o\
    $(OBJS)/customizeBootloader.o\
    $(OBJS)/blerror.o\
    $(OBJS)/simpleserial.o\
    $(OBJS)/xmodem.o\
    $(OBJS)/startfilesystem.o\
    $(OBJS)/yaffscfg2k.o\
    $(OBJS)/nvram_uboot.o\
    $(OBJS)/termios.o \
    $(OBJS)/event_handler.o \
    $(OBJS)/serial_help.o \
    $(OBJS)/watchdog.o \
    $(OBJS)/nagpio.o \
    $(OBJS)/gpioplatform.o \
    $(OBJS)/wlnCountries.o\
    $(OBJS)/nafs_intf.o \
    $(OBJS)/clib_fs_intf.o \
    $(OBJS)/cli.o \
    $(OBJS)/cli_eng.o \
    $(OBJS)/cli_parse.o \
    $(OBJS)/cli_trace.o \
    $(OBJS)/cli_ifconfig.o \
    $(OBJS)/cli_netstat.o \
    $(OBJS)/cli_arp.o \
    $(OBJS)/cli_route.o \
    $(OBJS)/cli_threadlist.o \
    $(OBJS)/cli_yaffs.o \
    $(OBJS)/cli_quad.o \
    $(OBJS)/cli_sdio.o \
    $(OBJS)/cli_ewb.o \
    $(OBJS)/cli_wln.o \
    $(OBJS)/cliwireless.o \
    $(OBJS)/iptostr.o \
    $(OBJS)/ping.o \
    $(OBJS)/cli_ping.o \
    $(OBJS)/trace.o \
    $(OBJS)/cliapi.o \
    $(OBJS)/resource.o \
    $(OBJS)/cli_zigbee.o \
    $(OBJS)/cli_flash.o \
    $(OBJS)/StringHelper.o\
    $(OBJS)/stringUtil.o\
    $(OBJS)/iamParams.o\
    $(OBJS)/iamCallbacks.o\
    $(OBJS)/ms_command.o\
    $(OBJS)/ms_data.o\
    $(OBJS)/ms_ddo.o\
    $(OBJS)/ms_nodelist.o\
    $(OBJS)/ms_serial.o\
    $(OBJS)/ms_zdo.o\
    $(OBJS)/ms_update.o\
    $(OBJS)/zb_api.o\
    $(OBJS)/zb_callback.o\
    $(OBJS)/ZigBeeSettings.o\
    $(OBJS)/ZigBeeDDOSettings.o\
    $(OBJS)/ZigBeeDDOState.o\
    $(OBJS)/ZigBeeSocketsStats.o\
    $(OBJS)/PropertySet.o\
    $(OBJS)/Errors.o\
    $(OBJS)/ftpfile.o\
    $(OBJS)/ftpsvrfs.o\
    $(OBJS)/fwdl.o\
    $(OBJS)/idigi_load.o \
    $(OBJS)/idigi_conf_api.o \
    $(OBJS)/rci_interface.o \
    $(OBJS)/rci_eth_iface.o \
    $(OBJS)/rci_wln_iface.o \
    $(OBJS)/mailfile.o\
    $(OBJS)/xbee_api.o

ifneq "$(MANUFACTURE)" ""
COMMON_OBJ += $(OBJS)/manufacture.o
endif


# 9750 and 9360 objects
ifeq '$(CPU)' 'arm9'
CPU_OBJ = $(OBJS)/customizeCache.o\
    $(OBJS)/mmu_util.o\
    $(OBJS)/powersave.o\
   	$(OBJS)/catnap.o\
    $(OBJS)/timer.o\
    $(OBJS)/mc_isr.o\
    $(OBJS)/isr_api.o\
    $(OBJS)/mcpll.o\
    $(OBJS)/noncache.o\
    $(OBJS)/spi_blmain.o\
    $(OBJS)/i2c_driver.o\
    $(OBJS)/i2c_api.o\
    $(OBJS)/i2c_eeprom.o \
    $(OBJS)/processorgpio.o \
    $(OBJS)/i2c_gpio.o \
    $(OBJS)/memtest.o \
    $(OBJS)/fatfs_intf.o
endif

# 7520 objects
ifeq '$(CPU)' 'arm7'
CPU_OBJ = $(OBJS)/NA_ISR.o\
    $(OBJS)/noncache.o\
    $(OBJS)/processorgpio.o
endif

ifneq ($(findstring $(PROCESSOR), ns9750),)
CPU_OBJ += $(OBJS)/pci.o\
    $(OBJS)/pciopen.o\
    $(OBJS)/pciioctl.o\
    $(OBJS)/pciread.o\
    $(OBJS)/pciwrite.o\
    $(OBJS)/pciclose.o\
    $(OBJS)/pciint.o\
    $(OBJS)/pciinit.o\
    $(OBJS)/pciboot.o\
    $(OBJS)/pciutil.o\
    $(OBJS)/lcd_init.o\
    $(OBJS)/dma_api.o\
    $(OBJS)/dma_mod.o\
    $(OBJS)/dma_q.o\
    $(OBJS)/dma_fifo.o\
    $(OBJS)/usb_start.o\
    $(OBJS)/usb_togglegpio.o\
    $(OBJS)/mercury_serl.o \
    $(OBJS)/spi_slave.o \
    $(OBJS)/wcn_ufd.o \
    $(OBJS)/customizeLcdGpio.o

endif

ifneq ($(findstring $(PROCESSOR), ns9360),)
CPU_OBJ += $(OBJS)/lcd_init.o\
    $(OBJS)/usb_start.o\
    $(OBJS)/usb_togglegpio.o\
    $(OBJS)/dma_api.o\
    $(OBJS)/dma_mod.o\
    $(OBJS)/dma_q.o\
    $(OBJS)/dma_fifo.o\
    $(OBJS)/mercury_serl.o \
    $(OBJS)/spi_slave.o \
    $(OBJS)/wcn_ufd.o \
    $(OBJS)/customizeLcdGpio.o

endif


ifneq ($(findstring $(PROCESSOR), "ns9215 ns9210"),)
CPU_OBJ +=  $(OBJS)/camry_serl.o\
            $(OBJS)/spi_slave.o\
            $(OBJS)/i2c_driver.o\
            $(OBJS)/i2c_api.o\
            $(OBJS)/i2c_eeprom.o \
            $(OBJS)/processorgpio.o \
            $(OBJS)/i2c_gpio.o \
            $(OBJS)/bbnvram_ns9215.o \
            $(OBJS)/scratchpadwrap.o \
            $(OBJS)/comp_ns9215.o \
            $(OBJS)/comparatorwrap.o \
			$(OBJS)/fim_uart.o \
			$(OBJS)/iop_serial.o \
			$(OBJS)/serialgpio.o \
			$(OBJS)/fim_i2s.o \
			$(OBJS)/i2s_api.o
endif



ifneq ($(findstring $(PROCESSOR), ns7520),)
CPU_OBJ += $(OBJS)/ether_crc32.o
endif

C_OBJ = $(COMMON_OBJ) $(CPU_OBJ) $(PLATFORM_BSP_OBJ)

#
# List of assembly object files.
#
ifeq ($(TOOLSET), arm)
ifeq '$(CPU)' 'arm9'
S_COMMON_OBJ=$(OBJS)/crc32h.o\
    $(OBJS)/profiler.o\
    $(OBJS)/na_init.o\
    $(OBJS)/INIT.o\
    $(OBJS)/irqhand.o\
    $(OBJS)/armutils.o\
    $(OBJS)/cksum.o\
    $(OBJS)/IRQREG.o\
    $(OBJS)/getOwner.o\
    $(OBJS)/nainvalidate.o \
    $(OBJS)/nammu.o \
    $(OBJS)/addpconf_api.o \
    $(OBJS)/timefn.o
else
S_COMMON_OBJ=$(OBJS)/crc32h.o\
    $(OBJS)/profiler.o\
    $(OBJS)/na_init.o\
    $(OBJS)/INIT.o\
    $(OBJS)/IRQHAND.o\
    $(OBJS)/cksum.o\
    $(OBJS)/IRQREG.o\
    $(OBJS)/getOwner.o\
    $(OBJS)/nainvalidate.o \
    $(OBJS)/nammu.o \
    $(OBJS)/addpconf_api.o
endif
else
S_COMMON_OBJ=$(OBJS)/crc32h.o\
    $(OBJS)/profiler.o\
    $(OBJS)/na_init.o\
    $(OBJS)/INIT.o\
    $(OBJS)/IRQHAND.o\
    $(OBJS)/armutils.o\
    $(OBJS)/cksum.o\
    $(OBJS)/runcksum.o\
    $(OBJS)/IRQREG.o\
    $(OBJS)/getOwner.o\
    $(OBJS)/nainvalidate.o \
    $(OBJS)/nammu.o \
    $(OBJS)/addpconf_api.o
endif

ifeq '$(CPU)' 'arm9'
S_CPU_OBJ=$(OBJS)/mmu.o\
    $(OBJS)/icache.o\
    $(OBJS)/cache.o\
    $(OBJS)/post_isr.o\
    $(OBJS)/ttb.o\
    $(OBJS)/blExe.o\
    $(OBJS)/nainvalidate.o \
    $(OBJS)/nainv.o \
    $(OBJS)/nammu.o
endif

ifeq '$(CPU)' 'arm7'
S_CPU_OBJ=$(OBJS)/blExe.o \
    $(OBJS)/settings.o
endif

ifeq "$(PROFILER)" "1"
CROSS_DEFS	+= -DSTATISTICAL_PROFILER
endif

S_OBJ = $(S_COMMON_OBJ) $(S_CPU_OBJ) $(PLATFORM_BSP_S_OBJ)

#
# Any extra compilier flags or defines go here.
# minimize the BSP for size.
ifeq "$(NETOS_OPT)" ""
ifneq ($(TOOLSET), arm)
MY_CFLAGS   += -Os -fms-extensions
endif
endif

ifneq ($(TOOLSET), arm)
ifeq "$(NETOS_WARNINGS)" ""
MY_CFLAGS += 
endif
endif

ifeq ($(TOOLSET), arm)
MY_AFLAGS +=-D__GNU__=1 -DNET_OS=1 -DNET_WORKS=1 -D_POSIX_SOURCE=1
else
MY_AFLAGS +=--defsym __GNU__=1 --defsym NET_OS=1 --defsym NET_WORKS=1 --defsym _POSIX_SOURCE=1
endif

MY_DEFINES += -DNET_OS_SPECIFIC

ifeq '$(TOOLSET)' 'gnu'
#    MY_DEFINES += -DNETOS_GNU_TOOLS
    MY_AFLAGS += --defsym NETOS_GNU_TOOLS=1
endif

INIT_SOURCE=./init/$(CPU)

################################
# Linker script definitions
# Get all ldr script files
#

# ROM & RAM script files
LS_IMAGE_SOURCE =$(INIT_SOURCE)/image.ldr
LS_ROM_SOURCE   =$(INIT_SOURCE)/rom.ldr
# LS_HTTP_IMAGE_SOURCE =$(INIT_SOURCE)/httpImage.ldr
# LS_HTTP_ROM_SOURCE   =$(INIT_SOURCE)/httpRom.ldr

LS_BLRAM_SOURCE    =$(INIT_SOURCE)/blram.ldr
LS_BLROM_SOURCE    =$(INIT_SOURCE)/blrom.ldr

# LS_APP_CONFIG_SOURCE =$(PLATFORMS_DIR)/$(PLATFORM)/bootldr.dat
# LS_BL_CONFIG_SOURCE  =$(PLATFORMS_DIR)/$(PLATFORM)/blbootldr.dat


LS_IMAGE_CMD      =$(PLATFORMS_DIR)/$(PLATFORM)/image.ld
LS_ROM_CMD        =$(PLATFORMS_DIR)/$(PLATFORM)/rom.ld

LS_TARGETS=$(LS_IMAGE_CMD) $(LS_ROM_CMD)

LS_LINK_CUSTOMIZE=$(PLATFORMS_DIR)/$(PLATFORM)/customize.ldr

LS_BLRAM      =./bootloader/ramImage/blram.ldr
LS_BLROM      =./bootloader/romImage/blrom.ldr
# LS_APP_CONFIG =./bootloader/ramImage/bootldr.dat
# LS_BL_CONFIG  =./bootloader/ramImage/blbootldr.ldr

# LS_TARGETS += $(LS_APP_CONFIG)

ifneq ($(DEBUG), on)
# LS_TARGETS += $(LS_BL_CONFIG) $(LS_BLRAM) $(LS_BLROM)
LS_TARGETS += $(LS_BLRAM) $(LS_BLROM)
endif

# SPI ROM & RAM script files
ifeq '$(SPI_BOOTLOADER)' 'ENABLE'

LS_SPIBLRAM_SOURCE =$(INIT_SOURCE)/spi_blram.ldr
LS_SPIBLROM_SOURCE =$(INIT_SOURCE)/spi_blrom.ldr
# LS_SPIAPP_CONFIG_SOURCE =$(PLATFORMS_DIR)/$(PLATFORM)/spi_bootldr.dat
# LS_SPIBL_CONFIG_SOURCE  =$(PLATFORMS_DIR)/$(PLATFORM)/spi_blbootldr.dat

# LS_SPIAPP_CONFIG =./bootloader/spiBootRamImage/spi_bootldr.dat
# LS_SPIBL_CONFIG  =./bootloader/spiBootRamImage/spi_blbootldr.dat

LS_SPIBLRAM=./bootloader/spiBootRamImage/spi_blram.ldr
LS_SPIBLROM=./bootloader/spiBootRomImage/spi_blrom.ldr

# LS_TARGETS+=$(LS_SPIAPP_CONFIG)

ifneq ($(DEBUG), on)
# LS_TARGETS+=$(LS_SPIBL_CONFIG) $(LS_SPIBLRAM) $(LS_SPIBLROM)
LS_TARGETS+=$(LS_SPIBLRAM) $(LS_SPIBLROM)
endif

endif

#################################
# Rules for generating linker scripts
#
GENERIC_BIN = /bin
LS_CPP = $(GENERIC_BIN)/cpp $(PLATFORM_INC) -P -C

$(LS_IMAGE_CMD): $(LS_IMAGE_SOURCE) $(LS_LINK_CUSTOMIZE)
	$(LS_CPP) $(LS_IMAGE_SOURCE) $(LS_IMAGE_CMD)

$(LS_ROM_CMD): $(LS_ROM_SOURCE) $(LS_LINK_CUSTOMIZE)
	$(LS_CPP) $(LS_ROM_SOURCE) $(LS_ROM_CMD)

# $(LS_HTTP_IMAGE_CMD): $(LS_HTTP_IMAGE_SOURCE) $(LS_LINK_CUSTOMIZE)
# 	$(LS_CPP) $(LS_HTTP_IMAGE_SOURCE) $(LS_HTTP_IMAGE_CMD)

# $(LS_HTTP_ROM_CMD): $(LS_HTTP_ROM_SOURCE) $(LS_LINK_CUSTOMIZE)
# 	$(LS_CPP) $(LS_HTTP_ROM_SOURCE) $(LS_HTTP_ROM_CMD)

# $(LS_APP_CONFIG): $(LS_APP_CONFIG_SOURCE)
# 	cp -f $(LS_APP_CONFIG_SOURCE) $(LS_APP_CONFIG)

# $(LS_BL_CONFIG): $(LS_BL_CONFIG_SOURCE)
# 	cp -f $(LS_BL_CONFIG_SOURCE) $(LS_BL_CONFIG)

$(LS_BLRAM): $(LS_BLRAM_SOURCE)
	cp -f $(LS_BLRAM_SOURCE) $(LS_BLRAM)

$(LS_BLROM): $(LS_BLROM_SOURCE)
	cp -f $(LS_BLROM_SOURCE) $(LS_BLROM)

ifeq '$(SPI_BOOTLOADER)' 'ENABLE'
# $(LS_SPIAPP_CONFIG): $(LS_SPIAPP_CONFIG_SOURCE)
# 	cp -f $(LS_SPIAPP_CONFIG_SOURCE) $(LS_SPIAPP_CONFIG)
# 
# $(LS_SPIBL_CONFIG): $(LS_SPIBL_CONFIG_SOURCE)
# 	cp -f $(LS_SPIBL_CONFIG_SOURCE) $(LS_SPIBL_CONFIG)

$(LS_SPIBLRAM): $(LS_SPIBLRAM_SOURCE)
	cp -f $(LS_SPIBLRAM_SOURCE) $(LS_SPIBLRAM)

$(LS_SPIBLROM): $(LS_SPIBLROM_SOURCE)
	cp -f $(LS_SPIBLROM_SOURCE) $(LS_SPIBLROM)
endif


#if you need just object files then add them here
ifeq ($(TOOLSET), arm)
LOCAL_OBJ_FILES =$(LOCAL_LIB_DIR)/reset.o
LOCAL_OBJ_FILES += $(LOCAL_LIB_DIR)/retarget.o
else
LOCAL_OBJ_FILES = $(COMMON_OBJS_DIR)/memcpy.o
LOCAL_OBJ_FILES +=$(LOCAL_LIB_DIR)/reset.o
endif



ifneq ($(TOOLSET), arm)
$(LOCAL_LIB_DIR)/%.o: %.s
	$(AS) $(INCDIRS) $(ASFLAGS) $(MY_AFLAGS) $< -o $@

$(LOCAL_LIB_DIR)/%.o: %.S
	$(AS) $(INCDIRS) $(ASFLAGS) $(MY_AFLAGS) $< -o $@

# .arm files are preprocessed by the C compilier
$(LOCAL_LIB_DIR)/%.o : %.arm
	$(CC) -c $(CFLAGS) $(CC_ARM_FLAGS) $(INCDIRS) $< -o $@

$(COMMON_OBJS_DIR)/%.o: %.s
	$(AS) $(INCDIRS) $(ASFLAGS) $(MY_AFLAGS) $< -o $@

$(COMMON_OBJS_DIR)/%.o: %.S
	$(AS) $(INCDIRS) $(ASFLAGS) $(MY_AFLAGS) $< -o $@

# .arm files are preprocessed by the C compilier
$(COMMON_OBJS_DIR)/%.o : %.arm
	$(CC) -c $(CFLAGS) $(CC_ARM_FLAGS) $(INCDIRS) $< -o $@
endif

$(LOCAL_LIB_DIR)/%.o : %.cxx
	$(CC) -c $(CXXFLAGS) $(CC_ARM_FLAGS) $(INCDIRS) $< -o $@

$(LOCAL_LIB_DIR)/%.o : %.cc
	$(CC) -c $(CPPLFLAGS) $(CC_ARM_FLAGS) $(INCDIRS) $< -o $@

mylocalobj: $(LOCAL_OBJ_FILES) Makefile $(BASEDIR)/Makefile.inc $(PLATFORMS_DIR)/$(PLATFORM)/Makefile.bsp Makefile.bootloader

# mylocalall: del $(LOCAL_LIB_DIR) mylocalobj $(LS_TARGETS)

del:
#ifneq ($(findstring $(PLATFORM),connectwime connectwiem connectcorewi9c_a connectwisp),)
#ifeq '$(WIRELESS_PLATFORM)' 'TRUE'
#	--rm -f $(COMMON_DRIVER)/wifimac/settings.cc
#endif


#ifneq ($(findstring $(PLATFORM),connectwime connectwiem connectcorewi9c_a connectwisp),)
ifeq '$(WIRELESS_PLATFORM)' 'TRUE'
mylocalall: del $(LOCAL_LIB_DIR) localall mylocalobj $(LS_TARGETS)
else
mylocalall: $(LOCAL_LIB_DIR) localall mylocalobj $(LS_TARGETS)
endif

ifneq ($(DEBUG), on)
ifneq ($(BUILD_BOOTLOADER), FALSE)
	make -f Makefile.bootloader all PLATFORM="$(PLATFORM)" ENDIAN="$(ENDIAN)" CPU="$(CPU)" TOOLSET="$(TOOLSET)" LS_TARGETS="$(LS_TARGETS)" CPU_FLAG="$(CPU_FLAG)" SPI_BOOTLOADER="$(SPI_BOOTLOADER)" BOARD_TYPE="$(BOARD_TYPE)"
endif
endif


$(LOCAL_LIB_DIR):
	mkdir -p $(LOCAL_LIB_DIR)

#This is called to clean things up.
localclean:
ifeq ($(TOOLSET), arm)
	rm -f $(OBJS)/*.o $(OBJS)/*.s $(OBJS)/*.s1 $(OBJS)/*.cpy $(OBJS)/*.d
else
	rm -f $(OBJS)/*.o $(OBJS)/*.d
endif
	rm -f $(LS_TARGETS)
	rm -f $(LS_DIRECTORY)/*.ld
	make -f Makefile.bootloader localclean PLATFORM="$(PLATFORM)" ENDIAN="$(ENDIAN)" CPU="$(CPU)" TOOLSET="$(TOOLSET)" LS_TARGETS="$(LS_TARGETS)" CPU_FLAG="$(CPU_FLAG)" SPI_BOOTLOADER="$(SPI_BOOTLOADER)" BOARD_TYPE="$(BOARD_TYPE)"

component_clobber: clean_my_libs

-include $(BASEDIR)/Makefile.bld

