]> git.tdb.fi Git - builder.git/blob - source/androidtools.h
Use getenv from mspcore
[builder.git] / source / androidtools.h
1 #ifndef ANDROIDTOOLS_H_
2 #define ANDROIDTOOLS_H_
3
4 #include <set>
5 #include <msp/fs/path.h>
6 #include "toolchain.h"
7
8 class Architecture;
9 class Builder;
10
11 class AndroidDevKit
12 {
13 protected:
14         Builder &builder;
15         Msp::FS::Path root;
16         std::set<unsigned> supported_api_levels;
17
18         AndroidDevKit(Builder &, const std::string &, const Msp::FS::Path & = Msp::FS::Path());
19         ~AndroidDevKit() { }
20
21 public:
22         const Msp::FS::Path &get_root_dir() const { return root; }
23         const std::set<unsigned> &get_supported_api_levels() const { return supported_api_levels; }
24         void select_api_level(unsigned);
25 protected:
26         virtual void init_api_level(unsigned) = 0;
27 };
28
29 class AndroidSdk: public AndroidDevKit
30 {
31 private:
32         Msp::FS::Path build_tools_dir;
33         // TODO use a FileTarget for the jar
34         Msp::FS::Path platform_jar;
35
36 public:
37         AndroidSdk(Builder &);
38
39 private:
40         void find_build_tools_dir();
41         virtual void init_api_level(unsigned);
42
43 public:
44         const Msp::FS::Path &get_build_tools_dir() const { return build_tools_dir; }
45         const Msp::FS::Path &get_platform_jar() const { return platform_jar; }
46 };
47
48 class AndroidNdk: public AndroidDevKit
49 {
50 private:
51         const Architecture &architecture;
52         Msp::FS::Path bin_dir;
53         Msp::FS::Path common_sysroot;
54         Msp::FS::Path platform_sysroot;
55
56 public:
57         AndroidNdk(Builder &, const Architecture &, const AndroidSdk &);
58 private:
59         static Msp::FS::Path create_default_path(const AndroidSdk &);
60
61         void find_toolchain_dir();
62         virtual void init_api_level(unsigned);
63
64 public:
65         const Msp::FS::Path &get_bin_dir() const { return bin_dir; }
66         const Msp::FS::Path &get_common_sysroot() const { return common_sysroot; }
67         const Msp::FS::Path &get_platform_sysroot() const { return platform_sysroot; }
68 };
69
70
71 class AndroidTools: public Toolchain
72 {
73 private:
74         AndroidSdk sdk;
75         AndroidNdk ndk;
76
77 public:
78         AndroidTools(Builder &, const Architecture &);
79 };
80
81 #endif