[FOSS_TLK]tlk: add LOCAL_MODULE_SUFFIX for tlk
[3rdparty/ote_partner/tlk.git] / secure_monitor / Android.mk
1 #
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
24 LOCAL_PATH := $(call my-dir)
25 include $(CLEAR_VARS)
26
27 # tos.img is considered to be 32-bit
28 ifneq (,$(TARGET_2ND_ARCH))
29 LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
30 endif
31
32 ifeq (tlk,$(SECURE_OS_BUILD))
33
34 ifeq (t124,$(TARGET_TEGRA_VERSION))
35
36 $(warning SECURE_OS_BUILD. Making libmonitor.a)
37 # building a monitor library
38 LOCAL_MODULE := libmonitor
39 LOCAL_MODULE_CLASS := STATIC_LIBRARIES
40 LOCAL_UNINSTALLABLE_MODULE := true
41 LOCAL_BUILT_MODULE_STEM := libmonitor.a
42 STANDALONE_MONITOR := false
43 MONITOR_LIBRARY := true
44 OUTFILE_EXTENSION := .a
45
46 else # TARGET_TEGRA_VERSION != t124
47
48 $(warning SECURE_OS_BUILD. Making monitor.bin)
49 # building a monitor binary
50 LOCAL_MODULE := monitor.bin
51 LOCAL_MODULE_CLASS := EXECUTABLES
52 LOCAL_UNINSTALLABLE_MODULE := true
53 LOCAL_BUILT_MODULE_STEM := monitor.bin
54 STANDALONE_MONITOR := false
55 MONITOR_LIBRARY := false
56
57 endif # TARGET_TEGRA_VERSION == t124
58
59 else # SECURE_OS_BUILD != tlk
60
61 ifeq (t124,$(TARGET_TEGRA_VERSION))
62
63 $(warning Non SECURE_OS_BUILD for T124 - Nothing to do)
64 # t124, non secure: No nothing
65 LOCAL_MODULE :=
66 LOCAL_MODULE_CLASS :=
67 LOCAL_UNINSTALLABLE_MODULE :=
68 LOCAL_BUILT_MODULE_STEM :=
69 STANDALONE_MONITOR := false
70 MONITOR_LIBRARY := false
71
72 else # 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
76 LOCAL_MODULE := monitor.bin
77 LOCAL_MODULE_CLASS := EXECUTABLES
78 LOCAL_UNINSTALLABLE_MODULE := true
79 LOCAL_BUILT_MODULE_STEM := monitor.bin
80 STANDALONE_MONITOR := true
81 MONITOR_LIBRARY := false
82
83 endif # TARGET_TEGRA_VERSION == t124
84
85 endif # SECURE_OS_BUILD == tlk
86
87 ifneq (,$(LOCAL_BUILT_MODULE_STEM))
88
89 ifeq ($(LOCAL_MODULE_CLASS),EXECUTABLES)
90 # monitor.bin_intermediates
91 MODULE_INTERMEDIATES := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_BUILT_MODULE_STEM),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
92 else
93 # libmonitor_intermediates
94 MODULE_INTERMEDIATES := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
95 endif
96
97 PROJECT := tegra
98 OUTFILE := $(MODULE_INTERMEDIATES)/$(LOCAL_BUILT_MODULE_STEM)
99
100 ifeq ($(STANDALONE_MONITOR),true)
101 TOSIMAGE := $(PRODUCT_OUT)/tos.img
102 ALL_MODULES.$(LOCAL_MODULE).INSTALLED := $(TOSIMAGE)
103 endif
104
105 ifeq ($(TARGET_ARCH),arm64)
106 LK_TOOLCHAIN_PREFIX := prebuilts/gcc/$(HOST_PREBUILT_TAG)/arm/arm-eabi-4.8/bin/arm-eabi-
107 LK_TOOLCHAIN_PREFIX64 := $(TARGET_TOOLS_PREFIX)
108 else
109 LK_TOOLCHAIN_PREFIX := $(ARM_EABI_TOOLCHAIN)/arm-eabi-
110 LK_TOOLCHAIN_PREFIX64 := $(ARM_EABI_TOOLCHAIN)/../../../aarch64/aarch64-linux-android-4.8/bin/aarch64-linux-android-
111 endif
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
136 PRIVATE_CLEAN_FILES := $(TOSIMAGE)
137
138 ifeq ($(LOCAL_2ND_ARCH_VAR_PREFIX),)
139 ALL_NVIDIA_MODULES += $(LOCAL_MODULE)
140 else
141 ALL_NVIDIA_MODULES += $(LOCAL_MODULE)_32
142 endif
143 include $(BUILD_SYSTEM)/base_rules.mk
144
145 # Clean variables
146 PROJECT :=
147 OUTFILE :=
148 TOSIMAGE :=
149 LK_TOOLCHAIN_PREFIX :=
150 LK_TOOLCHAIN_PREFIX64 :=
151 STANDALONE_MONITOR :=
152 MONITOR_LIBRARY :=
153 OUTFILE_EXTENSION :=
154
155 endif