|
|
@@ -234,13 +234,14 @@ cmVisualStudio10TargetGenerator::cmVisualStudio10TargetGenerator(
|
|
|
{
|
|
|
this->Makefile->GetConfigurations(this->Configurations);
|
|
|
this->NsightTegra = gg->IsNsightTegra();
|
|
|
+ this->Android = gg->TargetsAndroid();
|
|
|
for (int i = 0; i < 4; ++i) {
|
|
|
this->NsightTegraVersion[i] = 0;
|
|
|
}
|
|
|
sscanf(gg->GetNsightTegraVersion().c_str(), "%u.%u.%u.%u",
|
|
|
&this->NsightTegraVersion[0], &this->NsightTegraVersion[1],
|
|
|
&this->NsightTegraVersion[2], &this->NsightTegraVersion[3]);
|
|
|
- this->MSTools = !this->NsightTegra;
|
|
|
+ this->MSTools = !this->NsightTegra && !this->Android;
|
|
|
this->Managed = false;
|
|
|
this->TargetCompileAsWinRT = false;
|
|
|
this->IsMissingFiles = false;
|
|
|
@@ -333,6 +334,13 @@ void cmVisualStudio10TargetGenerator::Generate()
|
|
|
this->ProjectType = csproj;
|
|
|
this->Managed = true;
|
|
|
}
|
|
|
+
|
|
|
+ if (this->Android &&
|
|
|
+ this->GeneratorTarget->GetType() == cmStateEnums::EXECUTABLE &&
|
|
|
+ !this->GeneratorTarget->Target->IsAndroidGuiExecutable()) {
|
|
|
+ this->GlobalGenerator->AddAndroidExecutableWarning(this->Name);
|
|
|
+ }
|
|
|
+
|
|
|
// Tell the global generator the name of the project file
|
|
|
this->GeneratorTarget->Target->SetProperty("GENERATOR_FILE_NAME",
|
|
|
this->Name);
|
|
|
@@ -427,7 +435,7 @@ void cmVisualStudio10TargetGenerator::Generate()
|
|
|
e1.Attribute("Label", "Globals");
|
|
|
e1.Element("ProjectGuid", "{" + this->GUID + "}");
|
|
|
|
|
|
- if (this->MSTools &&
|
|
|
+ if ((this->MSTools || this->Android) &&
|
|
|
this->GeneratorTarget->GetType() <= cmStateEnums::GLOBAL_TARGET) {
|
|
|
this->WriteApplicationTypeSettings(e1);
|
|
|
this->VerifyNecessaryFiles();
|
|
|
@@ -469,7 +477,11 @@ void cmVisualStudio10TargetGenerator::Generate()
|
|
|
cmProp vsGlobalKeyword =
|
|
|
this->GeneratorTarget->GetProperty("VS_GLOBAL_KEYWORD");
|
|
|
if (!vsGlobalKeyword) {
|
|
|
- e1.Element("Keyword", "Win32Proj");
|
|
|
+ if (this->GlobalGenerator->TargetsAndroid()) {
|
|
|
+ e1.Element("Keyword", "Android");
|
|
|
+ } else {
|
|
|
+ e1.Element("Keyword", "Win32Proj");
|
|
|
+ }
|
|
|
} else {
|
|
|
e1.Element("Keyword", *vsGlobalKeyword);
|
|
|
}
|
|
|
@@ -1137,6 +1149,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues(Elem& e0)
|
|
|
!this->GeneratorTarget->Target->IsAndroidGuiExecutable()) {
|
|
|
// Android executables are .so too.
|
|
|
configType = "DynamicLibrary";
|
|
|
+ } else if (this->Android) {
|
|
|
+ configType = "DynamicLibrary";
|
|
|
} else {
|
|
|
configType = "Application";
|
|
|
}
|
|
|
@@ -1166,6 +1180,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues(Elem& e0)
|
|
|
}
|
|
|
} else if (this->NsightTegra) {
|
|
|
this->WriteNsightTegraConfigurationValues(e1, c);
|
|
|
+ } else if (this->Android) {
|
|
|
+ this->WriteAndroidConfigurationValues(e1, c);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1324,6 +1340,24 @@ void cmVisualStudio10TargetGenerator::WriteNsightTegraConfigurationValues(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void cmVisualStudio10TargetGenerator::WriteAndroidConfigurationValues(
|
|
|
+ Elem& e1, std::string const&)
|
|
|
+{
|
|
|
+ cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator;
|
|
|
+ if (cmProp projectToolsetOverride =
|
|
|
+ this->GeneratorTarget->GetProperty("VS_PLATFORM_TOOLSET")) {
|
|
|
+ e1.Element("PlatformToolset", *projectToolsetOverride);
|
|
|
+ } else if (const char* toolset = gg->GetPlatformToolset()) {
|
|
|
+ e1.Element("PlatformToolset", toolset);
|
|
|
+ }
|
|
|
+ if (cmProp stlType =
|
|
|
+ this->GeneratorTarget->GetProperty("ANDROID_STL_TYPE")) {
|
|
|
+ if (*stlType != "none") {
|
|
|
+ e1.Element("UseOfStl", *stlType);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void cmVisualStudio10TargetGenerator::WriteCustomCommands(Elem& e0)
|
|
|
{
|
|
|
this->CSharpCustomCommandNames.clear();
|
|
|
@@ -2909,7 +2943,9 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (this->MSTools) {
|
|
|
+ if (this->Android) {
|
|
|
+ e2.Element("ObjectFileName", "$(IntDir)%(filename).o");
|
|
|
+ } else if (this->MSTools) {
|
|
|
cmsys::RegularExpression clangToolset("v[0-9]+_clang_.*");
|
|
|
const char* toolset = this->GlobalGenerator->GetPlatformToolset();
|
|
|
if (toolset && clangToolset.find(toolset)) {
|
|
|
@@ -4347,6 +4383,7 @@ void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings(Elem& e1)
|
|
|
bool isAppContainer = false;
|
|
|
bool const isWindowsPhone = this->GlobalGenerator->TargetsWindowsPhone();
|
|
|
bool const isWindowsStore = this->GlobalGenerator->TargetsWindowsStore();
|
|
|
+ bool const isAndroid = this->GlobalGenerator->TargetsAndroid();
|
|
|
std::string const& rev = this->GlobalGenerator->GetApplicationTypeRevision();
|
|
|
if (isWindowsPhone || isWindowsStore) {
|
|
|
e1.Element("ApplicationType",
|
|
|
@@ -4384,13 +4421,19 @@ void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings(Elem& e1)
|
|
|
this->Name + "_$(Configuration)_$(Platform).xap");
|
|
|
}
|
|
|
}
|
|
|
+ } else if (isAndroid) {
|
|
|
+ e1.Element("ApplicationType", "Android");
|
|
|
+ e1.Element("ApplicationTypeRevision",
|
|
|
+ gg->GetAndroidApplicationTypeRevision());
|
|
|
}
|
|
|
if (isAppContainer) {
|
|
|
e1.Element("AppContainerApplication", "true");
|
|
|
- } else if (this->Platform == "ARM64") {
|
|
|
- e1.Element("WindowsSDKDesktopARM64Support", "true");
|
|
|
- } else if (this->Platform == "ARM") {
|
|
|
- e1.Element("WindowsSDKDesktopARMSupport", "true");
|
|
|
+ } else if (!isAndroid) {
|
|
|
+ if (this->Platform == "ARM64") {
|
|
|
+ e1.Element("WindowsSDKDesktopARM64Support", "true");
|
|
|
+ } else if (this->Platform == "ARM") {
|
|
|
+ e1.Element("WindowsSDKDesktopARMSupport", "true");
|
|
|
+ }
|
|
|
}
|
|
|
std::string const& targetPlatformVersion =
|
|
|
gg->GetWindowsTargetPlatformVersion();
|