unplugged-system/vendor/mediatek/proprietary/geniezone/Makefile

257 lines
8.7 KiB
Makefile

V ?= 0
#
# Directory seeting
#
PLATFORM ?= unknown
TOOLCHAIN_PATH ?= $(ANDROID_BUILD_TOP)/prebuilts/gcc
MTKTOOLAS_PATH ?= $(PWD)/scripts
BUILDROOT ?= $(PWD)
BUILDPROJECT=${BUILDROOT}/build-${PROJECT}
#
# Full Build Setting
# 2018/03/12 add for release all gz, except some properity trusty-kernel module
#
FULL_BUILD ?= 0
PRIVATE_PREBUILTS_PATH = $(PWD)/trusty/vendor/mediatek/geniezone/prebuilts/$(PROJECT)
export FULL_BUILD
export PRIVATE_PREBUILTS_PATH
#
# Guest Build Setting
#
# Unmap2
BUILD_UNMAP2 ?= 1
export BUILD_UNMAP2
BUILD_VM ?= 0
VM_PREBUILTS_INTERNAL_PATH = $(BUILDROOT)/prebuilts/third-party/vm/nebula
VM_PREBUILTS_PATH = $(BUILDROOT)/prebuilts/libs/vm/nebula
VM_PREBUILTS_FILE = $(VM_PREBUILTS_PATH)/nebula_hee.bin
VM_IV_FILE = $(BUILDROOT)/trusty/device/arm/mediatek/project/iv/$(PLATFORM)/$(PLATFORM).iv
VM_KEY_FILE = $(BUILDROOT)/trusty/device/arm/mediatek/project/iv/$(PLATFORM)/$(PLATFORM).k
export BUILD_VM
export VM_PREBUILTS_PATH
export VM_PREBUILTS_FILE
export VM_IV_FILE
export VM_KEY_FILE
#
# For NeuroPilot Security
#
ifneq ($(wildcard $(BUILDROOT)/np_security/),)
WITH_NPSECURITY = 1
endif
ifneq ($(wildcard $(BUILDROOT)/np_security/proprietary/driver/),)
WITH_NPSECURITY_DRIVER = 1
endif
ifneq ($(wildcard $(BUILDROOT)/np_security/proprietary/private/),)
WITH_NPSECURITY_PRIVATE = 1
endif
ifneq ($(wildcard $(BUILDROOT)/np_security/proprietary/lib/),)
WITH_NPSECURITY_LIB = 1
endif
WITH_NPSECURITY ?= 0
WITH_NPSECURITY_DRIVER ?= 0
WITH_NPSECURITY_PRIVATE ?= 0
WITH_NPSECURITY_LIB ?= 0
NPS_KERNEL_PREBUILTS_PATH = $(BUILDROOT)/np_security/prebuilts/kernel
NPS_USERLIB_PREBUILTS_PATH = $(BUILDROOT)/np_security/prebuilts/user/lib
copy_npsecurity_driver_prebuilts = \
cp $(shell find $(BUILDPROJECT)/dotdot/np_security/proprietary/driver/ -name "*.mod.o") $(NPS_KERNEL_PREBUILTS_PATH)/.
nps_user_prebuilts_list := $(shell find $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/dotdot/np_security/proprietary/lib/ -name "*.mod.a" -exec basename {} .mod.a \;)
copy_npsecurity_user_prebuilts = \
for libname in $(nps_user_prebuilts_list) ; do \
mkdir -p $(NPS_USERLIB_PREBUILTS_PATH)/$$libname-prebuilt ; \
cp $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/dotdot/np_security/proprietary/lib/$$libname.mod.a $(NPS_USERLIB_PREBUILTS_PATH)/$$libname-prebuilt/. ; \
done
copy_npsecurity_private_user_prebuilts = \
cp $(shell find $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/dotdot/np_security/proprietary/private/ -name "*.mod.a") $(NPS_USERLIB_PREBUILTS_PATH)/.
export WITH_NPSECURITY
export WITH_NPSECURITY_DRIVER
export WITH_NPSECURITY_PRIVATE
export WITH_NPSECURITY_LIB
export NPS_KERNEL_PREBUILTS_PATH
export NPS_USERLIB_PREBUILTS_PATH
#
# Prebuilt Settings
#
WITH_PREBUILT_LIB ?= 0
PREBUILTS_PATH=$(PWD)/prebuilts/libs
PREBUILTS_LIB_PATH=${PREBUILTS_PATH}/$(PROJECT)/lib
PREBUILTS_LDSCRIPTS_PATH=${PREBUILTS_PATH}/$(PROJECT)/ldscripts
PREBUILTS_KERNEL_PATH=${PREBUILTS_PATH}/$(PROJECT)/kernel
PREBUILTS_APP_PATH=${PREBUILTS_PATH}/$(PROJECT)/app
#
# Common functions calls
#
mkdir_host = mkdir -p $(1);
cp_host = cp -f $1 $2;
# Copy all propietary apps
list_all_app = $(notdir $(wildcard $(BUILDPROJECT)/user_tasks/source/trusty-user/app/*))
find_app_elf = $(shell find $(BUILDPROJECT)/user_tasks/source/trusty-user/app/$(strip ${1}) -name "*.elf" ! -name "*.syms.elf")
copy_app_prebuilt = \
$(call cp_host, $(call find_app_elf, $(strip $1)), $(PREBUILTS_APP_PATH)/$(strip $1).elf)
copy_all_app_prebuilt = $(foreach ut, $(call list_all_app), $(call copy_app_prebuilt, $(strip $(ut))))
# Copy ldscripts
list_all_ldscripts = $(wildcard $(BUILDPROJECT)/system-onesegment.ld)
copy_all_ldscripts = $(call cp_host, $(list_all_ldscripts), $(PREBUILTS_LDSCRIPTS_PATH)/.)
# Copy all prebuilt user lib
list_all_user_lib = libc.mod.a libc-trusty.mod.a libstdc++-trusty.mod.a libm-mtee.mod.a libcxx-mtee.mod.a crtbegin.o crtend.o mtee_api.mod.a mtee_serv.mod.a msee_fwk.mod.a gp_client.mod.a storage.mod.a
find_user_lib_elf = $(word 1, $(shell find $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/ -name $1))
copy_lib_prebuilt = \
$(call cp_host, $(call find_user_lib_elf, $(strip $1)), $(PREBUILTS_LIB_PATH)/arm64/.)
copy_all_user_lib = $(foreach lib, $(list_all_user_lib), $(call copy_lib_prebuilt, $(strip $(lib))))
# Copy all prebuilt kernel objs
list_all_kernel_objs = kernel-prebuilt.a
find_kernel_objs_elf = $(shell find $(BUILDPROJECT)/ -name $1)
copy_kernel_objs_prebuilt = \
$(call cp_host, $(call find_kernel_objs_elf, $(strip $(list_all_kernel_objs))), $(PREBUILTS_KERNEL_PATH)/$(PROJECT)-kernel.a)
# Prebuilt toolchain setting
ARCH_arm64_TOOLCHAIN_PREFIX=${TOOLCHAIN_PATH}/linux-x86/aarch64/aarch64-linux-android-4.9.1/bin/aarch64-linux-android-
GCC4P8 ?= 0
export GCC4P8
ifneq ($(GCC4P8), 1)
ARCH_arm_TOOLCHAIN_PREFIX=${TOOLCHAIN_PATH}/linux-x86/arm/arm-eabi-4.9/bin/arm-eabi-
ARCH_arm_TOOLCHAIN_LD_LIBRARY_PATH=LD_LIBRARY_PATH=${TOOLCHAIN_PATH}/linux-x86/arm/arm-eabi-4.9/libexec/gcc/arm-eabi/4.9.4/libmpfr
else
ARCH_arm_TOOLCHAIN_PREFIX=${TOOLCHAIN_PATH}/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
endif
export ARCH_arm_TOOLCHAIN_PREFIX ARCH_arm64_TOOLCHAIN_PREFIX ARCH_arm_TOOLCHAIN_LD_LIBRARY_PATH
CORE_NUM ?= 0
export CORE_NUM
GZ_DEBUG ?= 0
export GZ_DEBUG
ifeq ($(GZ_DEBUG), 1)
GZ_LOG_LVL ?= 1
else
GZ_LOG_LVL ?= 4
endif
export GZ_LOG_LVL
#VPU ?= mt6873
ifneq ($(VPU),)
VPU_ELF = ${VPU}_vpu
export VPU_ELF
endif
$(info VPU = $(VPU))
$(info VPU_ELF = $(VPU_ELF))
# Verbose ouput
ifeq ($(V),1)
ADDITIONAL_FLAGS += "NOECHO="
endif
all:
make -C trusty ${PROJECT} BUILDROOT=$(BUILDROOT) PREBUILTS_PATH=$(PREBUILTS_PATH) WITH_PREBUILT_LIB=$(WITH_PREBUILT_LIB) $(ADDITIONAL_FLAGS)
ifneq ($(PLATFORM),unknown)
cp $(BUILDROOT)/trusty/vendor/mediatek/geniezone/platform/$(PLATFORM)/gz_info.cfg $(BUILDPROJECT)
endif
${MTKTOOLAS_PATH}/build_hyp.sh $(BUILDPROJECT)/lk.bin
ls -l $(BUILDPROJECT)/gz.bin
ifeq ($(FULL_BUILD), 1)
mkdir -p $(PRIVATE_PREBUILTS_PATH)/trusty-kernel
mkdir -p $(PRIVATE_PREBUILTS_PATH)/trusty-kernel/mtee/common/src/
cp $(BUILDPROJECT)/vendor/mediatek/private/source/trusty-kernel/libvmm.mod.o $(PRIVATE_PREBUILTS_PATH)/trusty-kernel/libvmm.mod.o
cp $(BUILDPROJECT)/vendor/mediatek/private/source/trusty-kernel/mtee/common/src/sys.mod.o $(PRIVATE_PREBUILTS_PATH)/trusty-kernel/mtee/common/src/sys.mod.o
ifeq ($(CFG_LIBFDT_BUILTIN), 1)
cp $(BUILDPROJECT)/vendor/mediatek/geniezone/source/trusty-kernel/libfdt.mod.o $(PRIVATE_PREBUILTS_PATH)/trusty-kernel/libfdt.mod.o
endif
endif
ifeq ($(BUILD_UNMAP2), 1)
${MTKTOOLAS_PATH}/build_unmap2.sh "$(BUILDROOT)" "$(BUILDPROJECT)"
ls -l "$(BUILDPROJECT)/unmap2.img"
cat "$(BUILDPROJECT)/unmap2.img" >> "$(BUILDPROJECT)/gz.bin"
cat "$(BUILDPROJECT)/unmap2.img" >> "$(BUILDPROJECT)/gz.img"
ls -l "$(BUILDPROJECT)/gz.bin"
ls -l "$(BUILDPROJECT)/gz.img"
endif
ifeq ($(BUILD_VM), 1)
mv $(BUILDPROJECT)/gz.bin $(BUILDPROJECT)/gz.bin.ori
mv $(BUILDPROJECT)/gz.img $(BUILDPROJECT)/gz.img.ori
cp $(BUILDROOT)/trusty/vendor/mediatek/geniezone/platform/$(PLATFORM)/vm_info.cfg $(BUILDPROJECT)
cp $(VM_PREBUILTS_INTERNAL_PATH)/nebula_hee.bin $(VM_PREBUILTS_FILE)
cp $(VM_PREBUILTS_FILE) $(BUILDPROJECT)/vm.ori
${MTKTOOLAS_PATH}/build_vm.sh $(BUILDPROJECT)/vm.ori $(VM_IV_FILE) $(VM_KEY_FILE)
ls -l $(BUILDPROJECT)/vm.bin
cat $(BUILDPROJECT)/gz.bin.ori > $(BUILDPROJECT)/gz.bin
cat $(BUILDPROJECT)/vm.bin >> $(BUILDPROJECT)/gz.bin
ls -l $(BUILDPROJECT)/gz.bin
endif
release_lib:
$(call mkdir_host,${PREBUILTS_LIB_PATH}/arm64)
$(if $(strip $(wildcard $(BUILDPROJECT))), $(call copy_all_user_lib), $(error please `make all` first))
#cp np_security user lib
ifeq ($(WITH_NPSECURITY_LIB),1)
ifneq ($(wildcard $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/dotdot/np_security/proprietary/lib/),)
$(call mkdir_host, $(NPS_USERLIB_PREBUILTS_PATH))
$(call copy_npsecurity_user_prebuilts)
endif
endif
ifeq ($(WITH_NPSECURITY_PRIVATE),1)
ifneq ($(wildcard $(BUILDPROJECT)/prebuilts/user-lib-prebuilt/dotdot/np_security/proprietary/private/),)
$(call mkdir_host, $(NPS_USERLIB_PREBUILTS_PATH))
$(call copy_npsecurity_private_user_prebuilts)
endif
endif
release_app:
ifneq (,$(wildcard $(BUILDPROJECT)/user_tasks/gz-test/gz-test.elf))
cp $(BUILDPROJECT)/user_tasks/gz-test/gz-test.elf $(PREBUILTS_APP_PATH)
endif
$(call mkdir_host,$(PREBUILTS_APP_PATH))
$(if $(strip $(wildcard $(BUILDPROJECT))), $(call copy_all_app_prebuilt), $(error please `make all` first))
release_kernel:
$(call mkdir_host,$(PREBUILTS_KERNEL_PATH))
$(if $(strip $(wildcard $(BUILDPROJECT))), $(call copy_kernel_objs_prebuilt), $(error please `make all` first))
$(call mkdir_host,$(PREBUILTS_LDSCRIPTS_PATH))
$(copy_all_ldscripts)
#cp np_security driver
ifeq ($(WITH_NPSECURITY_DRIVER),1)
ifneq ($(wildcard $(BUILDPROJECT)/dotdot/np_security/proprietary/driver/),)
$(call mkdir_host,$(NPS_KERNEL_PREBUILTS_PATH))
$(call copy_npsecurity_driver_prebuilts)
endif
endif
release_all: release_kernel release_app release_lib