1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4 
5 #include "cmConfigure.h" // IWYU pragma: keep
6 
7 #include <iosfwd>
8 #include <set>
9 #include <string>
10 #include <vector>
11 
12 #include "cmExportFileGenerator.h"
13 #include "cmExportInstallFileGenerator.h"
14 #include "cmStateTypes.h"
15 
16 class cmGeneratorTarget;
17 class cmInstallExportGenerator;
18 
19 /** \class cmExportInstallAndroidMKGenerator
20  * \brief Generate a file exporting targets from an install tree.
21  *
22  * cmExportInstallAndroidMKGenerator generates files exporting targets from
23  * install an installation tree.  The files are placed in a temporary
24  * location for installation by cmInstallExportGenerator.  The file format
25  * is for the ndk build system and is a makefile fragment specifying prebuilt
26  * libraries to the ndk build system.
27  *
28  * This is used to implement the INSTALL(EXPORT_ANDROID_MK) command.
29  */
30 class cmExportInstallAndroidMKGenerator : public cmExportInstallFileGenerator
31 {
32 public:
33   /** Construct with the export installer that will install the
34       files.  */
35   cmExportInstallAndroidMKGenerator(cmInstallExportGenerator* iegen);
36 
37 protected:
38   // Implement virtual methods from the superclass.
GeneratePolicyHeaderCode(std::ostream &)39   void GeneratePolicyHeaderCode(std::ostream&) override {}
GeneratePolicyFooterCode(std::ostream &)40   void GeneratePolicyFooterCode(std::ostream&) override {}
41   void GenerateImportHeaderCode(std::ostream& os,
42                                 const std::string& config = "") override;
43   void GenerateImportFooterCode(std::ostream& os) override;
44   void GenerateImportTargetCode(
45     std::ostream& os, cmGeneratorTarget const* target,
46     cmStateEnums::TargetType /*targetType*/) override;
47   void GenerateExpectedTargetsCode(
48     std::ostream& os, const std::string& expectedTargets) override;
49   void GenerateImportPropertyCode(
50     std::ostream& os, const std::string& config,
51     cmGeneratorTarget const* target,
52     ImportPropertyMap const& properties) override;
53   void GenerateMissingTargetsCheckCode(
54     std::ostream& os, const std::vector<std::string>& missingTargets) override;
55   void GenerateInterfaceProperties(
56     cmGeneratorTarget const* target, std::ostream& os,
57     const ImportPropertyMap& properties) override;
58   void GenerateImportPrefix(std::ostream& os) override;
59   void LoadConfigFiles(std::ostream&) override;
60   void GenerateRequiredCMakeVersion(std::ostream& os,
61                                     const char* versionString) override;
62   void CleanupTemporaryVariables(std::ostream&) override;
63   void GenerateImportedFileCheckLoop(std::ostream& os) override;
64   void GenerateImportedFileChecksCode(
65     std::ostream& os, cmGeneratorTarget* target,
66     ImportPropertyMap const& properties,
67     const std::set<std::string>& importedLocations) override;
68   bool GenerateImportFileConfig(const std::string& config,
69                                 std::vector<std::string>&) override;
70 };
71