-#ifndef ANDROIDTOOLS_H_
-#define ANDROIDTOOLS_H_
-
-#include <cstdint>
-#include <msp/fs/path.h>
-#include "toolchain.h"
-
-class Architecture;
-class Builder;
-
-class AndroidDevKit
-{
-protected:
- Builder &builder;
- Msp::FS::Path root;
- /* Needs refactoring if API levels go over 63. At present rate this will
- take decades to occur. */
- uint64_t supported_api_levels = 0;
-
- AndroidDevKit(Builder &, const std::string &, const Msp::FS::Path & = Msp::FS::Path());
- ~AndroidDevKit() { }
-
-public:
- const Msp::FS::Path &get_root_dir() const { return root; }
- uint64_t 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();
- void init_api_level(unsigned) override;
-
-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 bin_dir;
- Msp::FS::Path common_sysroot;
- Msp::FS::Path platform_sysroot;
-
-public:
- AndroidNdk(Builder &, const Architecture &, const AndroidSdk &);
-private:
- static Msp::FS::Path create_default_path(const AndroidSdk &);
-
- void find_toolchain_dir();
- void init_api_level(unsigned) override;
-
-public:
- const Msp::FS::Path &get_bin_dir() const { return bin_dir; }
- const Msp::FS::Path &get_common_sysroot() const { return common_sysroot; }
- const Msp::FS::Path &get_platform_sysroot() const { return platform_sysroot; }
-};
-
-
-class AndroidTools: public Toolchain
-{
-private:
- AndroidSdk sdk;
- AndroidNdk ndk;
-
-public:
- AndroidTools(Builder &, const Architecture &);
-
- static int get_priority(const Architecture &);
-};
-
-#endif