replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / build_common / android / SConscript
index ca96af6..2de28b1 100644 (file)
@@ -6,14 +6,20 @@ import platform
 import subprocess
 
 Import('env')
-SConscript('../external_libs.scons')
-SConscript('../../extlibs/android/ndk/SConscript')
-SConscript('../../extlibs/android/gradle/SConscript')
-SConscript('../../extlibs/android/sdk/SConscript')
 
+SConscript('../external_libs.scons')
 help_vars = Variables()
-help_vars.Add(PathVariable('ANDROID_GRADLE', 'Android Gradle directory', os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'gradle', 'gradle-2.2.1/bin/gradle')))
-help_vars.Add(PathVariable('ANDROID_NDK', 'Android NDK root directory', os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'ndk', 'android-ndk-r10d')))
+if not env.get('ANDROID_NDK'):
+    SConscript('../../extlibs/android/ndk/SConscript')
+    help_vars.Add(PathVariable('ANDROID_NDK', 'Android NDK root directory', os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'ndk', 'android-ndk-r10d')))
+
+if not env.get('ANDROID_GRADLE'):
+    SConscript('../../extlibs/android/gradle/SConscript')
+    help_vars.Add(PathVariable('ANDROID_GRADLE', 'Android Gradle directory', os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'gradle', 'gradle-2.2.1/bin/gradle')))
+
+if not env.get('ANDROID_HOME'):
+    SConscript('../../extlibs/android/sdk/SConscript')
+
 
 if env.get('ANDROID_NDK'):
        android_ndk = env.get('ANDROID_NDK')
@@ -87,12 +93,14 @@ if not os.path.isfile(ndk_build_cmd):
        Exit(1)
 
 # ANDROID_HOME build option
-help_vars = Variables()
-help_vars.Add(PathVariable('ANDROID_HOME', 'ANDROID SDK root directory', os.environ.get('ANDROID_HOME')))
-help_vars.Update(env)
-Help(help_vars.GenerateHelpText(env))
-
-print '''
+if env.get('ANDROID_HOME'):
+        android_gradle = env.get('ANDROID_HOME')
+else:
+        help_vars = Variables()
+        help_vars.Add(PathVariable('ANDROID_HOME', 'ANDROID SDK root directory', os.environ.get('ANDROID_HOME')))
+        help_vars.Update(env)
+        Help(help_vars.GenerateHelpText(env))
+        print '''
 *************************************** Info **********************************
 *   Environment variable ANDROID_HOME will use default value. To override     *
 * root directory of android sdk, please specify ANDROID_HOME as follows:      *
@@ -145,6 +153,21 @@ for flags in p.stdout.readlines():
                env.AppendUnique(CXXFLAGS = Split(flags[9:]))
 
        elif cmp(flags[0:8], 'CPPPATH=') == 0:
+               ndk_arch = 'arch-'
+               if cmp(target_arch, 'x86') == 0:
+                       ndk_arch += 'x86'
+               elif cmp(target_arch, 'x86_64') == 0:
+                       ndk_arch += 'x86_64'
+               elif cmp(target_arch, 'armeabi') == 0:
+                       ndk_arch += 'arm'
+               elif cmp(target_arch, 'armeabi-v7a') == 0:
+                       ndk_arch += 'arm'
+               elif cmp(target_arch, 'armeabi-v7a-hard') == 0:
+                       ndk_arch += 'arm'
+               elif cmp(target_arch, 'arm64-v8a') == 0:
+                       ndk_arch += 'arm64'
+
+               env.AppendUnique(CPPPATH = android_ndk+'/platforms/android-21/'+ndk_arch+'/usr/include')
                env.AppendUnique(CPPPATH = Split(flags[8:]))
 
        elif cmp(flags[0:8], 'SYSROOT=') == 0:
@@ -157,9 +180,8 @@ for flags in p.stdout.readlines():
        elif cmp(flags[0:7], 'TC_VER=') == 0:  # set gnustl library path
                ver = flags[7:].strip()
                stl_path = android_ndk + '/sources/cxx-stl/gnu-libstdc++/' + ver + '/libs/' + target_arch
-               if target_arch in ['armeabi', 'armeabi-v7a', 'armeabi-v7a-hard']:
-                       stl_path = stl_path + '/thumb/'
-
+#              if target_arch in ['armeabi', 'armeabi-v7a', 'armeabi-v7a-hard']:
+#                      stl_path = stl_path + '/thumb/'
                env.AppendUnique(LIBPATH = [stl_path])
                env.Install(env.get('BUILD_DIR'), stl_path + '/libgnustl_shared.so')
 
@@ -206,15 +228,15 @@ if env.get('LOGGING'):
 
 
 env.AppendUnique(CPPDEFINES = ['WITH_POSIX', '__ANDROID__'])
-env.AppendUnique(CCFLAGS = ['-Wall', '-fPIC'])
-#env.AppendUnique(LINKFLAGS = ['-ldl', '-lpthread'])
+env.AppendUnique(CCFLAGS = ['-Wall', '-Wextra', '-fPIC'])
 
 env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
 env.AppendUnique(LIBPATH = [src_dir + '/resource/csdk/connectivity/lib/android'])
 env.AppendUnique(LIBS = ['log', 'coap'])
 
 if env.get('SECURED') == '1':
-       env.AppendUnique(LIBS = ['tinydtls'])
+       env.SConscript('#extlibs/mbedtls/SConscript')
+       env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
 
 # From android-5 (API > 20), all application must be built with flags '-fPIE' '-pie'.
 # Due to the limitation of Scons, it's required to added it into the command line
@@ -230,5 +252,4 @@ if platform_ver == '' or int(platform_ver) > 20:
 SConscript('compatibility/cpp11_compat.scons')
 
 # Make sure that boost for android is available
-SConscript(env.get('SRC_DIR') + '/extlibs/boost/SConscript')
-SConscript(env.get('SRC_DIR') + '/extlibs/expat/SConscript')
+SConscript('#extlibs/boost/SConscript')