Fix build error with scons-4.4.0 version which is based on python3
[platform/upstream/iotivity.git] / android / android_api / SConscript
1 import os
2 import platform
3 Import('env')
4
5 android_home = env.get('ANDROID_HOME')
6
7 ANDROID_TARGET_ARCH = env.get('TARGET_ARCH')
8 if env.get('RELEASE'):
9         ANDROID_RELEASE="release"
10 else:
11         ANDROID_RELEASE="debug"
12 ANDROID_SECURED = env.get('SECURED')
13
14 if env.get('WITH_CLOUD'):
15         ANDROID_CLOUD=1
16 else:
17         ANDROID_CLOUD=0
18
19 if env.get('WITH_TCP'):
20         ANDROID_TCP=1
21 else:
22         ANDROID_TCP=0
23
24 ANDROID_MQ = env.get('WITH_MQ')
25 ANDROID_MQ_SUB = 0
26 ANDROID_MQ_PUB = 0
27 ANDROID_MQ_BROKER = 0
28 ANDROID_RD_MODE = env.get('RD_MODE')
29 ANDROID_TRANSPORT = env.get('TARGET_TRANSPORT')
30 ANDROID_TRANSPORT_EDR = 0
31 ANDROID_TRANSPORT_BLE = 0
32 ANDROID_TRANSPORT_NFC = 0
33
34 if 'SUB' in ANDROID_MQ:
35         ANDROID_MQ_SUB = 1
36 if 'PUB' in ANDROID_MQ:
37         ANDROID_MQ_PUB = 1
38 if 'BROKER' in ANDROID_MQ:
39         ANDROID_MQ_BROKER = 1
40
41 if 'ALL' in ANDROID_TRANSPORT:
42         ANDROID_TRANSPORT_EDR = 1
43         ANDROID_TRANSPORT_BLE = 1
44         ANDROID_TRANSPORT_NFC = 1
45         print("Android Transport is ALL")
46 else:
47         if 'BT' in ANDROID_TRANSPORT:
48                 ANDROID_TRANSPORT_EDR = 1
49         if 'BLE' in ANDROID_TRANSPORT:
50                 ANDROID_TRANSPORT_BLE = 1
51         if 'NFC' in ANDROID_TRANSPORT:
52                 ANDROID_TRANSPORT_NFC = 1
53
54 os.environ['ANDROID_HOME'] = env.get('ANDROID_HOME')
55 os.environ['ANDROID_NDK_HOME'] = env.get('ANDROID_NDK')
56
57 if ('ALL' in ANDROID_TRANSPORT) or ('BLE' in ANDROID_TRANSPORT):
58         ANDROID_API_LEVEL = '22'
59         ANDROID_VER = '5.1'
60 else:
61         ANDROID_API_LEVEL = '21'
62         ANDROID_VER = '5.0.1'
63
64 if not os.path.exists(android_home + '/platforms/android-' + ANDROID_API_LEVEL) or not os.path.exists(android_home + '/build-tools/20.0.0'):
65     print('''
66 ***************************************** Info ********************************
67 *   Either 'Android API %s' is not installed or 'Android SDK Build Tools      *
68 *   20.0.0' is not installed. The Android SDK Manager will now open. Please   *
69 *   be sure to deselect all options, then select the following 2 packages:    *
70 *       1. Under "Tools" select "Android SDK Build-tools" Revision 20.        *
71 *       2. Under "Android %s (API %s)" select "SDK Platform"                  *
72 *       3. Continue by selecting "Install 2 Packages"                         *
73 *                                                                             *
74 *   NOTE: If you have an http proxy, please press ctrl+c now and edit/create  *
75 *         the following file in your $HOME directory as follows:              *
76 *                                                                             *
77 * Edit/Create file: "$HOME/.android/androidtool.cfg"                          *
78 *                                                                             *
79 *    http.proxyPort=<YOUR_PORT_NUMBER>                                        *
80 *    sdkman.monitor.density=108                                               *
81 *    http.proxyHost=<YOUR_HTTP_PROXY_ADDRESS>                                 *
82 *    sdkman.show.update.only=true                                             *
83 *    sdkman.ask.adb.restart=false                                             *
84 *    sdkman.force.http=true                                                   *
85 *    sdkman.show.updateonly=true                                              *
86 *                                                                             *
87 *******************************************************************************
88
89 ...Opening Android SDK Manager now. Once you are finished, the build will continue.
90 ''' % (ANDROID_API_LEVEL, ANDROID_VER, ANDROID_API_LEVEL)) 
91     os.system(android_home + '/tools/android')
92
93 def ensure_libs(target, source, env):
94     return target, [source, env.get('BUILD_DIR') + 'liboc.so', env.get('BUILD_DIR') + 'liboc_logger.so']
95
96 # build android_api
97 jdk_env = Environment(ENV=os.environ)
98 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)
99 jdk_env['BUILD_DIR'] = env.get('BUILD_DIR')
100 cmdBuildApi=jdk_env.Gradle(target="base/objs", source="base/src/main/java/org/iotivity/base/OcResource.java")
101
102 #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))
103 #cmdBuildExamples=jdk_env.Gradle(target="../examples/devicediscoveryclient/apk", source="../examples/devicediscoveryclient/src/main/java/org/iotivity/base/examples/DeviceDiscoveryClient.java")
104
105 # android examples require android api to be built before being invoked
106 #Depends(cmdBuildExamples, cmdBuildApi)
107
108 env.AppendUnique(baseAAR = cmdBuildApi)