<!--
***********************************************************************************************
Android.tools.props

WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
          created a backup copy.  Incorrect changes to this file will make it
          impossible to load or build your projects from the command-line or the IDE.

Copyright (C) Microsoft Corporation. All rights reserved.
***********************************************************************************************
-->

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildThisFileDirectory)ImportBefore\*.props" Condition="Exists('$(MSBuildThisFileDirectory)ImportBefore')" />

  <PropertyGroup Condition="'$(DisableRegistryUse)' != 'true'">
    <!-- 1) Use the values set by the user -->
    <VS_AndroidHome Condition="'$(VS_AndroidHome)' == ''">$(Registry:HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SecondaryInstaller\VC@AndroidHome)</VS_AndroidHome>
    <VS_AntHome Condition="'$(VS_AntHome)' == ''">$(Registry:HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SecondaryInstaller\VC@AntHome)</VS_AntHome>
    <VS_JavaHome Condition="'$(VS_JavaHome)' == ''">$(Registry:HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SecondaryInstaller\VC@JavaHome)</VS_JavaHome>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == ''">$(Registry:HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SecondaryInstaller\VC@NDKRoot)</VS_NdkRoot>

    <!-- 2) Check for SDKs and NDKs relative to our shared installation path first, then ProgramData -->
    <VS_VsSharedInstallDir Condition="'$(VS_VsSharedInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\VisualStudio\Setup@SharedInstallationPath)</VS_VsSharedInstallDir>
    <VS_VsSharedInstallDir Condition="'$(VS_VsSharedInstallDir)' == ''">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup', 'SharedInstallationPath', null, RegistryView.Registry64, RegistryView.Registry32))</VS_VsSharedInstallDir>
    <VS_VsSharedInstallDrive Condition="$(VS_VsSharedInstallDir) != ''">$([System.IO.Path]::GetPathRoot('$(VS_VsSharedInstallDir)'))</VS_VsSharedInstallDrive>

    <!-- Find NDK location in 17.11+ default locations -->
    <VS_VsSharedNDK Condition="!Exists('$(VS_VsSharedNDK)')">$([System.Environment]::GetFolderPath(SpecialFolder.ProgramFilesX86))\Android\AndroidNDK</VS_VsSharedNDK>
    <VS_VsSharedNDK64 Condition="!Exists('$(VS_VsSharedNDK64)')">$([System.Environment]::GetFolderPath(SpecialFolder.ProgramFilesX86))\Android\AndroidNDK64</VS_VsSharedNDK64>
    <VS_VsSharedNDK Condition="!Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedInstallDir)\Android\AndroidNDK</VS_VsSharedNDK>
    <VS_VsSharedNDK64 Condition="!Exists('$(VS_VsSharedNDK64)')">$(VS_VsSharedInstallDir)\Android\AndroidNDK64</VS_VsSharedNDK64>

    <!-- Find NDK location in 15.7+ locations -->
    <VS_VsSharedNDK Condition="'$(VS_VsSharedNDK)' == '' and Exists('$(VS_VsSharedInstallDrive)')">$(VS_VsSharedInstallDrive)\Microsoft\AndroidNDK</VS_VsSharedNDK>
    <VS_VsSharedNDK64 Condition="'$(VS_VsSharedNDK64)' == '' and Exists('$(VS_VsSharedInstallDrive)')">$(VS_VsSharedInstallDrive)\Microsoft\AndroidNDK64</VS_VsSharedNDK64>

    <!-- If we failed to find NDK location in 15.7 locations also check ProgramData if we updated from pre 15.7 they might still be in there -->
    <VS_VsSharedNDK Condition="!Exists('$(VS_VsSharedNDK)')">$(ProgramData)\Microsoft\AndroidNDK\</VS_VsSharedNDK>
    <VS_VsSharedNDK64 Condition="!Exists('$(VS_VsSharedNDK64)')">$(ProgramData)\Microsoft\AndroidNDK64\</VS_VsSharedNDK64>

    <!-- 3) Use the locations from the secondary installer  -->
    <VS_AndroidHome Condition="'$(VS_AndroidHome)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Android SDK Tools@Path)</VS_AndroidHome>
    <VS_AndroidHome Condition="'$(VS_AndroidHome)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Android SDK Tools@Path)</VS_AndroidHome>
    <!-- 4 use Xamarin default path for SDK-->
    <VS_AndroidHome Condition="'$(VS_AndroidHome)' == ''">$([System.Environment]::GetFolderPath(SpecialFolder.ProgramFilesX86))\Android\android-sdk</VS_AndroidHome>

    <VS_AntHome Condition="'$(VS_AntHome)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\Ant@ANT_HOME)</VS_AntHome>
    <VS_AntHome Condition="'$(VS_AntHome)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\Ant@ANT_HOME)</VS_AntHome>

    <VS_AntHome Condition="'$(VS_AntHome)' == '' and Exists('$(VSInstallRoot)\Apps\apache-ant-1.9.3')">$(VSInstallRoot)\Apps\apache-ant-1.9.3</VS_AntHome>

    <VS_NdkRoot_23C Condition="'$(VS_NdkRoot_23C)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r23c</VS_NdkRoot_23C>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_23C)')">$(VS_NdkRoot_23C)</VS_NdkRoot>

    <VS_NdkRoot_21E Condition="'$(VS_NdkRoot_21E)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r21e</VS_NdkRoot_21E>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_21E)')">$(VS_NdkRoot_21E)</VS_NdkRoot>

    <VS_NdkRoot_16B Condition="'$(VS_NdkRoot_16B)' == '' and Exists('$(VS_VsSharedNDK64)')">$(VS_VsSharedNDK64)\android-ndk-r16b</VS_NdkRoot_16B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_16B)')">$(VS_NdkRoot_16B)</VS_NdkRoot>
    <VS_NdkRoot_16B Condition="'$(VS_NdkRoot_16B)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r16b</VS_NdkRoot_16B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_16B)')">$(VS_NdkRoot_16B)</VS_NdkRoot>

    <VS_NdkRoot_15C Condition="'$(VS_NdkRoot_15C)' == '' and Exists('$(VS_VsSharedNDK64)')">$(VS_VsSharedNDK64)\android-ndk-r15c</VS_NdkRoot_15C>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_15C)')">$(VS_NdkRoot_15C)</VS_NdkRoot>
    <VS_NdkRoot_15C Condition="'$(VS_NdkRoot_15C)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r15c</VS_NdkRoot_15C>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_15C)')">$(VS_NdkRoot_15C)</VS_NdkRoot>

    <VS_NdkRoot_13B Condition="'$(VS_NdkRoot_13B)' == '' and Exists('$(VS_VsSharedNDK64)')">$(VS_VsSharedNDK64)\android-ndk-r13b</VS_NdkRoot_13B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_13B)')">$(VS_NdkRoot_13B)</VS_NdkRoot>
    <VS_NdkRoot_13B Condition="'$(VS_NdkRoot_13B)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r13b</VS_NdkRoot_13B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_13B)')">$(VS_NdkRoot_13B)</VS_NdkRoot>

    <VS_NdkRoot_12B Condition="'$(VS_NdkRoot_12B)' == '' and Exists('$(VS_VsSharedNDK64)')">$(VS_VsSharedNDK64)\android-ndk-r12b</VS_NdkRoot_12B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_12B)')">$(VS_NdkRoot_12B)</VS_NdkRoot>
    <VS_NdkRoot_12B Condition="'$(VS_NdkRoot_12B)' == '' and Exists('$(VS_VsSharedNDK)')">$(VS_VsSharedNDK)\android-ndk-r12b</VS_NdkRoot_12B>
    <VS_NdkRoot Condition="'$(VS_NdkRoot)' == '' and Exists('$(VS_NdkRoot_12B)')">$(VS_NdkRoot_12B)</VS_NdkRoot>
  </PropertyGroup>

  <PropertyGroup Condition="'$(VS_NdkRoot)' == ''">
    <!-- Check for NDK 11C in the VS2015 (14.0) location. -->
    <!-- 11C Removed from setup in 15.7 so don't check the new SharedInstallDir location -->
    <VS_NdkRoot_11C Condition="'$(VS_NdkRoot_11C)' == '' and '$(PreferredToolArchitecture)' == 'x64'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\AndroidNDK64\2.0@NDK_HOME)</VS_NdkRoot_11C>
    <VS_NdkRoot_11C Condition="'$(VS_NdkRoot_11C)' == '' and '$(PreferredToolArchitecture)' == 'x64'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\AndroidNDK64\2.0@NDK_HOME)</VS_NdkRoot_11C>
    <VS_NdkRoot_11C Condition="'$(VS_NdkRoot_11C)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\AndroidNDK\2.0@NDK_HOME)</VS_NdkRoot_11C>
    <VS_NdkRoot_11C Condition="'$(VS_NdkRoot_11C)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\VS\SecondaryInstaller\AndroidNDK\2.0@NDK_HOME)</VS_NdkRoot_11C>

    <VS_NdkRoot Condition="Exists('$(VS_NdkRoot_11C)')">$(VS_NdkRoot_11C)</VS_NdkRoot>
  </PropertyGroup>

  <!-- Parse source.properties to get NDK version -->
  <PropertyGroup Condition="Exists('$(VS_NdkRoot)\source.properties')">
    <_NDKVersionRaw>$([System.IO.File]::ReadAllText('$(VS_NdkRoot)\source.properties').Trim())</_NDKVersionRaw>
    <_NDKVersionRawIndex>$(_NDKVersionRaw.IndexOf('Pkg.Revision ='))</_NDKVersionRawIndex>
    <_NDKVersionRawIndex2>$([MSBuild]::Add($(_NDKVersionRawIndex), 15))</_NDKVersionRawIndex2>
    <NDKVersionFull>$(_NDKVersionRaw.Substring('$(_NDKVersionRawIndex2)'))</NDKVersionFull>
    <NDKVersion>$(NDKVersionFull.Substring(0,4))</NDKVersion>
    <NDKMajorVersion>$(NDKVersion.Substring(0,2))</NDKMajorVersion>

    <!-- Clean up -->
    <_NDKVersionRaw />
    <_NDKVersionRawIndex />
    <_NDKVersionRawIndex2 />
  </PropertyGroup>

  <PropertyGroup>
    <!-- Platform path -->
    <AndroidAPILevelPath Condition="'$(VS_NdkRoot)' != '' AND Exists('$(VS_NdkRoot)\Platforms') AND '$(NDKVersion)' &lt;= '21.0'">$(VS_NdkRoot)\Platforms</AndroidAPILevelPath>
    <!-- Since NDK19 the platform path is deprecated and now the libs are under the sysroot check how to define this path better -->
    <AndroidAPILevelPath Condition="'$(AndroidAPILevelPath)' == ''">$(VS_NdkRoot)\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\$(AndroidHeaderTriple)</AndroidAPILevelPath>
    <AndroidSDKAPILevelPath Condition="'$(VS_AndroidHome)' != ''">$(VS_AndroidHome)\Platforms</AndroidSDKAPILevelPath>
    <ShowAndroidPathsVerbosity Condition="'$(ShowAndroidPathsVerbosity)' == ''">High</ShowAndroidPathsVerbosity>
    <AndroidSDKAPILevelRoot>$(AndroidSDKAPILevelPath)\$(AndroidAPILevel)\</AndroidSDKAPILevelRoot>
  </PropertyGroup>

  <PropertyGroup>
    <AndroidAPILevelNumber>$([System.Text.RegularExpressions.Regex]::Match('$(AndroidAPILevel)', '(\d+)'))</AndroidAPILevelNumber>
    <AndroidAPILevelNumber Condition="'$(AndroidAPILevelNumber)' == ''">$(DefaultAndroidAPILevelNumber)</AndroidAPILevelNumber>
    <TargetPlatformVersion>$(AndroidAPILevelNumber).0</TargetPlatformVersion>

    <AndroidAPIFriendlyName_android-3>Cupcake 1.5</AndroidAPIFriendlyName_android-3>
    <AndroidAPIFriendlyName_android-4>Donut 1.6</AndroidAPIFriendlyName_android-4>
    <AndroidAPIFriendlyName_android-5>Eclair 2.0</AndroidAPIFriendlyName_android-5>
    <AndroidAPIFriendlyName_android-6>Eclair 2.0.1</AndroidAPIFriendlyName_android-6>
    <AndroidAPIFriendlyName_android-7>Eclair 2.1</AndroidAPIFriendlyName_android-7>
    <AndroidAPIFriendlyName_android-8>Froyo  2.2.x</AndroidAPIFriendlyName_android-8>
    <AndroidAPIFriendlyName_android-9>Gingerbread 2.3 - 2.3.2</AndroidAPIFriendlyName_android-9>
    <AndroidAPIFriendlyName_android-10>Gingerbread 2.3.3 - 2.3.7</AndroidAPIFriendlyName_android-10>
    <AndroidAPIFriendlyName_android-11>Honeycomb 3.0</AndroidAPIFriendlyName_android-11>
    <AndroidAPIFriendlyName_android-12>Honeycomb 3.1</AndroidAPIFriendlyName_android-12>
    <AndroidAPIFriendlyName_android-13>Honeycomb 3.2.x</AndroidAPIFriendlyName_android-13>
    <AndroidAPIFriendlyName_android-14>Ice Cream Sandwich 4.0.1 - 4.0.2</AndroidAPIFriendlyName_android-14>
    <AndroidAPIFriendlyName_android-15>Ice Cream Sandwich 4.0.3 - 4.0.4</AndroidAPIFriendlyName_android-15>
    <AndroidAPIFriendlyName_android-16>Jelly Bean 4.1.x</AndroidAPIFriendlyName_android-16>
    <AndroidAPIFriendlyName_android-17>Jelly Bean 4.2.x</AndroidAPIFriendlyName_android-17>
    <AndroidAPIFriendlyName_android-18>Jelly Bean 4.3.x</AndroidAPIFriendlyName_android-18>
    <AndroidAPIFriendlyName_android-19>KitKat 4.4 - 4.4.4</AndroidAPIFriendlyName_android-19>
    <AndroidAPIFriendlyName_android-21>Lollipop 5.0 - 5.0.2</AndroidAPIFriendlyName_android-21>
    <AndroidAPIFriendlyName_android-22>Lollipop 5.1</AndroidAPIFriendlyName_android-22>
    <AndroidAPIFriendlyName_android-23>Marshmallow 6.0</AndroidAPIFriendlyName_android-23>
    <AndroidAPIFriendlyName_android-24>Nougat 7.0</AndroidAPIFriendlyName_android-24>
    <AndroidAPIFriendlyName_android-25>Nougat 7.1</AndroidAPIFriendlyName_android-25>
    <AndroidAPIFriendlyName_android-26>Oreo 8.0</AndroidAPIFriendlyName_android-26>
    <AndroidAPIFriendlyName_android-27>Oreo 8.1</AndroidAPIFriendlyName_android-27>
    <AndroidAPIFriendlyName_android-28>Pie 9.0</AndroidAPIFriendlyName_android-28>
    <AndroidAPIFriendlyName_android-29>Android 10 (Q) 10.0</AndroidAPIFriendlyName_android-29>
    <AndroidAPIFriendlyName_android-30>Android 11 (R) 11.0</AndroidAPIFriendlyName_android-30>
    <AndroidAPIFriendlyName_android-31>Android 12 (S) 12.0</AndroidAPIFriendlyName_android-31>
  </PropertyGroup>

</Project>
