X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fandroidtools.cpp;h=eeb6edf532d379948739e5efde7ee3b028c6bc06;hb=HEAD;hp=c0fe6d1557e5f3b9beb92f510d60e7e9b86eaf28;hpb=276a7c7c046a8f1b692cecbd53f17595ed23264d;p=builder.git diff --git a/source/androidtools.cpp b/source/androidtools.cpp deleted file mode 100644 index c0fe6d1..0000000 --- a/source/androidtools.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include -#include -#include -#include -#include "androidccompiler.h" -#include "androidcxxcompiler.h" -#include "androidlinker.h" -#include "androidtools.h" -#include "architecture.h" -#include "builder.h" - -using namespace std; -using namespace Msp; - -AndroidTools::AndroidTools(Builder &builder, const Architecture &arch): - ndk(builder, arch) -{ - add_tool(new AndroidCCompiler(builder, arch, ndk)); - add_tool(new AndroidCxxCompiler(builder, arch, ndk)); - add_tool(new AndroidLinker(builder, arch, ndk)); -} - - -AndroidNdk::AndroidNdk(Builder &b, const Architecture &a): - builder(b), - architecture(a) -{ - if(const char *env_ndk_root = getenv("ANDROID_NDK_ROOT")) - ndk_root = env_ndk_root; - else - throw runtime_error("ANDROID_NDK_ROOT must be set"); - - find_toolchain_dir(); - find_platform_dir(); -} - -void AndroidNdk::find_toolchain_dir() -{ - FS::Path toolchains_dir = ndk_root/"toolchains"; - list toolchains = list_files(toolchains_dir); - - string prefix = architecture.get_cross_prefix()+"-"; - string use_toolchain; - unsigned latest_version = 0; - for(list::const_iterator i=toolchains.begin(); i!=toolchains.end(); ++i) - if(!i->compare(0, prefix.size(), prefix)) - { - string version_str = i->substr(prefix.size()); - string compiler = "gcc"; - if(!isdigit(version_str[0])) - { - unsigned j; - for(j=1; (j version_parts = split(version_str, '.'); - unsigned version = (lexical_cast(version_parts[0])<<8); - if(version_parts.size()>1) - version += lexical_cast(version_parts[1]); - - if(version>latest_version) - { - use_toolchain = *i; - latest_version = version; - } - } - - if(use_toolchain.empty()) - throw runtime_error("No applicable toolchains found"); - - const Architecture &native_arch = builder.get_native_arch(); - - list tc_archs = list_files(toolchains_dir/use_toolchain/"prebuilt"); - string use_arch; - for(list::const_iterator i=tc_archs.begin(); i!=tc_archs.end(); ++i) - if(native_arch.match_name(*i)) - { - use_arch = *i; - break; - } - - if(use_arch.empty()) - throw runtime_error("No matching toolchain found"); - - bin_dir = toolchains_dir/use_toolchain/"prebuilt"/use_arch/"bin"; -} - -void AndroidNdk::find_platform_dir() -{ - FS::Path platforms_dir = ndk_root/"platforms"; - list platforms = list_files(platforms_dir); - - string use_platform; - unsigned highest_level = 0; - for(list::const_iterator i=platforms.begin(); i!=platforms.end(); ++i) - if(!i->compare(0, 8, "android-")) - { - unsigned level = lexical_cast(i->substr(8)); - if(level>highest_level) - { - use_platform = *i; - highest_level = level; - } - } - - if(use_platform.empty()) - throw runtime_error("No applicable platforms found"); - - list platform_archs = list_files(platforms_dir/use_platform); - string use_arch; - for(list::const_iterator i=platform_archs.begin(); i!=platform_archs.end(); ++i) - if(!i->compare(0, 5, "arch-") && architecture.match_name(i->substr(5))) - { - use_arch = *i; - break; - } - - if(use_arch.empty()) - throw runtime_error("No matching platform found"); - - platform_sysroot = platforms_dir/use_platform/use_arch; -}