diff --git a/boost/asio/detail/fenced_block.hpp b/boost/asio/detail/fenced_block.hpp
index 18a8ca1..0ba8495 100644
--- a/boost/asio/detail/fenced_block.hpp
+++ b/boost/asio/detail/fenced_block.hpp
@@ -24,7 +24,7 @@
 # include <boost/asio/detail/macos_fenced_block.hpp>
 #elif defined(__sun)
 # include <boost/asio/detail/solaris_fenced_block.hpp>
-#elif defined(__GNUC__) && defined(__arm__) \
+#elif defined(__GNUC__) && defined(__arm__) && !defined(__thumb__) \
   && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
 # include <boost/asio/detail/gcc_arm_fenced_block.hpp>
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
@@ -34,7 +34,8 @@
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
   && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
+  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) \
+  && !defined(ANDROID) && !defined(__ANDROID__)
 # include <boost/asio/detail/gcc_sync_fenced_block.hpp>
 #elif defined(BOOST_ASIO_WINDOWS) && !defined(UNDER_CE)
 # include <boost/asio/detail/win_fenced_block.hpp>
@@ -53,7 +54,7 @@ typedef null_fenced_block fenced_block;
 typedef macos_fenced_block fenced_block;
 #elif defined(__sun)
 typedef solaris_fenced_block fenced_block;
-#elif defined(__GNUC__) && defined(__arm__) \
+#elif defined(__GNUC__) && defined(__arm__) && !defined(__thumb__) \
   && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
 typedef gcc_arm_fenced_block fenced_block;
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
@@ -63,7 +64,8 @@ typedef gcc_x86_fenced_block fenced_block;
 #elif defined(__GNUC__) \
   && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
   && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
+  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__) \
+  && !defined(ANDROID) && !defined(__ANDROID__)
 typedef gcc_sync_fenced_block fenced_block;
 #elif defined(BOOST_ASIO_WINDOWS) && !defined(UNDER_CE)
 typedef win_fenced_block fenced_block;
diff --git a/boost/asio/ip/address_v6.hpp b/boost/asio/ip/address_v6.hpp
index 179fc1a..7581244 100644
--- a/boost/asio/ip/address_v6.hpp
+++ b/boost/asio/ip/address_v6.hpp
@@ -11,6 +11,23 @@
 #ifndef BOOST_ASIO_IP_ADDRESS_V6_HPP
 #define BOOST_ASIO_IP_ADDRESS_V6_HPP
 
+// @Moss - Define IPv6 macros
+#if !defined(IN6_IS_ADDR_MULTICAST) 
+#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
+#endif
+
+#if !defined(IN6_IS_ADDR_MC_NODELOCAL)
+#define IN6_IS_ADDR_MC_NODELOCAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) \
+         && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
+#endif
+
+#if !defined(IN6_IS_ADDR_MC_GLOBAL)
+#define IN6_IS_ADDR_MC_GLOBAL(a) \
+        (IN6_IS_ADDR_MULTICAST(a) \
+         && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
+#endif
+
 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
 # pragma once
 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
diff --git a/boost/config/user.hpp b/boost/config/user.hpp
index 5a4a9d4..430be50 100644
--- a/boost/config/user.hpp
+++ b/boost/config/user.hpp
@@ -12,6 +12,9 @@
 //  Use this file to define a site and compiler specific
 //  configuration policy:
 //
+#define __arm__ 1
+#define _REENTRANT 1
+#define _GLIBCXX__PTHREADS 1
 
 // define this to locate a compiler config file:
 // #define BOOST_COMPILER_CONFIG <myheader>
diff --git a/boost/detail/endian.hpp.rej b/boost/detail/endian.hpp.rej
new file mode 100644
index 0000000..43a1e3e
--- /dev/null
+++ b/boost/detail/endian.hpp.rej
@@ -0,0 +1,11 @@
+--- endian.hpp	2011-03-29 14:58:48.000000000 +0900
++++ endian.hpp	2012-11-21 13:20:17.925611353 +0900
+@@ -31,7 +31,7 @@
+ // GNU libc offers the helpful header <endian.h> which defines
+ // __BYTE_ORDER
+ 
+-#if defined (__GLIBC__)
++#if defined (__GLIBC__) || defined(ANDROID)
+ # include <endian.h>
+ # if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ #  define BOOST_LITTLE_ENDIAN
diff --git a/boost/interprocess/detail/workaround.hpp b/boost/interprocess/detail/workaround.hpp
index 6ce2ea1..e6177a3 100644
--- a/boost/interprocess/detail/workaround.hpp
+++ b/boost/interprocess/detail/workaround.hpp
@@ -73,7 +73,7 @@
    #endif
 
    //Check for XSI shared memory objects. They are available in nearly all UNIX platforms
-   #if !defined(__QNXNTO__)
+   #if !defined(__QNXNTO__) && !defined(ANDROID)
       #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS
    #endif
 
diff --git a/build_arm.sh b/build_arm.sh
new file mode 100755
index 0000000..a03a961
--- /dev/null
+++ b/build_arm.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+./b2 --without-python toolset=gcc link=static runtime-link=static target-os=linux --stagedir=android_arm -j5 stage install --prefix=android_arm
diff --git a/libs/filesystem/src/operations.cpp b/libs/filesystem/src/operations.cpp
index a1504b5..c73fccb 100644
--- a/libs/filesystem/src/operations.cpp
+++ b/libs/filesystem/src/operations.cpp
@@ -73,14 +73,14 @@ using std::wstring;
     const fs::path dot_dot_path("..");
 #   include <sys/types.h>
 #   include <sys/stat.h>
-#   if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__)
+#   if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(ANDROID)
 #     include <sys/statvfs.h>
 #     define BOOST_STATVFS statvfs
 #     define BOOST_STATVFS_F_FRSIZE vfs.f_frsize
 #   else
 #     ifdef __OpenBSD__
 #     include <sys/param.h>
-#     elif defined(__ANDROID__)
+#     elif defined(__ANDROID__) || defined(ANDROID)
 #     include <sys/vfs.h>
 #     endif
 #     include <sys/mount.h>
@@ -208,7 +208,19 @@ typedef struct _REPARSE_DATA_BUFFER {
          || ::mkdir(to.c_str(),from_stat.st_mode)!= 0))
 #   define BOOST_COPY_FILE(F,T,FailIfExistsBool)copy_file_api(F, T, FailIfExistsBool)
 #   define BOOST_MOVE_FILE(OLD,NEW)(::rename(OLD, NEW)== 0)
-#   define BOOST_RESIZE_FILE(P,SZ)(::truncate(P, SZ)== 0)
+#	if defined(__ANDROID__) || defined(ANDROID)
+	int BOOST_RESIZE_FILE(const char *path, off_t size)
+	{
+		int result = -1;
+		int fd = open(path, O_WRONLY);
+		if (fd != -1)
+			result = ftruncate(fd, size);
+		close(fd);
+		return result;
+	}
+#else
+#	define BOOST_RESIZE_FILE(P,SZ)(::truncate(P, SZ)== 0)
+#endif
 
 #   define BOOST_ERROR_NOT_SUPPORTED ENOSYS
 #   define BOOST_ERROR_ALREADY_EXISTS EEXIST
@@ -1908,7 +1920,11 @@ namespace
     if (max == 0)
     {
       errno = 0;
+#	ifdef __ANDROID__ || ANDROID
+      long tmp = 4096;
+#	else
       long tmp = ::pathconf("/", _PC_NAME_MAX);
+#	endif
       if (tmp < 0)
       {
         if (errno == 0)// indeterminate
diff --git a/tools/build/v2/user-config.jam b/tools/build/v2/user-config.jam
index fbbf13f..70cc28d 100644
--- a/tools/build/v2/user-config.jam
+++ b/tools/build/v2/user-config.jam
@@ -90,3 +90,54 @@
 
 # Configure specific Python version.
 # using python : 3.1 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;
+##################################################
+#
+#  android
+#
+##################################################
+import os ;
+
+if [ os.name ] = CYGWIN || [ os.name ] = NT
+{
+        androidPlatform = windows ;
+}
+
+else if [ os.name ] = LINUX
+{
+        androidPlatform = linux-x86_64 ;
+}
+
+else if [ os.name ] = MACOSX
+{
+        androidPlatform = darwin-x86 ;
+
+}
+ANDROID_NDK_ROOT = /opt/adt-bundle-linux-x86_64/ndk ;
+modules.poke : NO_BZIP2 : 1 ; 
+
+using gcc : android4.8 :
+    $(ANDROID_NDK_ROOT)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :
+    <archiver>$(ANDROID_NDK_ROOT)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar
+    <ranlib>$(ANDROID_NDK_ROOT)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib
+    <compileflags>--sysroot=$(ANDROID_NDK_ROOT)/platforms/android-9/arch-arm
+    <compileflags>-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include
+    <compileflags>-I$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include
+    <compileflags>-mthumb
+    <compileflags>-fno-strict-aliasing
+    <compileflags>-Os
+    <compileflags>-O2
+    <compileflags>-DANDROID
+    <compileflags>-D__ANDROID__
+    <compileflags>-DGLIBC
+    <compileflags>-D_GLIBCPP_USE_WCHAR_T
+    <compileflags>-D_LITTLE_ENDIAN
+    <compileflags>-DNDEBUG
+    <compileflags>-g
+    <compileflags>-lstdc++
+    <architecture>arm
+#    <cxxflags>-DBOOST_THREAD_VERSION=3
+    <cxxflags>-DPAGE_SIZE=2048
+    <cxxflags>-D__arm__
+    <cxxflags>-D_REENTRANT
+        ;
+
