# SPDX-License-Identifier: LGPL-2.1-only OR BSD-3-Clause */
##########################################################################
#
# This file is provided under a dual license.  When you use or
# distribute this software, you may choose to be licensed under
# version 2.1 of the GNU Lesser General Public License
# ("LGPLv2.1 License") or BSD License.
#
# LGPLv2.1 License
#
# Copyright(C) 2019 MediaTek Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2.1 of the GNU Lesser General Public
# License as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html for more
# details.
#
# BSD LICENSE
#
# Copyright(C) 2019 MediaTek Inc.
# All rights reserved.
#
# 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 the copyright holder 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
# HOLDER 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.
#
###########################################################################

COPY = cp
COPYFLAG = -f
CPUPFLAG = -u

ifndef COMPANY
COMPANY := mediatek
endif

ifndef DRV_INC_DIR
DRV_INC_DIR := .
endif
ifdef MODEL
ifndef DRV_ROOT
DRV_ROOT := ../../
endif
ifndef UBOOT_LIBRARY
include $(DRV_ROOT)/drv_opt/$(COMPANY)/$(MODEL).def
endif
endif

ifndef DRV_CUSTOM
DRV_CUSTOM := common
endif

FILE_LIST =  drv_dbase.h
FILE_LIST += panel.h
FILE_LIST += panel_cust.h
#FILE_LIST += aud_api.h
FILE_LIST += c_model.h
FILE_LIST += loader_imghdr.h
FILE_LIST += loader_if.h
FILE_LIST += cli_password.h

ifndef DRIVER_DIR_LIST
DIR_LIST = $(sort $(shell if [ -e ../Makefile ]; then make -C ../ get_DRIVER_DIR_LIST --no-print-directory -s 2>/dev/null; else echo ''; fi))

ifdef LINUX_DRV_ROOT
DIR_LIST += loaderlib
else
DIR_LIST += adspbin bsp net smc
endif

else
DIR_LIST := $(DRIVER_DIR_LIST)
endif


FILE_DRV_H_END_LIST =	$(wildcard ../$1/*_drvif.h)	\
			$(wildcard ../$1/*/*_drvif.h)	\
			$(wildcard ../$1/*/*/*_drvif.h)	\
			$(wildcard ../$1/*/*/*/*_drvif.h) \
			$(wildcard ../$1/*/*/*/*/*_drvif.h)

FILE_IF_H_END_LIST =	$(wildcard ../$1/*_if.h)	\
			$(wildcard ../$1/*/*_if.h)	\
			$(wildcard ../$1/*/*/*_if.h)	\
			$(wildcard ../$1/*/*/*/*_if.h)  \
			$(wildcard ../$1/*/*/*/*/*_if.h)

FILE_H_LIST = $(FILE_DRV_H_END_LIST) $(FILE_IF_H_END_LIST)

DRV_INC_FILE_LIST = $(addprefix $(DRV_INC_DIR)/, $(FILE_LIST))
# customized files must put into .PHONY

.PHONY: c_model.h $(DIR_LIST) lib all panel_cust.h

all: lib

$(DRV_INC_DIR)/loader_imghdr.h: ../loaderlib/loader_imghdr.h
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/drv_dbase.h: ../dbs/drv_dbase.h
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/panel.h: ../drv_cust/panel.h
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/panel_cust.h: ../drv_cust/$(COMPANY)/panel_cust.h
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/loader_if.h: ../loaderlib/loader_if.h 
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/ir_api.h: ../ir/ir_api.h
	@sh ./check_file_update.sh $< $@;

$(DRV_INC_DIR)/c_model.h:
	@echo "#ifndef C_MODEL_H" > $@.tmp
	@echo "#define C_MODEL_H" >> $@.tmp
	@echo "/* This is generated by drv_cust/$(subst private_,,$(COMPANY))/config/$(DRV_CUSTOM).h */" >> $@.tmp
	@cat ../drv_cust/$(subst private_,,$(COMPANY))/config/$(DRV_CUSTOM).h | grep -v "#include" >> $@.tmp
	@echo "#endif /* C_MODEL_H */" >> $@.tmp
	@sh ./check_file_update.sh $@.tmp $@
	@rm $@.tmp

$(DRV_INC_DIR)/cli_password.h:
	python $(TARGET_DIR_ROOT)/mt53xx_com/53xx_com_driver/drv_inc/password_generator.py $(TARGET_DIR_ROOT)/mt53xx_com/53xx_com_driver/drv_inc/password_cli.txt $(DRV_INC_DIR)/cli_password.h

$(DIR_LIST):
	@for i in $(call FILE_H_LIST,$@); do \
		sh ./check_file_update.sh $$i $(DRV_INC_DIR)/`basename $$i`; \
	done

lib target: $(DRV_INC_FILE_LIST) $(DIR_LIST)
	@echo "$(DRIVER_DIR_LIST)"

clean:
ifeq "$(BUILD_PRIV)" "true"
	@echo "Don't remove drv_inc/xxx.h"
else
	rm -rf $(DRV_INC_FILE_LIST) $(DRV_INC_DIR)/*_if.h $(DRV_INC_DIR)/*_drvif.h
endif

