1 #ifndef _ide_Builders_Android_h_ 2 #define _ide_Builders_Android_h_ 3 4 #include <Core/Core.h> 5 6 namespace Upp { 7 8 class AndroidProject { 9 public: 10 AndroidProject(); 11 AndroidProject(const String& dir, bool debug); ~AndroidProject()12 virtual ~AndroidProject() {} 13 14 String GetDir() const; 15 String GetJavaDir() const; 16 String GetJavaDir(const String& package) const; 17 String GetJniDir() const; 18 String GetJniDir(const String& package) const; 19 String GetLibsDir() const; 20 String GetResDir() const; 21 String GetBuildDir() const; 22 String GetClassesDir() const; 23 String GetBinDir() const; 24 String GetObjDir() const; 25 String GetObjLocalDir() const; 26 27 String GetManifestPath() const; 28 String GetJniMakeFilePath() const; 29 String GetJniApplicationMakeFilePath() const; 30 31 bool IsDebug() const; 32 bool IsRelease() const; 33 34 private: 35 String dir; 36 bool debug; 37 }; 38 39 class AndroidApplicationMakeFile { 40 public: 41 AndroidApplicationMakeFile(); 42 virtual ~AndroidApplicationMakeFile(); 43 44 String ToString() const; 45 46 public: 47 void SetPlatform(const String& platform); 48 void SetArchitectures(const Vector<String>& architectures); 49 void AddArchitecture(const String& architecture); 50 void SetCppRuntime(const String& cppRuntime); 51 void SetCppFlags(const String& cppFlags); 52 void SetCFlags(const String& cFlags); 53 void SetOptim(const String& optim); 54 void SetToolchain(const String& toolchain); 55 56 protected: 57 void AppendPlatform(String& makeFile) const; 58 void AppendArchitectures(String& makeFile) const; 59 void AppendCppRuntime(String& makeFile) const; 60 void AppendCppFlags(String& makeFile) const; 61 void AppendCFlags(String& makeFile) const; 62 void AppendOptim(String& makeFile) const; 63 void AppendToolchain(String& makeFile) const; 64 65 private: 66 String platform; 67 Vector<String> architectures; 68 String cppRuntime; 69 String cppFlags; 70 String cFlags; 71 String toolchain; 72 String optim; 73 }; 74 75 class AndroidModuleMakeFile : public Moveable<AndroidModuleMakeFile> { 76 public: 77 AndroidModuleMakeFile(); 78 AndroidModuleMakeFile(const String& name); 79 virtual ~AndroidModuleMakeFile(); 80 81 void Clear(); 82 String ToString() const; 83 84 public: 85 void AddSourceFile(const String& path); 86 void AddInclude(const String& includePath); 87 void AddCppFlag(const String& name, const String& value = ""); 88 void AddLdLibrary(const String& ldLibrary); 89 void AddStaticLibrary(const String& staticLibrary); 90 void AddStaticModuleLibrary(const String& staticModuleLibrary); 91 void AddSharedLibrary(const String& sharedLibrary); 92 GetName()93 String GetName() const { return this->name; } SetName(const String & name)94 void SetName(const String& name) { this->name = name; } 95 96 protected: 97 void AppendName(String& makeFile) const; 98 void AppendSourceFiles(String& makeFile) const; 99 void AppendIncludes(String& makeFile) const; 100 void AppendCppFlags(String& makeFile) const; 101 void AppendLdLibraries(String& makeFile) const; 102 void AppendStaticLibraries(String& makeFile) const; 103 void AppendSharedLibraries(String& makeFile) const; 104 void AppendModules(String& makeFile) const; 105 106 private: 107 String name; 108 Vector<String> sourceFiles; 109 Index<String> includes; 110 VectorMap<String, String> cppFlags; 111 Vector<String> ldLibraries; 112 Vector<String> staticLibraries; 113 Vector<String> staticModuleLibraries; 114 Vector<String> sharedLibraries; 115 }; 116 117 class AndroidMakeFile { 118 public: 119 static void AppendString( 120 String& makeFile, 121 const String& variable, 122 const String& variableName); 123 static void AppendStringVector( 124 String& makeFile, 125 const Vector<String>& vec, 126 const String& variableName, 127 const String& variablePrefix = "", 128 const String& variableSuffix = ""); 129 130 public: 131 AndroidMakeFile(); 132 virtual ~AndroidMakeFile(); 133 134 public: 135 bool IsEmpty() const; 136 void Clear(); 137 138 bool HasFooter(); 139 140 void AddHeader(); 141 void AddInclusion(const String& inclusion); 142 void AddModuleImport(const String& moduleName); 143 144 String ToString() const; 145 146 protected: 147 void AppendHeader(String& makeFile) const; 148 void AppendInclusions(String& makeFile) const; 149 void AppendImportedModules(String& makeFile) const; 150 151 private: 152 bool hasHeader; 153 Vector<String> inclusions; 154 Vector<String> importedModules; 155 }; 156 157 } 158 159 #endif 160