#############################################################################
##                                    NOTICE                               ##
##                                                                         ##
##            COPYRIGHT MARVELL INTERNATIONAL LTD. AND ITS AFFILIATES      ##
##                             ALL RIGHTS RESERVED                         ##
##                                                                         ##
##    The source code for this computer program is  CONFIDENTIAL  and a    ##
##    TRADE SECRET of MARVELL  INTERNATIONAL  LTD. AND  ITS  AFFILIATES    ##
##    ('MARVELL'). The receipt or possession of  this  program does not    ##
##    convey any rights to  reproduce or  disclose  its contents, or to    ##
##    manufacture,  use, or  sell  anything  that it  may  describe, in    ##
##    whole or in part, without the specific written consent of MARVELL.   ##
##    Any  reproduction  or  distribution  of this  program without the    ##
##    express written consent of MARVELL is a violation of the copyright   ##
##    laws and may subject you to criminal prosecution.                    ##
##                                                                         ##
#############################################################################

#############################################################################
##
## GNU makefile for chip/bg2cdp_z1/diag Makefile
##
#############################################################################

## declare pseudotargets so there's no misunderstandings
.PHONY: all clean init
##

#
# names and directories
#
CHIP_NAME = bg2cdp_z1
CHIP_DIR  = $(shell readlink -f .)
#CHIP_DIR=board/bg2cdp_z1
BOARD_DIR = $(CHIP_DIR)/dongle
PROJ_DIR ?= $(CHIP_DIR)

AVPLL   = dongle/AVPLL
DHUB    = dongle/DHUB

OUT_DIR ?= out_$(CHIP_NAME)
TMP_DIR ?= .tmp_$(CHIP_NAME)
#OBJ_DIR = $(TMP_DIR)/$(CHIP_NAME)
OBJ_DIR = $(TMP_DIR)

TARGET = $(OUT_DIR)/lib$(CHIP_NAME).a

#
# selections/options
#
USE_BCM_CMD_ARRAY=1
SUPPORT_SHOWLOGO = 1


#
# source files and flags
#
#Source = fastlogo.c cdp_pin_init.c gicDiag.c irqHandler.S list_speed.c
Source = cdp_pin_init.c gicDiag.c irqHandler.S list_speed.c

CFLAGS += -I$(CHIP_DIR)/../../include/Firmware_Berlin_BG2CDP
CFLAGS += -I$(PROJ_DIR)
CFLAGS += -I$(CHIP_DIR)
CFLAGS += -I$(BOARD_DIR)
CFLAGS += -I$(AVPLL)/include
CFLAGS += -I$(DHUB)/include

ifeq ($(USE_BCM_CMD_ARRAY),0)
THINVPP = dongle/THINVPP
CFLAGS += -I$(THINVPP)/include
CFLAGS += -I$(THINVPP)/source/include
CFLAGS += -I$(THINVPP)/source/MISC/include
CFLAGS += -I$(THINVPP)/source/FE/include
CFLAGS += -I$(THINVPP)/source/SCL/include
CFLAGS += -I$(THINVPP)/source/CPCB/include
CFLAGS += -I$(THINVPP)/source/BE/include

Source += $(wildcard $(THINVPP)/source/*.c)
Source += $(wildcard $(THINVPP)/source/MISC/source/*.c)
Source += $(wildcard $(THINVPP)/source/FE/source/*.c)
Source += $(wildcard $(THINVPP)/source/SCL/source/*.c)
Source += $(wildcard $(THINVPP)/source/CPCB/source/*.c)
Source += $(wildcard $(THINVPP)/source/BE/source/*.c)
else
FASTLOGO = dongle/FASTLOGO
CFLAGS += -I$(FASTLOGO)
Source += $(wildcard $(FASTLOGO)/*.c)
endif
Source += $(wildcard $(AVPLL)/source/*.c)
Source += $(wildcard $(DHUB)/source/*.c)

CFLAGS += -DBOOTLOADER_FASTLOGO=1 -DLOGO_ENABLE_MAIN=1
CFLAGS += -DBOOTLOADER_SHOWLOGO=1
CFLAGS += -DUSE_BCM_CMD_ARRAY=$(USE_BCM_CMD_ARRAY)
#CFLAGS += -DPRINT_VPP_RW=1

#
# objects
#

#Object := $(patsubst %.S,%.o,$(Source))
#Object := $(patsubst %.c,%.o,$(Object))
#Object := $(subst $(CMN_DIR)/,,$(Object))
Object := $(Source)
Object := $(patsubst %.c,$(OBJ_DIR)/%.o,$(Object))
Object := $(patsubst %.S,$(OBJ_DIR)/%.o,$(Object))

#
# Include the make variables (CC, etc...)
#
#GCCINCDIR	= $(shell $(CC) -print-file-name=include)
#PLATFORM_LIBS	= -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc

#
# Common rule
#
$(OBJ_DIR)/%.o: %.S
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

$(OBJ_DIR)/%.o: %.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

#
# targets
#
all:	init $(TARGET)
	#################################
	##### BOOT_TYPE=$(BOOT_TYPE)
	##### TARGET: $(TARGET)
	#################################

init:
	#########################
	##### CHIP_DIR: $(CHIP_DIR)
	##### Source: $(Source)
	##### Object: $(Object)
	#########################
	mkdir -p $(OBJ_DIR)
	mkdir -p $(OUT_DIR)
ifeq ($(USE_BCM_CMD_ARRAY),0)
	mkdir -p $(TMP_DIR)/$(THINVPP)/source
	mkdir -p $(TMP_DIR)/$(THINVPP)/source/FE/source
	mkdir -p $(TMP_DIR)/$(THINVPP)/source/SCL/source
	mkdir -p $(TMP_DIR)/$(THINVPP)/source/CPCB/source
	mkdir -p $(TMP_DIR)/$(THINVPP)/source/BE/source
	mkdir -p $(TMP_DIR)/$(THINVPP)/source/MISC/source
else
	mkdir -p $(TMP_DIR)/$(FASTLOGO)
endif
	mkdir -p $(TMP_DIR)/$(AVPLL)/source
	mkdir -p $(TMP_DIR)/$(DHUB)/source

.PHONY: clean
clean:
	@rm -rf .tmp_*
	@rm -rf out_*

$(TARGET):  $(Object)
	$(AR) rcs $@ $(Object)
