[IOT-1089] Change Android build system to accomodate both Android and Generic Java...
[contrib/iotivity.git] / java / SConscript
1 import os
2 import platform
3 Import('env')
4
5 TARGET_ARCH = env.get('TARGET_ARCH')
6 if env.get('RELEASE'):
7         RELEASE="release"
8 else:
9         RELEASE="debug"
10 SECURED = env.get('SECURED')
11
12 target_os = env.get('TARGET_OS')
13
14 if target_os == "android":
15         android_home = env.get('ANDROID_HOME')
16         os.environ['ANDROID_HOME'] = env.get('ANDROID_HOME')
17         os.environ['ANDROID_NDK_HOME'] = env.get('ANDROID_NDK')
18
19         if not os.path.exists(android_home + '/platforms/android-21') or not os.path.exists(android_home + '/build-tools/20.0.0'):
20                 print '''
21 ***************************************** Info ********************************
22 *   Either 'Android API 21' is not installed or 'Android SDK Build Tools      *
23 *   20.0.0' is not installed. The Android SDK Manager will now open. Please   *
24 *   be sure to deselect all options, then select the following 2 packages:    *
25 *       1. Under "Tools" select "Android SDK Build-tools" Revision 20.        *
26 *       2. Under "Android 5.0.1 (API 21)" select "SDK Platform"               *
27 *       3. Continue by selecting "Install 2 Packages"                         *
28 *                                                                             *
29 *   NOTE: If you have an http proxy, please press ctrl+c now and edit/create  *
30 *         the following file in your $HOME directory as follows:              *
31 *                                                                             *
32 * Edit/Create file: "$HOME/.android/androidtool.cfg"                          *
33 *                                                                             *
34 *    http.proxyPort=<YOUR_PORT_NUMBER>                                        *
35 *    sdkman.monitor.density=108                                               *
36 *    http.proxyHost=<YOUR_HTTP_PROXY_ADDRESS>                                 *
37 *    sdkman.show.update.only=true                                             *
38 *    sdkman.ask.adb.restart=false                                             *
39 *    sdkman.force.http=true                                                   *
40 *    sdkman.show.updateonly=true                                              *
41 *                                                                             *
42 *******************************************************************************
43
44 ...Opening Android SDK Manager now. Once you are finished, the build will continue.
45 '''
46         os.system(android_home + '/tools/android')
47
48 def ensure_libs(target, source, env):
49         return target, [source, env.get('BUILD_DIR') + 'liboc.so', env.get('BUILD_DIR') + 'liboc_logger.so', env.get('BUILD_DIR') + 'libocstack-jni.so']
50
51 SConscript('jni/SConscript')
52
53 jdk_env = Environment(ENV=os.environ)
54 jdk_env['BUILDERS']['Gradle'] = Builder(action = env.get('ANDROID_GRADLE') + ' build -b' + env.get('SRC_DIR') + '/java/iotivity-%s/build.gradle -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s -PBUILD_DIR=%s -PSRC_DIR=%s --stacktrace' %(target_os, TARGET_ARCH, RELEASE, SECURED, env.get('BUILD_DIR'), env.get('SRC_DIR')), emitter = ensure_libs)
55 jdk_env['BUILD_DIR'] = env.get('BUILD_DIR')
56 cmdBuildApi=jdk_env.Gradle(target="base/objs", source="common/src/main/java/org/iotivity/base/OcResource.java")
57
58 examples_target = "java"
59 if target_os == 'android':
60         examples_target = "android"
61
62 jdk_env['BUILDERS']['Gradle'] = Builder(action = env.get('ANDROID_GRADLE') + ' build -b' + 'java/examples-%s/build.gradle -PTARGET_OS=%s -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s --stacktrace' % (examples_target, target_os, TARGET_ARCH, RELEASE, SECURED))
63 cmdBuildExamples=jdk_env.Gradle(target="examples-%s/simpleclient/jar" % (examples_target, ), source="examples-%s/simpleclient/src/main/java/org/iotivity/base/examples/SimpleClient.java" % (examples_target, ))
64
65 Depends(cmdBuildExamples, cmdBuildApi)