#
# Copyright (C) 2015 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# WARNING: Everything listed here will be built on ALL platforms,
# including x86, the emulator, and the SDK.  Modules must be uniquely
# named (liblights.panda), and must build everywhere, or limit themselves
# to only building on ARM if they include assembly. Individual makefiles
# are responsible for having their own logic, for fine-grained control.

ifneq ($(filter hikey%, $(TARGET_DEVICE)),)

LOCAL_PATH := $(call my-dir)


ifeq (,$(wildcard $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)/version.mk))
droidcore: $(PRODUCT_OUT)/missing_vendor_package
$(PRODUCT_OUT)/missing_vendor_package:
	echo
	echo "Missing Linaro Vendor Package!"
	echo "Please download new binaries here:"
	echo "  $(VND_PKG_URL)"
	echo "And extract in the ANDROID_TOP_DIR"
	echo
	false
endif

$(eval $(call declare-1p-copy-files,device/linaro/hikey,.conf))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,.img))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,.kl))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,.rc))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,.xml))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,fstab.hikey))
$(eval $(call declare-1p-copy-files,device/linaro/hikey,fstab.hikey960))

$(eval $(call declare-copy-files-license-metadata,device/linaro/hikey/bt-wifi-firmware-util,,SPDX-license-identifier-BSD,notice,device/linaro/hikey/bt-wifi-firmware-util/NOTICE,))

# if some modules are built directly from this directory (not subdirectories),
# their rules should be written here.

include $(call all-makefiles-under,$(LOCAL_PATH))
endif
