#ifndef ANDROIDTOOLS_H_
#define ANDROIDTOOLS_H_
+#include <set>
#include <msp/fs/path.h>
#include "toolchain.h"
class Architecture;
class Builder;
-class AndroidNdk
+class AndroidDevKit
{
-private:
+protected:
Builder &builder;
+ Msp::FS::Path root;
+ std::set<unsigned> supported_api_levels;
+
+ AndroidDevKit(Builder &, const std::string &);
+ ~AndroidDevKit() { }
+
+public:
+ const Msp::FS::Path &get_root_dir() const { return root; }
+ const std::set<unsigned> &get_supported_api_levels() const { return supported_api_levels; }
+ void select_api_level(unsigned);
+protected:
+ virtual void init_api_level(unsigned) = 0;
+};
+
+class AndroidSdk: public AndroidDevKit
+{
+private:
+ Msp::FS::Path build_tools_dir;
+ // TODO use a FileTarget for the jar
+ Msp::FS::Path platform_jar;
+
+public:
+ AndroidSdk(Builder &);
+
+private:
+ void find_build_tools_dir();
+ virtual void init_api_level(unsigned);
+
+public:
+ const Msp::FS::Path &get_build_tools_dir() const { return build_tools_dir; }
+ const Msp::FS::Path &get_platform_jar() const { return platform_jar; }
+};
+
+class AndroidNdk: public AndroidDevKit
+{
+private:
const Architecture &architecture;
- Msp::FS::Path ndk_root;
Msp::FS::Path bin_dir;
Msp::FS::Path platform_sysroot;
private:
void find_toolchain_dir();
- void find_platform_dir();
+ virtual void init_api_level(unsigned);
public:
- const Msp::FS::Path &get_root_dir() const { return ndk_root; }
const Msp::FS::Path &get_bin_dir() const { return bin_dir; }
const Msp::FS::Path &get_platform_sysroot() const { return platform_sysroot; }
};
class AndroidTools: public Toolchain
{
private:
+ AndroidSdk sdk;
AndroidNdk ndk;
public: