replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / android / android_api / SConscript
index 5fba6e7..7e79144 100644 (file)
@@ -9,18 +9,66 @@ if env.get('RELEASE'):
        ANDROID_RELEASE="release"
 else:
        ANDROID_RELEASE="debug"
+ANDROID_SECURED = env.get('SECURED')
+
+if env.get('WITH_CLOUD'):
+       ANDROID_CLOUD=1
+else:
+       ANDROID_CLOUD=0
+
+if env.get('WITH_TCP'):
+       ANDROID_TCP=1
+else:
+       ANDROID_TCP=0
+
+ANDROID_MQ = env.get('WITH_MQ')
+ANDROID_MQ_SUB = 0
+ANDROID_MQ_PUB = 0
+ANDROID_MQ_BROKER = 0
+ANDROID_RD_MODE = env.get('RD_MODE')
+ANDROID_TRANSPORT = env.get('TARGET_TRANSPORT')
+ANDROID_TRANSPORT_EDR = 0
+ANDROID_TRANSPORT_BLE = 0
+ANDROID_TRANSPORT_NFC = 0
+
+if 'SUB' in ANDROID_MQ:
+       ANDROID_MQ_SUB = 1
+if 'PUB' in ANDROID_MQ:
+       ANDROID_MQ_PUB = 1
+if 'BROKER' in ANDROID_MQ:
+       ANDROID_MQ_BROKER = 1
+
+if 'ALL' in ANDROID_TRANSPORT:
+       ANDROID_TRANSPORT_EDR = 1
+       ANDROID_TRANSPORT_BLE = 1
+       ANDROID_TRANSPORT_NFC = 1
+       print "Android Transport is ALL"
+else:
+       if 'BT' in ANDROID_TRANSPORT:
+               ANDROID_TRANSPORT_EDR = 1
+       if 'BLE' in ANDROID_TRANSPORT:
+               ANDROID_TRANSPORT_BLE = 1
+       if 'NFC' in ANDROID_TRANSPORT:
+               ANDROID_TRANSPORT_NFC = 1
 
 os.environ['ANDROID_HOME'] = env.get('ANDROID_HOME')
 os.environ['ANDROID_NDK_HOME'] = env.get('ANDROID_NDK')
 
-if not os.path.exists(android_home + '/platforms/android-21') or not os.path.exists(android_home + '/build-tools/20.0.0'):
+if ('ALL' in ANDROID_TRANSPORT) or ('BLE' in ANDROID_TRANSPORT):
+       ANDROID_API_LEVEL = '22'
+       ANDROID_VER = '5.1'
+else:
+       ANDROID_API_LEVEL = '21'
+       ANDROID_VER = '5.0.1'
+
+if not os.path.exists(android_home + '/platforms/android-' + ANDROID_API_LEVEL) or not os.path.exists(android_home + '/build-tools/20.0.0'):
     print '''
 ***************************************** Info ********************************
-*   Either 'Android API 21' is not installed or 'Android SDK Build Tools      *
+*   Either 'Android API %s' is not installed or 'Android SDK Build Tools      *
 *   20.0.0' is not installed. The Android SDK Manager will now open. Please   *
 *   be sure to deselect all options, then select the following 2 packages:    *
 *       1. Under "Tools" select "Android SDK Build-tools" Revision 20.        *
-*       2. Under "Android 5.0.1 (API 21)" select "SDK Platform"               *
+*       2. Under "Android %s (API %s)" select "SDK Platform"                  *
 *       3. Continue by selecting "Install 2 Packages"                         *
 *                                                                             *
 *   NOTE: If you have an http proxy, please press ctrl+c now and edit/create  *
@@ -39,10 +87,22 @@ if not os.path.exists(android_home + '/platforms/android-21') or not os.path.exi
 *******************************************************************************
 
 ...Opening Android SDK Manager now. Once you are finished, the build will continue.
-'''
+''' % (ANDROID_API_LEVEL, ANDROID_VER, ANDROID_API_LEVEL) 
     os.system(android_home + '/tools/android')
 
+def ensure_libs(target, source, env):
+    return target, [source, env.get('BUILD_DIR') + 'liboc.so', env.get('BUILD_DIR') + 'liboc_logger.so']
+
+# build android_api
 jdk_env = Environment(ENV=os.environ)
-jdk_env['BUILDERS']['Gradle'] = Builder(action = env.get('ANDROID_GRADLE') + ' build -b' + os.getcwd()+'/build.gradle -PTARGET_ARCH=%s -PRELEASE=%s --stacktrace' %(ANDROID_TARGET_ARCH, ANDROID_RELEASE))
-jdk_env.Gradle(target="base/objs", source="base/src/main/java/org/iotivity/base/OcResource.java")
+jdk_env['BUILDERS']['Gradle'] = Builder(action = env.get('ANDROID_GRADLE') + ' build -b' + os.getcwd()+'/build.gradle -PWITH_TRANSPORT_EDR=%s -PWITH_TRANSPORT_BLE=%s -PWITH_TRANSPORT_NFC=%s -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s -DSECURE=%s -PWITH_CLOUD=%s -PRD_MODE=%s -PWITH_MQ_PUB=%s -PWITH_MQ_SUB=%s -PWITH_MQ_BROKER=%s -PWITH_TCP=%s --stacktrace' %(ANDROID_TRANSPORT_EDR, ANDROID_TRANSPORT_BLE, ANDROID_TRANSPORT_NFC, ANDROID_TARGET_ARCH, ANDROID_RELEASE, ANDROID_SECURED, ANDROID_SECURED, ANDROID_CLOUD, ANDROID_RD_MODE, ANDROID_MQ_PUB, ANDROID_MQ_SUB, ANDROID_MQ_BROKER, ANDROID_TCP), emitter = ensure_libs)
+jdk_env['BUILD_DIR'] = env.get('BUILD_DIR')
+cmdBuildApi=jdk_env.Gradle(target="base/objs", source="base/src/main/java/org/iotivity/base/OcResource.java")
+
+#jdk_env['BUILDERS']['Gradle'] = Builder(action = env.get('ANDROID_GRADLE') + ' build -b' + 'android/examples/build.gradle -DWITH_TRANSPORT_EDR=%s -DWITH_TRANSPORT_BLE=%s -DWITH_TRANSPORT_NFC=%s -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s -DSECURE=%s -PWITH_CLOUD=%s -PRD_MODE=%s -PWITH_MQ_PUB=%s -PWITH_MQ_SUB=%s -PWITH_MQ_BROKER=%s -PWITH_TCP=%s --stacktrace' %(ANDROID_TRANSPORT_EDR, ANDROID_TRANSPORT_BLE, ANDROID_TRANSPORT_NFC, ANDROID_TARGET_ARCH, ANDROID_RELEASE, ANDROID_SECURED, ANDROID_SECURED, ANDROID_CLOUD, ANDROID_RD_MODE, ANDROID_MQ_PUB, ANDROID_MQ_SUB, ANDROID_MQ_BROKER, ANDROID_TCP))
+#cmdBuildExamples=jdk_env.Gradle(target="../examples/devicediscoveryclient/apk", source="../examples/devicediscoveryclient/src/main/java/org/iotivity/base/examples/DeviceDiscoveryClient.java")
+
+# android examples require android api to be built before being invoked
+#Depends(cmdBuildExamples, cmdBuildApi)
 
+env.AppendUnique(baseAAR = cmdBuildApi)