
#;/*******************************************************************************
#;Copyright (C) Marvell International Ltd. and its affiliates
#;
#;This software file (the "File") is owned and distributed by Marvell
#;International Ltd. and/or its affiliates ("Marvell") under the following
#;alternative licensing terms.  Once you have made an election to distribute the
#;File under one of the following license alternatives, please (i) delete this
#;introductory statement regarding license alternatives, (ii) delete the two
#;license alternatives that you have not elected to use and (iii) preserve the
#;Marvell copyright notice above.
#;
#;********************************************************************************
#;Marvell Commercial License Option
#;
#;If you received this File from Marvell and you have entered into a commercial
#;license agreement (a "Commercial License") with Marvell, the File is licensed
#;to you under the terms of the applicable Commercial License.
#;
#;********************************************************************************
#;Marvell GPL License Option
#;
#;If you received this File from Marvell, you may opt to use, redistribute and/or
#;modify this File in accordance with the terms and conditions of the General
#;Public License Version 2, June 1991 (the "GPL License"), a copy of which is
#;available along with the File in the license.txt file or by writing to the Free
#;Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
#;on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
#;
#;THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
#;WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
#;DISCLAIMED.  The GPL License provides additional details about this warranty
#;disclaimer.
#;********************************************************************************
#;Marvell BSD License Option
#;
#;If you received this File from Marvell, you may opt to use, redistribute and/or
#;modify this File under the following licensing terms.
#;Redistribution and use in source and binary forms, with or without modification,
#;are permitted provided that the following conditions are met:
#;
#;   *   Redistributions of source code must retain the above copyright notice,
#;	    this list of conditions and the following disclaimer.
#;
#;    *   Redistributions in binary form must reproduce the above copyright
#;        notice, this list of conditions and the following disclaimer in the
#;        documentation and/or other materials provided with the distribution.
#;
#;    ;*   Neither the name of Marvell nor the names of its contributors may be
#;        used to endorse or promote products derived from this software without
#;        specific prior written permission.
#;
#;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#;ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#;WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#;DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
#;ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
#;(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
#;ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#;(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
#;SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#;
#;*******************************************************************************/
#.SECONDARY:

include ../base.mk

BOARDFLAG = $(filter -DCONFIG_%, $(CFLAGS))

TGT = plat.a
TGT_UART = plat.uart.a
TGT_DEBUG = plat.debug.a

DRV = drivers
UTILS = utils
SYS_ENV = sysEnv/$(BOARD)
BIN_HDR_DEBUG = $(UTILS)/debug

CSRC_DRV = $(DRV)/mv_uart.c $(DRV)/mv_twsi.c $(DRV)/mv_time.c
CSRC_UTILS = $(UTILS)/utils.c $(UTILS)/printf.c $(UTILS)/mvHwsSiliconIf.c
CSRC_SYS_ENV = $(SYS_ENV)/mvSysEnvLib.c
CSRC_BIN_HDR_DEBUG = $(BIN_HDR_DEBUG)/debug.c $(BIN_HDR_DEBUG)/lib_utils.c $(BIN_HDR_DEBUG)/command.c $(BIN_HDR_DEBUG)/mem.c

ifeq "$(CONFIG_ALLEYCAT3)"  "y"
  CSRC_UTILS += $(UTILS)/mv_seq_exec_ext.c
  #AC3 bin header has 100KB (this sets linker script structure)
  CPPFLAGS += -DTIP_BUILD_LD_100KB
else ifeq "$(CONFIG_BOBCAT2)"  "y"
  CSRC_UTILS += $(UTILS)/mv_seq_exec_ext.c
  #BC2 bin header has 100KB (this sets linker script structure)
  CPPFLAGS += -DTIP_BUILD_LD_100KB
else ifeq "$(CONFIG_ARMADA_38X)"  "y"
  CSRC_UTILS += $(UTILS)/mv_seq_exec.c
  #A-380 bin header has 128KB (this sets linker script structure)
  CPPFLAGS += -DTIP_BUILD_LD_128KB
else ifeq "$(CONFIG_ARMADA_39X)"  "y"
  CSRC_UTILS += $(UTILS)/mv_seq_exec.c
  #A-390 bin header has 128KB (this sets linker script structure)
  CPPFLAGS += -DTIP_BUILD_LD_128KB
endif

CSRC = $(CSRC_DRV) $(CSRC_UTILS) $(CSRC_SYS_ENV)
CSRC_DEBUG = $(CSRC) $(CSRC_BIN_HDR_DEBUG)

COBJ = $(subst .c,.o,$(CSRC))
CUART_OBJ = $(subst .c,.uart.o,$(CSRC))
CDEBUG_OBJ = $(subst .c,.debug.o,$(CSRC_DEBUG))


all:   $(TGT) $(TGT_UART) $(TGT_DEBUG)

%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

%.uart.o: %.c
	$(CC) $(CFLAGS) -DNOT_USE_UART -DMV_NO_INPUT -DMV_NO_PRINT  $(CPPFLAGS) -c -o  $@ $<

%.debug.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o  $@ $<

$(TGT): $(COBJ)
	ar rcs $(TGT)  $(COBJ)
	$(CP) ./$@ ../

$(TGT_UART): $(CUART_OBJ)
	ar rcs $(TGT_UART)  $(CUART_OBJ)
	$(CP) ./$@ ../

$(TGT_DEBUG): $(CDEBUG_OBJ)
	ar rcs $(TGT_DEBUG)  $(CDEBUG_OBJ)
	$(CP) ./$@ ../

setparams:
	$(HOSTCC) $(BOARDFLAG) -Wall $(INCLUDE) $(CPPFLAGS) -o $@  $(addsuffix .c, $(UTILS)/$@)
	$(CP) $@ ../

clean:
	$(RM) setparams *.raw  ./*.o  ./*.a
