blob: 001a5135eb3d1052900c9fe985a6590ad12b28e3 [file] [log] [blame]
# 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)