]> git.tdb.fi Git - builder.git/blobdiff - source/androidtools.h
Use $sdk_root/ndk-bundle as default path for Android NDK
[builder.git] / source / androidtools.h
index 3ccedcbdb9ef44ac1417abd0de8a6e8bdb9ae496..dfa8a11a09946ba4a1020a298ee99e00b0688958 100644 (file)
@@ -1,31 +1,69 @@
 #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 &, const Msp::FS::Path & = Msp::FS::Path());
+       ~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 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: