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