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"
4 
5 #include <cstddef>
6 #include <memory>
7 #include <ostream>
8 
9 #include "cmExportBuildAndroidMKGenerator.h"
10 #include "cmExportSet.h"
11 #include "cmGeneratorTarget.h"
12 #include "cmInstallExportGenerator.h"
13 #include "cmInstallTargetGenerator.h"
14 #include "cmStateTypes.h"
15 #include "cmStringAlgorithms.h"
16 #include "cmSystemTools.h"
17 #include "cmTarget.h"
18 #include "cmTargetExport.h"
19 
cmExportInstallAndroidMKGenerator(cmInstallExportGenerator * iegen)20 cmExportInstallAndroidMKGenerator::cmExportInstallAndroidMKGenerator(
21   cmInstallExportGenerator* iegen)
22   : cmExportInstallFileGenerator(iegen)
23 {
24 }
25 
GenerateImportHeaderCode(std::ostream & os,const std::string &)26 void cmExportInstallAndroidMKGenerator::GenerateImportHeaderCode(
27   std::ostream& os, const std::string&)
28 {
29   std::string installDir = this->IEGen->GetDestination();
30   os << "LOCAL_PATH := $(call my-dir)\n";
31   size_t numDotDot = cmSystemTools::CountChar(installDir.c_str(), '/');
32   numDotDot += installDir.empty() ? 0 : 1;
33   std::string path;
34   for (size_t n = 0; n < numDotDot; n++) {
35     path += "/..";
36   }
37   os << "_IMPORT_PREFIX := "
38      << "$(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) {
43       continue;
44     }
45     std::string dest;
46     if (te->LibraryGenerator) {
47       dest = te->LibraryGenerator->GetDestination("");
48     }
49     if (te->ArchiveGenerator) {
50       dest = te->ArchiveGenerator->GetDestination("");
51     }
52     te->Target->Target->SetProperty("__dest", dest);
53   }
54 }
55 
GenerateImportFooterCode(std::ostream &)56 void cmExportInstallAndroidMKGenerator::GenerateImportFooterCode(std::ostream&)
57 {
58 }
59 
GenerateImportTargetCode(std::ostream & os,cmGeneratorTarget const * target,cmStateEnums::TargetType)60 void cmExportInstallAndroidMKGenerator::GenerateImportTargetCode(
61   std::ostream& os, cmGeneratorTarget const* target,
62   cmStateEnums::TargetType /*targetType*/)
63 {
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") << "/";
70   std::string config;
71   if (!this->Configurations.empty()) {
72     config = this->Configurations[0];
73   }
74   os << target->GetFullName(config) << "\n";
75 }
76 
GenerateExpectedTargetsCode(std::ostream &,const std::string &)77 void cmExportInstallAndroidMKGenerator::GenerateExpectedTargetsCode(
78   std::ostream&, const std::string&)
79 {
80 }
81 
GenerateImportPropertyCode(std::ostream &,const std::string &,cmGeneratorTarget const *,ImportPropertyMap const &)82 void cmExportInstallAndroidMKGenerator::GenerateImportPropertyCode(
83   std::ostream&, const std::string&, cmGeneratorTarget const*,
84   ImportPropertyMap const&)
85 {
86 }
87 
GenerateMissingTargetsCheckCode(std::ostream &,const std::vector<std::string> &)88 void cmExportInstallAndroidMKGenerator::GenerateMissingTargetsCheckCode(
89   std::ostream&, const std::vector<std::string>&)
90 {
91 }
92 
GenerateInterfaceProperties(cmGeneratorTarget const * target,std::ostream & os,const ImportPropertyMap & properties)93 void cmExportInstallAndroidMKGenerator::GenerateInterfaceProperties(
94   cmGeneratorTarget const* target, std::ostream& os,
95   const ImportPropertyMap& properties)
96 {
97   std::string config;
98   if (!this->Configurations.empty()) {
99     config = this->Configurations[0];
100   }
101   cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
102     target, os, properties, cmExportBuildAndroidMKGenerator::INSTALL, config);
103 }
104 
LoadConfigFiles(std::ostream &)105 void cmExportInstallAndroidMKGenerator::LoadConfigFiles(std::ostream&)
106 {
107 }
108 
GenerateImportPrefix(std::ostream &)109 void cmExportInstallAndroidMKGenerator::GenerateImportPrefix(std::ostream&)
110 {
111 }
112 
GenerateRequiredCMakeVersion(std::ostream &,const char *)113 void cmExportInstallAndroidMKGenerator::GenerateRequiredCMakeVersion(
114   std::ostream&, const char*)
115 {
116 }
117 
CleanupTemporaryVariables(std::ostream &)118 void cmExportInstallAndroidMKGenerator::CleanupTemporaryVariables(
119   std::ostream&)
120 {
121 }
122 
GenerateImportedFileCheckLoop(std::ostream &)123 void cmExportInstallAndroidMKGenerator::GenerateImportedFileCheckLoop(
124   std::ostream&)
125 {
126 }
127 
GenerateImportedFileChecksCode(std::ostream &,cmGeneratorTarget *,ImportPropertyMap const &,const std::set<std::string> &)128 void cmExportInstallAndroidMKGenerator::GenerateImportedFileChecksCode(
129   std::ostream&, cmGeneratorTarget*, ImportPropertyMap const&,
130   const std::set<std::string>&)
131 {
132 }
133 
GenerateImportFileConfig(const std::string &,std::vector<std::string> &)134 bool cmExportInstallAndroidMKGenerator::GenerateImportFileConfig(
135   const std::string&, std::vector<std::string>&)
136 {
137   return true;
138 }
139