X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fandroidtools.h;h=dfa8a11a09946ba4a1020a298ee99e00b0688958;hb=cd27d59419ae2bb5947583b0b3dca8bd06ff2975;hp=3ccedcbdb9ef44ac1417abd0de8a6e8bdb9ae496;hpb=cee450d7cc932811b0d119a132bc9981eb480584;p=builder.git diff --git a/source/androidtools.h b/source/androidtools.h index 3ccedcb..dfa8a11 100644 --- a/source/androidtools.h +++ b/source/androidtools.h @@ -1,31 +1,69 @@ #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 &, const Msp::FS::Path & = Msp::FS::Path()); + ~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 common_sysroot; Msp::FS::Path platform_sysroot; public: - AndroidNdk(Builder &, const Architecture &); - + AndroidNdk(Builder &, const Architecture &, const AndroidSdk &); private: + static Msp::FS::Path create_default_path(const AndroidSdk &); + 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_common_sysroot() const { return common_sysroot; } const Msp::FS::Path &get_platform_sysroot() const { return platform_sysroot; } }; @@ -33,6 +71,7 @@ public: class AndroidTools: public Toolchain { private: + AndroidSdk sdk; AndroidNdk ndk; public: