xref: /aosp_15_r20/developers/build/templates/include/common.ftl (revision d353a188ca6ec4b5eba25b5fbd7bcb8ce61322fb)
1*d353a188SXin Li<#ftl>
2*d353a188SXin Li<#--
3*d353a188SXin Li        Copyright 2013 The Android Open Source Project
4*d353a188SXin Li
5*d353a188SXin Li        Licensed under the Apache License, Version 2.0 (the "License");
6*d353a188SXin Li        you may not use this file except in compliance with the License.
7*d353a188SXin Li        You may obtain a copy of the License at
8*d353a188SXin Li
9*d353a188SXin Li        http://www.apache.org/licenses/LICENSE-2.0
10*d353a188SXin Li
11*d353a188SXin Li        Unless required by applicable law or agreed to in writing, software
12*d353a188SXin Li        distributed under the License is distributed on an "AS IS" BASIS,
13*d353a188SXin Li        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*d353a188SXin Li        See the License for the specific language governing permissions and
15*d353a188SXin Li        limitations under the License.
16*d353a188SXin Li-->
17*d353a188SXin Li<#-- Add the appropriate copyright header -->
18*d353a188SXin Li<#if meta.outputFile?ends_with("java")>
19*d353a188SXin Li    <#include "c-style-copyright.ftl">
20*d353a188SXin Li<#elseif meta.outputFile?ends_with("xml")>
21*d353a188SXin Li    <#include "xml-style-copyright.ftl">
22*d353a188SXin Li</#if>
23*d353a188SXin Li<#-- Set the compile SDK version. This is more complicated than it should be, because
24*d353a188SXin Li      the version can be either a number or a string (e.g. KeyLimePie) so we need to test
25*d353a188SXin Li      both to see if the variable is empty.  Note that to freemarker, all values from
26*d353a188SXin Li      template-params.xml are Strings, even those that are human-readable as ints.
27*d353a188SXin Li
28*d353a188SXin Li      Also, there's no way to check if it's a number or not without spamming output with
29*d353a188SXin Li      try/catch stacktraces, so we can't silently wrap a string in quotes and leave a number
30*d353a188SXin Li      alone.
31*d353a188SXin Li-->
32*d353a188SXin Li<#if (samples.compileSdkVersion)?? && (sample.compileSdkVersion)?is_string>
33*d353a188SXin Li    <#if (sample.compileSdkVersion?contains("android")) && !(sample.compileSdkVersion?starts_with("\""))
34*d353a188SXin Li            && !(sample.compileSdkVersion?ends_with("\""))>
35*d353a188SXin Li        <#assign compile_sdk = "\"${sample.compileSdkVersion}\""/>
36*d353a188SXin Li    <#else>
37*d353a188SXin Li        <#assign compile_sdk = sample.compileSdkVersion/>
38*d353a188SXin Li    </#if>
39*d353a188SXin Li<#elseif (sample.compileSdkVersion)?has_content>
40*d353a188SXin Li    <#assign compile_sdk = sample.compileSdkVersion/>
41*d353a188SXin Li<#else>
42*d353a188SXin Li    <#assign compile_sdk = "28"/>
43*d353a188SXin Li</#if>
44*d353a188SXin Li<#-- Set the MinSDK version. This is more complicated than it should be, because
45*d353a188SXin Li      the version can be either a number or a string (e.g. KeyLimePie) so we need to test
46*d353a188SXin Li      both to see if the variable is empty.  Note that to freemarker, all values from
47*d353a188SXin Li      template-params.xml are Strings, even those that are human-readable as ints.
48*d353a188SXin Li
49*d353a188SXin Li      Also, there's no way to check if it's a number or not without spamming output with
50*d353a188SXin Li      try/catch stacktraces, so we can't silently wrap a string in quotes and leave a number
51*d353a188SXin Li      alone.
52*d353a188SXin Li-->
53*d353a188SXin Li<#if (samples.minSdk)?? && (sample.minSdk)?is_string>
54*d353a188SXin Li    <#if (sample.minSdk?contains("android")) && !(sample.minSdk?starts_with("\""))
55*d353a188SXin Li            && !(sample.minSdk?ends_with("\""))>
56*d353a188SXin Li        <#assign min_sdk = "\"${sample.minSdk}\""/>
57*d353a188SXin Li    <#else>
58*d353a188SXin Li        <#assign min_sdk = sample.minSdk/>
59*d353a188SXin Li    </#if>
60*d353a188SXin Li<#elseif (sample.minSdk)?has_content>
61*d353a188SXin Li    <#assign min_sdk = sample.minSdk/>
62*d353a188SXin Li<#else>
63*d353a188SXin Li    <#assign min_sdk = "24"/>
64*d353a188SXin Li</#if>
65*d353a188SXin Li
66*d353a188SXin Li<#-- Global macros -->
67*d353a188SXin Li
68*d353a188SXin Li<#-- Check if dependency is a play services dependency and if it doesn't
69*d353a188SXin Li     have a version number attached use the global value
70*d353a188SXin Li     play_services_version -->
71*d353a188SXin Li<#macro update_play_services_dependency dep>
72*d353a188SXin Li    <#if "${dep}"?starts_with("com.google.android.gms:play-services")
73*d353a188SXin Li            && "${dep}"?index_of(":") == "${dep}"?last_index_of(":")>
74*d353a188SXin Li    implementation '${dep}:${play_services_version}'
75*d353a188SXin Li    <#else>
76*d353a188SXin Li    implementation '${dep}'
77*d353a188SXin Li    </#if>
78*d353a188SXin Li</#macro>
79*d353a188SXin Li
80*d353a188SXin Li<#-- Set the global build tools version -->
81*d353a188SXin Li<#assign build_tools_version='"28.0.3"'/>
82*d353a188SXin Li
83*d353a188SXin Li<#assign play_services_version="15.0.1"/>
84*d353a188SXin Li<#assign play_services_version_wear="16.0.1"/>
85*d353a188SXin Li
86*d353a188SXin Li<#assign play_services_wearable_dependency="'com.google.android.gms:play-services-wearable:${play_services_version_wear}'"/>
87*d353a188SXin Li
88*d353a188SXin Li<#assign android_support_v13_dependency="'com.android.support:support-v13:28.0.0'"/>
89*d353a188SXin Li
90*d353a188SXin Li<#assign wearable_support_dependency="'com.google.android.support:wearable:2.4.0'"/>
91*d353a188SXin Li
92*d353a188SXin Li<#assign wearable_support_provided_dependency="'com.google.android.wearable:wearable:2.4.0'"/>
93