| # Copyright Statement: |
| # |
| # This software/firmware and related documentation ("MediaTek Software") are |
| # protected under relevant copyright laws. The information contained herein |
| # is confidential and proprietary to MediaTek Inc. and/or its licensors. |
| # Without the prior written permission of MediaTek inc. and/or its licensors, |
| # any reproduction, modification, use or disclosure of MediaTek Software, |
| # and information contained herein, in whole or in part, shall be strictly |
| # prohibited. |
| # |
| # MediaTek Inc. (C) 2018. All rights reserved. |
| # |
| # BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| # THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| # RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON |
| # AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| # NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| # SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| # SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH |
| # THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY |
| # ACKNOWLEDGES THAT IT IS RECEIVER\'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY |
| # THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK |
| # SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO |
| # RECEIVER\'S SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN |
| # FORUM. RECEIVER\'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK\'S ENTIRE AND |
| # CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER |
| # WILL BE, AT MEDIATEK\'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE |
| # AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY |
| # RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| # |
| # The following software/firmware and/or related documentation |
| # ("MediaTek Software") have been modified by MediaTek Inc. All revisions are |
| # subject to any receiver\'s applicable license agreements with MediaTek Inc. |
| # |
| ########################################################### |
| ## Generic definitions |
| ########################################################### |
| # Remove $@ if error occurs |
| .DELETE_ON_ERROR: |
| |
| # Turn off suffix build rules built into make |
| .SUFFIXES: |
| |
| SHELL := /bin/bash |
| TINYSYS_MEDMCU := tinysys-medmcu |
| |
| .DEFAULT_GOAL := scp |
| |
| ########################################################### |
| ## Parameter control |
| ########################################################### |
| PROJECT := $(strip $(PROJECT)) |
| ifeq ($(PROJECT),) |
| $(error $(TINYSYS_MEDMCU): project name is required) |
| endif |
| |
| ifeq ($(strip $(O)),) |
| O := tinysys_out |
| endif |
| |
| # Verbosity control |
| V ?= 1 |
| ifeq ($(V),1) |
| hide := |
| else |
| hide := @ |
| endif |
| |
| ########################################################### |
| ## Common directory locations and generic variables |
| ########################################################### |
| SCP_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) |
| SCP_IMAGE_NAME := medmcu.img |
| SCP_BUILT_DIR := $(O) |
| SCP_INSTALLED_TARGET := $(O)/$(SCP_IMAGE_NAME) |
| |
| SCP_PROJECT_DIR := $(SCP_DIR)/project |
| SCP_DRIVERS_DIR := $(SCP_DIR)/drivers |
| SCP_KERNEL_DIR := $(SCP_DIR)/kernel |
| SCP_BUILD_DIR := $(SCP_DIR)/build |
| SCP_TOOLS_DIR := $(SCP_DIR)/tools |
| SCP_MIDDLEWARE_DIR := $(SCP_DIR)/middleware |
| |
| KERNEL_DIR := $(SCP_DIR)/../kernel |
| COMMON_DIR := $(SCP_DIR)/../common |
| PRIVATE_DIR := $(SCP_DIR)/../private |
| COMMON_DRIVERS_DIR := $(COMMON_DIR)/drivers |
| COMMON_MIDDLEWARE_DIR := $(COMMON_DIR)/middleware |
| COMMON_BUILD_DIR := $(COMMON_DIR)/build |
| COMMON_TOOLS_DIR := $(COMMON_DIR)/tools |
| COMMON_INCLUDE_DIR := $(COMMON_DIR)/include |
| PRIVATE_DRIVERS_DIR := $(PRIVATE_DIR)/drivers |
| PRIVATE_MIDDLEWARE_DIR := $(PRIVATE_DIR)/middleware |
| PRIVATE_BUILD_DIR := $(PRIVATE_DIR)/build |
| PRIVATE_TOOLS_DIR := $(PRIVATE_DIR)/tools |
| |
| MKIMAGE := $(COMMON_TOOLS_DIR)/mkimage |
| OBJSIZE := $(COMMON_TOOLS_DIR)/objsize |
| MCHECK := $(COMMON_TOOLS_DIR)/memoryReport.py |
| GEN_LINK_LD := $(SCP_TOOLS_DIR)/link_ld.py |
| |
| ########################################################### |
| ## Generic build flow |
| ########################################################### |
| include $(COMMON_BUILD_DIR)/definitions.mk |
| -include $(SCP_BUILD_DIR)/definitions.mk |
| |
| # Initialize the environment for each processor |
| include $(SCP_BUILD_DIR)/main.mk |
| |
| ifeq (1,$(V)) |
| $(info $(TINYSYS_MEDMCU): PROCESSORS=$(PROCESSORS)) |
| $(info $(TINYSYS_MEDMCU): PROJECT=$(PROJECT)) |
| $(info $(TINYSYS_MEDMCU): PLATFORM=$(PLATFORM)) |
| $(info $(TINYSYS_MEDMCU): O=$(O)) |
| $(info $(TINYSYS_MEDMCU): SCP_DIR=$(SCP_DIR)) |
| $(info $(TINYSYS_MEDMCU): ALL_SCP_BINS=$(ALL_SCP_BINS)) |
| $(info $(TINYSYS_MEDMCU): ALL_SCP_ESL_BINS=$(ALL_SCP_ESL_BINS)) |
| endif |
| |
| SCP_SETTING_INI := $(SCP_PROJECT_DIR)/$(word 1,$(PROCESSORS))/$(PLATFORM)/platform/Setting.ini |
| |
| ########################################################### |
| ## Build targets |
| ########################################################### |
| .PHONY: scp |
| |
| ifneq (,$(ALL_SCP_BINS)) |
| scp: $(SCP_INSTALLED_TARGET) |
| |
| SORTED_SCP_BINS := $(call sort_scp_binaries,$(ALL_SCP_BINS),RV33) |
| |
| $(SCP_INSTALLED_TARGET): $(SORTED_SCP_BINS) |
| @mkdir -p $(dir $@) |
| @echo '$(TINYSYS_MEDMCU): BIN $@' |
| @if [ -s '$($(PROCESSOR)_DRAM.BIN_BUILT)' ]; then \ |
| if [ -s '$($(PROCESSOR)_MEDHW.BIN_BUILT)' ]; then \ |
| echo 'cat $^ $($(PROCESSOR)_DRAM.BIN_BUILT) $($(PROCESSOR)_MEDHW.BIN_BUILT) > $@'; \ |
| cat $^ $($(PROCESSOR)_DRAM.BIN_BUILT) $($(PROCESSOR)_MEDHW.BIN_BUILT) > $@; \ |
| else \ |
| echo 'cat $^ $($(PROCESSOR)_DRAM.BIN_BUILT) > $@'; \ |
| cat $^ $($(PROCESSOR)_DRAM.BIN_BUILT) > $@; \ |
| fi; \ |
| elif [ -s '$($(PROCESSOR)_MEDHW.BIN_BUILT)' ]; then \ |
| echo 'cat $^ $($(PROCESSOR)_MEDHW.BIN_BUILT) > $@'; \ |
| cat $^ $($(PROCESSOR)_MEDHW.BIN_BUILT) > $@; \ |
| else \ |
| echo 'cat $^ > $@'; \ |
| cat $^ > $@; \ |
| fi; |
| endif |
| |
| ifneq (,$(ALL_SCP_ESL_BINS)) |
| scp: $(ALL_SCP_ESL_BINS) |
| endif |
| |
| clean: |
| rm -rf $(SCP_INSTALLED_TARGET) $(O) |