X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fandroidtools.h;h=16f157d54dadbb2770572c80b90e83b99c8be29f;hb=68f084e4ed817da0c25cefa1772cadf97b8cfe5e;hp=3ccedcbdb9ef44ac1417abd0de8a6e8bdb9ae496;hpb=43a748b89ce120b9f837f8a49c613680011653b3;p=builder.git diff --git a/source/androidtools.h b/source/androidtools.h index 3ccedcb..16f157d 100644 --- a/source/androidtools.h +++ b/source/androidtools.h @@ -1,18 +1,54 @@ #ifndef ANDROIDTOOLS_H_ #define ANDROIDTOOLS_H_ +#include #include #include "toolchain.h" class Architecture; class Builder; -class AndroidNdk +class AndroidDevKit { -private: +protected: Builder &builder; + Msp::FS::Path root; + std::set supported_api_levels; + + AndroidDevKit(Builder &, const std::string &); + ~AndroidDevKit() { } + +public: + const Msp::FS::Path &get_root_dir() const { return root; } + const std::set &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; @@ -21,10 +57,9 @@ public: 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; } }; @@ -33,6 +68,7 @@ public: class AndroidTools: public Toolchain { private: + AndroidSdk sdk; AndroidNdk ndk; public: