X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fandroidcxxcompiler.cpp;fp=source%2Fandroidcxxcompiler.cpp;h=04970ad2342e097220baaee330937768b1c95585;hb=cee450d7cc932811b0d119a132bc9981eb480584;hp=0000000000000000000000000000000000000000;hpb=6c2db179b5d94ddc32ba1a9b631d59d056e594fc;p=builder.git diff --git a/source/androidcxxcompiler.cpp b/source/androidcxxcompiler.cpp new file mode 100644 index 0000000..04970ad --- /dev/null +++ b/source/androidcxxcompiler.cpp @@ -0,0 +1,40 @@ +#include "androidcxxcompiler.h" +#include "androidtools.h" +#include "architecture.h" + +using namespace std; +using namespace Msp; + +AndroidCxxCompiler::AndroidCxxCompiler(Builder &b, const Architecture &a, const AndroidNdk &n): + GnuCxxCompiler(b, a, n.get_platform_sysroot()), + ndk(n) +{ + set_command((ndk.get_bin_dir()/command).str()); + build_info.incpath.insert(build_info.incpath.end(), system_path.begin(), system_path.end()); + build_info.libs.push_back("gnustl_shared"); +} + +void AndroidCxxCompiler::do_prepare() +{ + GnuCxxCompiler::do_prepare(); + if(executable) + { + FS::Path libstdcxx_path = ndk.get_root_dir()/"sources"/"cxx-stl"/"gnu-libstdc++"/version; + + /* TODO Match against architecture. Armeabi-v7a is problematic. + Architecture currently has no provisions for ABI, and the gcc -march + flag for ARMv7-A contains a dash. */ + string subdir; + if(architecture->get_type()=="pc") + subdir = "x86"; + else if(architecture->get_type()=="arm") + subdir = "armeabi-v7a"; + + SearchPath incpath; + incpath.push_back(libstdcxx_path/"include"); + incpath.push_back(libstdcxx_path/"libs"/subdir/"include"); + system_path.insert(system_path.end(), incpath.begin(), incpath.end()); + build_info.incpath.insert(build_info.incpath.end(), incpath.begin(), incpath.end()); + build_info.libpath.push_back(libstdcxx_path/"libs"/subdir); + } +}