blob: 22ea408756689b63585d8002741ab04970d62681 [file] [log] [blame]
Dennis Huanga04adcd2014-10-10 16:37:10 -07001#
2# Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved
3#
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
24LOCAL_PATH := $(call my-dir)
25include $(CLEAR_VARS)
26
27# tos.img is considered to be 32-bit
28ifneq (,$(TARGET_2ND_ARCH))
29LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
30endif
31
32ifeq (tlk,$(SECURE_OS_BUILD))
33
34ifeq (t124,$(TARGET_TEGRA_VERSION))
35
36$(warning SECURE_OS_BUILD. Making libmonitor.a)
37# building a monitor library
38LOCAL_MODULE := libmonitor
39LOCAL_MODULE_CLASS := STATIC_LIBRARIES
40LOCAL_UNINSTALLABLE_MODULE := true
41LOCAL_BUILT_MODULE_STEM := libmonitor.a
42STANDALONE_MONITOR := false
43MONITOR_LIBRARY := true
44OUTFILE_EXTENSION := .a
45
46else # TARGET_TEGRA_VERSION != t124
47
48$(warning SECURE_OS_BUILD. Making monitor.bin)
49# building a monitor binary
50LOCAL_MODULE := monitor.bin
51LOCAL_MODULE_CLASS := EXECUTABLES
52LOCAL_UNINSTALLABLE_MODULE := true
53LOCAL_BUILT_MODULE_STEM := monitor.bin
54STANDALONE_MONITOR := false
55MONITOR_LIBRARY := false
56
57endif # TARGET_TEGRA_VERSION == t124
58
59else # SECURE_OS_BUILD != tlk
60
61ifeq (t124,$(TARGET_TEGRA_VERSION))
62
63$(warning Non SECURE_OS_BUILD for T124 - Nothing to do)
64# t124, non secure: No nothing
65LOCAL_MODULE :=
66LOCAL_MODULE_CLASS :=
67LOCAL_UNINSTALLABLE_MODULE :=
68LOCAL_BUILT_MODULE_STEM :=
69STANDALONE_MONITOR := false
70MONITOR_LIBRARY := false
71
72else # TARGET_TEGRA_VERSION != t124
73
74$(warning Non SECURE_OS_BUILD. Making monitor.bin and tos.img)
75# building a monitor binary and tos.img
76LOCAL_MODULE := monitor.bin
77LOCAL_MODULE_CLASS := EXECUTABLES
78LOCAL_UNINSTALLABLE_MODULE := true
79LOCAL_BUILT_MODULE_STEM := monitor.bin
80STANDALONE_MONITOR := true
81MONITOR_LIBRARY := false
82
83endif # TARGET_TEGRA_VERSION == t124
84
85endif # SECURE_OS_BUILD == tlk
86
87ifneq (,$(LOCAL_BUILT_MODULE_STEM))
88
89ifeq ($(LOCAL_MODULE_CLASS),EXECUTABLES)
90# monitor.bin_intermediates
91MODULE_INTERMEDIATES := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_BUILT_MODULE_STEM),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
92else
93# libmonitor_intermediates
94MODULE_INTERMEDIATES := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
95endif
96
97PROJECT := tegra
98OUTFILE := $(MODULE_INTERMEDIATES)/$(LOCAL_BUILT_MODULE_STEM)
99
100ifeq ($(STANDALONE_MONITOR),true)
101TOSIMAGE := $(PRODUCT_OUT)/tos.img
102ALL_MODULES.$(LOCAL_MODULE).INSTALLED := $(TOSIMAGE)
103endif
104
105ifeq ($(TARGET_ARCH),arm64)
106LK_TOOLCHAIN_PREFIX := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-eabi-4.8/bin/arm-eabi-
107LK_TOOLCHAIN_PREFIX64 := $(TARGET_TOOLS_PREFIX)
108else
109LK_TOOLCHAIN_PREFIX := $(ARM_EABI_TOOLCHAIN)/arm-eabi-
110LK_TOOLCHAIN_PREFIX64 := $(ARM_EABI_TOOLCHAIN)/../../../aarch64/aarch64-linux-android-4.8/bin/aarch64-linux-android-
111endif
112
113$(OUTFILE): PRIVATE_CUSTOM_TOOL_ARGS := PROJECT=$(PROJECT) \
114 TARGET=$(TARGET_TEGRA_VERSION) \
115 TOOLCHAIN_PREFIX=$(abspath $(LK_TOOLCHAIN_PREFIX)) \
116 TOOLCHAIN_PREFIX64=$(abspath $(LK_TOOLCHAIN_PREFIX64)) \
117 PREFIX=$(abspath $(MODULE_INTERMEDIATES)) \
118 STANDALONE_MONITOR=$(STANDALONE_MONITOR) \
119 MONITOR_LIBRARY=$(MONITOR_LIBRARY) \
120 TOSIMAGE=$(abspath $(TOSIMAGE)) \
121 -C $(LOCAL_PATH)
122
123$(OUTFILE): PRIVATE_MODULE := $(LOCAL_MODULE)
124# Depend on tasks when we are doing a full build.
125# For one shot builds, (mm, mmm) do not.
126$(OUTFILE):
127 @echo "target Generated: $(PRIVATE_MODULE)"
128 @mkdir -p $(dir $@)
129 $(hide) $(MAKE) $(PRIVATE_CUSTOM_TOOL_ARGS)
130
131$(TOSIMAGE): $(OUTFILE)
132
133.PHONY: $(OUTFILE)
134
135# Needed to clean tos.img
136PRIVATE_CLEAN_FILES := $(TOSIMAGE)
137
138ifeq ($(LOCAL_2ND_ARCH_VAR_PREFIX),)
139ALL_NVIDIA_MODULES += $(LOCAL_MODULE)
140else
141ALL_NVIDIA_MODULES += $(LOCAL_MODULE)_32
142endif
143include $(BUILD_SYSTEM)/base_rules.mk
144
145# Clean variables
146PROJECT :=
147OUTFILE :=
148TOSIMAGE :=
149LK_TOOLCHAIN_PREFIX :=
150LK_TOOLCHAIN_PREFIX64 :=
151STANDALONE_MONITOR :=
152MONITOR_LIBRARY :=
153OUTFILE_EXTENSION :=
154
155endif