blob: 6d5dbe46009fa6b32cc24e1a37e7612ff25413ed [file] [log] [blame]
Dennis Huang6d037712014-04-22 19:20:59 -07001#
Mahesh Lagadapati70145342015-03-13 15:59:47 -07002# Copyright (c) 2013-2015, NVIDIA CORPORATION. All rights reserved
Dennis Huang6d037712014-04-22 19:20:59 -07003#
4# Permission is hereby granted, free of charge, to any person obtaining
5# a copy of this software and associated documentation files
6# (the "Software"), to deal in the Software without restriction,
7# including without limitation the rights to use, copy, modify, merge,
8# publish, distribute, sublicense, and/or sell copies of the Software,
9# and to permit persons to whom the Software is furnished to do so,
10# subject to the following conditions:
11#
12# The above copyright notice and this permission notice shall be
13# included in all copies or substantial portions of the Software.
14#
15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22#
23
24# Define module tlk.
25# tlk: Compile the tlk kernel and generate tos.img.
Dennis Huang6d037712014-04-22 19:20:59 -070026ifeq (tlk,$(SECURE_OS_BUILD))
27
Dennis Huanga04adcd2014-10-10 16:37:10 -070028# tos.img is considered to be 32-bit
29ifneq (,$(TARGET_2ND_ARCH))
30LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
31endif
32
33ifeq (t124,$(TARGET_TEGRA_VERSION))
34# Don't pull in the module, but instead pull in the static library
35MONBIN :=
36MONLIB := $(call intermediates-dir-for,STATIC_LIBRARIES,libmonitor,,,$(LOCAL_2ND_ARCH_VAR_PREFIX))/libmonitor.a
37else
38MONBIN := $(call intermediates-dir-for,EXECUTABLES,monitor.bin,,,$(LOCAL_2ND_ARCH_VAR_PREFIX))/monitor.bin
39MONLIB :=
40endif # (t124,$(TARGET_TEGRA_VERSION))
41
Dennis Huang6d037712014-04-22 19:20:59 -070042LOCAL_PATH := $(call my-dir)
43
44include $(CLEAR_VARS)
Mahesh Lagadapati70145342015-03-13 15:59:47 -070045
46# Enable storage rollback protection for desired devices.
47ifeq ($(BOARD_SUPPORT_ROLLBACK_PROTECTION),true)
48 WITH_ROLLBACK_PROTECTION := 1
49else
50 WITH_ROLLBACK_PROTECTION := 0
51endif
52
Dennis Huang6d037712014-04-22 19:20:59 -070053# Local module is tos.img, we also define the tlk target
54LOCAL_MODULE := tos.img
55LOCAL_MODULE_CLASS := EXECUTABLES
56LOCAL_UNINSTALLABLE_MODULE := true
57
Dennis Huang6d037712014-04-22 19:20:59 -070058TLK_INTERMEDIATES := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
59TLK_PROJECT := tegra
60
61LOCAL_BUILT_MODULE_STEM := build-$(TLK_PROJECT)/lk.bin
62LK_BIN := $(TLK_INTERMEDIATES)/$(LOCAL_BUILT_MODULE_STEM)
63tlk: tos.img
64TOSIMAGE := $(PRODUCT_OUT)/tos.img
65ALL_MODULES.$(LOCAL_MODULE).INSTALLED := $(TOSIMAGE)
66
67# List of task modules to link with tlk
68TASK_MODULES := \
69 trusted_app \
70 trusted_app2 \
71 secure_otf \
72 oemcrypto_secure_service \
73 hdcp_secure_service \
74 crypto_service \
75 storage_service \
76 hwkeystore_task \
77 tlkstoragedemo_task \
78 secure_rtc
79
Dennis Huanga04adcd2014-10-10 16:37:10 -070080ifeq ($(filter t210,$(TARGET_TEGRA_VERSION)), $(TARGET_TEGRA_VERSION))
81TASK_MODULES += \
82 tsec_service
83endif
84
Dennis Huang6d037712014-04-22 19:20:59 -070085# daemon to handle storage requests in Android user space
86DAEMON := tlk_daemon
87
88# keystorage client running in Android user space
89KEYSTORE_CLIENT := keystore.tegra
90
91# Get actual task executables from list of task modules
92TASK_EXECUTABLES := \
93 $(foreach task,$(TASK_MODULES), \
Dennis Huanga04adcd2014-10-10 16:37:10 -070094 $(call intermediates-dir-for,EXECUTABLES,$(task),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))/$(task))
Dennis Huang6d037712014-04-22 19:20:59 -070095
96ifeq ($(TARGET_ARCH),arm64)
97LK_TOOLCHAIN_PREFIX := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-eabi-4.8/bin/arm-eabi-
98LK_TOOLCHAIN_PREFIX64 := $(TARGET_TOOLS_PREFIX)
99else
100LK_TOOLCHAIN_PREFIX := $(ARM_EABI_TOOLCHAIN)/arm-eabi-
101LK_TOOLCHAIN_PREFIX64 := $(ARM_EABI_TOOLCHAIN)/../../../aarch64/aarch64-linux-android-4.8/bin/aarch64-linux-android-
102endif
103
104# Generate lk.bin with PRIVATE_CUSTOM_TOOL
105# Call make in lk directory
106$(LK_BIN): PRIVATE_CUSTOM_TOOL_ARGS := PROJECT=$(TLK_PROJECT) \
107 TARGET=$(TARGET_TEGRA_VERSION) \
108 TOOLCHAIN_PREFIX=$(abspath $(LK_TOOLCHAIN_PREFIX)) \
109 TOOLCHAIN_PREFIX64=$(abspath $(LK_TOOLCHAIN_PREFIX64)) \
110 PREFIX=$(abspath $(TLK_INTERMEDIATES)) \
Dennis Huanga04adcd2014-10-10 16:37:10 -0700111 TASKS="$(foreach task,$(TASK_EXECUTABLES), $(abspath $(task)))" \
112 MONBIN=$(abspath $(MONBIN)) \
113 MONLIB=$(abspath $(MONLIB)) \
114 TOSIMAGE=$(abspath $(TOSIMAGE)) \
Mahesh Lagadapati70145342015-03-13 15:59:47 -0700115 WITH_ROLLBACK_PROTECTION=$(WITH_ROLLBACK_PROTECTION) \
Dennis Huang6d037712014-04-22 19:20:59 -0700116 -C $(LOCAL_PATH)
117$(LK_BIN): PRIVATE_MODULE := $(LOCAL_MODULE)
118# Depend on tasks when we are doing a full build.
119# For one shot builds, (mm, mmm) do not.
120ifeq (,$(ONE_SHOT_MAKEFILE))
Dennis Huanga04adcd2014-10-10 16:37:10 -0700121$(LK_BIN): $(TASK_EXECUTABLES) $(DAEMON) $(KEYSTORE_CLIENT) $(MONLIB) $(MONBIN)
Dennis Huang6d037712014-04-22 19:20:59 -0700122endif
123$(LK_BIN):
124 @echo "target Generated: $(PRIVATE_MODULE)"
125 @mkdir -p $(dir $@)
126 $(hide) $(MAKE) $(PRIVATE_CUSTOM_TOOL_ARGS)
127
128$(TOSIMAGE): $(LK_BIN)
129
130.PHONY: $(LK_BIN)
131
132# Needed to clean tos.img
133PRIVATE_CLEAN_FILES := $(TOSIMAGE)
134
135ALL_NVIDIA_MODULES += $(LOCAL_MODULE)
136include $(BUILD_SYSTEM)/base_rules.mk
137
138# Clean variables
139TLK_INTERMEDIATES :=
140TLK_PROJECT :=
141LK_BIN :=
142TOSIMAGE :=
143TASK_MODULES :=
144TASK_EXECUTABLES :=
Dennis Huang6d037712014-04-22 19:20:59 -0700145DAEMON :=
146KEYSTORE_CLIENT :=
Dennis Huanga04adcd2014-10-10 16:37:10 -0700147MONBIN :=
148MONLIB :=
Dennis Huang6d037712014-04-22 19:20:59 -0700149LK_TOOLCHAIN_PREFIX :=
150LK_TOOLCHAIN_PREFIX64 :=
151
152endif # SECURE_OS_BUILD == tlk