1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
3 #include "cmExportInstallAndroidMKGenerator.h"
10 #include "cmExportBuildAndroidMKGenerator.h"
11 #include "cmExportSet.h"
12 #include "cmGeneratorTarget.h"
13 #include "cmInstallExportGenerator.h"
14 #include "cmInstallTargetGenerator.h"
15 #include "cmStateTypes.h"
16 #include "cmStringAlgorithms.h"
17 #include "cmSystemTools.h"
19 #include "cmTargetExport.h"
21 cmExportInstallAndroidMKGenerator::cmExportInstallAndroidMKGenerator(
22 cmInstallExportGenerator
* iegen
)
23 : cmExportInstallFileGenerator(iegen
)
27 void cmExportInstallAndroidMKGenerator::GenerateImportHeaderCode(
28 std::ostream
& os
, const std::string
&)
30 std::string installDir
= this->IEGen
->GetDestination();
31 os
<< "LOCAL_PATH := $(call my-dir)\n";
32 size_t numDotDot
= cmSystemTools::CountChar(installDir
.c_str(), '/');
33 numDotDot
+= installDir
.empty() ? 0 : 1;
35 for (size_t n
= 0; n
< numDotDot
; n
++) {
38 os
<< "_IMPORT_PREFIX := $(LOCAL_PATH)" << path
<< "\n\n";
39 for (std::unique_ptr
<cmTargetExport
> const& te
:
40 this->IEGen
->GetExportSet()->GetTargetExports()) {
41 // Collect import properties for this target.
42 if (te
->Target
->GetType() == cmStateEnums::INTERFACE_LIBRARY
) {
46 if (te
->LibraryGenerator
) {
47 dest
= te
->LibraryGenerator
->GetDestination("");
49 if (te
->ArchiveGenerator
) {
50 dest
= te
->ArchiveGenerator
->GetDestination("");
52 te
->Target
->Target
->SetProperty("__dest", dest
);
56 void cmExportInstallAndroidMKGenerator::GenerateImportFooterCode(std::ostream
&)
60 void cmExportInstallAndroidMKGenerator::GenerateImportTargetCode(
61 std::ostream
& os
, cmGeneratorTarget
const* target
,
62 cmStateEnums::TargetType
/*targetType*/)
64 std::string targetName
= cmStrCat(this->Namespace
, target
->GetExportName());
65 os
<< "include $(CLEAR_VARS)\n";
66 os
<< "LOCAL_MODULE := ";
67 os
<< targetName
<< "\n";
68 os
<< "LOCAL_SRC_FILES := $(_IMPORT_PREFIX)/";
69 os
<< target
->Target
->GetSafeProperty("__dest") << "/";
71 if (!this->Configurations
.empty()) {
72 config
= this->Configurations
[0];
74 os
<< target
->GetFullName(config
) << "\n";
77 void cmExportInstallAndroidMKGenerator::GenerateExpectedTargetsCode(
78 std::ostream
&, const std::string
&)
82 void cmExportInstallAndroidMKGenerator::GenerateImportPropertyCode(
83 std::ostream
&, const std::string
&, const std::string
&,
84 cmGeneratorTarget
const*, ImportPropertyMap
const&, const std::string
&)
88 void cmExportInstallAndroidMKGenerator::GenerateMissingTargetsCheckCode(
93 void cmExportInstallAndroidMKGenerator::GenerateInterfaceProperties(
94 cmGeneratorTarget
const* target
, std::ostream
& os
,
95 const ImportPropertyMap
& properties
)
98 if (!this->Configurations
.empty()) {
99 config
= this->Configurations
[0];
101 cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
102 target
, os
, properties
, cmExportBuildAndroidMKGenerator::INSTALL
, config
);
105 void cmExportInstallAndroidMKGenerator::LoadConfigFiles(std::ostream
&)
109 void cmExportInstallAndroidMKGenerator::GenerateImportPrefix(std::ostream
&)
113 void cmExportInstallAndroidMKGenerator::CleanupTemporaryVariables(
118 void cmExportInstallAndroidMKGenerator::GenerateImportedFileCheckLoop(
123 void cmExportInstallAndroidMKGenerator::GenerateImportedFileChecksCode(
124 std::ostream
&, cmGeneratorTarget
*, ImportPropertyMap
const&,
125 const std::set
<std::string
>&, const std::string
&)
129 bool cmExportInstallAndroidMKGenerator::GenerateImportFileConfig(